我希望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')
有更简单的方法吗?
答案 0 :(得分:14)
如果使用Rails 4.2,您可以将占位符属性设置为true:
= f.text_field :first_name, placeholder: true
并在语言环境文件中指定占位符文本,如下所示:
en:
helpers:
placeholder:
user:
first_name: "Your name"
答案 1 :(得分:1)
使用Rails&gt; = 4.2,您可以将占位符属性设置为true
= f.text_field :first_name, placeholder: true
并在您的本地文件中(例如en.yml):
ru:
activerecord:
attributes:
user:
first_name: Your name
否则(Rails&gt; = 3.0)我认为你可以这样写:
= f.text_field :attr,
placeholder: "#{I18n.t 'activerecord.attributes.user.first_name'}"
答案 2 :(得分:0)
您可以在http://rubydoc.info/docs/rails/ActionView/Helpers/Tags/Label查看渲染源,了解Rails的工作原理。它可能没有比你更好的东西,但你可以刷一些Rail的逻辑,并把它粘在一个帮手,如果你有很多事情要做。或者,您可以考虑使用自定义表单构建器来删除整个表单中的一些重复,而不仅仅是占位符。