Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Internationalization Rails 3 I18n标签和标签转换_Internationalization_Label_Ruby On Rails 3 - Fatal编程技术网

Internationalization Rails 3 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_

有人会认为以下代码可以访问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_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()方法作为第二个参数来提供翻译文本值。