我在最近的网站上使用 Polylang插件。帖子和页面,以及类别翻译工作完美。但是我对自定义字符串的翻译有问题。
我在 functions.php 文件中注册了字符串:
pll_register_string('read_more', 'Read More');
然后,在我的模板视图中,我试图通过以下方式访问它:
pll_e('read_more');
作为回应,我收到" read_more" ... 如果我试图这样做:
pll_e('Read more');
根据该插件的功能参考,它是一种正确的方式。也许有人过去有类似的问题,可以提供帮助。
编辑:我通过将Polylang扩展程序用于自定义字符串来解决问题。但是,也许有人可以解决这个问题。
答案 0 :(得分:2)
我认为Polylang的最新版本中存在一个错误,或者由于wordpress的升级而导致回归,但对我来说pll_register_string根本不起作用...我不得不使用icl_register_string而不是WPML对应物(但与Polylang一起使用)。
插件" Polylang Theme Strings"也行不通。它会在当前主题中找到翻译,但无法将它们添加到字符串翻译列表中。我的猜测是由于同样的错误,但这可能是巧合。
答案 1 :(得分:1)
我不确定它是否对您有所帮助,但我在这种情况下使用的最佳方法是为每种语言创建.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' );
在.po文件中使用Poedit(轻量级开源应用程序,可在此处下载https://poedit.net/),您只需在“属性”中设置文件的语言,然后选择光盘上的文件夹,其中包含要转换的字符串的文件将被翻译写的。此外,您必须在我放置它们的属性中设置关键字:__和_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等的单独文件来执行此操作。
我希望它有所帮助。