子テーマを作成したとき、翻訳した日本語(英語の対訳)ファイルも子テーマに設定した言語ファイルを利用したい、またデフォルトテーマのアップデートのことを考えて子テーマで言語ファイルを利用したいときなどあると思いますので、その方法をある程度噛み砕いて書いていければと思います。
子テーマの言語ファイル利用に関して、実際の流れというか方法を交えて書きます。
1.子テーマの言語ファイルを利用するので、子テーマのフォルダに「languages」フォルダ(ディレクトリ)を用意します。
例えとしては、TwentyTenやTwentyElevenのテーマにある「language」フォルダがあるので、フォルダごと子テーマにコピーします。
2.子テーマ「language」フォルダに言語ファイルを用意します。
デフォルトの親テーマのlanguagesフォルダには、「ja.po」ファイルがあると思いますので、Poeditを使用するときに利用します。
※言語ファイルが無い場合、該当するテーマの言語(翻訳)ファイルを探すか、1から作成することになります。
3.英語の日本語対訳を表示するために対訳ソフト「Poedit」などを使用します。
Poeditoの簡単な使用方法は、以前書いた記事(翻訳エディタPoeditを使い日本語表示を更新)を読んでください。
実際に対訳ソフトを使用するのは、他の設定が終わった後になると思います。
4.子テーマにfunctions.phpファイルを作成して以下のコードを入力します。
<?php add_action('after_setup_theme', 'child_setup'); if(! function_exists('child_setup')): function child_setup() { load_theme_textdomain('child', STYLESHEETPATH . '/languages'); } endif; ?>
コードの簡単な説明
例として、「child_setup」という名前の関数を定義してますが、好きな任意の関数名で設定してください。下のコードには、child_setupという単語が3箇所ありますので、変更する場合は全て同じように変更してください。
load_theme_textdomainにある「child」の部分(第1引数)には、子テーマのフォルダ名を書きます。
※子テーマのパスについて
ローカル環境でのテスト結果、「STYLESHEETPATH」だけ、言語ファイルへのパスがうまく通りました。
※上記コードについて、ローカル環境でのテスト結果、子テーマを使用している場合に親テーマ、子テーマどちらのfunctions.phpに書いても子テーマに用意した言語ファイルが有効になりました。
5.テンプレートを編集して、子テーマの言語ファイルを読み込ませる
【例 TwentyTen:Poeditを使い、原文「Mate」を「メタ情報です」と変更した場合】
子テーマ使用時で子テーマには「sidebar.php」ファイルがない状態で、親テーマの「sidebar.php」ファイルの34行目あたりにある以下のコードの「twentyten」の部分を「child」に変更してサイトで表示の確認をすると「メタ情報です」と表示されるはずです。
【変更前】
<h3 class="widget-title"><?php _e( 'Meta', 'twentyten' ); ?></h3>
【変更後】
<h3 class="widget-title"><?php _e( 'Meta', 'child' ); ?></h3>
※「child」はfunctions.phpファイルの「load_theme_textdomain()」で設定した名前です。
【親テーマで子テーマ言語ファイル利用するとき】
上記コードのように変更したいところの「twentyten」の部分を「child」に変更すると、子テーマの言語ファイルを使用することになります。
【子テーマで子テーマ言語ファイル利用するとき】
親テーマのテンプレートを改変せずに子テーマで言語ファイルの利用先を変更するときは、子テーマに「sidebar.php」ファイルなど子テーマにテンプレートを作成して、「twentyten」の部分を「child」に変更します。
子テーマfunctions.php関連の日本語ファイル利用については後日書きます。
参考サイト:ヘボプログラマの部屋 twentytenの子テーマを作成してみた
コメント
[…] http://wpcos.com/?p=1647 […]