WordPress の Attitude テーマに日本語翻訳ファイルを追加する方法です。
子テーマを利用していることを前提としており、子テーマのディレクトリ側に翻訳ファイルを追加します。
前置き(WordPressの国際化機能について)
WordPress は gettext という技術を利用した「国際化」機能が標準で実装されています。Webサーバに各言語毎の翻訳ファイルを用意しておけば、あとは自動で読者の環境に適した翻訳ファイルを使ってページを表示してくれる機能です。
例えば、日本語環境で使用しているブラウザでウェブサイトにアクセスすると、
Accept-Language:ja,en-US;q=0.8,en;q=0.6
といった HTTPヘッダもWebサーバに送られます。これは「読み手側がどんな言語で記事を読みたいか」を Webサーバに伝える情報であり、上記の場合は “ja” つまり日本語を第一希望としています。そして、WordPressはこの Accept-Language
で指定された言語に合致した翻訳ファイルを使ってくれます。
※ Accept-Language の仕様は、こちら です。
環境
- CentOS (Linux) で Webサーバを実行しています。
- ターミナルアプリケーションを使って、Linuxマシンにログインして作業します。
- CentOS で gettext が入っていない場合は、以下のコマンドでインストールしておく必要があります。
$ yum install gettext
- Attitude の子テーマを利用します。子テーマのディレクトリ名は、
attitude-child
とします。 - 子テーマ側で
load_theme_textdomain()
関数を実行する場所は、attitude_add_files
アクションフックを使っても良さそうでしたが、今回は、after_setup_theme
アクションフックで実行しました。
作業
以下は、WordPress の Attitude テーマに日本語翻訳ファイルを追加する作業です(子テーマを使う場合)。
テーマのディレクトリに移動します。
$ cd path/to/wordpress/wp-content/theme
子テーマのディレクトリ内に、翻訳ファイル用のディレクトリを作成します。
これは、Attitudeのディレクトリと同じ構成にしました。
ディレクトリのパーミッションは適宜設定してください。
$ mkdir -p attitude-child/library/languages/
親(attitude)ディレクトリから gettextのテンプレートファイルをコピーします。
このファイルはコピーしなくても良いのですが、後でコマンドを実行する時にラクになるようコピーしました。
$ cp -p attitude/library/languages/attitude.pot attitude-child/library/languages/
子テーマ側の翻訳ファイル用ディレクトリに移動します。
$ cd attitude-child/library/languages/
日本語用の翻訳ファイルを生成します。
$ msginit --locale=ja --input=attitude.pot
これで、ja.po
ファイルが生成されました。
次に、この翻訳ファイルを編集して日本語をセットしていきます。
$ vi ja.po
例えば、
msgid "Tagged on: "
msgstr ""
となっているところを、
msgid "Tagged on: "
msgstr "タグ: "
と書き換え、保存して閉じます。
次に、moファイルを生成します。
$ msgfmt -o ja.mo ja.po
これで、ja.mo
ファイルが生成されました。
WordPressが画面表示の際に使用するのは、こちらのファイルになります。
次に、子テーマ側の functions.php
ファイルを開き、この翻訳ファイルを読み込む命令を記述します。
$ vi attitude-child/functions.php
以下を追記します。
function add_my_functions_to_parent_theme() {
load_theme_textdomain( 'attitude', get_stylesheet_directory() . '/library/languages' );
}
add_action( 'after_setup_theme', 'add_my_functions_to_parent_theme' );
※ load_theme_textdomain()
は親テーマ側でも実行されています。同じドメイン(第一引数、この場合は ‘attitude’)に対して再度実行するとデータがマージされます。
以上の作業により、記事ページに表示されるタグ名の部分が変更されます。
こうなっていたのが、
こうなりました。
まとめ
翻訳ファイルの仕組みは WordPressが持っている機能ですので、Attitude に限った話しではありません。他のテーマを利用している場合も参考にしてみてください。