- バックアップ一覧
- ソース を表示
- Ruby on Rails/第7回勉強会 - gettextを使ったvalidationエラーの日本語化 は削除されています。
- 1 (2006-11-23 (木) 15:09:16)
- 2 (2006-11-23 (木) 15:20:25)
- 3 (2006-12-01 (金) 11:25:20)
- 4 (2006-12-01 (金) 16:13:21)
- 5 (2006-12-02 (土) 12:44:43)
Ruby on Rails/第7回勉強会 - gettextを使ったvalidationエラーの日本語化?
rails勉強会一覧 †
'rails' には、下位層のページがありません。
第7回勉強会のネタ †
ネタもとは下記です。
- Ruby on Railsで日本語しか使わない場合でもRuby-GetText-Packageを使う理由
http://www.yotabanana.com/lab/20060505.html - Ruby-GetText-Packageとは?
http://www.yotabanana.com/hiki/ja/ruby-gettext.html - GetTextのrdoc
http://www.yotabanana.com/gettextapi/ - Rails API ドキュメント ActionView::Helpers::ActiveRecordHelper
http://railsapi.masuidrive.jp/module/ActionView%3A%3AHelpers%3A%3AActiveRecordHelper
日時 †
- 2006/11/24(金)
参加者 †
久末さん、どうもありがとうございます!また参加してねーー。
動画 †
gettextとは †
- WikiPedia.ja:Gettext
- poファイル
#: app/controllers/application.rb:11 msgid "The errors are:" msgstr "エラーがあります。"
Ruby-GetTextとは? †
- GetText::Rails
- gem
gem install gettext
作業のながれ †
- コーディングする
echo _("The errors are:")
- msgidはソースコードから自動的に抽出。
http://www.yotabanana.com/gettextapi/classes/GetText.html#M000045#: app/controllers/application.rb:11 msgid "The errors are:" msgstr ""
- msgstrを翻訳
#: app/controllers/application.rb:11 msgid "The errors are:" msgstr ""
- moを生成
http://www.yotabanana.com/gettextapi/classes/GetText.html#M000049 - コーディングを続ける
- po再生成
updatepo
http://www.yotabanana.com/gettextapi/classes/GetText.html#M000050 - msgstrを翻訳してmoを生成
- コーディングを続ける...
Ruby-GetTextのrailsへの組み込み †
- config/environment.rbの先頭に
$KCODE = 'u' # UTF-8の場合。's' = SJIS, 'e' = EUC-JPなど require 'jcode' # Stringクラスのメソッドなどを$KCODEに指定した # 文字コードで適切に動作するように置き換えます
- config/environment.rbの末尾に
require 'gettext/rails' # Ruby-GetText-Packageを使う宣言です。
- app/controllers/application.rbに
class ApplicationController < ActionController::Base init_gettext "sample" end
http://www.yotabanana.com/gettextapi/classes/ActionController/Base.html#M000016
msgidを指定しながらコーディング †
コントローラ †
http://www.yotabanana.com/hiki/ja/ruby-gettext-howto-ror.html#Controller
- 「_」または「n_」
ビュー †
http://www.yotabanana.com/hiki/ja/ruby-gettext-howto-ror.html#Views/ActionMailer
- 「_」または「n_」
モデル †
http://www.yotabanana.com/hiki/ja/ruby-gettext-howto-ror.html#Models
- validates_xxx_of でのエラーメッセージ
- 「N_」または「Nn_」
- validateでのエラーメッセージ
- 「_」または「n_」
errors.add("title", _("%{fn} is not correct: %{title}") % {:title => title})
- 「_」または「n_」
- %{fn}
- フィールド名
- %{d}
- 長さチェックなどの境界値
- %{title}
- タイトル名
error_messages_forのタイトルの日本語化 †
http://www.yotabanana.com/hiki/ja/ruby-gettext-howto-ror.html#%A5%A8%A5%E9...
ActionView::Helpers::ActiveRecordHelper::L10n.set_error_message_title( N_("An error was found in %{record}"), N_("%{num} errors were found in %{record}")) ActionView::Helpers::ActiveRecordHelper::L10n.set_error_message_explanation( N_("The error is:"), N_("The errors are:"))
potファイルの生成 †
- lib/tasks/gettext.rakeにtaskを追加
desc "Update pot/po files." task :updatepo do require 'gettext/utils' GetText.update_pofiles( "blog", #テキストドメイン名(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からupdatepoタスクを実行
$ rake updatepo $ ls po/sample.pot
- 日本語用のpoファイルの生成
$ mkdir po/ja $ cp po/sample.pot po/ja/sample.po
moファイルの生成 †
$ rake makemo $ ls locale/ja/LC_MESSAGES/sample.mo