2013-12-23 105 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清潔