Rails неправильно устанавливает локаль

У меня есть приложение Rails (3.2.12), и в настоящее время я запускаю интернационализацию в приложении ('en', 'es', 'it', 'de', 'fr').

Интернационализация работает в приложении, за исключением случаев, когда я выхожу из приложения и попадаю на целевую страницу. Так, например, целевые страницы:

http://localhost:3000/?locale=en
http://localhost:3000/?locale=es
http://localhost:3000/?locale=it
etc...

все по умолчанию для испанского перевода 'es'. Когда я проверяю языковой стандарт, установленный для каждой из вышеперечисленных страниц, я обнаруживаю, что языковой стандарт установлен правильно. Таким образом, в основном, скажем, для английского языка «en» он показывает испанский перевод.

Я также проверил файлы YAML, и они в порядке.

Наиболее близким соответствием SO для этой проблемы является этот вопрос: Смешанные локали в Rails i18n

Я пробовал решения в этом ответе SO, но они, похоже, не работают для меня.

Вот некоторые из соответствующих кодов, связанных с интернационализацией.

Контроллер приложений

class ApplicationController < ActionController::Base
  protect_from_forgery

  before_filter :set_locale

private

  def set_locale
    I18n.locale = params[:locale] || I18n.default_locale
    #default_url_options[:locale] = params[:locale]
    #I18n.locale = params[:locale] || 'en'
  end

  def default_url_options
    { :locale => I18n.locale }
  end
end

Application.rb

 config.i18n.default_locale = :en
 config.i18n.available_locales = ["en", "it", "de", "es", "fr"]
 I18n.config.enforce_available_locales = true

Кроме того, мое приложение использует Devise и Active_admin.

Любая идея относительно того, что я могу делать неправильно здесь?


person user1748009    schedule 17.03.2014    source источник


Ответы (1)


Попробуйте отладить метод set_locale. Кажется, локаль установлена ​​​​по умолчанию, например, params[:locale] равна нулю.

def set_locale
    I18n.locale = params[:locale] || I18n.default_locale
    Rails.logger.debug "locale_params=#{params[:locale]}"
  end
person alex    schedule 17.03.2014
comment
Привет, Алекс. Я думаю, что локаль установлена ​​​​правильно. Например, мой журнал сервера показывает: locale_params=en. - person user1748009; 18.03.2014
comment
Неа. Если я открою, скажем, испанскую целевую страницу, она покажет locale=es?. Точно так же для английского языка отображается locale=en. Для других языков de, fr и он тоже показывает соответствующую локаль. Только en locale отображает перевод es. Остальные переводы работают нормально. - person user1748009; 18.03.2014