当我提交包含错误的表单时,它会返回错误消息。如何使用i18n翻译这些错误消息?我已经在我的视图中翻译了所有其他文本,所以我知道l18n在Rails中是如何工作的。我现在明白了:
2 errors prohibited this user from being saved:
Email translation missing: nl.activerecord.errors.models.user.attributes.email.blank
Email translation missing: nl.activerecord.errors.models.user.attributes.email.blank
我想翻译标题和错误。
答案 0 :(得分:35)
标题的翻译是:
nl:
activerecord:
errors:
template:
header:
one: "1 error prohibited this %{model} from being saved"
other: "%{count} errors prohibited this %{model} from being saved"
body: "There were problems with the following fields:"
为了翻译错误消息,Rails将使用以下翻译顺序:
activerecord.errors.models.user.attributes.name.blank
activerecord.errors.models.user.blank
activerecord.errors.messages.blank
errors.attributes.name.blank
errors.messages.blank
所以你可以添加:
nl:
activerecord:
errors:
models:
user:
attributes:
email:
blank: "foo blank in nl bar baz"
它在Rails Internationalization (I18n) API Guide中有记录,可能会为您提供更多见解。
答案 1 :(得分:23)
只需使用find here的荷兰语翻译文件即可。它包含大多数(如果不是全部)ActiveRecord验证消息的翻译。
将文件复制到项目中的config/locales/
。
替代方法
如果您想从更新的翻译中受益,请将以下内容添加到Gemfile
,而不是手动复制翻译文件:
gem 'rails-i18n'
答案 2 :(得分:11)
rails I18n guide非常清楚。
您可以在config/locales/nl.yml
中添加以下内容来翻译属性:
nl:
activerecord:
models:
user: "User"
attributes:
email: "Email"
对于错误消息,ActiveRecord将在以下命名空间中查找它们:
activerecord.errors.models.[model_name].attributes.[attribute_name]
activerecord.errors.models.[model_name]
activerecord.errors.messages
errors.attributes.[attribute_name]
errors.messages
model
,attribute
和value
会在您的翻译中进行插值并提供,例如:
nl:
errors:
messages:
blank: "Please fill the %{model}'s %{attribute}"