rails-i18n
概要
翻訳キーは階層的に整理し、予測しやすい構造にしておく
使い方
config/application.rbにconfig.i18n.default_locale = :jaを設定する
日本語ロケールファイルはconfig/locales/ja.yml
動的プレースホルダー
code:yml
ja:
greeting: "こんにちは、%{name}さん"
I18n.t('greeting', name: '田中')
メソッド
I18n.t(キー文字列, オプション)
翻訳キーに対応するテキストを取得する。yml形式のlocalesファイルからテキストを取得
オプション
locale
デロルトは現在のロケール(I18n.locale)
指定のロケールに応じた翻訳を取得する
例:I18n.t('hello', locale: :en)
default
キーが見つからなかった場合に表示するデフォルト値
例:I18n.t('unknown_key', default: 'デフォルト値')
scope
ネストされたキーの省略形を指定できる
例:I18n.t(:blank, scope: 'errors.messages')
I18n.l(日付または時刻, オプション)
日付や時刻をロケールに応じたフォーマットで表示する
code:yml
ja:
date:
formats:
default: "%Y年%m月%d日"
short: "%m/%d"
long: "%Y年%m月%d日(%a)"
code:ruby
date = Date.new(2024, 11, 25)
I18n.l(date) # => "2024年11月25日"
I18n.l(date, format: :short) # => "11/25"
オプション
format
定義したフォーマットをsymbolで指定
locale
tに同じ
formats
直接指定
例:I18n.l(Date.today, format: "%d/%m/%Y")
辞書ファイルの分割
code:text
├── defaults
│ ├── en.yml
│ └── ja.yml
├── models
│ ├── default
│ │ ├── en.yml
│ │ └── ja.yml
│ └── user
│ ├── en.yml
│ └── ja.yml
└── views
└── user
├── en.yml
└── ja.yml
ActiveRecordに関する辞書ファイルの基本構造
code:yml
ja:
activerecord:
models:
user: "ユーザー"
attributes:
user:
name: "名前"
email: "メールアドレス"
errors:
models:
user:
attributes:
name:
blank: "名前を入力してください"
email:
blank: "メールアドレスを入力してください"
invalid: "無効なメールアドレスです"
models セクション
モデル名の翻訳に使用されます。
Userモデルの場合 t('activerecord.models.user')でユーザーが取得されます。
attributes セクション
各モデルの属性名をローカライズする際に使用します。
例えば、name属性のラベルをローカライズする場合t('activerecord.attributes.user.name')で名前が取得されます。
errors セクション
バリデーションエラーのメッセージをカスタマイズするためのキーを定義します。
特定の属性に対するメッセージはmodels.{モデル名}.attributes.{属性名}.{エラー種別}の形式で設定します。
ActiveModel::Errors#add( error.add(:hogehoge, :invalid_hoge))などは内部的にI18n.translateを呼び出している
/icons/point.iconActiveRecordはActiveModelを通じてエラーメッセージを管理している ActiveRecordのバリデーションからエラーメッセージを参照
valid?
errors.addからエラーメッセージを参照
自前バリデーション
I18n.t
/icons/hr.icon