如何在不使用 gem 的情况下使用 Rails 本地化 i18n url
How to localize i18n urls with Rails without using a gem
我的网站现在已本地化为两种语言:
www.website.com/book
www.website.com/de/book
我只使用本地的"de",而不是url中的"en"。
有没有办法将 de-url 更改为例如
www.website.com/de/buch
不使用额外的 gem?我已经使用了 globalize gem,但由于过去的许多问题,我更喜欢使用尽可能少的 gem。
我的部分 application.rb 是:
class 申请 < Rails::Application
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
我的部分 application_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
路线也本地化了。
https://github.com/norman/friendly_id-globalize 做你想做的。
然而,确实是 gem。
关键是,如果您不愿意使用 gem,您将不得不自己编写与 gem 中一样多的代码,因为没有简单的方法完成这些翻译的 slug url。
然而,这样的事情将远远超出像 Whosebug 这样的问答格式的界限。
我的网站现在已本地化为两种语言:
www.website.com/book
www.website.com/de/book
我只使用本地的"de",而不是url中的"en"。
有没有办法将 de-url 更改为例如
www.website.com/de/buch
不使用额外的 gem?我已经使用了 globalize gem,但由于过去的许多问题,我更喜欢使用尽可能少的 gem。
我的部分 application.rb 是:
class 申请 < Rails::Application
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
我的部分 application_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
路线也本地化了。
https://github.com/norman/friendly_id-globalize 做你想做的。
然而,确实是 gem。
关键是,如果您不愿意使用 gem,您将不得不自己编写与 gem 中一样多的代码,因为没有简单的方法完成这些翻译的 slug url。
然而,这样的事情将远远超出像 Whosebug 这样的问答格式的界限。