Answers:
TL; DR:如果您使用父主题中的字符串,则可以在父主题中使用它们,例如,无需为子主题设置文本域。
但是,如果您使用父主题中未使用的字符串以使其可翻译,则需要另一个带有相关翻译(.mo
)文件的文本域。
当WordPress在翻译功能中遇到字符串时:
load_plugin_textdomain
或load_theme_textdomain
或load_textdomain
),如果这样去点3。wp-content/languages
)是否包含匹配的textdomain文件。匹配的textdomain文件在"{$domain}-{$locale}.mo"
哪里$domain
是要转换的字符串的文本域,并且$locale
是网站的当前语言环境。如果找不到该文件,则返回原始字符串,否则将加载该文件并将WP转发到下一个点。_n()
),则可以完成这些操作。否则,WP将前进到下一点。当您在子主题的翻译功能中使用父主题文本域时(假设父主题附带并加载了textdomain文件,或者在translations文件夹中有翻译文件),WordPress将到达上面列表中的第3点。该字符串在文件中可用(因为在父主题中使用了该字符串),它将被翻译,否则就不翻译。
这意味着父主题中的自定义字符串需要自己的翻译文件。
从理论上讲,可以在另一个翻译文件中使用父文本域,因为WordPress能够加载相同文本域的次数更多,“合并”它们,但这存在问题,因为"{$domain}-{$locale}.mo"
翻译文件夹中的格式可能只有一个文件(请参阅上面列表中的第2点。
因此,总而言之,使子主题可翻译的唯一可行方法(如果它包含父主题中未使用的字符串)是使用自己的文本域和自己的翻译文件。
__('background-color', 'parent-text-domain')
,则可以在子主题中使用相同的主题,而无需执行任何其他操作即可将其翻译。