java .util.Locale конструктор не работает при использовании "gsw" в качестве швейцарского языкового стандарта в Java 8 - PullRequest
6 голосов
/ 09 апреля 2020

Контекст :

Клиент попросил меня помочь ему с методом форматирования Joda DateTime с Locale, указанным в качестве параметра.

Проблема:

Использование "gsw" ( Swiss German ) в качестве языка, по-видимому, не влияет на перевод (падает вернуться к Engli sh в моем случае). «gsw» является частью ISO639-2 (то есть ISO639 alpha-3, который, как сказано в локали Java, он поддерживает, https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html).

Я подтвержден на 100% конечно, gsw является частью альфа-3, но он не был частью альфа-2 (ISO639-1): https://www.loc.gov/standards/iso639-2/php/English_list.php Я пробовал с другими языками, которые являются частью альфа-3, но не присутствовал в альфа-2, и я вижу такое же странное поведение. Может быть, я недостаточно хорошо прочитал справочный центр Locale?

Код: // все типы принадлежат joda.time, кроме Locale, который равен java .util

DateTimeZone dtZone = DateTimeZone.forID(IANATimezone);
DateTime dtus = dateTime.withZone(dtZone);
Locale locale = new Locale(Language, Region);
DateTimeFormatter dtf = DateTimeFormat.fullDateTime().withLocale(locale); 
...