繁体   English   中英

Rails生产:语言环境切换

[英]Rails production: locales switching

在我的应用中,我通过会话切换了语言环境。 逻辑保存在控制器中:

class SetLanguageController < ApplicationController

  def russian
    I18n.locale = :ru
    set_session_and_redirect
  end

  def english
    I18n.locale = :en
    set_session_and_redirect
  end

  private

  def set_session_and_redirect
    session[:locale] = I18n.locale
    redirect_to :back
    rescue ActionController::RedirectBackError
      redirect_to :root
  end

end

切换可通过链接进行:

link_to_unless I18n.locale == :ru, "Русский", rus_locale_path
link_to_unless I18n.locale == :en, "English", eng_locale_path

路线中的语言环境代码(无需提问,但如果您感兴趣的话)

get 'rus_locale' => 'set_language#russian'
get 'eng_locale' => 'set_language#english'

它可以完美地在开发中工作,但可以在生产中工作

application.rb

config.i18n.load_path += Dir[Rails.root.join('config','locales', '*.yml').to_s]
config.i18n.default_locale = :ru

如何使它在生产中起作用? 谢谢

我解决了在应用程序控制器中设置before_filter问题

  before_filter :set_locale

  def set_locale
    I18n.locale = session[:locale] ? session[:locale] : I18n.default_locale
  end

但是此解决方案是虚拟的,因为它实际上并不能解决问题的实质-先前的代码在开发中起作用,但在生产中起作用。 如果您知道如何更聪明地修复它,那么您会很好

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM