Wie bekomme ich den iso2-Sprachcode für das Gebietsschema?

8

Ich bekomme den iso2-Sprachcode so:

%Vor%

Gibt es einen besseren Weg, dies zu tun?

edit : Wenn ich getLanguage verwende, erhalte ich eine leere Zeichenfolge.

    
cupakob 07.04.2011, 14:00
quelle

4 Antworten

12

Was ist mit

? %Vor%

Natürlich wird dies nur ein iso 639-1 2-Buchstabencode sein, wenn einer für diese Sprache definiert ist, andernfalls kann er einen 3-Buchstaben-Code (oder sogar länger) zurückgeben.

Ihr Code wird dumme Ergebnisse liefern, wenn Sie ein Gebietsschema ohne Sprachcode haben (wie _DE ) (meins wird dann den leeren String zurückgeben, der ein bisschen besser ist, IMHO). Wenn das Gebietsschema einen Sprachencode enthält, wird es zurückgegeben, aber Sie benötigen dann nicht den Aufruf toLowerCase() .

    
Paŭlo Ebermann 07.04.2011 14:07
quelle
2

Ich hatte die gleichen Fragen und das habe ich gefunden.

Wenn Sie Locale mit dem Konstruktor als:

erstellen %Vor%

und dann rufen Sie getLanguage :

auf %Vor%

Der Wert von language ist "en_us";

Wenn Sie die Locale mit dem Builder erstellen:

%Vor%

Dann wird der Wert locale.getLanguage() zurückgeben "en".

Das ist mir seltsam, aber es ist so, wie es implementiert wurde.

Dies war die lange Antwort, um das zu erklären. Wenn Sie möchten, dass der Sprachencode eine aus zwei Buchstaben bestehende ISO-Sprache zurückgibt, müssen Sie den Builder Java Locale verwenden oder eine Zeichenfolge bearbeiten.

Ihre Methode mit substring funktioniert, aber ich würde etwas verwenden, wie ich unten geschrieben habe, um Fälle abzudecken, bei denen das Trennzeichen "-" oder "_" sein kann.

%Vor%     
Brod 07.10.2014 21:47
quelle
0

Vielleicht durch Aufruf von Locale#getLanguage()

    
Riduidel 07.04.2011 14:05
quelle
0

Locale locale = ?; locale.getLanguage();

    
Thomas 07.04.2011 14:06
quelle

Tags und Links