Используйте параметр :path_prefix
в ваших маршрутах:
map.namespace :my_locale, :path_prefix => "/:locale" do |localized|
localized.resources :users
localized.root :controller => 'your_controller', :action => 'your_action'
# other routes
end
В вашем контроллере приложения добавьте:
before_filter :set_current_locale
private
def set_current_locale
current_locale = 'en' # default one
current_locale = params[:locale] if params[:locale] # or add here some checking
I18n.locale = current_locale # if it doesn't work, add .to_sym
end
Для создания ссылок используйте стандартные URL-помощники. Если вы установили params[:locale]
, он будет добавлен автоматически. Итак:
photos_path # /en/photos - if you are in en locale
photo_path(@photo) # /fr/photos/3 - if you are in fr locale
Теперь, если вы находитесь на каком-либо пути без локали: "www.mysite.com", вы можете создать ссылки на локализованную версию с добавлением :locale => 'en'
:
users_path(:locale => 'en') # /en/users
Вы также можете использовать приведенный выше пример для изменения текущей локали.
Я не уверен, какие будут имена помощников по URL, поэтому просто наберите rake routes
, чтобы найти его.