В моем приложении Rails 5.2 почти весь мой пользовательский интерфейс, за исключением области администратора, интернационализирован с помощью t (). Пределы «отсутствия перевода» часто нарушают компоновку, но я полагаю, что это цена, которую стоит заплатить, чтобы узнать, когда я, возможно, ошибся с ключом или не передал файл или что-то еще. Однако есть одно место, где пролеты действительно не работают, и это когда речь идет о самоописанных ролях, которые люди играют в моих группах. Роли могут быть предопределенными строками, которые являются частью моего en.yml, например, «координатор», «казначей» и т. Д., Но они также могут быть записаны, как «министр удивительного». Таким образом, выполнение t("groups.roles." + role)
не работает, потому что интервал «отсутствия перевода» портит макет. Это не было проблемой в предыдущей версии Rails, потому что «пропущенные переводы» автоматически отключались для производственной среды, и отображалась только последняя часть ключа, то есть именно та функциональность, которую я здесь хочу. В Rails 5.2 пролеты также отображаются в рабочей среде, и это проблема, по крайней мере для этой части.
Функциональность, которую я действительно хотел бы, которая раньше была стандартной, это:
- Если перевод существует, отобразите его.
- Если перевода не существует, отобразите строку Engli sh из en.yml (Engli sh определен как запасной язык)
- Если Engli sh тоже не существует, отобразите последнюю часть ключа. С «отсутствующим переводом» пролетает в разработке, без них в производстве.