WordPress插件本地化,load_plugin_textdomain不起作用

时间:2014-11-18 15:49:36

标签: wordpress

好的我为联系表单构建了插件,我想为它添加翻译。在我的主插件文件中,我添加了此代码

function ap_action_init() {
    // Localization
    load_plugin_textdomain('prijava_forma', false, dirname(plugin_basename(__FILE__))."/languages";
}

// Add actions
add_action('init', 'ap_action_init');

在我的文件中写了联系表格我有这个

_e( 'Prva','prijava_forma' );

在我的语言文件夹中,我添加了使用Poedit创建的.mo和.po文件。

我还在config.php中定义了WPLANG并更改了仪表板中的语言。

但我没有翻译。哪里可能有问题,我是新来的?

3 个答案:

答案 0 :(得分:3)

有很多可能的原因:

  • .mo文件根本无法读取或找不到(顺便说一句,WordPress不使用.po文件)
  • 您期待的字符串尚未翻译
  • 错误的.mo文件名,有效名称是ar.mo,fr_FR.mo ...,无效的是br_BR.mo,arabic.po,AR.mo,ar_AR.mo ...所以请确保你得到这个一个权利。
  • 对于插件,名称将是文本域,短划线和区域设置的串联:myplugin-ru_RU.mo

检查返回的load_plugin_textdomain()是什么,如果.mo文件已加载,则应该返回true,在这种情况下,下一步是检查您是否遗漏了__()中的textdomain参数,_e()和类似的功能。

More on WordPress localization

答案 1 :(得分:0)

这也可能是钩子在附加功能的地方以及po / mo文件的地方。

在Init Hooks上,load_plugin_textdomain()返回了true,但字符串未翻译。

我将po / mo放在自定义插件的文件夹中,因此将操作更改为plugins_loaded

答案 2 :(得分:0)

还要确保您的字符串代表自己。请勿在字符串后附加任何内容,而应在gettext函数之后执行。

错误:

return __('Please translate me'.'(666)','your-textdomain');

右:

return __('Please translate me','your-textdomain').'(666)';