Я хотел бы знать, возможно ли (и с помощью какого инструментария) сделать i18n типов безопасным в Java. Может быть, это не ясно, поэтому вот некоторые детали, при условии, что мы используем что-то на основе MessageFormat
1) Перевести с использованием типов безопасных параметров
Я бы хотел избежать использования интерфейса типа String translate(Object key,Object... values)
, где значения не введены. Должен быть невозможен вызов с неверным типом параметра.
Заметьте, я в порядке, определяя набор всех клавиш. Решение, которое я ищу, должно быть масштабируемым и не должно значительно увеличивать время запуска бэкэнда.
2) Во время компиляции должно быть известно, какие ключи еще используются
Я не хочу, чтобы моя база ключей перевода была похожа на CSS многих веб-сайтов, она растет и растет вечно, и все боятся удалять ключи, потому что мы не можем легко понять, полезны ли они до сих пор или нет.
В JS / React land существует babel-plugin-реагировать-intl , который позволяет извлекать во время компиляции ключи перевода, которые все еще находятся в коде. Затем мы можем различить эти ключи с помощью нашего бэкэнда перевода / SaaS и автоматически удалить неиспользуемые ключи. Есть ли что-нибудь похожее на этот опыт на земле Java?
Я ищу:
- любой трюк, который может сделать i18n более управляемым в Java в отношении этих 2 проблем, которые у меня есть
- текущие инструменты, которые могут помочь мне решить проблему
- подсказки о том, как реализовать что-то нестандартное, если инструментарий не существует
Кроме того, подходит ли Enum для хранения огромного фиксированного списка ключей перевода?