RoR日本語化は結局GetTextに落ち着きそう
jascaffoldで行こうとしたが、jascaffoldで作成したcontrollerでの謎のエラーが発生して解決不能に。
よって最後の望みのGetTextに落ち着きそうである。
いい点はというと
- scaffoldで自動生成されたファイルを上書きしないので、安心感がある。
- jascaffoldと違ってファイルがいっぱい出来ないのですっきり。
ということかな。
Rakeという、JavaでいうAntみたいなものを使う。
最初はよくわからなかったが慣れると楽。
手順は
・config/environment.rbを編集。
最初の行に
$KCODE = 'u'
require "jcode"
最後の行に
require "gettext/rails"
を追加
・app/controllers/application.rbを編集。
クラス内に
GetText.locale = "ja"
init_gettext "project_name"
の2行を追加
・*_controller, *.rhtmlで、日本語化したい文字列を_()で囲む。
・Rakefile(プロジェクト直下にある)の最後に以下を追加(project_nameのところを2ヶ所書き直す)
desc "Update pot/po files." task :updatepo do require 'gettext/utils' GetText.update_pofiles("project_name", #<== テキストドメイン名(init_gettextで使用した名前) Dir.glob("{app,config,components,lib}/**/*.{rb,rhtml}"), #ターゲットとなるファイル "project_name 1.0.0" #<== アプリケーションのバージョン ) end desc "Create mo-files" task :makemo do require 'gettext/utils' GetText.create_mofiles(true, "po", "locale") end
・rake updatepoを実行。(po/project_name.potができる)
・ディレクトリpo/jaを作成し、po/project_name.poに書き直し、
msgid "Show"
msgstr "参照"
のように表示させたい日本語の文字列を書き込む。
・rake makemoを実行(locale/ja/LC_MESSAGES/project_name.moができる)
・サーバを再起動する。
以上
参考
http://www.yotabanana.com/hiki/ja/ruby-gettext-howto-ror.html