代码之家  ›  专栏  ›  技术社区  ›  MIkeMo

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

  •  24
  • MIkeMo  · 技术社区  · 7 年前

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

    重要提示: pll\u register\u string函数

    https://polylang.wordpress.com/documentation/documentation-for-developers/functions-reference/

    pll_寄存器_字符串

    允许插件在字符串翻译中添加自己的字符串 文件适用于主题)。可以注册空字符串(用于 桌子

    用法:

    pll\u register\u string($name,$string,$group,$multiline)$名称=> 在其中注册字符串的组默认为polylang $multiline=>(可选)如果设置为true,则翻译文本字段 将为多行,默认为false

    转换先前使用pll\u寄存器\u字符串注册的字符串 用法:

    $string=>要翻译的字符串返回已翻译的字符串。

    pll\u e

    回显先前注册的已翻译字符串 pll\u寄存器\u字符串用法:

    $string=>transla的字符串

    4 回复  |  直到 7 年前
        1
  •  60
  •   pravdomil tomyjwu    6 年前

    您必须首先注册所有这些字符串以进行翻译。

    例如,您在以下模板文件中回显“Hello world”:

    <?php pll_e('Hello world'); ?>
    

    functions.php :

    add_action('init', function() {
      pll_register_string('mytheme-hello', 'Hello world');
    });
    

        2
  •  10
  •   Mikhail.root    6 年前

    作为Polylang docs

    因此,我提出了这种方法: 在里面 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.
    

    l 在里面 pl__ pl_e 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="%s">home page</a>.', 'YourThemeName', true);
    
        }
    }
     add_action( 'after_setup_theme', 'your_prefix_after_setup_theme' );
    
        3
  •  0
  •   Wilmar Arias    4 年前

    嗨,有没有办法用这个名字翻译?

    add_action('init', function() {
        pll_register_string('footer-Newsletter-form', 'Subscribe to Newsletter');
    });
    
    $translated_string =  pll_translate_string('footer-Newsletter-form', $lang);
    
        4
  •  -1
  •   user12547341    5 年前

    谢谢你!

     __(pll__('string to translate'), 'text-domain')