翻译MU-Plugins目录中的插件不起作用

时间:2016-12-10 作者:Eduardo Leão

我已经成功翻译了一个子主题,但在mu插件文件夹中的结果不一样。

插件的名称是“mu functions.php”。在此文件中,我在标题中添加了“文本域:mu函数”,然后加载了textdomain:

add_action( \'plugins_loaded\', \'myplugin_muload_textdomain\' );
function myplugin_muload_textdomain() {
load_muplugin_textdomain( \'mu-functions\', basename( dirname(__FILE__) ) . \'/inc/languages\' );
}
我在mu plugins目录中创建的插件的结构如下:

在同一个目录中,我有一个“inc”(include)文件夹,我将通过“mu function.php”文件中的“include\\u once()”函数调用的所有其他文件放在该文件夹中。与这些文件一起,在同一个“inc”文件夹目录中,我有一个“languages”文件夹,我在其中创建了“mu functions.pot”文件,该文件已翻译为葡萄牙语,然后生成“.mo”和“.po”文件。

在我的孩子主题中,我对这些“.mo”和“.po”文件有问题。我在另一个论坛上发现,我只能按语言环境(因此在本例中为“pt\\u pt”)而不是“Text-Domain-pt\\u pt”来命名它们。此问题已成功解决。因此,出于测试目的,我又生成了另外两个“.mo”和“.po”文件。以下是“我的语言”文件夹中的文件:

mu-functions-pt\\u pt。mo-functions-pt\\u pt。po功能。电位计。mo

  • pt\\U pt。有谁能帮帮我吗?我错过了什么?

  • 2 个回复
    SO网友:Benoti

    在mu插件中需要使用另一个操作。

    add_action(\'muplugins_loaded\', \'myplugin_muload_textdomain\');
    
    plugins_loaded 只有在加载活动插件和可插入函数后,操作才会起作用。

    mu插件不是常规插件,不会像它们那样加载。

    正如您在下面的链接中所看到的,mu插件是在加载其他插件之前加载的。Actions Run During a Typical Request

    SO网友:Eduardo Leão

    问题在于线路:

    load_muplugin_textdomain( \'mu-functions\', basename( dirname(__FILE__) ) . \'/inc/languages\' );
    
    更具体地说,功能:

    basename( dirname(__FILE__) ) 
    
    由于我的plugin and language文件夹位于mu plugins文件夹的根目录中,因此正确的代码是:

    load_muplugin_textdomain( \'mu-functions\', \'lang\' );
    
    我在以下链接中找到了更多信息:https://codex.wordpress.org/Function_Reference/plugins_urlhttp://thedaneshproject.com/posts/what-does-dirname__file__-and-basenamedirname__file__-do/

    我想如果我想把我的插件放在mu plugin文件夹的子目录中,我必须玩得更多才能理解它。

    抱歉耽搁了Benoti,感谢您的支持!

    相关推荐

    Error on update translation

    我在本地主机(WAMP)上安装了以我当前语言(pt\\U BR)编写的新版本WordPress。登录后,WordPress告诉我存在翻译更新。我单击进行更新,出现以下消息:Atualizando traduções de WordPress (pt_BR)… O pacote não pôde ser instalado. PCLZIP_ERR_BAD_FORMAT (-10) : Unable to find End of Central Dir Record signature 翻