【问题标题】:How to prevent i18n to pluralize models in Rails?如何防止 i18n 使 Rails 中的模型复数?
【发布时间】:2016-12-07 04:57:12
【问题描述】:

在用英语编写应用程序后,我按顺序更新了语言文件 (pt-BR.yml)、“config/application.rb”(将默认设置为 pt-BR)和“inflections.rb”以我的本地语言显示错误消息。

但是,Rails 现在找不到我的模型,因为它的逻辑不再是英语的复数形式。

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

【问题讨论】:

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


    【解决方案1】:

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

    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/

    看起来他的 gem 也支持 pt-BR https://github.com/davidcelis/inflections。我没有亲自尝试过,但它看起来很正常。

    【讨论】:

    • 非常感谢!虽然我仍然不知道如何选择模型语言,但它帮助我使用了不止一种语言。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多