我无法使用.mo文件翻译插件中的文本,Load_plugin_extdomain()函数始终为FALSE

时间:2019-03-15 作者:Marcogomesr

我创建一个插件只是为了测试

/**
 * @package SurveyPlugin
 * @version 1.0
 */
/*
Plugin Name: Survey Plugin
Plugin URI: http:marcogomesweb.com
Description: This is survey
Author: NodeLondon
Version: 1.0
License: GPLv2 or later
Text Domain: survey-plugin
*/

function get_dummy_text() {
    $text = [
        __( \'city hotels\' , \'survey-plugin\' )
    ];
    return $text[0];
}

add_action(\'admin_notices\', \'show_dummy_text\');

function show_dummy_text(){
    $text = get_dummy_text();
    global $locale;
    echo "<br>". $locale . "<br>";
    echo "<p id=\'wp-admin-motivation\'>$text</p>";
}


add_action( \'plugins_loaded\', \'wan_loaded_textdomain\');


function wan_loaded_textdomain(){

     $loadfiles = load_plugin_textdomain(\'survey-plugin\', false, 
     dirname( plugin_basename( __FILE__ ) ) . \'/languages/\' );

     plugin_basename( __FILE__ ). \'/languages/\' );



     var_dump($loadfiles); // is always false


}
我安装Poedit,我创建一个。mo文件survey-plugi-es_ES.mo在里面/plugins/survey-plugin/languages/

enter image description here

survey-plugi-es_ES.mo

msgid ""
msgstr ""
"Project-Id-Version: Survey Plugin\\n"
"POT-Creation-Date: 2019-03-15 14:16+0000\\n"
"PO-Revision-Date: 2019-03-15 14:16+0000\\n"
"Language-Team: Marcogomesr\\n"
"MIME-Version: 1.0\\n"
"Content-Type: text/plain; charset=UTF-8\\n"
"Content-Transfer-Encoding: 8bit\\n"
"X-Generator: Poedit 2.2.1\\n"
"X-Poedit-Basepath: ..\\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\\n"
"X-Poedit-KeywordsList: __\\n"
"Last-Translator: \\n"
"Language: es\\n"
"X-Poedit-SearchPath-0: .\\n"
"X-Poedit-SearchPath-1: survey-plugin.php\\n"
"X-Poedit-SearchPathExcluded-0: src\\n"
"X-Poedit-SearchPathExcluded-1: dist\\n"

#: survey-plugin.php:79
msgid "city hotels"
msgstr "ciudad"
这就是回声

enter image description here

更改中的语言后settings / site languages仍然显示相同,

我在跟踪这个tutorial 但还是不知道为什么

1 个回复
SO网友:Sally CJ

(修改后的答案)

答案很简单,因为WordPress无法找到MO文件,尽管该文件本身存在(在插件的languages 目录)。

原因如下:MO文件需要按照以下格式命名:{text-domain}-{locale}.mo, 和{text-domain}-{locale}.po 用于采购订单文件请参见Loading Text Domain 了解更多信息。

所以您正在尝试加载survey-plugin 域:

load_plugin_textdomain( \'survey-plugin\', false, dirname( plugin_basename( __FILE__ ) ) . \'/languages/\' )
因此es_ES 地区(Español),

MO文件名必须为survey-plugin-es_ES.mo.

采购订单文件名必须为survey-plugin-es_ES.po.

我想您可能不知道POT(翻译模板)文件需要这样命名:{text-domain}.pot?例如。survey-plugin.pot 在你的情况下。

或者是survey-plugi 只是一个输入错误?:)

但即便如此,我希望这个答案对(其他开发人员/读者)有所帮助。

相关推荐

Translation for plugin

我修改了a。po文件,基本上是我以txt文件的形式打开并进行了更改,但是我上传了它,并且更改不起作用。我想知道我是否需要一个特殊的软件来做和生成一个新的。mo每次我做出改变,或者我错过了什么?提前感谢