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




Что заставляет вас думать, что для каждого класса нужен отдельный файл свойств? Обычно вам нужно всего несколько (или только один!) Файл свойств (конечно, для каждого языка).
Просто вызовите ResourceBundle.getBundle() с соответствующими параметрами - вы можете использовать один и тот же пакет из нескольких классов.
Обновлено: наличие одного набора файлов свойств для каждого диалогового окна и т. д. Упрощает определение того, откуда исходит какая-либо конкретная строка, но затрудняет повторное использование тех же сообщений и т. д. Правильный баланс зависит от приложения.
Это может быть наивно, но как насчет хранения их в базе данных, встроенной или внешней? Это может упростить управление и сделать изменение языков более настраиваемым.
JSR 296 Swing Application Framework поддерживает управление ресурсами (и, похоже, будет частью Java 7). SAF нацелена на предварительную сборку частей приложения Swing, которые часто нужны многим людям, при этом инкапсулируя передовой опыт. Вы, вероятно, не хотите привязываться к нему напрямую, но стоит взглянуть на то, что они делают, чтобы увидеть, дает ли это вам какие-то идеи. Если я помню, они используют каскадные пакеты ресурсов с четко определенными соглашениями об именах. Последнее означает, что вы знаете, где искать, а первое означает, что вы можете повторно использовать свойства в некоторой части иерархии пакетов.
Многие Здесь собраны ресурсы JSR 296.
В этом году я собираюсь реализовать что-то похожее на платформу перевода Launchpad: https://launchpad.net/+tour/translation
В двух словах:
ОБНОВИТЬ
Конечно, это строится поверх ResourceBundle и т. д., Но это хороший способ управлять всеми этими строками ;-)