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 は 3 つのパラメーターを取ります。あなたの場合、それはこのようなものになります(.poおよび.moファイルが「言語」と呼ばれるサブディレクトリにあると仮定します)

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_plugin_textdomainPSR-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/");

initまた、 orの代わりにアクション フックをまったく使用せず、プラグインの最初に関数をplugins_loaded起動しました。load_plugin_textdomain

于 2021-05-06T08:30:45.833 に答える
0

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

于 2015-07-02T07:58:37.027 に答える