如何使用WordPress插件Polylang进行自定义字符串翻译?

3
注意: 我15岁,仍在学习编程,所以如果你回答我的问题,请回答得详细一些。
大家好,我正在用WordPress制作自己的网站,同时也在制作自己的定制主题,目前还在开发中。网站已经上线,但还没有完全完成,我想尽快完成它,因为等到学校开始了,我就没有时间再编码了。
我的网站的一个关键特点是我希望它成为一个多语言网站,至少包括阿拉伯语和英语。因此,我安装了Polylang WordPress插件,一切都很好,除了一些文本,例如页脚中的文本是硬编码的,在footer.php文件中写死了,所以Polylang无法处理它。我想使用Polylang的字符串翻译选项来翻译任何我指定的标题、页脚或其他地方的文本,这就是我的问题。
我想要一个解决这个问题的方法,提前谢谢。
如果有语言错误或布局不好,请见谅,我是用手机发短信的。

如果您不知道:这是有关国际化和翻译主题的官方文档:https://developer.wordpress.org/themes/functionality/internationalization/ - Johannes
2个回答

7

我不太熟悉Polylang,但之前使用过其他类似的插件。

我查看了这里的开发者文档,认为您需要使用pll_register_string函数来注册字符串,然后使用pll_e输出该字符串。

例如,如果您在模板中有文本“Hello World!”,则可以使用pll_e函数将该文本输出:

<?php pll_e('Hello World!'); ?>

然后,要在Polylang字符串翻译中获取此字符串,您需要在您的主题functions.php中使用pll_register_string函数注册它,如下所示:

<?php

  add_action('init', function() {
    pll_register_string('shams-theme', 'Hello World!');
  });

?>

希望这能帮到你,如果你还需要帮助,请随时告诉我。

嗨,Lennart,非常感谢您的回答,我已经尝试并准备接受了,但请更改代码错误ppl_e为pll_e,当我尝试ppl_e时它没有起作用,但在看到您提供链接的文档后,我找到了正确的代码pll_e,我尝试编辑您的问题,但当我发布编辑时,它会说类似于(至少必须编辑6个字符),所以我不想更改您的帖子,请编辑此帖子以获得正确的代码,以便任何看到此答案的人不会感到困惑。我的意思是将<?php ppl_e('Hello World!'); ?>更改为<?php pll_e('Hello World!'); ?>。 - Shams M.Monem
@ShamsEl-Deen 我已经更改了答案,很抱歉我忽略了这个小错误,很高兴能帮到你 :) - Lennart

2
本地化(Localization)或简称为l10n,有非常成熟的方法。由于您正在设计自己的主题,因此您应该阅读有关WordPress l10n的信息,了解PO和MO文件。
通常在WordPress中,您使用_e('','')和__('','')来分别回显或返回本地化字符串。这些函数使用gettext将第一个字符串与MO文件的本地化条目进行匹配,第二个参数定义了您的文本域。
_e('I will echo text', 'my-theme');

为了使这些功能从MO文件中返回正确的结果,您需要填充PO文件。PO文件编辑器可以扫描您的主题文件夹,查找这些_e()和__()函数的任何实例,并在易于编辑的UI中列出它们。有各种可用的PO编辑器。
一旦您填充了字符串,您可以使用PO编辑器为该语言创建MO文件。这通常在主题的“languages”文件夹中完成。如果您在其他地方完成了此操作,则现在将复制PO/MO文件到那里。
现在最后一步是在您的主题中注册您的文本域,以便gettext函数可以定位您刚刚制作的MO。
add_action( 'after_setup_theme', 'my_theme_setup' );
function my_theme_setup(){
    load_theme_textdomain( 'my-theme', get_template_directory() . '/languages' );
}

1
非常感谢你的回答,我非常感激。但是我想使用Polylang来实现这个,目前我并不打算做这样的事情,再次感谢 :) - Shams M.Monem
我在写这个的时候也考虑过这一点,但同时认为了解它是如何工作的会有所帮助。 - Ususipse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接