我想我找到了解决办法
前提条件
load_theme_textdomain()
和
load_child_theme_textdomain()
基本相等,唯一的区别是它们使用的默认路径:
他们获得当前语言(使用get_locale()
) 并添加相对.mo 文件到作为参数传递的路径然后他们打电话来load_textdomain()
将textdomain和结果路径作为参数传递给。mo文件然后load_textdomain
加载。mo文件转换为全局textdomain变量,但正如我们可以从source:
如果域已存在,则将合并翻译。
如果两个集合具有相同的字符串,则将从原始值进行转换。
因此,为了只覆盖/替换我们想要的主题父级的字符串,我们需要加载一个自定义。父textdomain的mo文件,仅包含已翻译的字符串,before 父主题加载其。mo文件。
最后,我简单地在子主题语言文件夹中创建了一个名为父主题的文件夹(只是为了方便),并将其放入我的自定义文件夹中。父textdomain的mo文件(一个用于语言,在xx_XX.mo
表格,其中xx_XX
是语言代码)。
然后我在我的孩子主题中添加了一行functions.php
在after_setup_theme
操作,靠近加载的操作。我的子主题textdomain的mo文件:
add_action( \'after_setup_theme\', function () {
// load custom translation file for the parent theme
load_theme_textdomain( \'parent-textdomain\', get_stylesheet_directory() . \'/languages/parent-theme\' );
// load translation file for the child theme
load_child_theme_textdomain( \'my-child-theme\', get_stylesheet_directory() . \'/languages\' );
} );
因为
functions.php
子主题的文件在父主题的文件之前加载,这组字符串将优先于父主题转换(或者我可以使用
add_action
函数)。
注意:我可以使用load_child_theme_textdomain
而不是load_theme_textdomain
, 正如前提中所说的那样,情况也会一样。