Zend Framework a un excellent composant appelé Zend_Locale. Il y a toutes sortes de détails pour analyser correctement la langue et les paramètres régionaux, en partie parce qu'il a été piraté en HTTP Accept-Language header.Quelle est la meilleure façon d'extraire les paramètres régionaux définis par l'utilisateur à partir de Zend Framework en utilisant la liste complète des préférences de paramètres régionaux?
Dans le Zend Framework locale docs, il est dit:
Note: Sachez qu'il existe non seulement des endroits avec 2 personnages comme la plupart des gens pensent . En outre, il existe des langues et des régions qui ne sont pas seulement abrégé avec 2 caractères. Pour cette raison, vous ne devez PAS supprimer la région et la langue vous-même, mais utilisez Zend_Locale lorsque vous souhaitez supprimer la langue ou la région d'une chaîne locale . Sinon, vous pourriez avoir un comportement inattendu de votre code lorsque vous le faites vous-même.
Parfait. Sauf que j'ai testé différentes traductions. En supposant que vous naviguez avec Firefox, modifiez vos paramètres et ajoutez des profils language_region ... changez l'ordre par défaut. Vous verrez que Zend ne tire que la valeur par défaut. Les docs disent même si:
Si un utilisateur fournit plus d'un lieu au sein de son navigateur, Zend_Locale utilisera la première locale trouvée. Si l'utilisateur ne fournit pas de paramètres régionaux ou le script est appelé à partir de la ligne de commande , l'environnement local 'environnement' sera automatiquement utilisé et retourné .
Ceci est regrettable. Si vous avez 5 langues définies, vous voulez parcourir toutes les locales définies par l'utilisateur dans le navigateur et utiliser une langue qui correspond ...
Donc, ma question est, quelle approche adopteriez-vous pour analyser la liste complète et retirer les allumettes?
MISE À JOUR Il existe une méthode Zend_Locale :: getBrowser() qui retourne la liste complète. Génial! Je ne sais pas pourquoi Zend_Translate ne semble tirer que le premier. Je reviendrai après avoir vérifié comment cela fonctionne ... il faudra probablement construire le tableau de langs pour lequel vous avez des traductions et le comparer aux résultats de getBrowser() et tirer le premier match.
MAJ2 j'ai fait mettre en œuvre une solution, mais il est encore un peu hacky, parce que Zend_Translate et Zend_Locale ne sont pas petites petites classes. L'internationalisation est un sujet important, évidemment. Il y a un peu de recherche. Cependant, il s'agit essentiellement de vérifier la correspondance de chaque langue par rapport à la liste de préférences du navigateur.
Merci pour le lien. Un autre livre ZF. C'est génial! Re: la réponse ... Très peu de gens le changent, c'est vrai. Mais cela ne résout pas le problème que j'étais après lequel est si vous manquez la langue par défaut, pour analyser les langues secondaires trouvées dans Firefox. – joedevon