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

时间:2016-06-08 17:32:11

标签: ruby-on-rails ruby-on-rails-4 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'

我仍然希望在不知道t some_translation_keylevel1的情况下使用level2访问它。有办法吗?

3 个答案:

答案 0 :(得分:1)

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

t("level1.level2.some_translation_key")

答案 1 :(得分:1)

您如何区分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的翻译。

请参阅http://guides.rubyonrails.org/i18n.html 4.1.4“懒惰”查找部分

答案 2 :(得分:1)

如果我理解你的问题;那么为什么不使用属性来处理你的工作呢?即使使用activerecord也可能是一个好主意:http://api.rubyonrails.org/classes/ActiveModel/Translation.html#method-i-human_attribute_name