Изменить локаль во время выполнения в Rails 3 - PullRequest
2 голосов
/ 26 июля 2011

Я работаю над приложением rails 3, которое имеет разные языки в моей папке locales.Файлы en.yml, pu.yml, sp.yml.Все языки должны быть преобразованы в их различные форматы, и мне нужна помощь, чтобы пользователи выбирали любой язык по своему выбору со ссылкой, например

<%= link_to "English language", ...%> <%= link_to "spanish", ...%>

Когда пользователь выбирает язык, язык устанавливается как пользовательпредпочтительный язык, чтобы пользователю не приходилось выбирать язык после каждого входа в систему.

Ответы [ 2 ]

17 голосов
/ 26 июля 2011

Просто добавьте locale строковый атрибут к вашей User модели и сделайте before_filter в вашем application_controller.rb, например, так:

before_filter :set_locale
...
def set_locale
  I18n.locale = current_user.locale if current_user
end

Больше информации на Rails InternationalizationI18n) API !

6 голосов
/ 26 июля 2011

Добавление к ответу ream88:

<%= link_to "spanish", :controller => 'locale', :action => 'set', :id => 'es' %>

В контроллере Locale (или любом другом контроллере)

def set
  locale = params[:id]
  raise 'unsupported locale' unless ['es', 'en', ... ].include?(locale)
  current_user.locale = locale
  current_user.save
  redirect_to :back
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...