Localization 加载\u插件\u文本域不工作

Localization 加载\u插件\u文本域不工作,localization,wordpress,Localization,Wordpress,嘿,我正在尝试本地化一个名为“捐赠+”的插件(技术上是本地化的) 插件附带了en_CA和de_de文件,我尝试创建一个he_IL文件,但没有成功。 所以我试过使用插件附带的de文件,但没有成功 我已经将wp-config.php中的WPLANG设置为de_de,但这并没有改变代码 这是设置代码: load_plugin_textdomain( 'dplus', '/wp-content/plugins/donate-plus' ); 我检查了所有字符串是否都设置为本地化 有人有线索吗?所有的.

嘿,我正在尝试本地化一个名为“捐赠+”的插件(技术上是本地化的)

插件附带了en_CA和de_de文件,我尝试创建一个he_IL文件,但没有成功。 所以我试过使用插件附带的de文件,但没有成功

我已经将wp-config.php中的WPLANG设置为de_de,但这并没有改变代码

这是设置代码:

load_plugin_textdomain( 'dplus', '/wp-content/plugins/donate-plus' );
我检查了所有字符串是否都设置为本地化


有人有线索吗?

所有的.po和.mo文件都存储在哪里?它们是否在/wp content/plugins/donate plus文件夹中?如果没有,请更改路径或移动文件。

我检查了源代码,发现插件的本地化错误

load_plugin_textdomain()调用是在DonatePlus类构造函数中进行的。但是它应该存在于'init'钩子中。正在尝试在init函数中添加以下代码(位于文件的末尾)

if( class_exists('DonatePlus') )
    $donateplus = new DonatePlus();

load\u plugin\u textdomain接受三个参数。 在您的例子中,它是这样的(假设.po和.mo文件位于名为“语言”的子目录中)


我刚刚使用了一个类似的isue,您是否尝试将您的文件从de_de.po和de_de.mo重命名为name-of-plugin-de_de.mo和name-of-plugin-de_de.po(当然,更改您的插件名称)

dplus-de_de.mo和dplus-de_de.po必须工作;)

使用:
加载_textdomain(TEXT_DOMAIN,WP_PLUGIN_DIR.'/'.dirname(PLUGIN_basename(文件)。/languages/'.get_locale().mo')

我遇到了一个类似的问题,我在使用PSR-4的服务类中使用
load\u plugin\u textdomain
函数加载翻译文件。这意味着
dirname(plugin\u basename(\uuuu FILE\uuuu))
字符串返回了错误的路径

  • 正确的路径是插件/语言的相对路径(假设您从
    /languages
    目录加载翻译文件)
  • 绝对路径,如
    /var/www/html/wp content/plugins/my plugin/languages
    ,将不起作用
我的插件文件结构如下所示:

- my-plugin
    - assets
    - languages
    - services
        - Api
        - Base
            Translation.php
        - ...
        Plugin.php
    - vendor
    - views
    composer.json
    composer.lock
    index.php
    my-plugin.php
    uninstall.php
由于我的翻译服务位于
/services/Base/
目录中,这对我很有用:

$root = plugin_basename(dirname(__FILE__, 3));
load_plugin_textdomain( 'my-plugin', false, "$root/languages/");

另外,我没有使用任何操作钩子,而是使用了
init
plugins\u loaded
,并在插件开始时启动了
load\u plugin\u textdomain
函数,因为钩子启动的时间不够早,无法转换管理菜单和操作链接。

init钩子是一个名为SaveSettings的函数,我试着在里面写你的代码,但是没有用。哦,我试着在里面写load\u plugin\u textdomain。还是一样。然而,我的主题本地化不工作,以及(它的溢价,所以我想它应该)这可能是相关的?可能是相关的。你也可以发布你主题的本地化代码吗?dplus-de_de.mo和.po可以工作,但这是因为它与load_plugin_textdomain函数的第一个参数匹配。load_plugin_textdomain('dplus',..)->dplus-de_de.mo/poyes,你说得对。不是插件的名称,是textdomain(在我尝试过的插件中是相同的,但它是正确的,可能不同)
$root = plugin_basename(dirname(__FILE__, 3));
load_plugin_textdomain( 'my-plugin', false, "$root/languages/");