I'm using the globalize gem to support multiple locales.
config/locales directory have three file
en.yml, ja.yml, ch-HK.yml
and my routing file is
....
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
....
my root path (/) is setting default locales
but I don't know how to setting default locales in api_controller
I wanna
/api/events.json ->> /en/api/event.json
/ja/api/events.json ->> /ja/api/events.json
is it not accept in rails Project?
must add /:locales/api~~ ?
Every request is passed through a controller and that's the place for setting default locale. All you need to do is to set I18n.locale = :locale
. There are various methods of detecting user locale, i.e. request header, user preferred language (if logged and stored). You can also check for request format (in case of API) and set locale accordingly. Setting locale for url is not necessary here.
Here's a piece of code I'm using for setting locale:
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