我有一个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
答案 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