web-dev-qa-db-ja.com

buddypressのテーマ固有の翻訳を作成する方法?

当初はBuddyPressフォーラムで質問されました

配布目的のために、私は私のカスタマイズされたbuddypress言語ファイルを私の他の言語ファイルと一緒に私のテーマに含めたいと思います。何を試しても、 buddypress codex で説明されているように、言語ファイルをwp-content/languagesにコピーして表示することしかできません。私は以下がうまくいくと思いました、しかしそれはしません:

function load_buddypress_language_files() {
    load_theme_textdomain('buddypress', get_template_directory() . '/lang');
}
add_action('plugins_loaded', 'load_buddypress_language_files');

これは可能ですね。

WP:3.5.1 BP:1.7.2

1
Justin S

まず、plugins_loadedフックに追加されたアクションは、テーマfunctions.phpまたは他のテーマファイルからは動作しません。その時点では既に起動されているからです(テーマファイルからは遅すぎます)。

あなたができることは、あなたのアクションをafter_setup_themeにフックし、そして最初にbuddypressテキストドメインをアンロードし、そしてあなたのカスタムbuddypressテキストドメインファイルを追加することです。その理由は、WordPressがすでに追加されているテキストドメインの翻訳ファイルをロードしないためです。

add_action('after_setup_theme', 'replace_bp_mofile');

function replace_bp_mofile() {
    $mo_file = get_stylesheet_directory() . '/languages/' . sprintf( 'buddypress-%s.mo', get_locale() );
    if (file_exists( $mo_file )) {
        unload_textdomain('buddypress');
        load_textdomain('buddypress', $mo_file);
    }   
}
1
Ahmad M