2014-01-20 3 views
2

데이터베이스에서 우리는 ISO 3166-1 alpha-2 country codes을가집니다. GB는 영국, AR은 아르헨티나입니다. 오늘날 우리는 이러한 국가 코드에 대해 하나의 열과 해당 영어 국가 이름에 대해 하나의 데이터베이스 테이블을 유지합니다.ISO 3166-1 alpha-2 국가 코드의 지역 이름

우리는 intl extenion (ICU 라이브러리 용 래퍼)이있는 PHP (5.4.x)에서 작업하므로이 소스에서 국가 이름을 가져 와서 응용 프로그램을 더욱 유지 관리하고 쉽게 국제화 할 수 있다고 생각했습니다. 독일어, 프랑스어 등 원하는 국가의 이름을 쉽게 가져올 수 있습니다.

Locale::getDisplayRegion (string $locale [, string $in_locale ])은 로켈의 지역 이름을 제공합니다. 예.

문제는 내가 언어 코드가없고 국가 코드 만 가지고 있기 때문에 적절한 로케일을 빌드하는 방법을 모르겠다는 것입니다. 난 그냥 영어의 'ko 페이지의'예

php > echo Locale::getDisplayRegion('en-CH', 'en') . PHP_EOL; 
Switzerland 
php > echo Locale::getDisplayRegion('en-CN', 'en') . PHP_EOL; 
China 
php > echo Locale::getDisplayRegion('en-AR', 'en') . PHP_EOL; 
Argentina 

그러나,이 더 해킹 같은 느낌과 내가 정말 의지 할 수 모르겠어요과 접두사에 의해 지역 이름을 얻을 수 있습니다처럼

보인다 그?

국가 코드 (지역에 따라 지역/지역)와 해당 국가의 유효한 언어 중 하나를 사용하여 어떻게 든 로케일을 작성할 수 있다고 생각 했었지만 지금까지는 작동하지 않습니다. 최소 :

php > echo Locale::composeLocale(array('region' => 'CN')) . PHP_EOL; 

php > 

이 문제를 해결하는 방법에 대한 권장 사항은 무엇입니까? 이미 좋은 소스 (ICU) 인 내장 확장이있을 때 국가 이름에 대한 자체 데이터베이스를 유지하거나 단순히 외부 PHP 라이브러리를 사용하고 싶지 않습니다.

미리 감사드립니다.

+0

로캘 개체가 언어와 국가로 구성되어 있기 때문에 "en"트릭이 작동하지만 en_US (영어, 미국) vs en_GB (영어, 영국). 언어 구성 요소를 모르면 정확한 로케일을 알 수 없습니다. – NuSkooler

+0

특히 en_US/en_GB와 같은 경우에는 왜 고장이 날까요? 저는 항상 국가 이름을 찾고 있습니다. 따라서 int 확장이 반환 할 수있는 언어 데이터가 실제로 중요하지는 않습니다. 국가 코드와 함께 언어가 포함 된 로케일을 전달하는 것이 안전한지 여부를 확인해야합니다. 그것은 실제로 존재하지 않습니다. 어떤 시점에서 나에게 오류가 발생하거나 잘못된 로케일로 인해 데이터를 제공하지 않을까 걱정됩니다. – Nils

답변

2

und (알 수없는 언어)을 사용하십시오. 그래서 'und_' . 'AR'

관련 문제