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"也不行。它会在当前主题中找到翻译,但无法将它们添加到字符串翻译列表中。我的猜测是,这是由于同一个错误,但也可能是巧合。
我在最近的网站上使用 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"也不行。它会在当前主题中找到翻译,但无法将它们添加到字符串翻译列表中。我的猜测是,这是由于同一个错误,但也可能是巧合。