カスタムプラグインを翻訳しようとしています。
手動でfr_CA.po/.mo
をwp-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/.mo
をwp-content\languages\plugins
に入れ、fr_FR(.mo/.po)
をmyplugin-fr_FR(.mo/.po)
に変更すると、プラグインが言語を変更します
しかし、私は自分の.po/.mo
を自分のpluginsフォルダに入れたいのです。
誰が問題なのか知っていますか?
load_plugin_textdomain
のソースコードから、関数が最初に$domain . '-' . $locale . '.mo'
の中でmyplugin-fr_FR.mo
(つまりWP_LANG_DIR . '/plugins/' . $mofile
)を探すことは明らかです。
ファイルが存在しない場合にのみ、指定されたパスの検索を開始し、メインのプラグインディレクトリに存在しない場合はそれを開始します。そのため、指定したディレクトリにmoファイルがない場合は、存在しないか、間違ったパスを指定しています。
入力ミスがあるかどうかはわかりませんが、dirname
とplugin_basename
を組み合わせる代わりに、 plugin_dir_path
を使用して正しいディレクトリを指定することをお勧めします。