Неправильный язык I18n загружается случайно - PullRequest
0 голосов
/ 15 октября 2019

Иногда вместо ожидаемой конфигурации на японском языке загружается английская конфигурация, которая на самом деле не существует и нигде не установлена ​​ни как default_locale, ни как резервная.

Проблема в том, что это случается время от времени / случайно и невозможно было воспроизвести раньше, но сегодня это стало происходить очень часто. Таким образом, простое пребывание на той же странице и нажатие клавиши F5 приводило в среднем примерно к 50/50% случаев использования локалей EN / JAP (без шаблонов, просто случайно).
Дело в том, что сайт даже неесли языковой стандарт ENG реализован вообще, поэтому при попытке загрузить языковой стандарт ENG происходит сбой с понятной ошибкой:

ERROR -- : .... translation missing: en.some_translation...

И это единственная возникающая ошибка.

Но это НЕ СЛЕДУЕТдаже пытайтесь загрузить языковой стандарт ENG.
Языковой стандарт установлен в application.rb:

config.i18n.default_locale = :ja
config.i18n.locale = :ja

production.rb не должен перезаписывать этот параметр, поскольку он содержит только:

config.i18n.fallbacks = false

Это происходит только в производстве.
"Боже, перезагрузите имя_приложения" исправляет это в течение некоторого времени, но кажется, что это происходит с течением времени, но я не могу точно сказать об этом.
Ошибка, которая возникает в локали ENG, кажется такой же, если при установке default_locale на:

config.i18n.default_locale = :en

Но я выделил код моего приложения для "default_locale" и не смог найти код, который изменяетсяЭто. Может ли какой-то драгоценный камень быть виновником?

Версия Rails: 4.2.7.1
I18n vesrion: 0.7.0

Буду очень признателен за любую подсказку на данный момент.

1 Ответ

0 голосов
/ 16 октября 2019

Я выяснил причину, по которой :en локаль загружалась.

На самом деле config.i18n.fallbacks было установлено на true позже в коде. И так как config.i18n.available_locales не был задан в application.rb явно, в I18n gem был включен :en языковой стандарт, и когда :ja языковой стандарт, который был установлен в config.i18n.locale и config.i18n.default_locale не удалось загрузить (по неизвестной пока причине), он попытался откатить к :en языку, который привел к проблеме.

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

Спасибо за подсказки!

...