developer tip

en_UK가 잘못된 로케일입니까?

optionbox 2020. 12. 8. 07:58
반응형

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] 이러한 이유로 "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] 예를 들어, alpha-2 코드가 GB 인 영국은 ccTLD로 .gb 대신 .uk를 사용합니다. UK는 현재 영국의 요청에 따라 ISO 3166-1에서 예외적으로 예약되어 있습니다.

wikipedia 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_GB 여야합니다 .

en_GB는 glibc, gnome, kde 등에서도 사용됩니다.

또한 오픈 소스 프로젝트의 많은 이전 버그 수정이 apache http 1.3roundcube 프로젝트같이 관련되어 있다는 사실이 마음에 듭니다.

참고 URL : https://stackoverflow.com/questions/7296262/is-en-uk-an-illegal-locale

반응형