【问题标题】:How to get Rails root_path to redirect to /en/ locale?如何让 Rails root_path 重定向到 /en/ 语言环境?
【发布时间】:2017-12-05 10:32:14
【问题描述】:

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

【问题讨论】:

  • 我们可以从您的页面控制器中查看登录页面操作吗?
  • 那里什么都没有,只是渲染页面。

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


【解决方案1】:

对于所有寻找答案的人。在这种情况下,您可以这样做

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

【讨论】:

    【解决方案2】:

    首先请通过这个 Internationalization guidelines

    现在在路由中试试这个:

    scope "(/:locale)" {}
    

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

    如果您使用 cookie 来跟踪您的语言环境,您可以跳过 default_url_options,无论如何您都必须保留未本地化的版本以实现向后兼容性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 2011-09-06
      相关资源
      最近更新 更多