Rails 3 I18n label_tag翻译

时间:2010-12-18 21:21:20

标签: internationalization label ruby-on-rails-3

有人会认为以下代码会访问I18n:

= label_tag(:person_name)

并查找en.helpers.label.person_name或类似的东西。但是,rails代码似乎没有使用I18n:

159:       def label_tag(name = nil, content_or_options = nil, options = nil, &block)
160:         options = content_or_options if block_given? && content_or_options.is_a?(Hash)
161:         options ||= {}
162:         options.stringify_keys!
163:         options["for"] = sanitize_to_id(name) unless name.blank? || options.has_key?("for")
164:         content_tag :label, content_or_options || name.to_s.humanize, options, &block
165:       end

因此似乎唯一的选择是明确调用label_tag(:person_name, I18n.t(:person_name))。这似乎是不必要的,所以我在这里遗漏了什么或者我应该在轨道补丁上工作吗?任何意见都表示赞赏。

1 个答案:

答案 0 :(得分:1)

= label_tag(:person_name)无效。但您可以使用t()方法来实现此目的 工作

= label_tag(t(:person_name))

然后可以添加翻译:

然后在档案en.yml中:

en: 
  person_name: John

您还可以将翻译与其所在的视图联系起来:

app/views/something/index.html.haml

= label_tag(t('.person_name'))

会在文件en.yml中查找此翻译:

 en
  something
    index
      person_name: John