Internationalization Rails 3 I18n标签和标签转换
有人会认为以下代码可以访问I18n:Internationalization Rails 3 I18n标签和标签转换,internationalization,label,ruby-on-rails-3,Internationalization,Label,Ruby On Rails 3,有人会认为以下代码可以访问I18n: = label_tag(:person_name) 然后查找en.helpers.label.person\u name或类似的内容。但是,rails代码似乎没有使用I18n: 159: def label_tag(name = nil, content_or_options = nil, options = nil, &block) 160: options = content_or_options if block_
= label_tag(:person_name)
然后查找en.helpers.label.person\u 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\u标记(:person\u name,I18n.t(:person\u name))
。这似乎是不必要的,那么我是在这里遗漏了什么,还是应该在rails补丁上工作?欢迎任何输入。=标签(:人名)
将不起作用。但是,您可以使用t()
方法来实现这一点
工作
然后可以添加翻译:
然后在文件en.yml
中:
en:
person_name: John
en
something
index
person_name: John
您还可以将翻译绑定到它所在的视图:
在app/views/something/index.html.haml
= label_tag(t('.person_name'))
将在文件en.yml
中查找此翻译:
en:
person_name: John
en
something
index
person_name: John
欢迎来到SO。您在此处提出了完全相同的问题:。请删除其中一个问题。感谢您的回复,但这些问题实际上是不同的。一种是在嵌套关系中使用f.label。这个问题涉及到label_tag的使用,它是Helpers::FormTagHelper的一种方法,而不是Helpers::FormHelper。你有没有想出一种方法来做到这一点?我正试图避免在我的本地化文件中创建两个条目…很抱歉耽搁了,但我从来没有想出一个办法。我只是简单地使用
label\u tag t(:person\u name)
。当使用t
方法和label\u tag
时,您可能希望使用t
上的:scope
选项来帮助干燥。再次感谢您的回复,但这是不可能的。我不希望label_标记访问任何对象(如person),因为该方法不会在f这样的表单对象上调用。label将是。这不起作用,因为这样您将获得翻译而不是翻译。您可以先提供符号,然后将t()方法作为第二个参数来提供翻译文本值。