2012-03-26 3 views
5

In meinem Projekt möchte ich Kompilierzeitüberprüfungen auf meinem vorhandenen Ressourcenbündel haben. Ich habe bereits eine Reihe von *.properties lokalisierten Dateien und ich bin dabei, sie an einige i18n Werkzeug zu hängen. Ich habe über reguläre ResourceBundles nachgedacht, aber ich mag nicht die Tatsache, dass dieser Mechanismus keine Art von Überprüfungen garantiert, weder Kompilierungszeit noch Wartungsüberprüfungen wie - das Finden von Duplikaten oder das Auffinden unbenutzter Schlüssel.Beliebige Bibliothek für saubere Code-Generierung von i18n Ressourcenbündeln?

Also, Ich bin auf der Suche nach einer Bibliothek, die meine vorhandenen *.properties Dateien nehmen würde und konvertiert sie in saubere und saubere Java-Code, den ich in meinem Projekt verwenden könnte.

Das bestmögliche Ergebnis wäre ein Mechanismus, der dem von GWT i18n ähnelt. Eine, saubere Schnittstelle mit allen Nachrichten als separate Methoden.

Ich habe jlibs und ForgeRock betrachtet. Ich mag jlibs, aber es ist keine separate lib, daher fällt es mir schwer, mir vorzustellen, dass ich eine so große lib-abhängigkeit nur für i18n einführen würde. ForgeRock macht ziemlich genau das, was ich möchte, aber es erzeugt Konstanten und keine sauberen Schnittstellen, mit denen man arbeiten kann, wie jlibs es tut.

This entry blog ist auch hilfreich, um zu verstehen, welchen Ansatz ich verwenden möchte. Ich habe eine große Recherche über verfügbare i18n-Tools gemacht, ich kann einfach nicht das finden, was meinen Bedürfnissen am besten entspricht.

Grüße.

Antwort

0

Ich arbeite gerade genau an der Art von Bibliothek, die Sie suchen, check it out. Es ist immer noch in Arbeit, aber ich sollte meine erste Veröffentlichung ziemlich bald haben.

Die erste Version enthält nur Unterstützung für Annotation-basierte Übersetzungen. Ich habe jedoch noch keine Ideen, wie man bestehende Projekte in den c10n-Stil migrieren kann. Irgendwelche Ideen, Vorschläge sind immer willkommen!

+0

Sieht vielversprechend aus, aber wie stabil ist es? Was ist die Lizenz? Das Werkzeug, das ich wähle, wird in kommerziellen Produkten verwendet. –

+0

Lizenz ist Apache License 2.0, also kein Problem für die kommerzielle Nutzung. Ich fürchte, ich habe gerade angefangen, es zu entwickeln, also ist es gerade in der * Alpha * -Stufe. Derzeit ist keine stabile Version verfügbar.Ich plante, die erste stabile Version in ungefähr einem Monat zu veröffentlichen, aber wenn ich einige begeisterte Benutzer habe, kann ich das ein wenig beschleunigen :) – rodion

+0

Ich könnte ein wenig in einer Freizeit helfen, wenn Sie den Überblick über Dinge zu tun haben. Ich könnte ein bisschen herumspielen, um Ihnen ein Feedback aus der Sicht des Benutzers zu geben und mit einigen Programmieraufgaben zu helfen. –

-1

Ich mag JUnit. Nicht genau das, was Sie suchen, aber indem Sie Tests erstellen, sind Sie sicher, dass alle Elemente in den Propertyfiles verfügbar sind.

1

Eine andere Bibliothek, die Ihren Anforderungen für die Codegenerierung entspricht, wäre i18n-binder.

Persönlich würde ich dieses Problem aus einem anderen Blickwinkel angehen, mit dem gettext Framework, das Sie übersetzbare Zeichenfolgen im Quellcode markieren und die Ressourcenbündel daraus generieren würden. Es gibt Werkzeuge und Editoren, die die Übersetzungen basierend auf den extrahierten Strings aktualisieren und nicht mehr verwendete oder geänderte Strings erkennen können.

0

Um dieses Problem zu lösen, habe ich eine Message Compiler implementiert, die die Ressourcen Bundle-Dateien und Konstanten Definitionen als Java Enum für die Schlüssel aus einer einzigen Quelldatei erstellt. Daher können die Konstanten im Java-Quellcode verwendet werden, was eine viel sicherere Methode ist. Der Nachrichtencompiler kann nicht nur für Java verwendet werden. Es erstellt auch Ressourcendateien und -konstanten für Objective-C oder Swift und kann für andere Programmierumgebungen erweitert werden.