Как принудить изменения языка на генераторах Rails?
В Rails 4 (который поддерживает многоязычные перегибы) я могу установить:
config.i18n.default_locale = :es
в моем config/application.rb, который позволяет мне делать такие вещи в консоли:
'general'.pluralize(:es) => "generales"
Но когда я бегу:
rails g model General conciencia:string atencion:string
Rails генерирует файлы с "general" во множественном числе как "generals", которые в испанском должны быть "generales"
Разве Rails не должен использовать многоязычный инфлектор для своих генераторов, если локаль установлена? Есть ли способ заставить его использовать их?
Спасибо!
1 ответ
Немного поздно, но для записи: в проблеме Rails есть аргумент о том, почему это так (так что это не ошибка, но вы можете обсудить это):
Источник: https://github.com/rails/rails/issues/10125
До Rails 4 у инфлектора не было поддержки нескольких локалей. Был только один свод правил. Приложение имеет языковой стандарт по умолчанию, и в приложении i18n каждый запрос может иметь другой языковой стандарт, но это не влияет на инфлектор.
Инфлектор не только используется приложением, он также используется платформой для преобразования путей к именам классов, имен классов в таблицы, динамического создания имен методов для API ассоциаций и т. Д.
Очевидно, что эти вычисления не могут варьироваться. Если ваша схема имеет таблицу "регионов", Active Record должен всегда отображать класс Region в таблицу "регионов", независимо от развития приложения (если только схема не изменяется, но схему необходимо визуализировать как в основном статическую в отношении к этому, гораздо более статичен, чем вариант конфигурации).
Я работал над приложениями, которые начали разработку с использованием:en, get i18ned, а затем переключились на стандартную локаль:es. Локаль - это то, что влияет на интерфейс в этом мышлении. Все внутреннее должно работать как раньше.
Вы должны иметь возможность изменять локаль по умолчанию и все остальное таким образом, чтобы это не влияло на статические вещи, такие как имена ассоциаций, таблицы, маршруты и т. Д.
Возможно, у вас есть маршруты i18n (которые меняются в зависимости от локали запроса), но в целом приведенное выше утверждение должно быть верным.
Чтобы обеспечить максимально возможную обратную совместимость, мы оставили структуру без изменений и по умолчанию настроили: en, чтобы существующие приложения получали такие же сопоставления после обновления.