[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:11msgid "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
コメントを残すコメントをキャンセル
POPULAR ENTRY
- README.mdファイル。マークダウン記法まとめ
- 一石三鳥!?SublimeText2とsass/SCSS(compass)+SFTP(FTP)で作業効率化する方法。
- 3つの簡単便利Javascriptテンプレートエンジン。Mustache.js, Handlebars.js, Microtemplating
- Sublime Text 2とCtagsの組み合わせがすごい。開発スピードUP[Mac版]
- MacのApp Storeに接続出来ない場合の対処法
- [CMS]多言語化、翻訳ファイル.po、.mo。
- WordCamp vancouver 2012へ行ってきた、まとめ
- パララックスでのイベントの考察。scroll / throttle / debounce / touchmove / mousewheel
- docker imagesに表示される<none>を消す。dangling
- CodaとZen-Codingのショートカットまとめ。極めると早い。
RECENT ENTRY
PROJECT
CATEGORY
ARCHIVE
- 2020年10月 (3)
- 2019年9月 (3)
- 2019年8月 (2)
- 2019年5月 (1)
- 2019年3月 (1)
- 2018年12月 (1)
- 2018年9月 (1)
- 2018年7月 (1)
- 2018年4月 (1)
- 2016年12月 (2)
- 2016年2月 (1)
- 2016年1月 (1)
- 2015年12月 (1)
- 2015年8月 (1)
- 2015年6月 (1)
- 2015年5月 (2)
- 2014年9月 (1)
- 2014年6月 (1)
- 2014年1月 (1)
- 2013年7月 (1)
- 2013年3月 (2)
- 2012年12月 (2)
- 2012年10月 (1)
- 2012年1月 (3)
- 2011年7月 (1)
- 2011年6月 (2)
- 2011年2月 (1)
- 2010年6月 (4)
