如何使用 Rails I18n 查找任何级别的翻译?

How to find translation in any level with Rails I18n?

t some_translation_key仅在some_translation_key为第一层时才查找,即en.some_translation_key。我想要一个可以在任何级别找到翻译的方法,即:

en:
  level1:
    level2:
      some_translation_key: 'The translation of some translation key'

我仍然想在不知道 level1level2 的情况下使用 t some_translation_key 访问它。有办法吗?

您可以使用以点分隔的字符串。

t("level1.level2.some_translation_key")

您如何区分 level1.level2.some_keylevel3.level4.some_key 的翻译?

要获得简洁的翻译键,您可以像这样使用它:t '.some_key',这将在 #{controller}.#{view}.some_key.

中查找键

例如,如果您在 app/views/users/new.html.erb 中有此代码:

<h1><%= t '.title' %></h1>

Rails 将查找关键字为 users.new.title 的翻译。

参见 4.1.4 "Lazy" 查找 部分 http://guides.rubyonrails.org/i18n.html

如果我没看错你的问题;那么为什么不使用这些属性呢?即使使用 activerecord 也可能是个好主意:http://api.rubyonrails.org/classes/ActiveModel/Translation.html#method-i-human_attribute_name