我正在开发一个自定义插件,我尝试添加翻译,但没有成功
class MyClass
{
public function __construct()
{
add_action(\'plugins_loaded\', [$this, \'ausg_langs_i18n\'] );
}
/**
* Trying to load plugins locales
*/
public function ausg_langs_i18n()
{
$plugin_rel_path = BASE_PATH . \'lang\';
load_plugin_textdomain( \'ausg\', false, $plugin_rel_path );
}
}
在插件初始化时,文本域设置为
ausg
这个
.mo
使用PoEdit生成文件。
如果I var\\u转储load_plugin_textdomain( \'ausg\', false, $plugin_rel_path )
结果为假
如何进一步调试此问题?
Update
define(\'BASE_LANG_DIR\', basename(__DIR__) . \'/lang\');
public function __construct()
{
$this->lang = $this->setLangGlobal();
add_action(\'plugins_loaded\', [$this, \'ausg_langs_i18n\'] );
}
public function ausg_langs_i18n()
{
load_plugin_textdomain( \'ausg\', false, BASE_LANG_DIR );
}
这是wronhg路径输出
Warning: MO file not found at /var/www/my-plugin/web/app/languages/plugins/ausg-en_US.mo
最合适的回答,由SO网友:Tim 整理而成
我想雅各布可能已经在评论中解决了你的问题。
然而,对于您的问题:
如何进一步调试此问题?
我会在load_textdomain_mofile 过滤并检查WordPress实际尝试读取的完整构建文件路径:示例:
<?php
function debug_missing_mofile( $mofile, $domain ){
if( \'ausg\' === $domain && ! is_readable($mofile) ){
trigger_error(\'MO file not found at \'.$mofile, E_USER_WARNING);
}
return $mofile;
}
add_filter(\'load_textdomain_mofile\',\'debug_missing_mofile\',999,2);
你应该得到两个警告。首先是WP\\u LANG\\u DIR下缺少的文件,其次是缺少的文件,该文件可能是您不正确的插件路径。
备注:
由您决定如何打印错误。这个例子只是提出了一个警告以低优先级挂接,以确保其他过滤器修改路径已运行