【问题标题】:WP localization: how to translate 2 merged pugins?WP 本地化:如何翻译 2 个合并的插件?
【发布时间】:2017-07-20 16:56:59
【问题描述】:

几天以来,我一直在为插件翻译问题苦苦挣扎。 我有一个免费的插件版本并使用:

function my_plugin_l10n(){
load_plugin_textdomain( 'free-plugin', false, dirname(plugin_basename( __FILE__ )).'/languages/');
}
add_action('plugins_loaded','my_plugin_l10n');

然后我有一个依赖于免费版本的附加组件,并为免费版本添加功能和屏幕,有时会合并免费页面中的功能,有时会创建新页面。如何合并翻译文件?我一直使用诸如“代码样式本地化”或“loco translate”之类的翻译插件,但从来不用处理这种情况。

我尝试了几种方法,例如:

function addon_l10n(){
 load_plugin_textdomain( "addon", false, dirname(plugin_basename( __FILE__ )).'/languages/');
}

add_action('plugins_loaded','addon_l10n');

function addon_l10n(){
load_plugin_textdomain( "addon", false, ABSPATH . 'wp-content/plugins/my_free_plugin/languages/' );
}
add_action('plugins_loaded','addon_l10n');

我尝试手动合并 po 字符串但没有成功,在插件页面中只有来自免费版本的字符串被翻译(本地化文件“free-plugin-{locale}.po, free-plugin -{locale}.mo" 位于 /free/languages/ 目录中。)

我也尝试在 2 个插件中使用相同的文本域,但不知道是否正确以及存储 po-mo 文件的位置..

所以实际上我很困惑.. 有人可以帮忙吗?

【问题讨论】:

  • 有人知道吗?

标签: wordpress plugins localization


【解决方案1】:

每个插件都应该有自己的文本域和自己的语言文件(.po、.mo),所以你应该像这样重写addon_l10n()

function addon_l10n(){
    load_plugin_textdomain( "addon", false, dirname(plugin_basename( __FILE__ )).'/languages/');
}
add_action('plugins_loaded','addon_l10n');

一个是另一个的插件这一事实并不影响这一点。每个插件的 .po/.mo 文件都应该包含各自插件中使用的文本,即使它们看似共享一些字符串。

您可能会说共享字符串需要翻译两次,但这正是大多数翻译工具(例如 Poedit)实现某种Translation Memory 的原因。

【讨论】:

  • 看起来你的回答是在复制我的第一个陈述,这是第一次尝试,但没办法,它不起作用。附加功能是免费插件的(事实上)扩展,功能和页面“嵌入”在免费插件中,唯一翻译的字符串是包含在 free/languages/free{locale}.po.mo 中的字符串。位于 addon/languages/addon{locale}.po.mo 中的字符串被完全忽略。目前,我发现翻译插件的唯一方法是合并“free”.po 中的字符串,并在两个插件中使用“free”作为文本域。不是最佳做法,我知道..
猜你喜欢
  • 2011-05-02
  • 1970-01-01
  • 2015-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多