如何在多语言网站上更改woocommerce_sale_flash部分?

时间:2014-08-19 18:29:30

标签: wordpress woocommerce

我正在使用Woocommerce建立一个多语言网站。

客户端要求我更改Sale Flash文本,经过一些研究后我发现了这段代码

add_filter('woocommerce_sale_flash', 'avia_change_sale_content', 10, 3);
function avia_change_sale_content($content, $post, $product){
$content = '<span class="onsale">'.__( 'Sale custom text!', 'woocommerce' ).'</span>';
return $content;
}

它运作得很好,但它也改变了德语和西班牙语文本 - 用英语替换它。

我检查了WPML字符串(希望通过该系统翻译它),但在那里找不到它。

有谁知道我必须设置什么过滤器来创建英语,西班牙语和德语的自定义Flash销售文本

由于

1 个答案:

答案 0 :(得分:1)

您正在正确替换文本,但问题是在WooCommerce提供的语言文件中找不到新字符串。该插件将加载一个名为"woocommerce"的域,然后在必要时用于定位字符串及其翻译。您正在将文字传递到__()more info on __()', '_e(), _x(), _n()),但由于您的文字是新的,因此在WooCommerce提供的词典中找不到,因此默认为英文。

// the __() function can't find 'Sale custom text' in the 'woocommerce' text domain, 
// so it does not translate. 
__( 'Sale custom text!', 'woocommerce' )

要翻译此文本,您需要加载自己的语言文件和文本域,并使用自定义域将文本传递到__()

如何执行此操作的简短版本:

  • 使用自定义文本域

    // load text from 'my_text_domain'
    __( 'Sale custom text!', 'my_text_domain' )
    
  • 下载并安装PoEdit以创建* .po语言文件。它具有扫描PHP文件以查找翻译条目的选项,并将它们添加到您的字典中。互联网上有关于此的教程。

  • 为每种支持的语言创建一个翻译文件
  • 在您的主题目录下创建一个名为languages的文件夹(这应该是Child Theme,以便更新不会覆盖您的工作)或插件目录(如果您正在以这种方式进行自定义)
  • 更新您的functions.php(或其他插件等)以加载自定义文本域。确保使用适当的路径,这假定它在主题中。

    function load_textdomain_my_text_domain() {
        $language_dir = get_template_directory() . '/languages/';
        load_plugin_textdomain( 'my_text_domain', false, $language_dir );
    }
    add_action( 'plugins_loaded', 'load_textdomain_my_text_domain' );
    

使用我编写的插件在插件中执行此操作的示例:

相关问题