Kennt jemand ein frei verfügbares Java 1.5-Paket, das eine Liste der ISO 3166-1-Ländercodes als Enum oder EnumMap enthält? Insbesondere benötige ich die "ISO 3166-1-alpha-2-Codeelemente", dh den 2-stelligen Ländercode wie "us", "uk", "de" usw. Das Erstellen eines Codes ist einfach genug (obwohl mühsam), aber wenn Es gibt bereits einen Standard im Apachenland oder ähnliches, der ein wenig Zeit sparen würde.
java
internationalization
country-codes
iso-3166
Jason Jenkins
quelle
quelle
Antworten:
Eine Implementierung der Ländercode - Liste ( ISO 3166-1 Alpha-2 / Alpha-3 / Numerisch ) als Java-Enumeration ist jetzt bei GitHub unter Apache License Version 2.0 verfügbar.
Beispiel:
Letzte Änderung 2016-Jun-09
Die CountryCode-Aufzählung wurde in com.neovisionaries.i18n mit anderen Java-Aufzählungen, LanguageCode ( ISO 639-1 ), LanguageAlpha3Code ( ISO 639-2 ), LocaleCode, ScriptCode ( ISO 15924 ) und CurrencyCode ( ISO 4217 ) gepackt und in Maven Central registriert Repository.
Maven
Gradle
GitHub
https://github.com/TakahikoKawasaki/nv-i18n
Javadoc
http://takahikokawasaki.github.com/nv-i18n/
OSGi
quelle
org.iban4j
) für IBAN- und BIC-Codes sowie eine CountryCode-Aufzählung: CountryCodeDieser Code erhält 242 Länder in Sun Java 6:
Obwohl die ISO-Website behauptet, dass es 249 ISO 3166-1-alpha-2-Codeelemente gibt , verweist der Javadoc auf dieselben Informationen.
quelle
Java 1.6.0_33-b05
enthält 248, nurSS
jetzt verpasst . Dies liegt einfach daran, dassSS
das letzte (2011) Land hinzugefügt wurde und die Java 6-Quelle nicht aktualisiert wurde.So habe ich eine Aufzählung mit Ländercode + Ländername erstellt:
quelle
Wenn Sie sich bereits auf das Java-Gebietsschema verlassen, empfehle ich die Verwendung einer einfachen HashMap, anstatt neue Klassen für Länder usw. zu erstellen.
So würde ich es verwenden, wenn ich mich nur auf die Java-Lokalisierung verlassen würde:
Nachdem Sie die Karte ausgefüllt haben, können Sie den ISO-Code jederzeit aus dem Ländernamen abrufen. Sie können auch einen ISO-Code für die Ländernamenzuordnung festlegen. Ändern Sie einfach die Put-Methode entsprechend.
quelle
Es gibt eine einfache Möglichkeit, diese Aufzählung mit dem Sprachnamen zu generieren. Führen Sie diesen Code aus, um die Liste der einzufügenden Aufzählungsfelder zu generieren:
quelle
Keine Java-Enumeration, aber eine JSON-Version davon ist unter http://country.io/names.json verfügbar
quelle
Wenn bereits jemand das Amazon AWS SDK verwendet, ist es enthalten
com.amazonaws.services.route53domains.model.CountryCode
. Ich weiß, dass dies nicht ideal ist, aber es ist eine Alternative, wenn Sie das AWS SDK bereits verwenden. In den meisten Fällen würde ich Takahikos verwenden,nv-i18n
da es, wie er erwähnt, ISO 3166-1 implementiert.quelle
Das AWS Java SDK verfügt über CountryCode .
quelle
Dies beantwortet die Frage immer noch nicht. Ich suchte auch nach einer Art Enumerator dafür und fand nichts. Einige Beispiele, die hier die Hashtabelle verwenden, entsprechen jedoch dem integrierten get
Ich würde einen anderen Ansatz wählen. Also habe ich ein Skript in Python erstellt, um die Liste automatisch in Java zu generieren:
Dabei handelt es sich bei der Datei data.txt um ein einfaches Kopieren und Einfügen aus der Wikipedia-Tabelle (entfernen Sie einfach alle zusätzlichen Zeilen und stellen Sie sicher, dass Sie einen Ländercode und einen Ländernamen pro Zeile haben).
Dann platzieren Sie dies einfach in Ihrer statischen Klasse:
quelle
Ich wusste nichts über diese Frage, bis ich kürzlich meine Java-Enumeration für genau diesen Zweck als Open-Source-Lösung bereitgestellt hatte! Erstaunlicher Zufall!
Ich habe den gesamten Quellcode mit der BSD Caluse 3-Lizenz in mein Blog aufgenommen, damit ich nicht glaube, dass irgendjemand etwas davon haben würde.
Kann hier gefunden werden. https://subversivebytes.wordpress.com/2013/10/07/java-iso-3166-java-enum/
Hoffe, es ist nützlich und lindert Entwicklungsprobleme.
quelle
Ich habe eine Aufzählung erstellt, die Sie mit dem englischen Ländernamen ansprechen. Siehe country-util .
Bei jeder Aufzählung können Sie anrufen
getLocale()
, um das Java-Gebietsschema abzurufen.Im Gebietsschema erhalten Sie alle Informationen, die Sie gewohnt sind, z. B. den aus zwei Buchstaben bestehenden Ländercode ISO-3166-1.
Profi:
Con:
quelle