Ruby on rails 在Rails中,如何组织表单元素(而不是标签)的本地化数据?

Ruby on rails 在Rails中,如何组织表单元素(而不是标签)的本地化数据?,ruby-on-rails,internationalization,Ruby On Rails,Internationalization,我正在创建我的第一个Rails应用程序,它将获得国际化支持 我已经读过了,这是一个很好的来源。它甚至适用于本地化文件,这是一个非常好的起点: |-defaults |---es.rb |---en.rb |-models |---book |-----es.rb |-----en.rb |-views |---defaults |-----es.rb |-----en.rb |---books |-----es.rb |-----en.rb |---users |-----es.rb |----

我正在创建我的第一个Rails应用程序,它将获得国际化支持

我已经读过了,这是一个很好的来源。它甚至适用于本地化文件,这是一个非常好的起点:

|-defaults
|---es.rb
|---en.rb
|-models
|---book
|-----es.rb
|-----en.rb
|-views
|---defaults
|-----es.rb
|-----en.rb
|---books
|-----es.rb
|-----en.rb
|---users
|-----es.rb
|-----en.rb
|---navigation
|-----es.rb
|-----en.rb
但是,我不确定什么地方是保存一些额外(国际化)信息的最佳位置,这些信息通常以表格形式出现,例如:

  • 输入占位符
  • 帮助器文本(在输入旁边,有更详细的信息)
问题是:这些信息属于视图(而不是模型)。但是,它经常以每个模型、每个属性为基础进行描述,这使我倾向于将它们放在模型文件中的activerecord属性下

我的问题:放置这些本地化数据的最佳位置是什么?无论是文件组织(哪个文件夹)还是文件内部的组织。

我认为这个问题没有“正确”的答案

就个人而言,我倾向于不同意指南建议的组织。i18n本质上完全在视图层的域中。把一个“视图”文件夹放进去会有点混乱,而且可能会导致不止一个开发人员遇到您现在遇到的问题

我建议扔掉
视图/book
文件,并将与模型相关的所有内容保留在同一个文件中。所有的翻译都是针对“视图”的,将与单个模型相关的所有翻译放在一个地方可能更干净,更不容易出错

# locale/models/model.en (or es, etc)

# all the activerecord translations
activerecord:
  models:
    # ...
  attributes:
    # ...
  errors:
    # ...
# then your form translations.
helpers:
  label:
    # Here you might add overrides for activerecord attribute lookups, but
    # do so with care (see note below).

  # then below are your custom view fields
  placeholders:
    model:
      attribute: 'translation'
  details:
    model:
      attribute: 'translation'

有关
helpers.label
activerecord.attributes
的说明:

Rails本身在两个位置查找标签翻译。第一:

helpers:
  label:
    model:
      attribute: 'translation'
返回到activerecord翻译:

activerecord:
  attributes:
    model:
      attribute: 'translation'

这有点像陷阱,因为这意味着表单标签和activerecord错误(以及其他翻译)将有所不同。例如,如果您希望表单标签更像是一个提示(例如属性“body”的“Enter the body”),那么这是可以的,但是如果您的
助手。label
显然不是指activerecord翻译,例如(“Enter the message”for attribute“body”)。所以请小心覆盖。

您使用的是什么版本的rails?i18n名称空间策略随着时间的推移已经发生了很大的变化。非常棒的讨论。谢谢分享你的经验!据我所知,您的“当前”链接现在应该指向-但我不确定这如何表明它会返回到activerecord翻译。你还记得那条链子是怎么被跟踪的吗?