Polylang:如何翻译自定义字符串?

更新于 2022年1月13日 wordpress教程

我的问题:我正在使用 Polylang 翻译我的网站,但我在自定义字符串翻译方面遇到了困难。 字符串不会显示在 WP 仪表板的“字符串翻译”菜单中。

Polylang:如何翻译自定义字符串?

重要提示:我对 PHP 了解不多,所以pll_register_string 函数对我来说非常混乱。

引自 Polylang 文档:

Function reference

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);

你可能还喜欢下面这些文章

wordpress自动关键词插件wpkws,长尾词聚合必备wordpress自动关键词插件wpkws,长尾词聚合必备

网站获取流量需要依靠长尾词,但我们不可能把所有的长尾词都堆在标题或者正文中。
现在我开发了一款能自动匹配长尾词的插件wpkws,他的功能是找到和文章相似的长尾词,自动添加为标签。

wordpress怎么调用特定文章列表wordpress怎么调用特定文章列表

a href=”<
//cat=1为调用ID为1的分类下文章

“title=”<

wordpress文章自动配图、缩略图插件:wpacwordpress文章自动配图、缩略图插件:wpac

现在写点文章不配图总觉得文章质量不太高。
于是萌生了写一款文章自动配图的插件的想法。
文章页自动加一张图比较简单,从候选集中选择一张图片拼接在正文中即可。
又比如在图片中添加文章标题,摘要或者自定义的文字。

WordPress怎么添加语言WordPress怎么添加语言

对于wordpress多语言网站通常有两种形式,第一种是独立的网多语言,另一种是多种语言但是独立的网站。
在一个独立网站的基础上,使用wordpress多语言插件进行翻译,这样操作方便,但是切换时会造成网站负荷加大。

WordPress admin bar添加自定义链接菜单WordPress admin bar添加自定义链接菜单

$wp_admin_bar->
add_action(‘admin_bar_menu’, ‘custom_toolbar_link’, 999);

wordpress网站怎么设置不可被复制wordpress网站怎么设置不可被复制

原创内容经常被别人轻易复制转载?
站长工具箱中自带内容保护插件,可禁止右键和复制功能,使用十分方便。
登录WordPress后台,依次点击【外观】-【编辑】,找到footer.php并编辑,在<

wordpress如何在一个页面显示所有文章wordpress如何在一个页面显示所有文章

让WordPress一个页面显示全部分类的文章

cat=’ . $cat->
php echo $cat->
a href=”<
$cats = get_categories(array(‘include’ =>

WordPress怎么增加文章排序方式WordPress怎么增加文章排序方式

WordPress怎么增加文章排序方式?
实现过程也比较简单,一个是构造链接,另外一个是使用query_posts来改变一下主循环就可以了。
$orderby, ‘order’ =>

好看 (0) 很好看 (0) 非常好看 (0)
赞赏

微信赞赏支付宝赞赏