Load_Plugin_Text_DOMAIN()从不工作

时间:2020-09-18 作者:Tom

此代码从不起作用:

function i18n_load_plugin_textdomain() {
    $path = \'[DIR]/wp-content/plugins/my-plugin/languages/my-plugin-de_DE.mo\';     
    load_plugin_textdomain( \'my-plugin\', false, $path);
}
add_action(\'plugins_loaded\', \'i18n_load_plugin_textdomain\');
我还尝试了“init”而不是“plugins\\u-loaded”钩子。

我用这个不同的值(字符串!)测试了$path-没有人工作。load\\u plugin\\u textdomain()返回的总是false。

$path = \'[URL]/wp-content/plugins/my-plugin/languages/my-plugin-de_DE.mo\';
$path = \'[DIR]\\wp-content\\plugins\\my-plugin/languages/my-plugin-de_DE.mo\';
$path = \'languages/my-plugin-de_DE.mo\';
$path = \'/languages/my-plugin-de_DE.mo\';
$path = \'/languages/\';
$path = \'/languages\';
$path = \'languages\';
$path = \'/\';
$path = \'\';
但这是可行的:

function i18n_load_textdomain() {
    $mofile = \'[DIR]/wp-content/plugins/my-plugin/languages/my-plugin-de_DE.mo\';
    load_textdomain( \'my-plugin\', $mofile);
}
add_action(\'plugins_loaded\', \'i18n_load_textdomain\');
谁能告诉我为什么?

1 个回复
最合适的回答,由SO网友:DevelJoe 整理而成

你为什么要写$path: 而不是$path= 在您的第一个函数代码中?

等等,算了吧,你必须知道相对路径,你提供的是完整路径。。当使用load\\u plugin\\u textdomain时,您只能使用您的plugin文件夹+您的language files文件夹;因此,如果您的语言文件位于wp内容/插件/插件/语言中,请使用

load_plugin_textdomain( \'your-plugin\', false, \'your-plugin/languages\' );
当我用插件这样做时,翻译总是有效的。我还记得,每当我的插件翻译不起作用时,在大多数情况下,错误的路径就是问题所在。

相关推荐

What is a Theme textdomain?

我发现任何WordPress主题都使用这个函数,但我不明白它的目的是什么,在这种情况下,它是什么\'themify\'?以下是主题化中的一些示例functions.php:1) 。load_theme_textdomain( \'themify\', TEMPLATEPATH.\'/languages\' ); 2)。if (function_exists(\'register_nav_menus\')) { register_nav_menus( array(