невозможно получить локаль от клиента после обновления Rails и Ruby

раньше я использовал Rails 3.2.13 с Ruby 2.0.0, и это работало нормально:

В моем application.rb у меня было:

    def set_locale
    I18n.locale = http_accept_language.compatible_language_from([:en, :de])
end

Я использую 2 локали, de.yml и en.yml

Теперь, когда я обновился до Rails 3.2.22 и Ruby 2.2.4, мне пришлось также обновить gem i18n до версии 0.7.0, и я получаю сообщение об ошибке «I18n::InvalidLocale (:en is not a valid locale)». если я выбираю клиент на 'en' или другом языке. "де" работает.

Пробовал разные комбинации параметров в application.rb

config.i18n.enforce_available_locales = true
config.i18n.available_locales = ["en", "de"]
config.i18n.default_locale = :'de'

но безрезультатно... Если я использую клиент на "de", он работает, но если я использую клиент на "en" или другом языке, я получаю вышеуказанное сообщение об ошибке. Раньше, если я выбирал другой язык клиента, по умолчанию использовался «de».


person cedric    schedule 18.02.2016    source источник
comment
Я попытался понизить версию i18n до версии 0.6.4, но на самом деле это усугубляет ситуацию, поскольку приложение вообще не хочет запускаться, так как я получаю сообщение об ошибке неопределенного метода `enforce_available_locales=' для I18n:Module (NoMethodError).   -  person cedric    schedule 18.02.2016
comment
Это весело, потому что я обновил i18n до версии 0.7.0, потому что я предпочитаю, чтобы мое приложение работало на одном языке, а не вообще не работало, и знаете что: теперь оно работает! Иди разберись! Я также понял, что параметры application.rb: default_local, available_locales и Enforce_available_locales в моем случае совершенно бесполезны. Я все еще не совсем доволен результатом, так как в настоящее время я не могу предсказать, что произойдет, если клиент использует язык, для которого в моем приложении нет локали. Иногда он выбирает :en, иногда :de. В этом случае я бы предпочел по умолчанию использовать :de.   -  person cedric    schedule 18.02.2016


Ответы (1)


Понижение версии i18n до 0.6.4 и повторное обновление до 0.7.0 помогло. Понятия не имею почему.

Однако я все еще не полностью удовлетворен результатом, поскольку в настоящее время я не могу предсказать, что произойдет, если клиент использует язык, для которого в моем приложении нет локали. Иногда выбирает :en, иногда :de. Я бы предпочел иметь возможность управлять языком по умолчанию.

person cedric    schedule 18.02.2016