Является ли en_UK нелегальным языком? - PullRequest
59 голосов
/ 04 сентября 2011

До сих пор я всегда использовал en_UK для британского английского.Сегодня я получил ошибку при использовании его с Zend Framework, потому что локаль не включена в длинный список распознанных локалей.

Вот лишь краткая выдержка из этого списка:

'ee_GH' => true, 'ee_TG' => true, 'ee'    => true, 'el_CY' => true, 'el_GR' => true,
'el'    => true, 'en_AS' => true, 'en_AU' => true, 'en_BE' => true, 'en_BW' => true,
'en_BZ' => true, 'en_CA' => true, 'en_GB' => true, 'en_GU' => true, 'en_HK' => true,
'en_IE' => true, 'en_IN' => true, 'en_JM' => true, 'en_MH' => true, 'en_MP' => true,
'en_MT' => true, 'en_NA' => true, 'en_NZ' => true, 'en_PH' => true, 'en_PK' => true,
'en_SG' => true, 'en_TT' => true, 'en_UM' => true, 'en_US' => true, 'en_VI' => true,
'en_ZA' => true, 'en_ZW' => true, 'en'    => true, 'eo'    => true, 'es_AR' => true,
'es_BO' => true, 'es_CL' => true, 'es_CO' => true, 'es_CR' => true, 'es_DO' => true,

КакВы можете видеть, что есть все виды территорий с английским языком, и есть также запись 'en_GB', которая, как я полагаю, обозначает Великобританию ... но здесь нет en_UK.Это просто «ошибка» в Zend Framework или есть другая причина для этого?

Ответы [ 5 ]

75 голосов
/ 04 сентября 2011

Правильный код страны - en_GB.Локали используют ISO 3166-1 для кодов стран. Википедия включает в себя:

Коды выбраны в соответствии с ISO 3166 / MA, "чтобы отразить значительный, уникальный компонент названия страны, чтобы позволитьвизуальная связь между названием страны и кодом страны ". [7]По этой причине общие компоненты названий стран, такие как «Республика», «Королевство», «Объединенный», «Федеральный» или «Демократический», обычно не используются для получения элементов кода.Как следствие, например, Соединенному Королевству официально присваивается код альфа-2 GB, а не Великобритания, на основании его официального названия «Соединенное Королевство Великобритании и Северной Ирландии» (хотя Великобритания зарезервирована по запросу Соединенного Королевства).

20 голосов
/ 04 сентября 2011

Это действительно распространенная (?) Ошибка.en_UK не так.Код страны ISO для Великобритании - ГБ, что делает языковой тег en_GB.

6 голосов
/ 04 сентября 2011

Несовершенные реализации

Начиная с 1985 года коды ISO 3166-1 alpha-2 используются в Система доменных имен в качестве доменов верхнего уровня с кодом страны (ccTLD). Управление по присвоению номеров в Интернете в настоящее время назначает нДВУ в основном следуют кодам альфа-2, но с некоторыми исключениями. [9] За Например, Соединенное Королевство, чей код альфа-2 является ГБ, использует .uk вместо .gb в качестве своего ccTLD, поскольку Великобритания в настоящее время исключительно зарезервирована в ISO 3166-1 по запросу Соединенного Королевства.

Согласно википедии http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2.

Так что, очевидно, это старая вещь, которая застряла или что-то в этом роде.

РЕДАКТИРОВАТЬ: Мартин Клейтон нашел лучший ответ.

4 голосов
/ 02 октября 2013

Вы не можете просто изобретать локали! Они уже определены. Таким образом, «en-gb» - британский английский, тогда как «en-us» - американский английский. Если вы используете «en-uk», вы просто создаете код.

Относительно того, почему официальный код "en-gb", а не "en-uk", я думаю, в основном потому, что не существует такой вещи, как английский в Великобритании. Языковой вариант британский. Обратите внимание, что разница между Великобританией и Великобританией составляет:

Великобритания = Великобритания + Северная Ирландия

Таким образом, называя вариант «en-UK», вы словно говорите, что хотите включить в эту категорию то, как они говорят в Северной Ирландии. Но почему вы хотите это сделать? С лингвистической точки зрения это не имеет смысла, так как английский язык в Северной Ирландии ближе к ирландскому (en-IE), чем к британскому.

3 голосов
/ 04 сентября 2011

правильный код страны в ISO 3166 для Соединенного Королевства Великобритании и Северной Ирландии по некоторым причинам "GB", поэтому код локали должен быть en_GB, а не en_UK, как указано здесь .

en_GB также используется glibc, gnome, kde и т. Д.

Также мне нравится тот факт, что многие предыдущие исправления ошибок в проектах с открытым исходным кодом связаны с этим, как в apache http 1.3 и roundcube project

...