Ruby-GetText初体験その6【po ファイルと mo ファイル】
その1【インストールしてみる】
その2【英語のアプリをまず作成】
その3【日本語を使うぞ宣言】
その4【require 'gettext/rails' と init_gettext】
その5【ファイルをUTF-8で日本語書き換え】
その6【po ファイルと mo ファイル】
いよいよ、Ruby-GetText の醍醐味の po ファイルと mo ファイルの作成といきますか!
例によって、本家のサイト様を参考に、必要と思われる箇所だけを抜粋して実行します。
■Rakefile を編集して、新たな rake コマンドを付け加える。
↓の行を Rakefile の末尾に追加して、rake updatepo コマンドと rake updatemo コマンドを追加します。
なお、book_mng_textdomain と指定してあるのは、rails_root/app/controllers/application.rb ファイルの中で、init_gettext の値として book_mng_textdomain を指定したからです。
desc "Update pot/po files."
task :updatepo do
require 'gettext/utils'
GetText.update_pofiles("book_mng_textdomain", #テキストドメイン名(init_gettextで使用した名前)
Dir.glob("{app,config,components,lib}/**/*.{rb,rhtml}"), #ターゲットとなるファイル
"blog 1.0.0" #アプリケーションのバージョン
)
end
desc "Create mo-files"
task :makemo do
require 'gettext/utils'
GetText.create_mofiles(true, "po", "locale")
end
■rake updateo コマンドを実行して、po/book_mng_textdomain.pot ファイルを生成
この book_mng_textdomain.pot ファイルが、翻訳ファイルの元になります。ただし、このファイルは直接編集しませんが。
# rake updatepo
■po/ja ディレクトリを新規作成
book_mng_textdomain.pot をコピーする先のディレクトリを作ってあげます。ja という名前のディレクトリは、日本語だから ja になります。おフランス語だったら fr になるそうです。
# mkdir po/ja
■po/ja ディレクトリに、po/book_mng_textdomain.pot ファイルを名前を変えてコピー
拡張子が pot から po に変わることに注意しながら、po/ja ディレクトリへファイルをコピーします。
# cp po/book_mng_textdomain.pot po/ja/book_mng_textdomain.po
■po/ja/book_mng_textdomain.pot ファイルを編集
さていよいよ翻訳です。
と言ってもちょこっとだけですね、今回翻訳するのは。
po/ja/book_mng_textdomain.pot の中の以下の箇所を翻訳して差し上げます。
po/ja/book_mng_textdomain.pot
BEFORE
#: app/models/book.rb:-
msgid "book"
msgstr ""
#: app/models/book.rb:-
msgid "Book|Title"
msgstr ""
#: app/models/book.rb:-
msgid "Book|Author name"
msgstr ""
#: app/models/book.rb:-
msgid "Book|Author gender"
msgstr ""
#: app/models/book.rb:-
msgid "Book|Isbn"
msgstr ""
#: app/models/book.rb:-
msgid "Book|Price"
msgstr ""
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
po/ja/book_mng_textdomain.pot
AFTER
#: app/models/book.rb:-
msgid "book"
msgstr "本"
#: app/models/book.rb:-
msgid "Book|Title"
msgstr "タイトル"
#: app/models/book.rb:-
msgid "Book|Author name"
msgstr "著者名"
#: app/models/book.rb:-
msgid "Book|Author gender"
msgstr "著者の性別"
#: app/models/book.rb:-
msgid "Book|Isbn"
msgstr "Isbn"
#: app/models/book.rb:-
msgid "Book|Price"
msgstr "価格"
■mo ファイルを生成
以下のコマンドを実行するだけで、locale/ja/LC_MESSAGES/book_mng_textdomain.mo というファイルが勝手に作成されて完了です!
# rake makemo
■Web サーバ再起動
# script/server
(※再起動しないと、一番最初の"book"がうまく訳されて表示されない・・・ということが起きたため。)
じゃじゃじゃじゃーん。以上で po ファイルと mo ファイルの巻が終わりました。
実は、もっともっと Ruby-GetText で出来ることがあるのですが、あとはマニュアル任せということにいたします。
ではさようならぁ。
[追記 07/11/23 勤労感謝の日]
ディレクトリを作る UNIX コマンドが makedir となっていました。正しくは、mkdir なので書き直しました。orz
【広告】