rails生成set default locale

时间:2015-06-02 16:08:01

标签: ruby-on-rails ruby scaffolding locate

我需要在我的应用程序中将默认语言环境设置为西班牙语。

这些是我的文件application.rb:

的行
  class Application < Rails::Application
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.

    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
    # config.time_zone = 'Central Time (US & Canada)'

    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
    config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
    Rails.application.config.i18n.default_locale = :es

  end

但是,当我生成脚手架时,拐点是错误的。这是英语的地方。

rails g scaffold Preparado nombre:string

我得到错误的复数:Preparadoes,它必须是:Preparados。

在控制台上我尝试了这个:

irb(main):015:0> I18n.locale = 'es'
=> "es"
irb(main):016:0> 'preparado'.pluralize()
=> "preparadoes"
irb(main):017:0> 'preparado'.pluralize(:es)
=> "preparados"
irb(main):018:0>

我的gemFile包含:

gem 'inflections'

总之,我需要创建一个具有正确复数的脚手架。

对不起我的英文。我知道这不是最好的。

感谢。

1 个答案:

答案 0 :(得分:1)

i18n在这里不影响复数化,rails使用变形,并且我只知道一种方法来自定义它:

ActiveSupport::Inflector.inflections do |inflect| 
   inflect.irregular 'preparado', 'preparados' 
end

config/initializers/inflections.rb

#pluralizeSpanish locale,但每次调用时都需要明确设置它。并且generator在没有参数的情况下调用它。