Cайт веб-разработчика, программиста Ruby on Rails ESV Corp. Екатеринбург, Москва, Санкт-Петербург, Новосибирск, Первоуральск

Админка на Ruby on Rails

Многоязыковый сайт, использование локали

Пример использования локали для многоязыкового сайта. Предположим, например, что создается сайт для 3-х языков: Русский, Английский и Украинский.

1. Прописываем в config/routes.rb

...

  scope ':locale', :constraints => { :locale => /(ru|en|ua)/ } do

    # тут любые маршруты
    ...
 
    # отображение контент-страниц
    get ':page' => 'application#page', :as => :page

    root :to => 'application#index', :as => :locale_root

  end

  root :to => 'application#index'

 

2. В контроллере:

class ApplicationController

  before_filter do

      if params[:locale]

        @locale = params[:locale].to_sym

        I18n.locale = @locale if I18n.available_locales.include? @locale

      else

        I18n.locale = @locale = :ru

      end

  end

  ...

  protected

    # значения параметров в ссылке по-умолчанию
    def default_url_options
      { locale: @locale }
    end

end

 

Далее просто используем @locale для правильного отображения контента.