我有一个网站,控制面板只有一种语言,网站有两种语言 我在命名空间admin中有控制面板。我在应用程序控制器中使用下面的代码来设置基于用户浏览器头的本地lang
class ApplicationController < ActionController::Base
#to set local
before_filter :set_locale
private
def extract_locale_from_accept_language_header
request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first
end
def set_locale
I18n.locale = extract_locale_from_accept_language_header || I18n.default_locale
Rails.application.routes.default_url_options[:locale]= I18n.locale
end
end
此代码设置所有网站语言,任何方式只用一种语言设置控制面板
答案 0 :(得分:1)
以下是一些如何解决它的想法(不确定哪一个是最好的):
set_locale
并在此处返回en
(或您想要的任何默认语言环境)。有关详细信息,请参阅Rails Internationalization Guide。
答案 1 :(得分:1)
这不是最干净的方式,我知道,但这就是我绕过它的方式:
def set_locale
if Rails.env.test? then
I18n.locale = 'en'
cookies[:location] = 'en'
else
logger.debug "* Accept-Language: #{request.env['HTTP_ACCEPT_LANGUAGE']}"
I18n.locale = extract_locale_from_accept_language_header
logger.debug "* Locale set to '#{I18n.locale}'"
end
end
你总是可以在你的规范助手中修补它,如下所示:
ApplicationController.class_eval do
def set_locale
I18n.locale = 'en'
end
end
这样你就可以保持你的ApplicationController干净了