微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 gettext 钩子更改 Woocommerce 中的一些字符串和子字符串

如何解决使用 gettext 钩子更改 Woocommerce 中的一些字符串和子字符串

我多年来使用的代码(下面的示例)有一段时间没用了。尝试了此处发布的其他一些代码,但没有任何乐趣。似乎 WC 更改了过滤/翻译的方式,并且每个更改的文本都需要分开。那是对的吗?最初使用此代码进行了 11 次文本更改...

希望有一些代码可以在 WC 5.0 中执行文本更改,谢谢!

add_filter('gettext','translate_text');
add_filter('ngettext','translate_text');

function translate_text($translated) {
$translated = str_ireplace('Products','Prints',$translated);
$translated = str_ireplace('Product','Print',$translated);
$translated = str_ireplace('Product Categories',$translated);
return $translated;
}

解决方法

WordPress 钩子 gettextngettext 一段时间以来没有变化,它们处理可翻译字符串,独立于 WooCommerce 版本...

使其与 gettextngettext 钩子一起工作的正确方法是(稍微简化并添加一些缺少的函数参数)

add_filter( 'gettext','change_some_woocommerce_strings',10,3 );
add_filter( 'ngettext',3 );
function change_some_woocommerce_strings( $translate_text,$original_text,$domain ) {
    if ( stripos( $original_text,'Product') !== false || stripos( $original_text,'Categories') !== false ) {
        $translate_text = str_ireplace( 
            array('Product categories','Products','Product'),array('Prints','Prints','Print'),$original_text );
    }

    return $translate_text;
}

如果某些字符串未翻译,可能是因为它们添加了一些上下文。在这种情况下,钩子 gettext_with_context 是必需的,例如:

add_filter( 'gettext_with_context','change_some_woocommerce_strings_with_context',4 );
function change_some_woocommerce_strings_with_context( $translate_text,$context,$original_text );
    }

    return $translate_text;
}

代码位于活动子主题(或活动主题)的functions.php 文件中。经测试有效。

,

这是对我有用的代码。将 2 ibc 更改为您想要的名称或保留它。不要忘记更改您要使用的名称而不是 Print(s)

   add_filter( 'gettext','ibc_translate_woocommerce_strings',999,3 );

   function ibc_translate_woocommerce_strings( $translated,$untranslated,$domain ) {

     if ( ! is_admin() && 'woocommerce' === $domain ) {

        switch ( $translated ) {

           case 'Products':

           $translated = 'Prints';
           break;

           case 'Product':

           $translated = 'Print';
           break;

           case 'Product Categories':

           $translated = 'Print';
           break;

         // ETC
   
   }

 }   

      return $translated;

 }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。