2010-12-11 61 views
4

Lorsque je sauvegarde des pays dans ma base de données, j'utilise l'abréviation internationale. Comment convertir cette abréviation avec zend_locale en nom complet du pays?Nom du pays avec zend locale

+0

vous pouvez le faire bu en utilisant le tableau supplémentaire que la carte entre les deux: http: // 27.org/isocountrylist/iso_country_list.sql – tawfekov

Répondre

5

Voici la méthode. Il essaie d'utiliser les paramètres régionaux du navigateur et par défaut l'anglais américain si cela échoue.

try { 
    $locale = new Zend_Locale(Zend_Locale::BROWSER); 
    $countries = $locale->getTranslationList('Territory', Zend_Locale::BROWSER, 2); 
} catch (exception $e) { 
    $locale = new Zend_Locale('en_US'); 
    $countries = $locale->getTranslationList('Territory', 'en_US', 2); 
} 

asort($countries, SORT_LOCALE_STRING); 

// Unset invalid countries 
// SU = USSR 
// ZZ = Unknown or Invalid Region 
// VD = North Vietnam 
// DD = East Germany 
unset($countries['SU'], $countries['ZZ'], $countries['VD'], $countries['DD']); 
3

Vous pouvez utiliser la fonctionnalité de l'extension intl qui est fourni à partir de PHP 5.3.0, ou comme une extension PECL PHP 5.2.0.

Pour afficher une région en utilisant un lieu:

<?php 
print \Locale::getDisplayRegion('da_DK') . "\n"; 
print \Locale::getDisplayRegion('en_US') . "\n"; 
print \Locale::getDisplayRegion('ru_RU', 'ru_RU') . "\n"; 
?> 

Affichera:

Denmark 
United States 
Россия 

http://php.net/manual/en/locale.getdisplayregion.php