Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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 如何在不使用gem的情况下使用Rails本地化i18n URL_Ruby On Rails_Ruby On Rails 4_Localization_Internationalization_Rails I18n - Fatal编程技术网

Ruby on rails 如何在不使用gem的情况下使用Rails本地化i18n URL

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的一部分是: 类应用程序

我的网站目前以两种语言进行本地化:

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这样的问答格式的界限