11 Stimmen

Fehlende Lokalisierungen in Java?

Ich habe eine Reihe von fehlenden Ländern in den Java-Lokalen gefunden - Wenn ich eine Liste der verfügbaren Lokalen ausdrucke,

TreeSet< String > m = new TreeSet< String >();
for ( Locale l : Locale.getAvailableLocales() ) {
    m.add( l.getDisplayCountry() );
}
for ( String s : m ) {
    System.out.println( s );
}

Es fehlen mir eine Reihe von Ländern, darunter Nigeria, Iran, Kirgisistan und Pakistan. Kann jemand hier Licht ins Dunkel bringen, oder gibt es eine bessere (umfangreichere) Möglichkeit, eine Länderliste in Java zu erhalten?

1.6.0_16-b01

6voto

McDowell Punkte 105255

Sun Java 6 bietet nur Unterstützung für eine begrenzte Anzahl von Lokalisierungen. Der Vektor der Unterstützung für Formatierungsklassen/Schreibsysteme usw. ist in der JDK-Dokumentation aufgeführt.

Jetzt habe ich das nicht gemacht, aber...

Sie können die Unterstützung für zusätzliche Lokalisierungen über die SPIs einbinden (wie hier beschrieben). Zum Beispiel könnten Sie einen Datumsformatter für eine neue Lokalisierung bereitstellen, indem Sie einen DateFormatProvider -Dienst implementieren. Sie könnten dies möglicherweise erreichen, indem Sie eine vorhandene Implementierung dekorieren - ich würde mir die ICU4J-Bibliothek ansehen, um zu sehen, ob sie die gewünschte Unterstützung bietet.

4voto

Aadith Ramia Punkte 9569

Es gibt keine eins-zu-eins-Zuordnung zwischen Ländern in der Welt und den Ländereinstellungen. Ländereinstellungen geben Regionen an. Sie dienen dazu, Dinge wie Sprachenvielfalt zu kennzeichnen. Nur ein klärendes Beispiel: Indien, Sri Lanka, Pakistan, Bangladesch sind alles unterschiedliche Länder... aber die Art und Weise, wie sie die englische Sprache verwenden, unterscheidet sich nicht wesentlich... es ist eine demografische Sache... daher könnte sich all diese Länder auf die indische Ländereinstellung stützen

2voto

Tendayi Mawushe Punkte 24821

Die statische Methode Locale.getISOCountries() gibt alle zwei Buchstaben Codes für Länder in der ISO 3166 Länder Liste zurück. Wenn Sie den folgenden Code ausführen:

String[] codes = Locale.getISOCountries();
for (String code : codes) {
    System.out.println(code);
}

Sie werden feststellen, dass PK (PAKISTAN), NG (NIGERIA) und KG (KYRGYZSTAN) alle in der Liste enthalten sind. Beachten Sie, dass dies nicht bedeutet, dass die mit dem Land verbundene Lokalisierung installiert ist. Wenn Sie spezifisches Verhalten für eine bestimmte Lokalisierung implementieren möchten, werden nur die Lokalisierungen unterstützt, die von Locale.getAvailableLocales zurückgegeben werden.

1voto

mindas Punkte 25933

Wenn Sie mehr Ländereinstellungen unterstützen möchten als derzeit im Sun JDK verfügbar sind, sollten Sie in Betracht ziehen, ICU4J-Jars zu Ihrem java.ext.dirs hinzuzufügen - damit erhalten Sie nicht nur eine vollständigere Liste von Ländern und Ländereinstellungen, sondern auch eine ordentliche Unterstützung für Collator, DateFormat usw.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X