如何防止i18n在Rails中复数模型?

时间:2016-08-02 00:57:18

标签: ruby-on-rails ruby ruby-on-rails-5 rails-i18n pluralize

用英文对应用程序进行编码后,我更新了语言文件(pt-BR.yml),'config / application.rb'(将默认值设置为pt-BR),以及'inflections.rb'的顺序以我的本地语言提供错误消息。

然而,Rails现在找不到我的模型,因为它的逻辑不再用英语复数。

有没有办法阻止Rails在模型和控制器中使用本地默认语言? 或者是否有更好的编码实践? 感谢。

1 个答案:

答案 0 :(得分:0)

您可以配置inflections.rb而不是转换默认的lang。你可以这样做:

ActiveSupport::Inflector.inflections(:es) do |inflect|


inflect.plural(/$/, 's')
  inflect.plural(/([^aeéiou])$/i, '\1es')
  inflect.plural(/([aeiou]s)$/i, '\1')
  inflect.plural(/z$/i, 'ces')
  inflect.plural(/á([sn])$/i, 'a\1es')
  inflect.plural(/é([sn])$/i, 'e\1es')
  inflect.plural(/í([sn])$/i, 'i\1es')
  inflect.plural(/ó([sn])$/i, 'o\1es')
  inflect.plural(/ú([sn])$/i, 'u\1es')

  inflect.singular(/s$/, '')
  inflect.singular(/es$/, '')

  inflect.irregular('el', 'los')
end

代码来自https://davidcel.is/posts/edge-rails-a-multilingual-inflector/

看起来他的宝石也支持pt-BR https://github.com/davidcelis/inflections。我没有亲自尝试过,但看起来很清醒。