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

时间:2017-07-21 13:48:39

标签: php wordpress polylang

我在最近的网站上使用 Polylang插件。帖子和页面,以及类别翻译工作完美。但是我对自定义字符串的翻译有问题。

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

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

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

pll_e('read_more');

作为回应,我收到" read_more" ... 如果我试图这样做:

pll_e('Read more');

根据该插件的功能参考,它是一种正确的方式。也许有人过去有类似的问题,可以提供帮助。

编辑:我通过将Polylang扩展程序用于自定义字符串来解决问题。但是,也许有人可以解决这个问题。

2 个答案:

答案 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等的单独文件来执行此操作。

我希望它有所帮助。