我有一个例子ymls:
en:
hello:
world: World
time:
am: "AM"
pm: "PM"
ja:
hello:
world:
time:
am: "午前"
pm: "午後"
当我尝试调用缺少的区域设置时,后备运行良好:
I18n.locale = :ja
I18n.t('hello.world') => 'World'
但是当我调用父键(hello
)时,它会在某些值上返回'nil':
I18n.locale = :ja
I18n.t('hello') => { world: nil, time: { am: "午前", pm: "午後" } }
如何通过后备获得翻译:{{1}}
谢谢!
答案 0 :(得分:0)
您是否尝试使用RadioButtons
选项调用translate方法?
答案 1 :(得分:0)
当语言环境中不存在键时,回退有效。这里的问题是hello
存在。
我遇到了相同的要求。我最终要做的是在加载时而不是在运行时应用后备,如下所示:
I18n::Backend::Simple.prepend(Module.new do
def init_translations
super
# Can't do anything if fallbacks haven't loaded yet.
return unless I18n.respond_to?(:fallbacks)
merged = {}
available_locales.each do |base|
::I18n.fallbacks[base].reverse.each do |fallback|
merged[base] ||= {}
merged[base].deep_merge!(@translations[fallback] || {})
end
end
@translations = merged
end
end)