SakuraWi - BLog

みんなのウェディングのエンジニア。聴いたお話をまとめておく倉庫的な。スタックストックスタック!

Rails国際化 (I18n) API


tとl

I18n.t
I18n.l Time.now

は、

translate # 訳文を参照する
localize  # DateオブジェクトやTimeオブジェクトを現地のフォーマットに変換する

の意味

遅延読み込み

I18のバックエンドは、訳文が初めて参照されるときに遅延読み込みを行います。これにより、訳文を既に公開した後でもバックエンドを他のものに差し替えることができます

3 アプリケーションを国際化する

なるほどお!

Railsはt(translate) ヘルパーメソッドを自動的にビューに追加してくれるので、I18n.tとフルスペルで書かなくても済みます。さらに、このヘルパーは訳文が見つからない場合にエラーメッセージを` でラップして表示してくれます。

ヘルパーによって楽チン表記に

ロケールファイルを新しく追加した場合はサーバーを再起動しないと反映されません。

これかなり注意ですね! なんだかんだで忘れがちです。 サーバーをとめてからrails serverで再起動を忘れないように。

3.2 訳文に変数を渡す

# config/locales/en.yml
en:
  greet_username: "%{message}, %{user}!"

変数を渡してi18nに対応させることも可能

3.5 ローカライズ済みビューテンプレート

スペイン語ローカライズ版 index.es.html.erbをおくことも可能

4.1 訳文の参照

I18n.t :message
I18n.t 'message'

は等価であるので、シンボル呼び出しでも文字列として呼ぶのも同じである

また、スコープの定義も以下は全て同様のものになっている

I18n.t 'activerecord.errors.messages.record_invalid'
I18n.t 'errors.messages.record_invalid', scope: :active_record
I18n.t :record_invalid, scope: 'activerecord.errors.messages'
I18n.t :record_invalid, scope: [:activerecord, :errors, :messages]

シンボル記述ができるのは知らなかった。

デフォルトの値を設定できる

I18n.t :missing, default: [:also_missing, 'Not here']

で設定可能

ビューヘルパーの省略

ビューの時には

= t '.title'

という呼び出しが可能

パーシャルによる自動訳文スコープは、translateビューヘルパーメソッドでのみ使用できます。

4.3 複数形化

複数形にすることも可能

4.5 安全なHTML変換

HTMLを入れ込むことが可能

コードの参照

この記事のコードは

Rails国際化 (I18n) API | Rails ガイド

こちらからお借りしています。