http://d.hatena.ne.jp/propella/20061102/p1 に書いた物と重複しますが、管理上のメモです。まずサンプルの po ファイル ja.po を作ります。
msgid "" msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid "Hello, world" msgstr "こんにちは、世界"
誰かが更新した場合 po をマージ。最初の引数が手で翻訳したもの。二番目の引数はテンプレートか古い翻訳ファイル。
$ msgmerge ja.new.po ja.po -o ja.po
po から mo を作る。mo を作る前にドメイン名を決めます。というか、普通プログラムで決まっています。そして mo は ロケール名/LC_MESSAGES/ドメイン名.mo という名前で作成します。
$ mkdir -p ja/LC_MESSAGES $ msgfmt ja.po -o ja/LC_MESSAGES/MyDomain.mo
確認の為、mo を再変換して中身を見てみます。
$ msgunfmt ja/LC_MESSAGES/MyDomain.mo -o -
プログラムでどう翻訳されるかテスト
$ env LANG=ja TEXTDOMAINDIR=. gettext -d MyDomain "Hello, world"