ruby-on-rails - 在 Rails 中,如何组织标签以外的表单元素的本地化数据?

标签 ruby-on-rails internationalization

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

我已经阅读了i18n guide ,它是一个很好的来源。它甚至 suggests a file organization对于本地化文件,这是一个很好的起点:

|-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

但是,我不确定保存一些通常在表格中找到的额外(国际化)信息的最佳位置是什么,例如:
  • 输入占位符
  • 帮助文本(在输入旁边,有更详细的信息)

  • 问题是:此信息与 View 有关(与模型无关)。但是,它经常在每个模型、每个属性的基础上进行描述——这使我倾向于将它们放在模型文件中的 activerecord 属性下。

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

    最佳答案

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

    我个人倾向于不同意指南建议的组织。 i18n 本质上完全属于 View 层的领域。将“views”文件夹放在那里有点令人困惑,并且可能导致不止一个开发人员遇到您现在遇到的确切问题。

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

    # 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 本身 currently在两个地方寻找标签翻译。第一的:
    helpers:
      label:
        model:
          attribute: 'translation'
    

    回退到 activerecord 翻译:
    activerecord:
      attributes:
        model:
          attribute: 'translation'
    

    这有点像一个陷阱,因为这意味着表单标签和事件记录错误(以及其他翻译)会有所不同。例如,如果您希望表单标签更像是一个提示(例如,属性“body”的“输入正文”),这很好,但如果您的 helper.label 也可能成为错误的来源。显然不是指 activerecord 翻译,例如(属性“body”的“输入消息”)。所以要小心覆盖。

    关于ruby-on-rails - 在 Rails 中,如何组织标签以外的表单元素的本地化数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13289515/

    相关文章:

    ruby-on-rails - rake 数据库 :migrate error 'PG::UndefinedColumn: ERROR: column "slug"does not exist'

    ruby-on-rails - 如何在 Ruby 中从 Savon 调用此安全 Web 服务 WSDL?

    ruby-on-rails - Capistrano::Configuration:Class 的未定义方法 `instance'

    linux - GNU gettext 故障排除

    ruby-on-rails - 将唯一 ID 附加到 simple_form 生成的单选按钮输入,并将匹配值附加到关联标签

    ruby-on-rails - mongoid yaml 结合主机的环境变量

    c# - MVC 验证消息国际化

    .net - 我(美国人)如何测试我的 ASP.NET/SQL Server 应用程序是否正确处理德国的小数

    ruby-on-rails - 明确告诉翻译成什么语言

    html - 风格化文本以针对不同的语言使用不同的字体?