Aar*_*ron 29 interpolation ruby-on-rails internationalization rails-i18n
这可能是I18n-ception,但我可以说我有一个en.yml
文件如下
en:
my_var: Foo
my_message: "This is a message where I'd like to interpolate I18n's %{my_var}"
Run Code Online (Sandbox Code Playgroud)
有没有办法向I18n表明%{my_var}
应该是my_var
关键en.yml
?
我知道我可以通过做类似的事情来实现它
I18n.t 'my_message', :my_var => I18n.t('my_var')
Run Code Online (Sandbox Code Playgroud)
但我希望I18n有办法自我引用键.
tig*_*ish 35
这实际上是一个很常见的问题,但简短的答案是否定的,不幸的是,这是不可能的:(
目前我正在努力争取......最后我创建了一个自定义 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!
Run Code Online (Sandbox Code Playgroud)
在 en.yml 中
en:
my_var: Foo
my_message: !!i18n "This is a message where I'd like to interpolate I18n's %{my_var}"
Run Code Online (Sandbox Code Playgroud)
!!i18n
应用自定义内置类型。
归档时间: |
|
查看次数: |
4805 次 |
最近记录: |