Это ДОЛЖНО быть лучшим решением:
В вашем rout.rb,
scope "(:locale)", locale: /#{I18n.available_locales.join("|")}/, defaults: {locale: "en"} do
Как сказал MegaTux, установите defaults: {locale: "en"}
в области действия.
Преимущество: Решение jlfenaux работает в большинстве случаев, но не во всех.В определенных контекстах (как, например, все, что находится за пределами ваших основных контроллеров и представлений), помощники пути будут сбиты с толку и поместят object или object.id в параметр locale
, что приведет к ошибкам.Вы обнаружите, что во многих путевых помощниках вы ставите locale: nil
, чтобы избежать этих ошибок.
Возможная проблема: Кажется, что defaults: {locale: "en"}
всегда переопределяет любое другое значение, которое вы передаете дляlocale
.Опция называется default
, поэтому я ожидаю, что она назначит языковой стандарт 'en', только когда значение уже отсутствует, но это не то, что происходит.Кто-нибудь еще испытывает это?