我肯定我犯了一个愚蠢的错误,但我一辈子都不知道这可能是什么。
最近,我将我的一个较大的插件转换为使用I18n(我第一次这样做)。由于WP能够生成完整的POT
文件通过我的插件的管理部分。以防万一,以下是我的I18n调用的一些示例:
__(\'Settings\', \'plugin-domain\')
_e(\'Select which one to use.\', \'plugin-domain\')
_n(\'The following ID is invalid: \', \'The following IDs are invalid: \', count($bad), \'plugin-domain\')
我的问题是在一切就绪的情况下,让翻译真正发生。我有
plugin-domain-es_ES.[po/mo]
我的插件根目录下的语言目录中的文件
define(\'WPLANG\', \'es_ES\');
给我的
wp-config.php
.
在主插件文件中,我添加了以下内容来钩住文本域加载:
add_action(\'plugins_loaded\', array(\'PluginName\', \'loadTextDomain\'));
class PluginName {
public static function loadTextDomain() {
load_plugin_textdomain(\'plugin-domain\', false, plugin_dir_path(__FILE__) . \'languages/\');
}
}
有了这个插件,应该在我的插件中的地方就没有翻译了。我还验证了钩子已经被钩住了。我还尝试了其他一些钩子,包括
admin_init
和
init
, 但似乎什么都不管用。