Ist en_UK ein illegales Gebietsschema?

Lesezeit: 6 Minuten

Bisher hatte ich immer ‘en_UK’ für britisches Englisch verwendet. Heute habe ich bei der Verwendung mit Zend Framework einen Fehler erhalten, da das Gebietsschema nicht in der langen Liste der anerkannten Gebietsschemas enthalten ist.

Hier nur ein kurzer Auszug aus dieser Liste:

'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,

Wie Sie sehen können, gibt es alle möglichen Gebiete mit englischer Sprache und es gibt auch einen Eintrag „en_GB“, von dem ich annehme, dass er für Großbritannien steht … aber es gibt kein „en_UK“. Ist das nur ein ‘Bug’ im Zend Framework oder gibt es dafür einen anderen Grund?

  • Der Locale-Index von Zend bestätigt, dass en_GB Englisch/Großbritannien ist, aber ich sehe kein en_UK, also würde ich vermuten, dass en_GB bevorzugt wird. framework.zend.com/manual/en/zend.locale.appendix.html

    – BaileyParker

    3. September 2011 um 22:43 Uhr

  • Die offizielle ISO-Seite erwähnt GB als gültigen Code, aber nicht UK: iso.org/iso/country_codes/iso_3166_code_lists/…

    – BaileyParker

    3. September 2011 um 22:49 Uhr

  • @PHPMyCoder: Ja, das zeigen die Antworten bereits!

    – Markus

    3. September 2011 um 22:50 Uhr

  • In der lokalen Welt uk steht für Ukraine, nicht UK 🙂

    – Ilya Saunkin

    7. Dezember 2016 um 14:54 Uhr

  • @Ilya, das musste ich nachschlagen. Ich glaube, die ukrainische Sprache ist uk, aber die Ukraine selbst ist UA, dh uk_UA.

    – Robert Jørgensgaard Engdahl

    25. Januar 2018 um 7:22 Uhr

Benutzer-Avatar
Martin Clayton

Der richtige Ländercode ist en_GB. Gebietsschemas verwenden ISO 3166-1 für Ländercodes. Das Wikipedia-Schreiben beinhaltet:

Die Codes werden gemäß ISO 3166/MA so gewählt, „dass sie die signifikante, eindeutige Komponente des Ländernamens widerspiegeln, um eine visuelle Zuordnung zwischen Ländername und Ländercode zu ermöglichen“.[7] Aus diesem Grund werden übliche Bestandteile von Ländernamen wie „Republic“, „Kingdom“, „United“, „Federal“ oder „Democratic“ normalerweise nicht zur Ableitung der Codeelemente verwendet. Infolgedessen wird beispielsweise dem Vereinigten Königreich offiziell der Alpha-2-Code GB anstelle von UK zugewiesen, basierend auf seinem offiziellen Namen “United Kingdom of Great Britain and Northern Ireland” (obwohl UK auf Wunsch des Vereinigten Königreichs reserviert ist). ).

  • Warum ist dann das ‘US’ gültig?

    – qpunkt

    3. September 2011 um 23:53 Uhr

  • @qdot Dies scheinen Richtlinien zu sein, die verwendet wurden, und keine harten Regeln. Für mich scheint ‘US’ ein vernünftiger Kurzcode für die Staaten zu sein. Als Brite denke ich, dass „GB“ besser passt als „UK“, was sehr langweilig erscheint – aber das ist nur meine Meinung.

    – Martin Clayton

    4. September 2011 um 0:15 Uhr

  • Der einzige andere mögliche Kurzcode für die Vereinigten Staaten wäre SA (Verlust von United), aber das ist vergeben – Saudi-Arabien und Südafrika haben sich darum gestritten. AM ist für Armenien, das AR wegen Argentinien nicht nehmen kann. Also mussten wir uns mit den USA begnügen.

    – David Schwartz

    4. September 2011 um 4:38 Uhr

  • Oder Sie hätten sich für AA entscheiden können.

    – GolezTrol

    4. September 2011 um 9:07 Uhr

  • Was ist der Fall von Serbien, sein ISO-Code ist RS und bedeutet Republik Serbien (Republika Srbija)? neugierig…

    – Felipe Buccioni

    18. Juli 2013 um 15:07 Uhr


Benutzer-Avatar
GolezTrol

Es ist in der Tat ein häufiger (?) Fehler. en_UK ist falsch. Der ISO-Ländercode für das Vereinigte Königreich ist GB, wodurch das Sprach-Tag en_GB wird.

  • Aber ich sehe es überall! Nicht einmal das PHP-Handbuch ist frei von en_UK’s.

    – Markus

    3. September 2011 um 22:37 Uhr

  • Es gibt keine ISO-Locales. Es gibt ISO-Sprachcodes, ISO-Ländercodesund IETF-Sprachtags. Aber ich schätze du meinst C/POSIX-Locale.

    – Merkator

    3. September 2011 um 23:47 Uhr

  • Ich bezog mich auf das Sprach-Tag, das aus (in diesem Fall) zwei ISO-Codes aufgebaut ist. Das eigentliche Problem in diesem Fall ist in der Tat, dass die Ländercodes (ISO 3166-1 alpha-2) GB statt UK enthalten. UK ist reserviert (auf Anfrage von UK), aber nicht verwendbar. Aber ich wollte, dass meine Antwort nur auf den konkreten Fehler (falscher Code vs. richtiger Code) hinweist, anstatt eine Geschichtsstunde zu sein. Trotzdem sollte es nicht falsch sein, also habe ich diesen Satz ein wenig geändert.

    – GolezTrol

    4. September 2011 um 9:05 Uhr

  • Das Sprach-Tag wäre en-GBdas POSIX-Gebietsschema ist en_GB. Ja, ich bin pingelig. Aber ich glaube, ZF bietet keine Funktionen zum Konvertieren zwischen den beiden, also werden Sie wahrscheinlich mit dem enden ungültig lang="en_GB" in deinem HTML.

    – Merkator

    4. September 2011 um 11:21 Uhr

  • ZF betrachtet sowohl en-GB als auch en_GB als gültige Locale-Strings.

    – Markus

    4. September 2011 um 11:59 Uhr

Unvollkommene Implementierungen

Ab 1985 wurden ISO 3166-1 Alpha-2-Codes im Domain Name System als länderspezifische Top-Level-Domains (ccTLDs) verwendet. Die Internet Assigned Numbers Authority vergibt derzeit die ccTLDs hauptsächlich nach den Alpha-2-Codes, jedoch mit wenigen Ausnahmen.[9] Beispielsweise verwendet das Vereinigte Königreich, dessen Alpha-2-Code GB lautet, .uk anstelle von .gb als ccTLD, da UK derzeit auf Wunsch des Vereinigten Königreichs in ISO 3166-1 ausnahmsweise reserviert ist.

Laut Wikipedia http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2.

Also anscheinend ist es ein altes Ding, das hängen geblieben ist oder so.

BEARBEITEN: Martin Clayton hat eine bessere Antwort gefunden.

Locales kann man nicht einfach erfinden! Sie sind bereits definiert. „en-gb“ ist also britisches Englisch, während „en-us“ amerikanisches Englisch ist. Wenn Sie „en-uk“ verwenden, erfinden Sie nur einen Code.

Warum der offizielle Code “en-gb” und nicht “en-uk” ist, denke ich im Grunde, weil es kein britisches Englisch gibt. Die Sprachvariante ist Britisch. Beachten Sie, dass der Unterschied zwischen Großbritannien und dem Vereinigten Königreich ist:

UK = GB + Nordirland

Wenn Sie also die Variante „en-UK“ nennen, sagen Sie, dass Sie die Art und Weise, wie sie in Nordirland sprechen, in diese Kategorie aufnehmen möchten. Aber warum willst du das tun? Aus sprachlicher Sicht macht es keinen Sinn, da das nordirische Englisch dem irischen Englisch (en-IE) näher steht als dem britischen Englisch.

der korrekte Ländercode in ISO 3166 für das Vereinigte Königreich von Großbritannien und Nordirland ist aus irgendeinem Grund “GB”, daher sollte der Gebietsschemacode en_GB lauten und nicht wie angemerkt en_UK hier.

en_GB wird auch von glibc, gnome, kde usw. verwendet

Außerdem mag ich die Tatsache, dass viele frühere Fehlerkorrekturen in Open-Source-Projekten damit zusammenhängen, wie in Apache http 1.3 und Roundcube-Projekt

1347230cookie-checkIst en_UK ein illegales Gebietsschema?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy