なんとなく面倒そうなイメージがあったRuby-GetTextですが、超簡単でした。
すみません。<誰に
参考サイト
Rails のためのものぐさな Web アプリケーションの国際化手法 - 川o・-・)<2nd life
http://d.hatena.ne.jp/secondlife/20070207/1170835130
C:\Documents and Settings\sakata>gem install gettext Bulk updating Gem source index for: http://gems.rubyforge.org Select which gem to install for your platform (i386-mswin32) 1. gettext 1.90.0 (ruby) 2. gettext 1.10.0 (mswin32) 3. gettext 1.10.0 (ruby) 4. gettext 1.9.0 (mswin32) 5. gettext 1.9.0 (ruby) 6. Skip this gem 7. Cancel installation > 1 Successfully installed gettext-1.90.0
environment.rbの最後に追記。
# Include your application configuration below require 'gettext/rails'
application.rbに追記。
class ApplicationController < ActionController::Base init_gettext "テキストドメイン(適当な英文字列)" # Pick a unique cookie name to distinguish our session data from others' session :session_key => '_fieldmanagement_session_id' after_init_gettext :locale_setting def locale_setting GetText.locale = ::Locale::SystemCGI.system.language rescue nil end end
database.ymlはきちんと編集しましょう。
development: adapter: mysql database: ************ username: ************ password: ************ host: localhost encoding: utf8
scaffoldすれば画面は英語のままに見えますが、エラーメッセージは日本語化されてます!
さらに、modelの属性も日本語化します。
Rakefileに追記します。
require 'rubygems' require 'gettext/utils' desc 'Update pot/po files.' task :updatepo do GetText.update_pofiles('テキストドメイン(適当な英文字列)', Dir.glob("{app,config,lib}/**/*.{rb,rhtml}"), 'テキストドメイン(適当な英文字列)1.0.0' ) end desc 'Create mo-files' task :makemo do GetText.create_mofiles(true, 'po', 'locale') end
その後「rake updatepo」すると、ルート/po/テキストドメイン.potが出来ます。
ルート/po/ja/テキストドメイン.po(potじゃなくpo)を作成して編集。
#: app/models/problem.rb:- msgid "Problem|Description" msgstr "内容"
こんな感じで翻訳。
「rake makemo」してサーバーを再起動すればOK!