[CMS]多言語化、翻訳ファイル.po、.mo。
.CMSなんかをいじっていると、.po、.mo、.potファイルなどで、多言語サイトができると。
といいますか、翻訳するためのファイルが、.po、.mo、.potファイルのこと。
難しそうだったのですが、すごく簡単でした。
(WordPressの場合は、PHP-gettextという仕組みで多言語化をおこなっている。)
po、mo、potファイル説明
まずどいういったファイルなのかという所から。
- .pot:poの元になるファイル(テキストファイル)。
- .po:potファイルに翻訳文を記入したファイル(テキストファイル)。
- .mo:poファイルからgettextにより作成されたバイナリファイル。作成するにはツールが必要。WordPressが参照するファイル。
この3つだけ。
.potファイルは翻訳元の文章のリストをまとめたテキスト。.poファイルはテキストエディタで編集できるが、.moはツールを使わなければ変換できない。
.poファイルの書式
#: wp-content/themes/abc/index.php:11 msgid "This is a translatable string." msgstr "これが可訳文字列です。"
1行目はコメント文。どのファイルの何行目に該当箇所がああるかを記述するなどなど。
2行目は翻訳元の文。
3行目は翻訳後の文。
このまとまりを必要な文だけ列挙する仕組み。
potファイルは3行目の翻訳後の文章がnullになったファイルと考えれば良い。
変換手順
2行目(msgid)を元に、3行目(msgstr)を記述していくだけ。
最後にgettextや、専用ソフトなどを使って.moファイル書きだす。以上
書き出しソフト
おすすめソフトは「poEdit」一択な気がする。macで使ってみたけど、使いやすかった。
wordpressでのローカライズ。(使い方を超ざっくり)
- _e( ):値を出力。eはechoのこと。
- __( ):値を返す。 2.7.1
- 例) _e(“(more…)”) ⇒ (続きを読む…) と表示される。
直接出力したい場合は_e()を使う。出力擦る必要がない場合は__()を使う。
- テーマの場合: 「load_theme_textdomain()」
- プラグインの場合:「load_plugin_textdomain()」
それぞれの関数の使い方は割愛。wordpressの公式ドキュメントなんかで調べるとすぐわかりますよ。
こちらを参照させていただきました:
プラグインとテーマをローカライズする:iDeasilo