2013-12-23 106 views
1

我有一个网站哪个控制面板只有一种语言和两种语言的网站 我在命名空间admin.I中使用控制面板在应用程序控制器中使用波纹管代码根据用户的浏览器设置本地郎头标Rails使用一种语言和两种语言的其他语言的本地化控制面板模块

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 

这个代码将所有网站的语言,任何方式来设置控制面板只用一种语言

回答

1

这里有一些想法如何解决这个问题(不知道哪个一个是最好的):

  • 对控制面板和其他控件面板使用不同的区域设置文件,并将其他语言控制面板文件链接到默认区域设置文件(通常为英文)。
  • 覆盖控制面板控制器中的方法set_locale并在此处返回所有时间en(或任何您想要的默认语言环境)。

查看Rails Internationalization Guide了解详情。

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清洁