Как были выбраны локальные константы?

Класс Java java.util.Locale имеет набор полей public static final для языков/стран для прямых ссылок на определенные локали. Другие локали могут быть легко использованы с помощью соответствующих конструкторов.

Однако выбор значений кажется мне довольно произвольным.

Языки (в том порядке, в котором они появляются в источнике): английский, французский, немецкий, итальянский, японский, корейский, китайский, упрощенный китайский, традиционный китайский

Страны: Франция, Германия, Италия, Япония, Корея, Китай, КНР, Тайвань, Великобритания, США, Канда и Канада, Франция (для региона fr_CA).

Есть ли у кого-нибудь идея (или даже догадка) о том, как выбираются эти языки/страны?

Ответ 1

Эти коды определяются стандартами ISO 3166 для кодов стран и 639 для кодов языков. См. Также страница W3C по интернационализации.

Edit:

Перечитав вопрос, ОП уже знал это:-)

Согласно статье Sun Интернационализация: понимание языка в платформе Java эти значения выбраны в качестве примеров, и это даже говорит нам:

Так как существует так мало готовых локалей, вы, вероятно, должны просто избегать этих статические объекты вообще.

Ответ 2

Я бы предположил, что это просто наиболее часто используемые локали в качестве удобства для разработчиков.

Из Javadoc:

Класс Locale предоставляет ряд удобных констант, которые можно использовать для создания объектов Locale для обычно используемых локалей.

Ответ 3

Я предполагаю, что они используют свои языки уровня 1 - те, для которых JRE локализована. Что касается стран, я думаю, что они просто сопоставляются с языками. Ну, мы, вероятно, никогда не узнаем, если кто-то из участников не выскажется.