Polylang Wordpress 插件自定义字符串翻译无法按预期方式工作

Polylang Wordpress plugin custom string translations not working in expected way

我在最近的网站上使用 Polylang 插件。帖子和页面,还有类别翻译工作得很好。但我对自定义字符串的翻译有疑问。

我正在 functions.php 文件中注册字符串:

pll_register_string('read_more', 'Read More');

然后,在我的模板视图中,我尝试通过以下方式访问它:

pll_e('read_more');

作为回应,我收到 "read_more"... 如果我尝试这样做也是一样的:

pll_e('Read more');

根据那个插件的功能参考,这是一个正确的方法。也许过去有人遇到过类似的问题,可以提供帮助。

编辑:我已经通过使用自定义字符串的 Polylang 扩展解决了这个问题。但是,也许有人可以解决这个问题。

我不确定它是否能完美地帮助你,但我在这种情况下使用的最佳方法是为每种语言创建 .po 和 .mo 文件,将其上传到网站并在 functions.php 或在具有此功能的插件中(您必须设置存储 .po 和 .mo 文件的路径 - 下面是插件路径,但您可以将其更改为您想要的任何内容,也可以将 "my-theme" 标记更改为您自己的):

// Adding language files
function theme_setup_hook () {
 load_theme_textdomain('my-theme', plugin_dir_path(__FILE__).'/languages');
}
add_action( 'after_setup_theme', 'theme_setup_hook' );

在使用 Poedit(可在此处下载的轻量级开源应用程序 https://poedit.net/)的 .po 文件中,您只需在“属性”中设置文件的语言和 select 光盘上文件所在的文件夹编写了带有要翻译的字符串的代码。您还必须在我放置这些属性的属性中设置关键字:__ 和 _e。

然后在模板的代码中编写所有需要翻译的字符串:

对于简单回显:

<?php _e('string to translate','my-theme'); ?>

在脚本中使用:

<?php
 $string = __('string to translate','my-theme');
 echo $string;
?>

之后只需在 Poedit 中更新 po 文件,由于您设置了正确的路径,所有字符串都会在此处更新,您都可以翻译它们。然后保存文件。 Poedit 也会自动创建 .mo 文件,因此将两个文件(po 和 mo)上传回服务器即可。 对于每种语言,您可以使用名为 en_GB.po 等的单独文件来做到这一点

希望对您有所帮助。

我认为 Polylang 的最新版本中存在错误,或者可能是由于 wordpress 升级导致的回归,但对我来说 pll_register_string 根本不起作用...我不得不使用 icl_register_string 相反,它是 WPML 的对应物(但适用于 Polylang)。

插件"Polylang Theme Strings"也不行。它会在当前主题中找到翻译,但无法将它们添加到字符串翻译列表中。我的猜测是,这是由于同一个错误,但也可能是巧合。