6

嘿,我正在尝试本地化一个名为 Donate Plus 的插件(在技术上已本地化)。

该插件附带 en_CA 和 de_DE 文件,我尝试创建 he_IL 文件但没有成功。所以我尝试了插件附带的de文件,但没有用。

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

这是设置代码:

load_plugin_textdomain( 'dplus', '/wp-content/plugins/donate-plus' );

我确实检查了所有字符串是否都设置为本地化。

有人有线索吗?

4

6 回答 6

9

我只是遇到了类似的问题,您是否尝试将文件从 de_DE.po 和 de_DE.mo 重命名为 name-of-plugin-de_DE.mo 和 name-of-plugin-de_DE.po(更改 name-of-plugin当然是你的)?

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

于 2015-03-15T22:56:35.450 回答
3

load_plugin_textdomain 采用三个参数。在您的情况下,它将是这样的(假设 .po 和 .mo 文件位于名为“languages”的子目录中)

load_plugin_textdomain( 'dplus', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
于 2012-05-02T07:23:39.137 回答
1

我检查了DonatePlus 插件的来源,发现该插件进行了错误的本地化。

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

if( class_exists('DonatePlus') )
    $donateplus = new DonatePlus();
于 2012-04-20T10:09:56.280 回答
0

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

于 2012-04-20T06:21:20.780 回答
0

使用:load_textdomain(TEXT_DOMAIN, WP_PLUGIN_DIR.'/'.dirname(plugin_basename( FILE )).'/languages/'.get_locale().'.mo');

于 2015-07-02T07:58:37.027 回答
0

load_plugin_textdomain我有一个类似的问题,我正在使用 PSR-4 从服务类中加载带有函数的翻译文件。这意味着dirname( plugin_basename( __FILE__ ) )字符串返回了错误的路径。

  • 正确的路径是相对路径your-plugin/languages(假设您从/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/");

此外,我根本没有使用操作钩子而不是initorplugins_loaded并在插件开始时触发了该load_plugin_textdomain函数,因为钩子没有足够早地触发,无法翻译管理菜单和操作链接。

于 2021-05-06T08:30:45.833 回答