Wie konvertieren von Microsoft Gebietsschema-ID (LCID) in der Sprache code oder Locale-Objekt in Java
Ich brauche die übersetzung eines Microsoft Gebietsschema-ID, wie 1033 (für Englisch), in ein ISO-639-Sprachcode oder direkt in eine Java - Gebietsschema Instanz. (Edit: oder auch einfach in die "Sprache - Land/Region", die in der Microsoft-Tabelle.)
Ist das möglich, und was ist der einfachste Weg? Vorzugsweise verwenden Sie nur standard-JDK-Bibliotheken, natürlich, aber wenn das nicht möglich ist, mit einem 3rd-party-Bibliothek.
InformationsquelleAutor Jonik | 2009-07-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie GetLocaleInfo, dies zu tun (vorausgesetzt, Sie waren läuft auf Windows (win2k+)).
Dieser C++ - code zeigt die Verwendung der Funktion:
Es würde nicht viel Arbeit, diesen in eine JNA nennen. (Tipp: Strahlen-Konstanten als int-Werte zu finden, die Ihre Werte.)
Probe JVA-code:
Mittels JNI ist etwas aufwändiger, ist aber beherrschbar für eine relativ triviale Aufgabe.
Zumindest, ich würde in über native Aufrufe zu bauen, die Ihre conversion-Datenbank. Ich bin mir nicht sicher, ob Windows hat einen Weg zum auflisten der LCIDs, aber es ist bestimmt für jeden etwas .Net. Als build-level-Sache, das ist nicht eine große Belastung. Ich möchte vermeiden, die manuelle Pflege der Liste.
InformationsquelleAutor McDowell
Als es anfing, zu schauen, wie es ist keine Java-Lösung bereit, dies zu tun mapping, nahmen wir die ~20 Minuten zu Rollen, etwas von unserem eigenen, zumindest für jetzt.
Nahmen wir uns die Informationen aus dem Maul des Pferdes, d.h. http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx und kopieren-einfügen (in Excel) in eine .properties-Datei wie folgt:
(Sie können die Datei herunterladen, hier wenn Sie ähnliche Anforderungen haben.)
Dann gibt es eine sehr einfache Klasse, die liest die Informationen aus der .properties-Datei in eine Karte, und hat eine Methode für die Konvertierung.
Und ja, das spielt eigentlich keine Karte, um language-code oder Locale-Objekt (das ist, was ich ursprünglich gefragt), aber auf Microsoft ' s "Sprache - Land/Region" Beschreibung. Es stellte sich heraus, dies war ausreichend für unseren aktuellen Bedarf.
Disclaimer: dies ist wirklich eine minimalistische, "dummy" Weg, es zu tun sich selbst in Java, und natürlich die Aufbewahrung (und Pflege) eine Abschrift des LCID-mapping-Informationen in Ihrer eigenen Codebasis ist nicht sehr elegant. (Auf der anderen Seite, weder würde ich wollen, um eine riesige Bibliothek jar oder etwas zu tun, übermäßig kompliziert ist nur für das einfache mapping.) Also trotz dieser Antwort, feel free to post elegantere Lösungen oder vorhandene Bibliotheken wenn Sie nichts wissen, so.
Im Allgemeinen, das ist wahr - aber für unseren speziellen Fall die Sprache/Land-Namen in Englisch sind in Ordnung (wir ziehen einige software-Informationen aus der SCCM Datenbank, und wollen einfach nur etwas mehr Menschen-lesbar als die numerische codes)
InformationsquelleAutor Jonik
Dem folgenden code wird programmgesteuert erstellen Sie eine Zuordnung zwischen Microsoft LCID-codes und Java-Sprachen, so dass es einfacher zu halten das mapping up-to-date:
Maven-Abhängigkeiten:
Verwendung:
drucken "Sprache: Englisch".
Bedeutung, LCID 1033-Karten, um die englische Sprache.
HINWEIS: Diese erzeugt nur Zuordnungen für die Sprachen verfügbar, die auf Ihre runtime-JVM. Das bedeutet, Sie erhalten nur eine Teilmenge aller möglichen Locales. Das heißt, ich glaube nicht, dass es technisch möglich ist, zu instanziieren Gebietsschemas, die Sie in der JVM nicht unterstützt wird, so ist dies wahrscheinlich das beste, was wir tun können...
InformationsquelleAutor Gili
Das war der erste Treffer auf google für "Java " LCID" ist das javadoc:
Ich bin nicht sicher, wo zu gehen, über das herunterladen dieser Bibliothek, aber es ist GNU, also sollte es nicht allzu schwer zu finden.
Hier ist die Quelle: classpath.sourcearchive.com/documentation/0.91/... Finden Sie die Methode, die "Karten ein Windows-Gebietsschemabezeichner (LCID in eine Java-Locale", und beachten Sie den Kommentar "FIXME: Dies ist grob unvollständig." 😛
Gah, nicht gut... GNU in "beschissene java-Implementierung" shocka.
InformationsquelleAutor skaffman