2010-07-06 21 views

Répondre

2

Vous devriez jeter un oeil à Zend_Locale :: getTranslation(). Vous pouvez obtenir une liste (un tableau simple) de noms de pays - et ensuite vous pouvez utiliser array_search() pour obtenir la "clé de pays" nécessaire!

+0

... et si simple que puisse être la solution. D'autant plus que je n'autorise que quelques pays dans quelques langues et donc array_search est rapide. J'ai regroupé le tout dans un filtre et je suis prêt à partir. Merci! – Peter

3

Je ne sais pas si Zend a quelque chose pour ça, mais c'est assez facile à faire seul.

This tutorial montre comment vous pouvez obtenir la dernière liste des codes pays ISO 3166-1 au format XML, analyser, puis créer un fichier PHP qui peut être inclus lorsque vous avez besoin d'une matrice de traduction de code de pays:

$str = file_get_contents('http://opencountrycodes.appspot.com/xml/'); 
$xml = new SimpleXMLElement($str); 
$out = '$countries'." = array(\n"; 
foreach ($xml->country as $country) 
{ 
    $out .= "'{$country['code']}' => \"{$country['name']}\",\n"; 
} 
$out .= ");"; 

file_put_contents('country_names.php', $out); 

Alternativement, vous pouvez l'enregistrer en tant que fichier CSV et le charger en utilisant fgetcsv() function de PHP. Ce serait probablement préférable OMI. Ou, diable, vous pouvez simplement enregistrer le XML et l'analyser lorsque vous le chargez.

+0

Merci pour le Tip Lèse mais en effet cette partie est couverte par Zend_Locale. C'est la conversion du pays au code où le pays peut être écrit dans différentes langues, ce qui me pose un problème ici. – Peter

+0

Ah, désolé, j'ai mal compris votre question. –

3

Je ne suis pas sûr de la façon dont les appels Zend HTTp peuvent être faits, mais voici probablement une bonne ressource à consulter.

Utilisez les données Geo de Yahoo!, Qui permettent de mapper des chaînes de forme libre dans les ID WOE. Pour les pays, les ID WOE sont les codes ISO 3166-1.

Pour convertir une chaîne de forme libre dans une MALHEUR Id, vous pouvez utiliser les API GeoPlanet: http://developer.yahoo.com/geo/geoplanet/

+0

Cool choses, merci de me l'avoir présenté. En ce moment je veux garder mon code "à l'intérieur" mais cela va certainement être utile un jour. – Peter

2

J'ai fait une collection à jour des countrynames et codes pays ISO 3166 sur au:

https://github.com/johannesl/Internationalization

Vous pouvez l'utiliser pour convertir à la fois name => code du pays et inverse.

Je crée également une collection d'alias de pays communs qui apparaîtra sur github.