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()
.
Ich hatte die gleichen Fragen und das habe ich gefunden.
Wenn Sie Locale
mit dem Konstruktor als:
und dann rufen Sie getLanguage
:
Der Wert von language
ist "en_us";
Wenn Sie die Locale
mit dem Builder erstellen:
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.