Dans les applications Android, les ressources sont spécifiées dans des documents XML, qui sont automatiquement intégrées à la classe Y a-t-il une manière que je puisse utiliser une approche similaire pour une application de bureau Java régulière? P>
Ce que j'aimerais accomplir, c'est à la fois l'élimination des chaînes du code (comme une séparation des "couches", plus ou moins) et de faciliter l'appui à la localisation, en disant simplement au programme de Choisissez le fichier XML correspondant à la langue souhaitée. P>
J'ai un peu googlé un peu, mais les choses que je recherchent semblent se noyer dans les résultats de l'analyse ou de la sortie XML, plutôt que des outils utilisant XML pour générer du code. SUB> P > R code>, facilement accessible dans le code source comme fortement dactylographié. P>
4 Réponses :
Je ne suis pas sûr que ce soit ce que vous voulez dire, mais consultez l'internationalisation -
Semble être quelque chose comme ce que je cherche. Malheureusement, le tutoriel est entièrement fait pour NetBeans et j'utilise Eclipse ...
L'utilisation de la fonctionnalité intégrée «externalisée» d'Eclipse me permet de contourner les cordes de mes fichiers d'interface graphique et de les mettre en ressources, mais cela n'entraîne toujours pas de classes de type générés. Ce que je suis après est un outil pour construire réellement code i> avec mes cordes, pas seulement i> soulevez les cordes des faisceaux de ressources.
La mise en oeuvre du paquet de messages d'Eclipse (utilisée par les plugins par exemple) s'intègre à la fonction d'externalisation des chaînes et génère à la fois une classe statique et un fichier de propriétés de ressources pour vos chaînes: p>
http://www.eclipse.org/eclipse/ Platform-Core / Documents / 3.1 / Message_bundles.html P>
Pour cette intégration au travail Eclipse doit voir org.eclipse.osgi.util.nls sur le chemin de classe. De la mémoire, les dépendances des bibliothèques qu'il était disponible étaient un peu délicates pour le projet que j'ai utilisé cette approche. Je viens donc d'avoir la source et de l'avoir comme une classe autonome de mon module de base (voir les commentaires pour plus sur ça). p>
Il fournit la sécurité de type que vous recherchez et les caractéristiques de l'IDE économisent beaucoup de temps. Je n'ai trouvé aucun peu de temps à l'approche jusqu'à présent. p>
Edit: C'est en fait ce que Ghostbust555 mentionné dans les commentaires, mais pas clair dans cet article que cela ne se limite pas aux plugins Eclipse et que vous vous référez à vos ressources via des membres statiques d'une classe de messages. p>
Je n'ai vu aucune mention des autres en utilisant cette approche avec leurs propres applications, mais pour moi, il est tout à fait un bon sens, étant donné l'intégration de l'IDE et la sécurité de type. P>
Cela semble extrêmement prometteur. J'exécute Eclipse 3.7.1, et quand je clique sur "Externaliser les chaînes ..." dans le menu, je semble toujours avoir l'ancienne version. Comment puis-je obtenir la nouvelle version?
Vous avez besoin de la classe NLS sur le processus de classe de projet. Dans mon cas, plutôt que de jouer avec des bibliothèques pour la dépendance, j'ai eu le code, l'a ajouté à mon projet (doit conserver le colis!) Et remplacer les dépendances de la journalisation mineures avec le cadre que j'utilisais. La classe est ici: grepcode.com/file/repository.grepcode.com/java/eclipse.org/3 .5 / ...
OK, je l'ai travaillé =) Cependant, je ne peux pas comprendre comment utiliser cette approche pour la localisation (c'est-à-dire spécifier différentes langues pour l'interface utilisateur).
Super! C'est une autre chose belle à propos du framework: il relève des fichiers de propriétés via File_Language_Country.propex to File_Language.properties et enfin fichier.properties à l'aide de LOCAL.GETDEFAULT () pour déterminer le paramètre système actuel. Vous pouvez utiliser les proéties système et la méthode SetDefault () pour définir vous-même les paramètres régionaux: docs.oracle.com/javase/1.5.0/docs/aplia/java/util/...
Oh, et bien sûr, si vous voulez changer de place à la volée, vous devez appeler nls.initializemessages (Bundle_name, messages.class) sur votre paquet (s) pour reculer les cordes.
Cela semble être une solution parfaite. Merci beaucoup! (Il semble que je ne peux pas vous accorder la prime avant demain, cependant ...)
Vous recherchez quelque chose qui analyse des fichiers XML et génère des instances Java d'objets similaires «de type structure» similaires, tels que Jaxp et JAXB ? P>
Je préférerais quelque chose où je n'ai pas eu à définir le schéma XML et à créer moi-même le code d'analyse moi-même - car je veux seulement des objets vraiment simples (structs, plus ou moins, bien que string code> Propriétés) J'étais En espérant qu'il y avait quelque chose déjà en place.
J'ai rencontré Resgen qui, étant donné que les fichiers XML de l'ensemble de ressources génèrent des fichiers Java pouvant être utilisés pour accéder aux ressources de manière sécurisée. P>
Cela semble extrêmement prometteur - juste le genre de chose que je voulais. Nous n'utilisons actuellement pas de fourmi pour le bâtiment, mais cela pourrait la faire valoir la peine de prendre le pas ...