2

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

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

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

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

pll_e('read_more');

作为回应,我得到了“read_more” ……如果我试图这样做,也是一样的:

pll_e('Read more');

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

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

4

2 回答 2

2

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

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

于 2017-11-28T13:01:17.260 回答
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' );

在使用 Poedit(轻量级开源应用程序,可在此处下载https://poedit.net/)的 .po 文件中,您只需在“属性”中设置文件的语言并选择光盘上的文件夹,其中包含要翻译的代码的文件被写。此外,您必须在我放置这些的属性中设置关键字:__ 和 _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 等的单独文件来执行此操作。

我希望它有所帮助。

于 2017-11-13T11:58:26.157 回答