子主题的可翻译字符串未包含在翻译文件中

时间:2018-09-09 20:03:59

标签: wordpress localization themes child-theming

因此,我认为我具有翻译集的所有配置,但我的可翻译字符串未加载到.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文件是使用Poedit基于父主题(位于等效目录:)中的opportune.pot创建的。

themes/opportune/languages/opportune.pot

我什至在wp-config.php中进行了硬编码(尽管已在WP Admin中设置):

define('WP_LANG', 'pt_PT');

查看字符串是否已加载到.po或.pot的方法是:我转到包含可翻译字符串的页面,进行强制刷新(删除缓存),下载.po和.pot,然后搜索字符串。尚未加载任何字符串。

我使用过Loco Translate插件,我认为配置正确,仍然没有结果。

我想念什么?非常感谢!

1 个答案:

答案 0 :(得分:0)

首先,子主题不应使用与父主题相同的文本域。

如果仅使用父主题中的字符串,则只需翻译父主题即可。但是,如果要将新字符串添加到自己的PHP文件中,请使用单独的文本域。

因此,如果您添加的“公司税号”是一个字符串,并且不在父级中,请确保它在与子主题文件夹(即“ opportune-child”)匹配的文本域中。


第二,如您所说,字符串不会自动“加载到po文件中”。您可以通过从PHP文件中提取字符串来创建.pot文件。然后,您从中建立.po文件。阅读有关WordPress internationalization的信息以了解此过程。

不要创建“基于opportune.pot”的文件,因为父主题是一个单独的实体。您只需要提取并加载为孩子定义的字符串即可。让父母照顾自己。


这里有翻译儿童主题的指南: https://localise.biz/wordpress/plugin/child-themes

完全公开:我是作者。