来自子主题的可翻译字符串未包含在翻译文件中
Translatable strings from child theme not included in translation files
所以我认为我有翻译集的所有配置,但我的可翻译字符串没有加载到 .po 或 .pot。
在functions.php中:
function opportune_child_setup() {
load_child_theme_textdomain( 'opportune', get_stylesheet_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'opportune_child_setup' );
在style.css中:
/*
[...]
Text Domain: opportune
*/
可翻译字符串(示例):
<label for="custom_field"><?php _e( "Company Tax ID", 'opportune' ) ?></label>
翻译文件目录:
themes/opportune-child/languages/opportune.pot
themes/opportune-child/languages/pt_PT.mo
themes/opportune-child/languages/pt_PT.po
.po 和 .mo 文件是基于 opportune.pot 在父主题中使用 Poedit 创建的(位于等效目录中:)
themes/opportune/languages/opportune.pot
我什至在我的 wp-config.php 中进行了硬编码(尽管已经在 WP Admin 中设置):
define('WP_LANG', 'pt_PT');
我查看字符串是否已加载到 .po 或 .pot 的方法是:我转到包含可翻译字符串的页面,进行硬刷新(删除缓存),下载 .po 和 .pot,然后搜索字符串。 None 的字符串已加载。
我已经使用了Loco Translate插件,我认为配置正确,但仍然没有结果。
我错过了什么?非常感谢!
首先,child 主题不应使用与 parent 主题相同的文本域。
如果您只使用来自 parent 主题的字符串,那么只需翻译 parent。但是,如果您要将新字符串添加到自己的 PHP 文件中,请使用单独的文本域。
因此,如果 "Company Tax ID" 是您添加的字符串并且它不在 parent 中,请确保它位于与 child 主题文件夹匹配的文本域中,即 "opportune-child".
其次,字符串不会像您所说的那样自动 "loaded into po files"。您可以通过从 PHP 文件中提取字符串来创建 .pot 文件。然后你基于你的 .po 文件。阅读 WordPress internationalization 以了解此过程。
不要创建文件 "based on opportune.pot",因为 parent 主题是一个单独的实体。您只需要提取和加载您为 child 定义的字符串。让 parent 自己照顾自己。
这里有翻译 child 主题的指南:
https://localise.biz/wordpress/plugin/child-themes
完全披露:我是作者。
所以我认为我有翻译集的所有配置,但我的可翻译字符串没有加载到 .po 或 .pot。
在functions.php中:
function opportune_child_setup() {
load_child_theme_textdomain( 'opportune', get_stylesheet_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'opportune_child_setup' );
在style.css中:
/*
[...]
Text Domain: opportune
*/
可翻译字符串(示例):
<label for="custom_field"><?php _e( "Company Tax ID", 'opportune' ) ?></label>
翻译文件目录:
themes/opportune-child/languages/opportune.pot
themes/opportune-child/languages/pt_PT.mo
themes/opportune-child/languages/pt_PT.po
.po 和 .mo 文件是基于 opportune.pot 在父主题中使用 Poedit 创建的(位于等效目录中:)
themes/opportune/languages/opportune.pot
我什至在我的 wp-config.php 中进行了硬编码(尽管已经在 WP Admin 中设置):
define('WP_LANG', 'pt_PT');
我查看字符串是否已加载到 .po 或 .pot 的方法是:我转到包含可翻译字符串的页面,进行硬刷新(删除缓存),下载 .po 和 .pot,然后搜索字符串。 None 的字符串已加载。
我已经使用了Loco Translate插件,我认为配置正确,但仍然没有结果。
我错过了什么?非常感谢!
首先,child 主题不应使用与 parent 主题相同的文本域。
如果您只使用来自 parent 主题的字符串,那么只需翻译 parent。但是,如果您要将新字符串添加到自己的 PHP 文件中,请使用单独的文本域。
因此,如果 "Company Tax ID" 是您添加的字符串并且它不在 parent 中,请确保它位于与 child 主题文件夹匹配的文本域中,即 "opportune-child".
其次,字符串不会像您所说的那样自动 "loaded into po files"。您可以通过从 PHP 文件中提取字符串来创建 .pot 文件。然后你基于你的 .po 文件。阅读 WordPress internationalization 以了解此过程。
不要创建文件 "based on opportune.pot",因为 parent 主题是一个单独的实体。您只需要提取和加载您为 child 定义的字符串。让 parent 自己照顾自己。
这里有翻译 child 主题的指南: https://localise.biz/wordpress/plugin/child-themes
完全披露:我是作者。