在自定义插件中加载自定义翻译失败

时间:2019-05-29 作者:fefe

我正在开发一个自定义插件,我尝试添加翻译,但没有成功

   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

1 个回复
最合适的回答,由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下缺少的文件,其次是缺少的文件,该文件可能是您不正确的插件路径。

备注:

由您决定如何打印错误。这个例子只是提出了一个警告

相关推荐

如何删除LANGUAGE_ATTRIBUTES()上的XMLN?

Hello I\'am get this error on w3c,因为xmlns 已弃用。如何删除xmlns?属性xmlns:此处不允许fb<html lang=\"en-US\" xmlns:fb=\"http://ogp.me/ns/fb#\" xmlns:addthis=\"http://www.addthis.com/help/api-spec\" prefix=\"og: http://ogp.me/ns#\"> 我的代码是<html <?php langu