如何列出 Rails 中所有可用的语言环境键?

abs*_*ive 4 ruby ruby-on-rails rails-i18n ruby-on-rails-4

我的语言环境文件因一堆嵌套键而变得笨拙。有没有办法从单个区域设置文件中获取所有可用区域设置键或所有区域设置键的列表?

例如。

en:
  car:
     honda:
          civic:
               name: 'Civic'
               description: 'Entry Level Sedan'
     ferrari:
          la_ferrari:
               name: 'La Ferrari'
               description: 'Supercar'
Run Code Online (Sandbox Code Playgroud)

此语言环境应返回键列表,在本例中为

['en.car.honda.civic.name', 'en.car.honda.civic.description',
'en.ferrari.la_ferrari.name', 'en.car.ferrari.la_ferrari.name.description']
Run Code Online (Sandbox Code Playgroud)

有 Rails (I18n) 助手可以做到这一点吗?另一种方法是迭代解析的 YAML。

Wil*_*ett 9

要获取可用区域设置的数组:

I18n.available_locales
Run Code Online (Sandbox Code Playgroud)

我建议避免将多个区域设置放入一个 YAML 文件中。如果您出于某些与处理相关的原因需要这样做,您始终可以使用 *NIX shell 即时连接文件:

...到文件

cat my_app/config/locales/*.yml >> locales.yml
Run Code Online (Sandbox Code Playgroud)

...或其他进程

cat my_app/config/locales/*.yml | command_that_takes_stdin -
Run Code Online (Sandbox Code Playgroud)