RailsでRubyのl10n用ライブラリRuby-GetTextでハマってmasatoさんに助けられたのでメモります。
sudo gem install gettext
config/environment.rbに下記追加
$KCODE = 'u'
require 'jcode'
require 'gettext/rails'
app/controller/application_controller.rbに下記追加
class ApplicationController < ActionController::Base
init_gettext "my_app_name" # 自分のアプリ名
end
こんな感じのgettext.rakeタスク作成
require 'gettext/utils'
desc "Update pot/po files."
task :updatepo do
GetText.update_pofiles(
"my app name",
Dir.glob("{app,config,components,lib}/**/*.{rb,rhtml}"),
"my app name 0.0.1"
)
end
desc "Create mo-files"
task :createmo do
GetText.create_mofiles(true, "po", "locale")
end
potファイルを作成
rake updatepo
potから各言語用ファイルを生成(cpでもいいがmsginitを使うといい感じのヘッダを入れてくれる)
msginit -i po/my_app_name.pot -o po/ja/my_ap_name.po -l ja
今回糞ハマったのは foo.pot → ja/foo.po としなければならないところを foo.pot → ja/foo.pot とそのままの名前でコピってたとこ。これだと当然moはできねえ・・・。
poを適当にいじってmoを生成
rake createmo
ls locale/ja/LC_MESSAGES/my_app_name.mo
locale/ja/LC_MESSAGES/my_app_name.mo
エラーメッセージが勝手に多言語化されてたりと、poいじる前からかなり便利ですな。追記:
Ruby-Gettextの翻訳具合が気に食わない場合はそっちのpoをいじればOK。大体この辺に入ってるハズ。
/var/lib/gems/1.8/gems/gettext-1.9.0/po/ja/rails.po