Ruby on rails 如何在不使用gem的情况下使用Rails本地化i18n URL
我的网站目前以两种语言进行本地化: www.website.com/book www.website.com/de/book 我只是在url中使用de-local,而不是en 有没有办法将de URL更改为例如 www.website.com/de/buch 不使用额外的宝石?我已经使用了GlobalizeGem,但是由于过去的许多问题,我更喜欢使用尽可能少的gem my application.rb的一部分是: 类应用程序Ruby on rails 如何在不使用gem的情况下使用Rails本地化i18n URL,ruby-on-rails,ruby-on-rails-4,localization,internationalization,rails-i18n,Ruby On Rails,Ruby On Rails 4,Localization,Internationalization,Rails I18n,我的网站目前以两种语言进行本地化: www.website.com/book www.website.com/de/book 我只是在url中使用de-local,而不是en 有没有办法将de URL更改为例如 www.website.com/de/buch 不使用额外的宝石?我已经使用了GlobalizeGem,但是由于过去的许多问题,我更喜欢使用尽可能少的gem my application.rb的一部分是: 类应用程序
config.active_record.whitelist_attributes = false
config.i18n.default_locale = :en
config.i18n.available_locales = [:en, :de]
config.i18n.fallbacks = true
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '*.{rb,yml}').to_s]
config.i18n.enforce_available_locales = true
我的应用程序_controller.rb的一部分是:
before_filter :set_locale
def set_locale
I18n.locale = params[:locale] || :en
end
def default_url_options(options = {})
{ :locale => ((I18n.locale == I18n.default_locale) ? nil : I18n.locale) }.merge options
end
路线也是本地化的。正是您想要的
然而,它确实是一块宝石
关键是,如果您不愿意使用gem,那么您将不得不编写与gem中的代码一样多的代码,因为没有简单的方法来完成这种转换的slug-url
然而,这样的事情将远远超出像stackoverflow这样的问答格式的界限