Je dissoute une vieille bibliothèque assez grande avec diverses fonctions d'assistance PHP qui ont amassé au fil du temps. Je cherche des remplacements basés sur le cadre Zend pour autant de nombreuses de ces fonctions que possible. P>
Mon premier candidat est une fonction qui renvoie la langue la plus préférée de la langue em> de l'énorme liste qui peut être ZF a-t-il une fonction pour cela? p>
Je réalise Zend_Translate est en mesure de détecter en quelque sorte le navigateur langue, mais je ne vois pas une fonction accessible au public pour obtenir la chaîne de langue. p> http_accept_language code>. p>
4 Réponses :
zend_locale code>
devrait être capable de aide, à propos de cela.
Voir les exemples et explications de la page Zend_locale (citant) em>: p> Pour la plupart des situations, L'algorithme de recherche utilisé par
(Conseil: Allez lire cette page - Je ne copierai pas tout ce qu'il y a à lire ^^) em> p> me donne: p> Eh bien, mon navigateur demande français, sans spécifier une région ^^ p> p>
nouveau
Zend_locale () code> sera automatiquement
Sélectionnez la position locale correcte, avec
Préférence donnée à l'information
fourni par le navigateur Web de l'utilisateur. P>
blockQuote>
Et il y a un couple plus de détails plus tard sur cette page (citant) em>: p>
zend_locale code> pour la sélection automatique
d'un local utilise trois sources de
Information:
const
Zend_Locale :: Navigateur Code> - Le Web de l'utilisateur
Le navigateur fournit des informations avec chacun
demande, qui est publiée par php dans
la variable globale
http_accept_language code>. Si aucun correspondant
Les paramètres régionaux peuvent être trouvés, puis préférentielles
est donné à
environnement code> et enfin
cadre code>.
const
Zend_locale :: Environnement Code> - PHP
publie la locale du serveur hôte via
La fonction interne PHP
SetLocale () CODE>. Si aucun paramètre local correspondant
peut être trouvé, alors la préférence est donnée
à
framework code> et enfin
navigateur code>.
const
Zend_Locale :: Cadre Code> - Quand Zend
Cadre a une manière standardisée de
Spécifier les valeurs par défaut des composants
(planifié, mais pas encore disponible) em>, puis en utilisant cette constante pendant
L'instanciation donnera la préférence à
Choisir un local basé sur ces
Par défaut. Si aucun paramètre local correspondant ne peut être
trouvé, alors la préférence est donnée à
environnement code> et enfin
navigateur code>. p>
blockQuote>
edit: strong> et voici la partie du code qui illustre mon commentaire: p>
Cheers @pascal, à long terme, je pourrai travailler avec zend_locale code>. Pour le moment, je ne suis que remplacer la bibliothèque de fonctions d'assistance dans une application existante avec sa propre gestion des paramètres régionaux. J'ai donc besoin de saisir le code ISO réel.
Oh :-( Dommage :-( ;;;; Humph ... à ce sujet: Qu'en est-il de la première instance d'instanciation des paramètres régionaux, laissant Zf faire sa magie, puis appeler le getlanguage () ou
GETREGION () CODE> Méthodes pour obtenir le code local?
J'ai édité ma réponse pour avoir une partie du code - mais je vois que je l'ai été battue par @Henchman ^^
Je vais accepter la réponse de @ Henchman alors qu'il vous a battue en quelques secondes, mais à l'acclamation @pascal. Cela fonctionne parfaitement, même avec des langues 100% non dans aucune liste de paramètres régionaux.
Pas de problème :-) Heureux que vous ayez votre solution :-)
Vous allez ici:
$locale = new Zend_Locale(); // if locale is 'de_AT' then 'de' will be returned as language print $locale->getLanguage(); // if locale is 'de_AT' then 'AT' will be returned as region print $locale->getRegion();
Que se passe-t-il si la préférence n'est que "EN" ou "ES"? Stackoverflow.com/Questions/16469629/... < / a>
J'ai directement répondu à votre question.
J'ai suscité les deux réponses. Comme alternative à obtenir la langue avec zend_locale code> considérer p>
+1 pour le premier: même si c'est seulement disponible en PHP> = 5.3, l'utilisation de fonctions natifs est bonne (et les classes internationales sont une excellente ajout à PHP). I>
J'accepterai la réponse basée sur Zend parce que c'est ce que j'ai demandé, mais +1 parce que cela est vraiment agréable et même intégré - 5.3.0 est trop à poser maintenant mais ne sera pas dans une année. Acclamations.
est-il une possibilité de forcer Comment gérez-vous ce problème? Je n'ai trouvé aucune solution acceptable pour ce problème encore et pour moi, il semble que cela devrait être une tâche pour zend_locale () code> pour obtenir la première
zend_locale code>, dans
_preparelocale ($ locale, $ strict = faux) code) code > Par exemple. p>