33

これはI18n-ceptionかもしれませんがen.yml、以下のようなファイルがあるとしましょう

en:
  my_var: Foo
  my_message: "This is a message where I'd like to interpolate I18n's %{my_var}"

のキーである%{my_var}べきことを I18n に示す方法はありますか?my_varen.yml

私は次のようなことをすることでそれを達成できることを知っています

I18n.t 'my_message', :my_var => I18n.t('my_var')

しかし、私はI18nがキーを自己参照する方法を持っていることを望んでいました.

4

3 に答える 3

39

これは実際にはかなり一般的な質問ですが、短い答えは「いいえ」です。残念ながらこれは不可能です:(

于 2013-01-13T18:17:57.207 に答える
3

現在、私はそれに苦労しています...そして最後に、カスタムyamlタイプを作成します。

初期化セクションで。

Psych.add_builtin_type('i18n') { |_type, value|
  ->(_key, _options) do
    value.gsub(/%\{([\w.]+)\}/) do |match|
      key = $1.to_sym
      if I18n.exists?(key)
        I18n.t(key)
      else
        match
      end
    end
  end
}
I18n.reload!

en.ymlで

en:
  my_var: Foo
  my_message: !!i18n "This is a message where I'd like to interpolate I18n's %{my_var}"

!!i18nカスタム組み込み型を適用します。

于 2016-03-09T12:35:54.907 に答える