首页 > 解决方案 > Wordpress 插件翻译:load_plugin_textdomain 不会从插件语言文件夹中加载 .mo 文件,只能从全局语言文件夹中加载

问题描述

我已经编写了一个插件,现在想让它准备好翻译(使用 __ 和 _e 以及所有这些东西)并在我使用它的时候将它翻译成(正式的)德语。我已经使用 poedit (.po >> .mo) 使用正确的命名方案my-plugin-textdomain-de_DE_formal.mo创建了语言文件。在我的插件 php 文件中,我把这一切都直截了当:

[...]

public function actions() {
    add_action('init', [$this, 'load_language_files']);
}

public function load_language_files() {
    load_plugin_textdomain('my-plugin-textdomain', false, dirname(plugin_basename(__FILE__)) . '/languages');
}

所以唯一可能不是基本的事情是我使用类结构,因此通过数组调用 load_language_files。

但是语言文件只是不加载。有趣的是,如果我将它放在 /wp-content/languages/plugins/ 目录中(这表明 .mo 文件本身应该没问题),它的加载非常好,但如果放在 /wp-content/ 中则不会插件/我的插件/语言/目录。

我什至通过记录每一行代码来调试 load_plugin_textdomain 函数,直到

return load_textdomain( $domain, $path . '/' . $mofile );

一切看起来都很好。$domain、$path 和 $mofile 具有正确的值,并且 .mo 文件根据此路径准确地位于其应有的位置。仍然没有加载翻译并且返回值为 false。

我检查了多个其他常用插件以了解它们是如何做到的,但他们的做法与我没有任何不同。我尝试了很多事情并遵循了多个教程,现在我没有想法,所以我希望你能帮助我解决这个问题。

标签: wordpresspluginsinternationalizationtranslation

解决方案


推荐阅读