在我的应用程序中,我想翻译验证错误行:“3个错误禁止保存此订单”。
显然,这可以通用,以适应所有使用此翻译的模型,因此在我的de.yml语言环境模板中,我得到了像这样的activerecord.errors.template.header:
activerecord:
errors:
template:
header:
one: "Konnte %{model} nicht speichern: ein Fehler."
other: "Konnte %{model} nicht speichern: %{count} Fehler."
现在的问题是如何在不重复自我的情况下调用此验证。显然你可以通过以下方式调用它:
t('activerecord.errors.template.header', :count => @order.count, :model => Order)
但这不会翻译订单(订单在德语中称为Bestellung)
我可以继续通过在翻译调用中再次调用translate来解决这个问题:
t('activerecord.errors.template.header', :count => @order.count, :model => t('activerecord.models.#{Order}'))
但这确实是一个非常糟糕的解决方案,而且我很确定必须有一种内置的方法来实现这一点(因为通常有一种更简洁的方法来在Rails中执行脏东西)。
任何关于处理这类翻译的推荐方法的指示都将受到赞赏。
答案 0 :(得分:7)
您是否尝试使用:model => Order.model_name.human
代替:model => Order
?
t('activerecord.errors.template.header', :count => @order.count, :model => Order.model_name.human )