2014-10-28 81 views
1

我正在使用全球化gem來支持多個語言環境。rails 4,全球化寶石,如何設置默認語言環境

配置/區域設置目錄中有三個文件

en.yml, ja.yml, ch-HK.yml 

,我的路由文件是

.... 
root :to => 'main#index', :locale => :en 
scope ":locale", locale: /#{I18n.available_locales.join("|")}/ do 
    namespace(:api){ resources :badges } 
    namespace(:api){ 
    resources :events do 
     get :list, :on => :collection 
    end 
    } 
end 
.... 

我的根路徑(/)是設置默認語言環境

,但我不知道如何在api_controller中設置默認語言環境

我想

/api/events.json ->> /en/api/event.json 
/ja/api/events.json ->> /ja/api/events.json 

是不是在rails項目中接受?

必須添加/:locales/api ~~?

回答

4

每個請求都通過一個控制器傳遞,這就是設置默認語言環境的地方。你所需要做的就是設置I18n.locale = :locale。有各種檢測用戶區域設置的方法,即請求標題,用戶首選語言(如果被記錄和存儲)。您也可以檢查請求格式(如果是API)並相應地設置區域設置。在此設置url的區域設置不是必要的。

這裏有一段代碼,我使用來設置本地化:

before_filter :set_locale 

def set_locale 
    if defined?(params) && params[:locale] 
    I18n.locale = params[:locale] 
    elsif current_user && current_user.language_id.present? 
    I18n.locale = current_user.language.code 
    elsif defined?(request) 
    I18n.locale = extract_locale_from_accept_language_header 
    end 
    I18n.locale ||= I18n.default_locale 
    I18n.locale = :en unless valid_languages.include?(I18n.locale.to_sym) 
end 
+0

THX〜它的工作好,之後添加源。 – kai 2014-10-28 09:39:44

相關問題