多站点内同一插件的不同翻译

时间:2018-11-14 作者:Roy

我们有一个多站点解决方案,在这个解决方案中有两个WooCommerce商店。两者都是荷兰语。

他们与人接触的方式不同,因此他们希望使用不同的翻译。怎样才能做到这一点?

我们已经尝试了手动翻译和本地翻译插件。但是如果你在一个站点上更改了某些内容,那么另一个站点上也会更改。

1 个回复
最合适的回答,由SO网友:Tim 整理而成

您可以使用WordPress挂钩加载特定于站点的文件,但这需要一些工作。

在本例中,我们将在系统位置保留一个公共荷兰语文件。这可以包含适用于两个站点的任何字符串。然后,我们将使用site ID. 我们总共有三个文件:

wp内容/语言/插件/woocommerce-nl\\U nl。mo-wp-content/languages/my-site-1/woocommerce-nl\\u-nl。mo内容/语言/my-site-2/woocommerce-nl\\U nl。mo在最后两个文件中,您只需要翻译希望与第一个文件不同的字符串。

要根据站点加载正确的文件,请将以下代码放在某个位置,以便它尽早运行。A.must-use plugin 通常最简单:

<?php
/*
 Plugin Name: Multisite translation loader
 Description: Loads site-specific translations on top of default
*/

function on_multisite_load_textdomain( $domain, $mopath ){
    static $lock;
    if( ! $lock ){
        $mopath = sprintf(\'%s/my-site-%u/%s\', 
          WP_LANG_DIR, 
          get_current_blog_id(), 
          basename($mopath)
        );
        $lock = true;
        load_textdomain( $domain, $mopath );
        $lock = false;
    }
}

if( is_multisite() ){
    add_action(\'load_textdomain\',\'on_multisite_load_textdomain\',1,2);
}
如果要使用本地翻译来管理这些文件,则必须为每个站点配置额外的Domain Path. 进入每个站点的管理区域,打开捆绑包配置的高级选项卡。将相对路径(如“../../languages/site1”和“../../languages/site2”)添加到域路径字段并保存配置。

请注意,每个站点都维护单独的插件设置,因为它们保存为site WordPress数据库中的选项。

结束