Управление строковыми ресурсами Java - PullRequest
2 голосов
/ 04 января 2009

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

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

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

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

Ответы [ 4 ]

12 голосов
/ 04 января 2009

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

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

РЕДАКТИРОВАТЬ: наличие одного набора файлов свойств для каждого диалогового окна и т. Д. Позволяет легче увидеть, откуда поступает какая-то конкретная строка, но затрудняет повторное использование одних и тех же сообщений и т. Д. Весьма правильный баланс будет зависеть от приложения. .

2 голосов
/ 04 января 2009

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

Множество ресурсов JSR 296, собранных здесь .

0 голосов
/ 04 января 2009

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

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

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

UPDATE

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

0 голосов
/ 04 января 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...