Java i18n: Verwendung eines Resource Accessor pro Paket oder ein für ganze Projekt?
-
20-09-2019 - |
Frage
Ich weiß nichts über die Internationalisierung.
ich ein Projekt mit mehreren Paketen haben. Ich verwende Eclipse integrierten „Externalize Strings“ Assistent String-Konstanten in meinen Klassen auf eine Properties-Datei zu extrahieren und diese Strings mit Aufrufen einer statischen Accessor zu ersetzen. So anstelle von
System.out.println("Hello, world!");
ich am Ende mit
System.out.println(Messages.getString("MyKey"));
und eine Messages
Utility-Klasse in jedem Paket (die für das Erhalten des gewünschten String aus einem Resource [in diesem Fall eine getString
Datei] eine statische .properties
Methode zur Verfügung stellt). Ist es am besten in jedem Paket eine Messages
Klasse zu haben, oder hat eine einzige Messages
Klasse für das gesamte Projekt?
Lösung
Ich bin für eine globale Lokalisierungsdatei. Sie werden doppelte Schlüssel haben ( „OK“, „Abbrechen“), die Vervielfältigung oder Verschachtelung erfordern würde, und mit außerhalb Lokalisierung Menschen Schnittstelle ist einfacher, wenn die Ressourcen konsolidiert werden.
Andere Tipps
Ich würde ein-per-Paket halten. Auf diese Weise Wartung / Refactoring / Unit-Testing ist viel einfacher.
Auch gibt es keine globalen Abhängigkeiten von einer einzigen Datei.