[CMS]多言語化、翻訳ファイル.po、.mo。

by codechord. 0 Comments

  • このエントリーをはてなブックマークに追加
  • このエントリーをはてなブックマークに追加

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で使ってみたけど、使いやすかった。

poEdit

poeditキャプチャ

wordpressでのローカライズ。(使い方を超ざっくり)

 

  • _e( ):値を出力。eはechoのこと。
  • __( ):値を返す。 2.7.1
  • 例) _e(“(more…)”) ⇒ (続きを読む…) と表示される。

直接出力したい場合は_e()を使う。出力擦る必要がない場合は__()を使う。

  • テーマの場合: 「load_theme_textdomain()」
  • プラグインの場合:「load_plugin_textdomain()」

それぞれの関数の使い方は割愛。wordpressの公式ドキュメントなんかで調べるとすぐわかりますよ。

こちらを参照させていただきました:
プラグインとテーマをローカライズする:iDeasilo


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>