大家好,在我的应用中,我建立了一个搜索框。它看起来像这样:
= simple_form_for :cars, {url: cars_path, method: :get} do |f|
= f.input :handover_location, collection: Location.all.map{|hl| [hl.name, hl.id]}
= f.input :return_location, collection: Location.all.map{|rl| [rl.name, rl.id]}
= f.input :car_class, collection: CarClass.all.map { |c| [c.name, c.id] }, include_blank: true
= f.submit
现在我不知道如何用I18n翻译这些标签。我怎么能这样做?
答案 0 :(得分:11)
查看有关i18n的简单表单文档:https://github.com/plataformatec/simple_form#i18n
它描述得非常好,并且非常详细。
例如(来自文档):
en:
simple_form:
labels:
defaults:
username: 'User name'
password: 'Password'
new:
username: 'Choose a user name'
hints:
defaults:
username: 'User name to sign in.'
password: 'No special characters, please.'
placeholders:
defaults:
username: 'Your username'
password: '****'
指定标签的默认值。 您应该查看文档,因为还有更多选项。
其次,您也可以明确地这样做,
= f.input :car, label: I18n.t('my_car_label'), prompt: I18n.t('my-car-prompt'), placeholder: I18n.t('my-placeholder')
答案 1 :(得分:2)
首先,我首先阅读docs,特别是第3部分。对于基于活动记录模型的表单,Rails有一些自定义内置支持(参见文档的第4.6部分)。例如,要将您的Car
模型名称转换为“Car”以外的其他名称,您可以这样做:
# config/locales/en.yml
en:
activerecord:
models:
car:
one: Automobile
other: Automobiles
(替换您选择的语言以支持I18n。)
但是,要使用I18n,您可以调用Rails提供的translate
方法,缩写为t
。例如:
= simple_form_for :cars, {url: cars_path, method: :get} do |f|
..
= f.label t('forms.car_class')
= f.input :car_class, collection: CarClass.all.map { |c| [c.name, c.id] }, include_blank: true
..
= f.submit
# config/locales/en.yml
en:
forms:
car_class: 'Automobile'
这将使用文本呈现标签:'Automobile'。