Java набрал i18n (Java)

Я хотел бы знать, возможно ли (и с помощью какого инструментария) сделать i18n типов безопасным в Java. Может быть, это не ясно, поэтому вот некоторые детали, если предположить, что мы используем что-то на основе MessageFormat

1) Переведите, используя безопасные параметры

Я хотел бы избежать такого интерфейса, как String translate(Object key,Object... values) где значения нетипизированы. Должен быть невозможен вызов с неверным типом параметра.

Заметьте, я в порядке, определяя набор всех клавиш. Решение, которое я ищу, должно быть масштабируемым и не должно значительно увеличивать время запуска бэкэнда.

2) Должно быть известно во время компиляции, какие ключи все еще используются

Я не хочу, чтобы моя база ключей перевода была похожа на CSS многих веб-сайтов, она растет и растет вечно, и все боятся удалять ключи, потому что мы не знаем легко, полезны ли они до сих пор или нет.

В JS/React land существует babel-plugin-реагировать-intl, который позволяет во время компиляции извлекать ключи перевода, которые все еще находятся в коде. Затем мы можем различить эти ключи с помощью нашего бэкэнда перевода /SaaS и автоматически удалить неиспользуемые ключи. Есть ли что-нибудь похожее на этот опыт на земле Java?


Я ищу:

  • любой трюк, который может сделать i18n более управляемым в Java относительно этих двух проблем, которые у меня есть
  • текущие инструменты, которые могут помочь мне решить проблему
  • советы о том, как реализовать что-то нестандартное, если инструменты не существуют

Кроме того, подходит ли Enum для хранения огромного фиксированного списка ключей перевода?

1 ответ

Ключи перевода являются открытым доменом. Для закрытого домена подойдет enum.

Наличие чего-то вроде перечислений или константных списков, вероятно, вызывает рост различных перечислений, классов констант.

Кроме того, существует очень важная перспектива переводческого бизнеса: вам нужен хотя бы один глоссарий (не нуждающийся в переводе), сгруппированные структурно равные фразы, комментарии, возможно, о двойственных терминах и использовании (кнопка / меню). Это может сократить временные затраты и улучшить качество. Есть также такие вещи, как онлайн-помощь.

До сих пор для этого было достаточно XML, например, простой документации / памяти переводов (tmx/xliff/...). И инструменты, включая различные формы оценки, были сделаны сами.

Я надеюсь, что будет дан более профессиональный ответ, но мой ответ может пролить некоторый свет на желаемую функциональность:

  • ориентированный на перевод: так как это требует больше всего работы.
  • контроль версий: некоторые текстовые списки.
  • инструменты проверки: то, что вы упомянули, целостность, отсутствует, почти равны.
Другие вопросы по тегам