Il m’a été donné récemment la mission d’importer une base client où le champ « pays » d’origine des clients n’était pas du tout normalisé et contenait les noms des pays en francais.
J’ai alors créé mon propre Dataflow CustomerAdapter et rajouté une fonction _normalizeCountry($countryName) décrite ci-dessous :
private function _normalizeCountry($countryName) {
// et oui le dump de base SQL était également mal encodé pour mon usage
$countryName=utf8_decode($countryName);
$countryCode='';
try {
//countryName à convertir en countryCode
$countryName='Nouvelle-Zélande';
//Récupérer tous les couples countryName => countryCode grâce à Zend Framework Locale
$locale = new Zend_Locale('fr_FR');
// $countryList = $locale->getCountryTranslationList(); //Deprecated
$countryList = $locale->getTranslationList('territory','fr_FR', 2);
//Pour conclure une recherche
$countryCode = array_search($countryName,$countryList);
echo $countryCode;
}
catch (Exception $e) {
Mage::logException($e);
}
return $countryCode;
}
Si on veut rester dans le Magento spirit of coding, la méthode suivante n’est pas mal non plus :
//Magento way
$countryList=Mage::app()->getLocale()->getCountryTranslationList('fr_FR');
echo "Magento way returns : ".array_search($country_name,$countryList)."\n\r";