Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 带有已翻译模型名的Rails i18n_Ruby On Rails_Ruby_Internationalization - Fatal编程技术网

Ruby on rails 带有已翻译模型名的Rails i18n

Ruby on rails 带有已翻译模型名的Rails i18n,ruby-on-rails,ruby,internationalization,Ruby On Rails,Ruby,Internationalization,在我的应用程序中,我想翻译验证错误行:“3个错误禁止保存此订单” 显然,可以将其设置为通用的,以适合使用此转换的所有模型,因此在我的de.yml区域设置模板中,我得到了如下activerecord.errors.template.header: activerecord: errors: template: header: one: "Konnte %{model} nicht speichern: ein Fehler."

在我的应用程序中,我想翻译验证错误行:“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调用中再次调用translate来解决此问题:

t('activerecord.errors.template.header', :count => @order.count, :model => t('activerecord.models.#{Order}'))
但这真的感觉像是一个非常糟糕的解决方案,我非常确定必须有一种内置的方法来做到这一点(因为通常有一种更干净的方法来处理Rails中的脏东西)


任何关于处理此类翻译的推荐方法的建议都将不胜感激。

您是否尝试过以下方法,使用
:model=>Order.model\u name.human
而不是
:model=>Order

t('activerecord.errors.template.header', :count => @order.count, :model => Order.model_name.human )

我仍然看不出这有什么问题…我想知道这里是否应该使用一个助手(否则我将自己编写)。。由于通常的嫌疑犯(表单助手等)都默认使用I18n,因此在本例中看起来非常丑陋..ActiveRecord::Base上没有方法human_name(在rails c中尝试过)抱歉,这是Order.model_name.human。我刚刚编辑了我的答案。