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



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

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 文件。

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

但我没有得到翻译。哪里可能有问题,我是新手?

有许多可能的原因:

  • .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,在这种情况下,下一步是检查您的 __()_e() 和类似函数中是否缺少 textdomain 参数。

更多关于WordPress本地化的信息

它也可能是在附加函数和 po/mo 文件在哪里的钩子上引起的。

在初始化钩子上,load_plugin_textdomain()返回true但字符串未翻译。

我将操作更改为plugins_loaded因为我的po/mo位于自定义插件内的文件夹中。

还要确保字符串代表自己。不要在字符串中附加任何内容,而是在 gettext 函数之后执行此操作。

错:

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

右:

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

最新更新