エラーのあるフォームを送信すると、エラーメッセージが返されます。これらのエラーメッセージを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
タイトルとエラーの両方を翻訳したいと思います。
タイトルの翻訳は次のようになります。
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の国際化(I18n)APIガイド で文書化されており、さらに洞察を得ることができます。
できるオランダ語の翻訳ファイルを使用してください ここで検索 。ほとんど(すべてではない)のActiveRecord検証メッセージの翻訳が含まれています。
ファイルをプロジェクトのconfig/locales/
にコピーします。
代替方法
更新された翻訳を利用したい場合は、翻訳ファイルを手動でコピーする代わりに、Gemfile
に以下を追加してください:
gem 'Rails-i18n'
Rails I18nガイド はこれをかなりうまくカバーしています。
以下を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}"