Moja aplikacja jest podawana ciągiem z zewnętrznego procesu, w którym każdy ciąg ma długość 2 lub 5 znaków i reprezentuje numer java.util.Locale
. Na przykład:Jak zweryfikować i utworzyć instancję Java Locale z łańcuchów?
en-us
ko
Pierwszym przykładem jest ciąg 5-char gdzie "pl" jest kodem języka ISO i "nas" jest krajem ISO kod. Powinno to odpowiadać locale "en_US". Drugi przykład to tylko ciąg 2-znakowy, gdzie "ko" jest kodem języka ISO i powinien odpowiadać "ko_KR" (koreański) język.
Potrzebuję sposobu na pobranie tych ciągów znaków (odmiany 2 lub 5-znakowej), sprawdzenie poprawności (jako obsługiwanego języka Java Ustawienia regionalne), a następnie utworzenie z nim instancji Locale.
Chciałbym mieć nadzieję, że Locale przyszedł z taką walidację po wyjęciu z pudełka, ale niestety ten kod działa bez wyjątków wyrzucane:
Locale loc = new Locale("waawaaweewah", "greatsuccess");
// Prints: "waawaaweewah"
System.out.println(loc.getDisplayLanguage());
Więc pytam, dał mi 2 stanowi, że te STRING zostanie podane do mnie, jak mogę:
- Testuj ciąg (obie formy) i wyjątek dla ciągów odpowiadających nieistniejących lub nieobsługiwanych Java 6 locale; i
- Utworzenie nowego locale z ciągu znaków? To pytanie ma zastosowanie do formularza 2-znakowego, w którym mogę mieć tylko "ko" i potrzebuję go mapować do lokalizacji "ko_KR", itp.
Z góry dziękuję!
Co powiesz na "nowe ustawienia regionalne (język)" dla drugiego przypadku i "nowe ustawienia regionalne (język, kraj)" dla pierwszego przypadku, zakładając, że dzielisz dane wejściowe z łącznikiem i traktujesz tokeny 2-znakowe jako język i kraj? – asgs