Rails 翻译在浏览器中的翻译字符串前面显示翻译名称
Rails translation displaying translation name in front of translation string in browser
在我的语言环境文件中,有如下翻译:
de:
activerecord:
errors:
models:
user:
attributes:
email:
taken: "Die E-Mail Adresse wird bereits benutzt."
当我在浏览器中打开所需的页面时,错误消息如下所示:
Email Die E-Mail Adresse wird bereits benutzt.
那么有人知道为什么翻译后的字符串前面还有另一个"Email"吗?
正确的yml结构应该是:
de:
activerecord:
models:
user: Dude
attributes:
user:
email: "mail"
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:"
errors:
format: ! '%{attribute} %{message}'
messages:
taken: "Email Die E-Mail Adresse wird bereits benutzt."
注意有两个"errors"键,一个在activerecord里面,一个在外面。使用后者作为验证消息。
您可以从 https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en.yml
获得更完整详细的翻译文件
您可能会在 https://github.com/mcasimir/devise-i18n-views/blob/master/locales/en.yml
找到设计翻译文件
对于我的项目,我通常每种语言都有几个翻译文件:
- rails.en.yml:rails 使用的消息(受 svenfuchs 文件启发)
- devise.en.yml:与身份验证相关的消息(来自设计项目本身)
- en.yml:我在不属于其他 gems 的视图上创建的消息(像 "simple_form" 这样的 gems 通常也有自己的文件)
编辑
从 Rails Internationalization guide 开始,将按以下顺序搜索验证消息:
- activerecord.errors.models.user.attributes.name.blank
- activerecord.errors.models.user.blank
- activerecord.errors.messages.blank
- errors.attributes.name.blank
- errors.messages.blank
所以使用您在问题上发布的内容是正确的:
de:
activerecord:
errors:
models:
user:
attributes:
email:
taken: "http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models"
在我的语言环境文件中,有如下翻译:
de:
activerecord:
errors:
models:
user:
attributes:
email:
taken: "Die E-Mail Adresse wird bereits benutzt."
当我在浏览器中打开所需的页面时,错误消息如下所示:
Email Die E-Mail Adresse wird bereits benutzt.
那么有人知道为什么翻译后的字符串前面还有另一个"Email"吗?
正确的yml结构应该是:
de:
activerecord:
models:
user: Dude
attributes:
user:
email: "mail"
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:"
errors:
format: ! '%{attribute} %{message}'
messages:
taken: "Email Die E-Mail Adresse wird bereits benutzt."
注意有两个"errors"键,一个在activerecord里面,一个在外面。使用后者作为验证消息。
您可以从 https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en.yml
获得更完整详细的翻译文件您可能会在 https://github.com/mcasimir/devise-i18n-views/blob/master/locales/en.yml
找到设计翻译文件对于我的项目,我通常每种语言都有几个翻译文件:
- rails.en.yml:rails 使用的消息(受 svenfuchs 文件启发)
- devise.en.yml:与身份验证相关的消息(来自设计项目本身)
- en.yml:我在不属于其他 gems 的视图上创建的消息(像 "simple_form" 这样的 gems 通常也有自己的文件)
编辑
从 Rails Internationalization guide 开始,将按以下顺序搜索验证消息:
- activerecord.errors.models.user.attributes.name.blank
- activerecord.errors.models.user.blank
- activerecord.errors.messages.blank
- errors.attributes.name.blank
- errors.messages.blank
所以使用您在问题上发布的内容是正确的:
de:
activerecord:
errors:
models:
user:
attributes:
email:
taken: "http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models"