Управление строковыми ресурсами Java

Я работаю над приложением Swing Java SE 1.5+ вместе с другими. Мне интересно, как лучше всего управлять строковыми ресурсами. Я понимаю принципы, лежащие в основе пакетов ресурсов и т. д. Я бы не хотел иметь один файл свойств для каждого класса, которому нужна строка, так как это кажется излишним. Особенно, когда у вас много классов, которые могут делать только одну ссылку на строку (например, в обработчике ошибок). С другой стороны, это упрощает совместную работу с другими, поскольку снижает риск конфликтов слияния.

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

Каков наиболее эффективный способ управления строками в довольно большом приложении с сотнями классов, многие из которых не связаны с графическим интерфейсом пользователя, но должны передавать информационные сообщения обратно в графический интерфейс при возникновении исключений.

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
4 002
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Что заставляет вас думать, что для каждого класса нужен отдельный файл свойств? Обычно вам нужно всего несколько (или только один!) Файл свойств (конечно, для каждого языка).

Просто вызовите ResourceBundle.getBundle() с соответствующими параметрами - вы можете использовать один и тот же пакет из нескольких классов.

Обновлено: наличие одного набора файлов свойств для каждого диалогового окна и т. д. Упрощает определение того, откуда исходит какая-либо конкретная строка, но затрудняет повторное использование тех же сообщений и т. д. Правильный баланс зависит от приложения.

Это может быть наивно, но как насчет хранения их в базе данных, встроенной или внешней? Это может упростить управление и сделать изменение языков более настраиваемым.

JSR 296 Swing Application Framework поддерживает управление ресурсами (и, похоже, будет частью Java 7). SAF нацелена на предварительную сборку частей приложения Swing, которые часто нужны многим людям, при этом инкапсулируя передовой опыт. Вы, вероятно, не хотите привязываться к нему напрямую, но стоит взглянуть на то, что они делают, чтобы увидеть, дает ли это вам какие-то идеи. Если я помню, они используют каскадные пакеты ресурсов с четко определенными соглашениями об именах. Последнее означает, что вы знаете, где искать, а первое означает, что вы можете повторно использовать свойства в некоторой части иерархии пакетов.

Многие Здесь собраны ресурсы JSR 296.

В этом году я собираюсь реализовать что-то похожее на платформу перевода Launchpad: https://launchpad.net/+tour/translation

В двух словах:

  • Параллельный перевод
  • Предлагаемые фразы на основе ранее введенных фраз
  • Политики, например Частично ограничено и структурировано: любой может предлагать переводы, в то время как доверенные члены сообщества просматривают и одобряют новую работу

ОБНОВИТЬ

Конечно, это строится поверх ResourceBundle и т. д., Но это хороший способ управлять всеми этими строками ;-)

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