2009-01-04 4 views
2

Je travaille sur une application de java SE 1.5+ swing, conjointement avec d'autres. Je me demande quelle est la meilleure façon de gérer les ressources de chaîne. Je comprends les principes qui sous-tendent les regroupements de ressources, etc. Je voudrais éviter d'avoir un fichier de propriétés pour chaque classe qui a besoin d'une chaîne, car cela semble un peu exagéré. Surtout quand vous avez beaucoup de classes qui ne font qu'une seule référence à une chaîne (disons dans un gestionnaire d'erreurs). D'un autre côté, cela facilite la collaboration avec les autres car vous réduisez le risque de conflits de fusion.Gestion des ressources de chaînes Java

Il semble particulièrement fastidieux de devoir charger des groupes de ressources, chaque fois que vous avez besoin d'afficher des retours d'utilisateurs simples, de même dans les gestionnaires d'erreurs, lorsque plusieurs classes sont impliquées. Quel est le moyen le plus efficace de gérer des chaînes dans une application assez volumineuse avec des centaines de classes, dont beaucoup ne sont pas liées à l'interface graphique, mais doivent renvoyer des messages informatifs à l'interface graphique lorsque des exceptions surviennent.

J'utilise NetBeans ce qui crée généralement un fichier de propriétés pour chaque classe de GUI, pour tous les textes relatifs aux boutons, étiquettes, etc.

Répondre

12

Qu'est-ce qui vous fait penser que vous devez avoir un des propriétés distinctes fichier pour chaque classe? Généralement, vous n'avez besoin que de quelques (ou seulement un!) Fichier de propriétés (par langue, bien sûr).

Appelez simplement ResourceBundle.getBundle() avec les paramètres appropriés - vous pouvez utiliser le même ensemble de plusieurs classes. EDIT: Avoir un ensemble de fichiers de propriétés par boîte de dialogue, etc. facilite la visualisation de l'origine d'une chaîne particulière, mais rend plus difficile la réutilisation des mêmes messages, etc. Le bon équilibre dépendra du application.

0

Cela peut être naïf, mais qu'en est-il de les stocker dans une base de données, intégrée ou externe? Cela pourrait simplifier la gestion et changer les langues plus configurables.

2

JSR 296 Swing Application Framework prend en charge la gestion des ressources (et il semble que cela fasse partie de Java 7). SAF vise à pré-construire des parties d'une application Swing dont de nombreuses personnes ont souvent besoin tout en encapsulant les meilleures pratiques. Vous ne voulez probablement pas vous lier directement mais il vaut la peine de regarder ce qu'ils font pour voir si cela vous donne des idées. Si je me souviens bien, ils utilisent des groupes de ressources en cascade avec des conventions de nommage bien définies. Ce dernier signifie que vous savez où chercher et le premier signifie que vous pouvez réutiliser des propriétés dans une partie de la hiérarchie de votre package.

Plusieurs JSR 296 resources collected here.

0

Je vais mettre en œuvre quelque chose de similaire à la plate-forme de traduction Launchpad cette année: https://launchpad.net/+tour/translation

En bref:

  • traduction simultanées
  • suggestions de phrases sur la base des phrases précédemment saisies
  • Stratégies, par exempleEn partie limitée et structurée: tout le monde peut proposer des traductions, bien que l'examen de confiance des membres de la communauté et approuver les nouveaux travaux

MISE À JOUR

Bien sûr, cela construit au-dessus de ResourceBundle etc, mais est une belle façon de gérer toutes les cordes ;-)

Questions connexes