Intereting Posts
Являются ли PHP DateInterval сопоставимыми с DateTime? Допустимый размер памяти 268435456 байт исчерпан Как сделать совпадение символов в точках с использованием регулярных выражений Обновление с symfony1 до symfony2 Как сделать переключатели, выбрать поля и флажки обязательных полей в форме? Окно декодирования 7 Файл Sticky Notes Загрузка на сервер PHP из приложения с острым клиентом Как выполнить 2 или более SQL-запросов в PHP без объединения таблиц Как передать значение переменной JavaScript в PHP? Я хочу удалить письмо из всех элементов в массиве и заменить его на строку с помощью PHP. PHP Curl: получение каталогов с указанием и загрузкой каталогов, подключающихся к HTTP PHP – переменные на стороне сервера, которые будут «жить» навсегда? Написание следующего скручивания в PHP Добавление значения пользовательского поля для заказа деталей Многократные совпадения Mysql с левым соединением

Является en_UK незаконным языком?

До сих пор я всегда пользовался «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 или есть еще одна причина для этого?

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

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

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

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

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

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

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

EDIT: Мартин Клейтон нашел лучший ответ.

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

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

UK = GB + Северная Ирландия

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

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

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

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