如何让Rails root_path重定向到/ en / locale?

时间:2017-12-05 10:32:14

标签: ruby-on-rails internationalization locale rails-i18n

我有一个EN和DE可用的应用程序。目前,当您进入网站www.example.com时,它不会重定向到默认区域设置。理想情况下,我希望root能够立即重定向,所以我得到:www.example.com/en

当我点击应用中的root_path链接时,它会按预期转到包含区域设置www.example.org/en的首页。

问题:如何确保输入www.example.com的用户立即重定向到www.example.com/en

路线:

Rails.application.routes.draw do
  scope '(:locale)', locale: /en|de/ do
  root 'pages#landingpage'

应用程序控制器:

def set_locale
  I18n.locale = params[:locale] || I18n.default_locale
end

def default_url_options(options = {})
  {locale: I18n.locale}
end

2 个答案:

答案 0 :(得分:0)

首先请完成此操作 Internationalization guidelines

现在在路线中试试这个:

scope "(/:locale)" {}

并在配置中使用config.default_locale选项。您可以配置后备以进行本地化。

如果您使用Cookie来跟踪您的语言环境,则可以跳过default_url_options,无论如何都必须保留未定位的版本以便向后兼容。

答案 1 :(得分:0)

适合所有希望获得答案的人。在这种情况下,您可以

root to: redirect("/#{I18n.default_locale}"), as: :redirected_root

在您的语言环境范围之前,您将被重定向到默认语言环境

root to: redirect("/#{I18n.default_locale}"), as: :redirected_root

scope '(:locale)', locale: /#{I18n.available_locales.join('|')}/ do
 root 'main#index'
end