使用PoEdite子主题翻译

时间:2019-04-17 作者:wbq

我在做什么child theme 并按照https://developer.wordpress.org/themes/advanced-topics/child-themes/#internationalization.

到目前为止,我所做的是第0步,php文件中的所有文本字符串都遵循

_e(\'this string needs translation\', \'my_text_domain\')
此外,在我的子主题文件夹中,当前没有来自父主题的php文件。我只是提到,如果有人认为这可能是问题所在:

如果包含来自父主题的模板文件,则应将textdomain从父主题中定义的模板文件更改为子主题定义的模板文件。

步骤1我在我的子主题文件夹中创建了一个“/lang/”文件夹

步骤2我使用了poedit 为了创建新的wp主题翻译,创建了de\\u de.mo和de\\u de.po文件,并将其保存到我的子主题lang文件夹中。

步骤3我已将child themes functions.php:

add_action(\'after_setup_theme\', \'my_lang_setup\');
function my_lang_setup()
{
    $lang = get_stylesheet_directory() . \'/lang\';
    load_child_theme_textdomain(\'my_text_domain\', $lang);
}

步骤0-3的结果

我的孩子主题的所有字符串ARE 翻译并正确显示在我的前端!

我一直在努力解决的问题stringsparent theme 不再翻译,只显示在英语中更新(或加载)poedit中的翻译时,它会删除父主题中的所有字符串(这可能是主要问题)

    问题当然,如何解决我的问题
  1. 编辑翻译
  2. 创建新翻译
  3. 翻译Wordpress主题或插件
  4. 与其他人一起翻译(不相关)
      1. 我尝试了上述所有选项,但结果相同。是否有办法包含父主题语言文件/目录?

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

Found a solution that works for me:

add_action( \'after_setup_theme\', \'avia_lang_setup\' );
function avia_lang_setup() {
    $lang = apply_filters(\'parent-theme-slug\', get_template_directory()  . \'/lang\');
    load_theme_textdomain(\'avia_framework\', $lang);
    load_child_theme_textdomain( \'child-theme-text-domain\', get_stylesheet_directory() . \'/lang\' );
}
Note:Exchange“父主题slug”(通常是小写字母的父主题名称)和“子主题文本域”(您选择的子主题文本域)

SO网友:Tim

子主题的文本域是否必须与父主题的文本域相同?

它不能是相同的。

文本域必须唯一。如果父主题将文件加载到“my\\u text\\u domain”中,然后子主题将文件加载到“my\\u text\\u domain”中,则会覆盖上一个主题。

相关推荐

month name translation

我使用birdtips主题,它将发布日期格式化为$birdtips_posted = date(__(\'Y. F j.\', \'birdtips\'), strtotime(get_the_time(\"Y-m-d\"))); 其中Y.F.j.已经被改写以反映我的语言。据我所知,\\uuuu是翻译功能,但我如何告诉Wordpress我使用匈牙利语,它会自动翻译月份名称,或者我应该在中给出名称。采购订单文件?