Ruby on rails Rails i18n-如何获取密钥的所有翻译

Ruby on rails Rails i18n-如何获取密钥的所有翻译,ruby-on-rails,internationalization,Ruby On Rails,Internationalization,我以正常方式组织翻译: en: foo: bar: 'hello friend' es: foo: bar: 'hola amigo' 我需要返回给定键的所有翻译的散列,语言作为散列的键,如下所示: # translations for foo.bar { en: 'hello friend', es: 'hola amigo' } 我如何才能从i18n引擎中提取它?回答我自己的问题,以防有人感兴趣。可能不是解决问题的最有效方法,但这确实是: Hash[

我以正常方式组织翻译:

en:
  foo:
    bar: 'hello friend'
es:
  foo:
    bar: 'hola amigo'
我需要返回给定键的所有翻译的散列,语言作为散列的键,如下所示:

# translations for foo.bar
{
  en: 'hello friend',
  es: 'hola amigo'
}

我如何才能从i18n引擎中提取它?

回答我自己的问题,以防有人感兴趣。可能不是解决问题的最有效方法,但这确实是:

Hash[
  I18n.available_locales.map{|locale|
    [locale, I18n.translate('foo.bar', default: '', locale: locale)]
  }
]

您确实可以使用
I18n
提取给定键的所有翻译:

key = 'hello'
I18n.available_locales.reduce({}) do |acc, locale|
  acc[locale] = I18n.with_locale(locale) { I18n.t(key) }; acc
end

我们同时回答。你的也行。