WordPressで作るサイトをローカライズしたい場合、WordPressが採用する国際化のルールに対応したテーマやプラグインを使用する必要があります。
その上で、ひとくちに国際化といっても実装のされ方の違いで色んなレイヤーのものがあります。
- WordPress本体に含まれる文言の翻訳
- テーマファイル、プラグインファイルに含まれる文言の翻訳
- 投稿やページなどのコンテンツそのものの翻訳
- WordPress本体の設定のうち、ユーザーが入力し設定する文言(サイトのタグラインとか)の翻訳
- プラグインの設定のうち、ユーザーが入力し設定する文言の翻訳
- 言語ごとに出し分けする必要があるが、WPMLが出力に関わっていないページのため動的に出し分けられないものへの対応
- 言語ごとにURLへどう反映させるか、ページの切り替えやナビゲーションといかに連動させるか
概観すると…
1と2はgettextという仕組みを使い、WordPress本体の機能のみでまかなえます。
3〜7はプラグインが必要になる部分で、とくに5についてあまり書かれているものを見かけなかったなーというのがこのエントリを書こうと思ったきっかけです。
で、3〜7を実現するのに何のプラグインを使うか。有料ですがWPML一択なんじゃないかという印象。
隅から隅まで探した訳ではないので他にあったら教えていただきたいですけど…!
たまに比較されるqTranslateは、4とか5は対応してないんじゃないかと。
個別の対応策
1と2
.poファイルを編集して.moファイルを書きだせばいいですね。編集ツールとしては管理画面で編集できるCodestyling Localizationや、デスクトップアプリのPoeditなんかがあります。3
7も見越すとプラグインが必要。 WPMLの場合は以下に説明があります。 自分のコンテンツを翻訳する | WPML4
WPMLであればストリング翻訳というプラグイン内プラグインみたいなものを入れれば、クロールして収集し、管理画面上に表示してくれるのでそこで翻訳文を入れればOK。 ストリング翻訳 | WPML5
ややこしく、サイトを見てもよくわかりません。 その他のプラグインとテーマによるテキスト翻訳 | WPML しかも結論からいうと上記ページは参考にならず、参考にすべきは以下のページです。 Language Configuration Files | WPML の4がそれ。「ストリング翻訳」の機能拡張なので、そのプラグインのディレクトリ(例:/wp-content/plugin/wpml-string-translation/wpml-config.xml)に、xml形式の設定ファイル(wpml-config.xml)を設置します。
一般的にプラグインのユーザー設定を保存する場所としてwp_options というtableを利用することが多いらしいんですが、このやり方はその場合のみ有効。wp_optionsの中で、翻訳したい文言が使用しているフィールド名をkey名として記載すればOK。
<wpml-config>
<admin-texts>
<key name="sidebarlogin_welcome_heading">
</key>
</admin-texts>
</wpml-config>
6
これはハードコードして出し分ける必要があり、WPMLでは例えばこんな感じで(言語で振り分ける場合)。<?php if (ICL_LANGUAGE_CODE == 'ja') { ?>
<!-- Japanese contents here-->
<?php } else if (ICL_LANGUAGE_CODE == 'en') { ?>
<!-- English contents here-->
<?php } ?>