如何在rails中使用相同的语言环境进行重定向

Posted

技术标签:

【中文标题】如何在rails中使用相同的语言环境进行重定向【英文标题】:How to redirect with the same locale in rails 【发布时间】:2021-09-27 10:15:58 【问题描述】:

我想使用包含的语言环境进行重定向:

 get '/login', to: redirect('/:locale/newlogin', status: 301)

如果输入 mysite.com/en/login 重定向到 mysite.com/:locale/newlogin 我该怎么做才能重定向到语言环境 mysite.com/en/newlogin

【问题讨论】:

【参考方案1】:

首先,正确定义routes.rb:

scope "/:locale" do
  get '/login', to: redirect("/newlogin", status: 302)
end

其次,ApplicationController 中的某处必须是语言环境设置:

class ApplicationController < ActionController::Base
  before_action :set_locale

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

  def default_url_options
     locale: I18n.locale 
  end
end

阅读Setting the Locale from URL Params 和I18n for Rails。

【讨论】:

以上是关于如何在rails中使用相同的语言环境进行重定向的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 5.3 中获取当前的语言环境

CakePHP 中的本地化路由:如何重定向到默认语言

Symfony 3 将所有路由重定向到当前语言环境版本

Python QWebEngineView 重定向到错误的语言页面

登录后自定义语言环境重定向 - Spring Security

c语言如何将输入输出流重定向到一个字符串?