Rails でのやり方をまとめたこの記事がいいなーと思ったので Padrino 特有の部分を設定方法を中心に書き出してみました。
設定のしかた
Padrino では config/boot.rb
で default_locale の設定をします。
I18n.default_locale = :ja
何も設定しなければ、I18n のデフォルト値( :en )が設定されます。
ちなみに、I18n の読み込みは padrino-helper が担当してます。
言語ファイル
以下のファイルが標準で読み込まれます。
これらに設定されている文言が気に入らない場合は、上記ファイルを [your_apps_root_path]/locale/
配下に設定し、適宜編集すれば、そちらが優先されます。
また、言語ファイルの設置場所を変更したい場合は、[your_apps_root_path]/app.rb
で locale_path を設定します。
set :locale_path, Proc.new { Dir[Padrino.root('config', 'locales', '**/*.yml')] }
モデル用の言語ファイルは、
# ActiveRecord or MiniRecord を使っている場合
$ rake ar:translate
# MongoMapper を使っている場合
$ rake mm:translate
で app/locale/models/
直下に生成されます。
今のところ、出力先は固定です…。
view での使い方
省略。Railsと同じ感じで t とか l とかで使えます。
本筋から外れますが、モデルのエラーをバラして1つずつ表示したい場合があったので、次のようにしてみました。
もっといいやり方があれば教えてください。
def show_error_message(model, field)
return if model.errors.messages[field].blank?
attribute = I18n.t(field, default: field.to_s.humanize, scope: [:models, model.class.name.underscore, :attributes])
message = model.errors.messages[field].first
safe_content_tag :p, "%s %s" % [attribute, message], class: :error-message
end
locale の切り替え
padrino-contribに auto_locale とか便利そうなのがありますが、使ったことないので使ったら追記します。