Polylang:如何翻译自定义字符串?
我的问题:我正在使用 Polylang 翻译我的网站,但我在自定义字符串翻译方面遇到了困难。 字符串不会显示在 WP 仪表板的“字符串翻译”菜单中。
重要提示:我对 PHP 了解不多,所以pll_register_string 函数对我来说非常混乱。
引自 Polylang 文档:
pll_register_string
允许插件在“字符串翻译”面板中添加自己的字符串。 该函数必须在管理端调用(functions.php 文件对于主题是可以的)。 可以注册空字符串(例如,当它们来自选项时),但它们不会出现在列表中。
用法:
pll_register_string($name, $string, $group, $multiline); ‘$name’ =>(必需)为方便排序而提供的名称(例如:’myplugin’)’$string’ =>(必需)要翻译的字符串 ‘$group’ =>(可选)字符串所在的组已注册,默认为 ‘polylang’ ‘$multiline’ => (可选)如果设置为 true,则翻译文本字段将为多行,默认为 false
pll__
翻译先前使用 pll_register_string 注册的字符串 用法:
pll__($string); 唯一参数是必需的:
‘$string’ => 要翻译的字符串返回翻译后的字符串。
pll_e
回显先前使用 pll_register_string 注册的已翻译字符串用法:
pll_e($string); 唯一参数是必需的:
‘$string’ => 要翻译的字符串
解决方案
您必须首先注册所有这些字符串以进行翻译。
例如,您在一些模板文件中回显“Hello world”,如下所示:
<?php pll_e('Hello world'); ?>
要在“字符串翻译”中显示字符串,请添加您的functions.php
:
add_action('init', function() {
pll_register_string('mytheme-hello', 'Hello world');
});
将您要翻译的所有自定义字符串添加到此函数中。
正如 Polylang文档所说,最好先检查 polylang 函数是否存在 – 因此站点不会在 Polylang 插件更新时中断 – 因为它首先删除旧文件。
所以,我建议这种方法:在functions.php
在你的插件的文件的主题,你可以创建,如果除去polylang或更新的回退需要Polylang功能包装,以便WP不会未定义功能出错崩溃。
/**
* Outputs localized string if polylang exists or output's not translated one as a fallback
*
* @param $string
*
* @return void
*/
function pl_e( $string = '' ) {
if ( function_exists( 'pll_e' ) ) {
pll_e( $string );
} else {
echo $string;
}
}
/**
* Returns translated string if polylang exists or output's not translated one as a fallback
*
* @param $string
*
* @return string
*/
function pl__( $string = '' ) {
if ( function_exists( 'pll__' ) ) {
return pll__( $string );
}
return $string;
}
// these function prefixes can be either you are comfortable with.
注意我们在pl__
和pl_e
创建了带有单个l
函数,原始 Polylang 函数是pll__
和pll_e
。
这些将在您的主题中用于输出或返回翻译后的字符串。
如前所述,我们必须注册这些字符串,以便 Polylang 知道应该翻译这些字符串。
如果您使用主题可能最好在after_setup_theme
钩子中初始化它们,如下所示:
function your_prefix_after_setup_theme() {
// register our translatable strings - again first check if function exists.
if ( function_exists( 'pll_register_string' ) ) {
pll_register_string( 'ToggleNavigation', 'Toggle navigation', 'YourThemeName', false );
pll_register_string( 'ToggleSearch', 'Toggle Search', 'YourThemeName', false );
pll_register_string('404Message', 'It looks like nothing was found. Try getting back to the <a href="https://stackoverflow.com/questions/46557981/polylang-how-to-translate-custom-strings/%s">home page</a>.', 'YourThemeName', true);
}
}
add_action( 'after_setup_theme', 'your_prefix_after_setup_theme' );
这次真是万分感谢! 我添加了这个设置,然后我在其他地方找到了另一个技巧来在functions.php文件中添加我的可翻译文本:
__(pll__('string to translate'), 'text-domain')
嗨,有什么办法可以用名字翻译吗?
add_action('init', function() {
pll_register_string('footer-Newsletter-form', 'Subscribe to Newsletter');
});
$translated_string = pll_translate_string('footer-Newsletter-form', $lang);
你可能还喜欢下面这些文章

//demo.imwpweb.com/wpnovo/多设备支持主题支持PC和移动端界面,独立设置,互不干扰。移动端首页(右)图:小说页面PC端和移动端的展示付费订阅主题支持付费订阅功能,支持付费单章订阅、整本小说订阅模式。

什么是内链内链,顾名思义就是在同一网站域名下的内容页面之间的互相链接(自己网站的内容链接到自己网站的内部页面,也称之为站内链接)。自动内链工作原理简单来说,我们设定一些词表以及词表对应的链接,比如词是wordpress插件,链接是http

这款插件的核心功能就是一点:找出文章中的违禁词、敏感词等措辞不当的词语,替换成你设置的更合适的词或者直接替换“*”号。请注意,需要同时下载站长工具箱和违禁词屏蔽插件,安装插件时也需要两个插件同时安装。

2、自动生成的图片并非真实在磁盘中的图片,而是动态生成的,如果保存到磁盘会占用大量空间,这个空间没必要浪费,因此修改主题代码,直接将缩略图的地址改为wpac自动生成的缩略图地址是一个非常好的方案。

wprec利用相似度算法计算每篇文章之间的相似度,找到与当前文章最相似的一些文章,展现在文章底部作为相关文章。我们知道,相关推荐插件推荐的原理是根据当前文章的特征(文章的高权重标签),从文章库中召回相关文章,再根据相关性评分,最后选出To