【问题标题】:How do I translate placeholder text in Rails 4?如何在 Rails 4 中翻译占位符文本?
【发布时间】:2014-10-29 21:14:26
【问题描述】:

我希望 Rails 能够像处理表单标签一样自动翻译占位符文本。我该怎么做?

表单标签自动翻译如下:

= f.text_field :first_name

此助手使用语言环境文件:

en:
  active_model:
    models:
      user:
        attributes:
          first_name: Your name

输出这个 HTML

<label for="first_name">Your name</label>

如何才能翻译占位符?我是否必须像这样输入完整的范围:

= f.text_field :first_name,
    placeholder: t('.first_name', scope: 'active_model.models.user.attributes.first_name')

有没有更简单的方法?

【问题讨论】:

    标签: ruby-on-rails internationalization rails-i18n


    【解决方案1】:

    如果使用 Rails 4.2,可以将 placeholder 属性设置为 true:

    = f.text_field :first_name, placeholder: true
    

    并像这样在语言环境文件中指定占位符文本:

    en:
      helpers:
        placeholder:
          user:
            first_name: "Your name"
    

    【讨论】:

    • 嵌套模型需要accepts_nested_attributes_for :model
    【解决方案2】:

    使用 Rails >= 4.2,您可以将 placeholder 属性设置为 true

    = f.text_field :first_name, placeholder: true

    在您的本地文件中(例如 en.yml):

    ru:
      activerecord:
        attributes:
          user:
            first_name: Your name
    

    否则(Rails >= 3.0)我认为你可以这样写:

    = f.text_field :attr,
        placeholder: "#{I18n.t 'activerecord.attributes.user.first_name'}"
    

    【讨论】:

    • 这个答案出现在低质量审查队列中,大概是因为您没有提供任何代码解释。如果此代码回答了问题,请考虑在答案中添加一些解释代码的文本。这样一来,您就更有可能获得更多支持,并帮助提问者学习新知识。
    【解决方案3】:

    您可以在http://rubydoc.info/docs/rails/ActionView/Helpers/Tags/Label 查看渲染源代码,了解 Rails 是如何做到的。它可能不会比你做得更好,但如果你有很多事情要做,你可能会刷一些 Rail 的逻辑并将其粘贴在帮助程序中。或者,您可以考虑使用自定义表单构建器来删除整个表单中的一些重复项,而不仅仅是占位符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 2014-05-02
      • 2018-04-11
      • 2014-01-28
      • 1970-01-01
      相关资源
      最近更新 更多