2013-11-22 129 views
0

我有这样的代码显示本地化的文本:翻译simple_form错误信息

<%= f.input :full_name, :label => _('registration.form.label.name') + ':', :required => false -%> 
    <%= f.input :company, :label => _('registration.form.label.company') + ':', :required => false -%> 

正如你所看到的,标签正在使用的按键和外部系统翻译。标签部分正常工作。但是,错误消息(“不能为空”等)不会被翻译。最简单的方法是通过将它们包装在_()标签中来自定义错误消息,但我似乎无法找到它的位置。

什么是翻译错误信息的最简单方法?最好使用当前翻译系统。

+1

请问[this](http://stackoverflow.com/questions/12955208/translating-custom-error-messages)能帮助你吗? – PinnyM

+0

谢谢你的回答,但这对我没有多大的帮助。我正在使用统一的翻译管理系统,并且更改用于翻译的yml文件是不可能的。最简单的解决方案是找到正确的变量来包装_()标签,一切都会好的。 – Lightheaded

回答

-1

解决方案是创建自定义错误消息。 (这里的例子:Customize error message with simple_form

validates_length_of :name, :minimum => 5, :message => "blah blah blah" 

,并利用它们是这样的:

<%= f.input :name, :error_html => { :id => "name_error"} %> 
+0

这是真正的“THE”解决方案吗?我认为我们的目标是将邮件放在简单的yaml文件中... – Matthias

+0

对不起,这是我发现的唯一解决方法。 – Lightheaded

+0

当然,不用担心。你对这种方法有什么看法? http://stackoverflow.com/a/36410506/5521564 – Matthias

0

你可以在错误信息简单地添加到activerecord YAML

en: 
    activerecord: 
    models: 
     mymodel: 
     attributes: 
      name: 
      too_short: "%{attribute} is too short." 

这种方式,您也可以参考您的yaml中的attribute名称。

当然,理想情况下,您可以将标签和验证放在simple_form i18n yaml中,但我无法弄清楚。任何建议,这是受欢迎的。