好的,我为联系表单构建了插件,我想为它添加翻译。在我的主插件文件中,我添加了此代码
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)';