web-dev-qa-db-ja.com

text_domainでは翻訳が機能しません

カスタムプラグインを翻訳しようとしています。

手動でfr_CA.po/.mowp-content\languages\pluginsに配置すれば、プラグインを翻訳することができます。

しかし、私は自分の.po/.moを"myplugin/languages"の私のpluginsフォルダに入れたいと思います。

メインファイルでは、私はこれを持っています:

 * Text Domain: myplugin
 * Domain Path: /languages/

私のテキスト

    add_action( 'init', 'myplugin_load_textdomain' );

function myplugin_load_textdomain() {
    load_plugin_textdomain( 'myplugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}

私のすべての.po / .moはそのフォルダーにありますmyplugin/languages/

私のWordpressはfr_CAにあります(WordPress 4.7.2 – fr_CA)

私はfr_FR.po /fr_CA.po(そして彼らの.mo)を持っています。


前述のように、.po/.mowp-content\languages\pluginsに入れ、fr_FR(.mo/.po)myplugin-fr_FR(.mo/.po)に変更すると、プラグインが言語を変更します

しかし、私は自分の.po/.moを自分のpluginsフォルダに入れたいのです。

誰が問題なのか知っていますか?

2

load_plugin_textdomain のソースコードから、関数が最初に$domain . '-' . $locale . '.mo'の中でmyplugin-fr_FR.mo(つまりWP_LANG_DIR . '/plugins/' . $mofile)を探すことは明らかです。

ファイルが存在しない場合にのみ、指定されたパスの検索を開始し、メインのプラグインディレクトリに存在しない場合はそれを開始します。そのため、指定したディレクトリにmoファイルがない場合は、存在しないか、間違ったパスを指定しています。

入力ミスがあるかどうかはわかりませんが、dirnameplugin_basenameを組み合わせる代わりに、 plugin_dir_path を使用して正しいディレクトリを指定することをお勧めします。

1
cjbj