2014-10-28 9 views
1

Я использую globalize gem для поддержки нескольких локалей.rails 4, globalize gem, как установить стандартную локаль

конфигурация/Locales каталога есть три файл

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

ТНХ ~ Это хорошо работает, после того, как добавить источник. – kai

Смежные вопросы