これまで、私は英国英語に常に「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を使用します。 wikipediaの記事 に含まれるもの:
ISO 3166/MAによると、「国名と国コードとの視覚的な関連付けを可能にするために、国名の重要でユニークなコンポーネントを反映するために」コードが選択されます。[7]このため、「Republic」、「Kingdom」、「United」、「Federal」、または「Democratic」などの国名の一般的なコンポーネントは、通常、コード要素の導出には使用されません。その結果、たとえば、イギリスには公式名「英国および北アイルランド連合王国」に基づいて、英国ではなくアルファ-2コードGBが公式に割り当てられます(ただし、英国は英国の要請により予約されています)。
それは確かによくある(?)間違いです。 en_UKが間違っています。英国のISO国コードはGBであり、言語タグはen_GBになります。
不完全な実装
1985年以降、ISO 3166-1 alpha-2コードは、ドメインネームシステムで国コードトップレベルドメイン(ccTLD)として使用されています。現在、Internet Assigned Numbers Authorityは、主にalpha-2コードに従ってccTLDを割り当てていますが、いくつかの例外があります。[9]たとえば、英国では、アルファ2コードがGBであるため、ccTLDとして.gbではなく.ukを使用しています。これは、英国の要求に応じて現在ISO 3166-1で例外的に予約されているためです。
ウィキペディアによると http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 。
どうやらそれは立ち往生している古いものかそのようなものです。
編集:マーティンクレイトンはより良い答えを見つけました。
単純にロケールを発明することはできません!それらはすでに定義されています。したがって、「en-gb」はイギリス英語ですが、「en-us」はアメリカ英語です。 「en-uk」を使用する場合、コードを作成するだけです。
公式コードが「en-uk」ではなく「en-gb」である理由については、基本的に英国英語のようなものがないためだと思います。言語のバリエーションは英国です。イギリスとイギリスの違いは次のとおりです。
英国= GB +北アイルランド
したがって、バリアントに「en-UK」という名前を付けることで、北アイルランドでの話し方をこのカテゴリに含めたいと言っているようになります。しかし、なぜそれをしたいのでしょうか?北アイルランド英語はイギリス英語よりもアイルランド英語(en-IE)に近いため、言語の観点からは意味がありません。
英国および北アイルランド連合王国のISO 3166の正しい国コードは何らかの理由で「GB」であるため、ロケールコードは、en_UKではなく、en_UKである必要があります here 。
en_GBは、glibc、gnome、kdeなどでも使用されます。
また、オープンソースプロジェクトの以前の多くのバグ修正が Apache http 1. および roundcube project のようにこれに関連しているという事実も気に入っています