Как принудить изменения языка на генераторах 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, чтобы существующие приложения получали такие же сопоставления после обновления.

Другие вопросы по тегам