Как расширить список доступных языков Java - PullRequest
8 голосов
/ 17 января 2011

Я ищу способ добавить больше локалей в локали, доступные в Java 1.6.Но локали, которые я хочу создать, не имеют ни кодов стран ISO-3166, ни кодов языков ISO-639.Есть ли способ сделать это в любом случае?Локали, которые я хочу добавить, отличаются только названиями языков, но чем меньше этническая группа, тем более разборчивы они в отношении своей идентичности; -)

Поэтому я подумал о расширении существующей локали, что-то вроде

UserDefinedLocale extends Locale { 
   UserDefinedLocale (Locale parentLocale) {...}
}

но java.util.Locale является окончательным, что делает особенно трудным взломать что-то вокруг ...

Итак, является ли идея о том, что список Java Locales является исчерпывающим?Я первый пропустил еще несколько локалей?

Ответы [ 2 ]

5 голосов
/ 17 января 2011

Прочитайте javadoc для java.util Locale .

Он говорит: «Создайте объект Locale, используя конструкторы в этом классе:«

Также сказано:«Поскольку объект Locale является просто идентификатором для региона, при создании Locale проверка достоверности не выполняется»

В нем также говорится: «Locale - это механизм для определения типа объекта (NumberFormat), которыйвы хотели бы получить. Локаль - это просто механизм для идентификации объектов, а не контейнер для самих объектов "

И, наконец, Javadoc для метода getAvailableLocales () говорит:" Возвращенный массив представляет объединениелокалей, поддерживаемых средой выполнения Java и установленными реализациями LocaleServiceProvider "

Так что вам просто нужно придумать код языка, которого нет в стандартном списке, и использовать его в качестве идентификатора для вашей локали.

2 голосов
/ 17 января 2011

См. этот ответ :

... Вы можете подключить поддержку дополнительных локалей через SPI (описано здесь ). Например, чтобы предоставить средство форматирования даты для новой локали, вы должны сделать это, внедрив службу DateFormatProvider. Вы могли бы сделать это, украсив существующую реализацию - я бы взглянул на библиотеку ICU4J , чтобы узнать, предоставляет ли она необходимую поддержку.

...