【问题标题】:How to localize i18n urls with Rails without using a gem如何在不使用 gem 的情况下使用 Rails 本地化 i18n url
【发布时间】:2015-01-30 22:49:32
【问题描述】:

我的网站目前已本地化为两种语言:

www.website.com/book

www.website.com/de/book

我只使用本地的“de”,而不是 url 中的“en”。

有没有办法将反网址更改为例如

www.website.com/de/buch

不使用额外的宝石?我已经使用了 globalize gem,但由于过去的许多问题,我更喜欢使用尽可能少的 gem。

我的 application.rb 的一部分是:

类应用程序<: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

路线也是本地化的。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 localization internationalization rails-i18n


    【解决方案1】:

    https://github.com/norman/friendly_id-globalize 完全符合您的要求。

    然而,它确实是一颗宝石。

    关键是,如果您不愿意使用 gem,您将不得不自己编写尽可能多的代码,因为没有简单的方法来完成这些翻译的 slug url。

    然而,这样的事情会远远超出像 stackoverflow 这样的问答格式的界限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-17
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      相关资源
      最近更新 更多