[英]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.