Java i18n:использовать один инструмент доступа ResourceBundle для каждого пакета или один для всего проекта?
-
20-09-2019 - |
Вопрос
Я ничего не знаю об интернационализации.
У меня есть проект с несколькими пакетами.Я использую встроенный в Eclipse мастер "Externalize Strings" для извлечения строковых констант из моих классов в файл свойств и замены этих строк вызовами статического средства доступа.Так что вместо
System.out.println("Hello, world!");
В итоге я получаю
System.out.println(Messages.getString("MyKey"));
и a Messages
служебный класс в каждом пакете (который обеспечивает статический getString
метод для получения желаемой строки из ResourceBundle [в данном случае .properties
файл]).Лучше ли иметь Messages
класс в каждом пакете, или иметь один Messages
класс для всего проекта?
Решение
Я за файл глобальной локализации.У вас будут дублирующиеся ключи ("OK", "Cancel"), которые потребовали бы дублирования или вложения, а взаимодействие с внешними специалистами по локализации упростится, если ресурсы будут объединены.
Другие советы
Я бы оставил по одному на упаковку.Таким образом, обслуживание / рефакторинг / модульное тестирование намного упрощаются.
Кроме того, нет глобальных зависимостей от одного файла.