Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 30-03-2010 15:02:12

Guillhomme
Membre
Date d'inscription: 09-10-2008
Messages: 102

Zend Locale en format langue_pays

Bonjour,
j'utilise depuis peu Zend_Locale, et j'aurai besoin de recuperer la locale en cours de l'utilisateurs, le probleme, si je fais :

Code:

$locale = new Zend_Locale();
echo (string) $locale;

;

Ca m'affiche "fr", hors j'aurai besoin que ca m'affiche "fr_FR", bien sur je peux refaire un traitement derriere, mais existe t il une methode deja faite ?

Merci wink

Hors ligne

 

#2 31-03-2010 11:32:26

ubini
Membre
Lieu: gillarens/Suisse
Date d'inscription: 23-01-2008
Messages: 110
Site web

Re: Zend Locale en format langue_pays

salut smile

Code:

echo $locale->toString();

http://www.easyswap.org - site d'échange de biens et de services conçu avec jQuery et Zend Framework
http://www.lambelet.net - mon blog perso et inutile

Hors ligne

 

#3 01-04-2010 12:32:19

Guillhomme
Membre
Date d'inscription: 09-10-2008
Messages: 102

Re: Zend Locale en format langue_pays

Bonjour,
même avec ta méthode ubini ca ne fonctionne pas sad ( en fait, quand tu fais (string) $object, ca apelle la methode __tostring() )

Sinon j'ai bricolé un petit truc avec Zend_Locale::getBrowser() ,  ne trouvant rien dans la doc.

Mais merci smile

Hors ligne

 

#4 01-04-2010 12:55:05

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Zend Locale en format langue_pays

Code:

echo $locale->getLocale();

Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#5 01-04-2010 13:05:27

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Zend Locale en format langue_pays

En fait, les 3 codes sont strictement équivalents :

Code:

echo $locale->getLocale();
echo $locale->toString();
echo (string) $locale;

Le problème vient de ton browser (ou ta console) qui envoie seulement 'fr' au lieu de 'fr_FR'. Verifies tes entêtes de requête.

Edit: 'fr-fr', 'fr-FR', 'fr_fr' et 'fr_FR' sont acceptés par Zend_Locale

@+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#6 01-04-2010 13:31:37

armetiz
Membre
Lieu: Lyon
Date d'inscription: 26-02-2010
Messages: 53
Site web

Re: Zend Locale en format langue_pays

+1

Hors ligne

 

#7 02-04-2010 17:22:53

Guillhomme
Membre
Date d'inscription: 09-10-2008
Messages: 102

Re: Zend Locale en format langue_pays

Oui en effet ca doit etre mon browser ( Mozilla Firefox for Ubuntu 3.5.8 ) , toujours est il que si le mien fais ca, d'autres doivent le faire aussi sad

En tout cas j'ai pu récupérer comme dis plus haut toutes les locales envoyées, et récupérer dans la liste la première qui a une longueur de 5.

Hors ligne

 

#8 03-04-2010 11:05:54

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Zend Locale en format langue_pays

mikaelkael a écrit:

En fait, les 3 codes sont strictement équivalents :

Code:

echo $locale->getLocale();
echo $locale->toString();
echo (string) $locale;

Le problème vient de ton browser (ou ta console) qui envoie seulement 'fr' au lieu de 'fr_FR'. Verifies tes entêtes de requête.

Edit: 'fr-fr', 'fr-FR', 'fr_fr' et 'fr_FR' sont acceptés par Zend_Locale

@+

bon cela fait partit du protocole
normalement le client fournit un liste de langues préférées

Code:

fr_FR, fr_CA, fr, en_EN, en

la signification est :
je préfère dans l'ordre le français france, français canada, français, anglais royaume uni, anglais
le troisième et le dernier dans ma liste disent français ou anglais (peu importe le pays)
le client n'est pas tenu de fournir une langue cette liste peut donc être vide.

côté serveur maintenant. le serveur doit lui aussi maintenir une liste de langues préférées.
de la même façon

Code:

en_us, en_en, fr_be

la langue servit suit la règles des préférence au premier correspondant en parcourant les deux listes en commençant par celle du client.

dans notre exemple

Code:

fr_FR => non (pas dans la liste des langues du serveur)
fr_CA => non (pas dans la liste des langues du serveur)
fr    => oui (fr_be est bien dans le scope de fr)

reprenons mais sans fr dans la liste client

Code:

fr_FR, fr_CA, en_EN, en

Code:

fr_FR => non (pas dans la liste des langues du serveur)
fr_CA => non (pas dans la liste des langues du serveur)
en_EN => oui (en_en est bien dans la liste des langues du serveur)

autre cas le client ne précise pas fr en général

Code:

fr_FR, fr_CA, en_AU

mais le serveur le fait

Code:

en_us, en_en, fr_be, fr

on parcours la liste serveur

Code:

fr_FR => non (pas dans la liste des langues du serveur)
fr_CA => non (pas dans la liste des langues du serveur)
fr_AU => non (pas dans la liste des langues du serveur)
fr_en => non (pas dans la liste des langues du client)
fr_us => non (pas dans la liste des langues du client)
fr_be => non (pas dans la liste des langues du client)
fr    => oui (fr_FR est bien dans le scope de fr)

dernier cas le client est très restrictif (ou n'a pas fournit de liste)

Code:

fr_FR, fr_CA

Code:

fr_FR => non (pas dans la liste des langues du serveur)
fr_CA => non (pas dans la liste des langues du serveur)
en_us => oui (langue préférée du serveur car aucune langue du client ne peut être satisfaite)

le protocole du choix de la langue n'est pas sensible à la casse.
j'ai délibérément dans mon exemple mis les pays en majuscule côté client et minuscule côté serveur pour montrer que le choix est fait dans la liste du client ou celle du serveur.

Apache utilise une manière intéressante de gérer ce choix.
il se base sur le multiview. cela consiste à avoir plusieurs "views" d'une même ressource.
il définit un liste de langues préférées globale au serveur (peux être surcharger dans .htaccess) chaque page à servir va exister en plusieurs exemplaires
maRessource.html.fr_fr, maRessource.html.fr_ca, maRessource.html.en

lorsque le client va demander maRessource.html il va utiliser l'algo ci-dessus mais en plus au passage vérifier que la ressource correspondante existe.
Ce qui revient pour chaque ressource à établir une liste des langues préférées basé sur la principale et restreinte au langues disponibles.

Avec ZF on peut par exemple définir une liste de langues préférées dans le config.ini général pour s'y référer dans le choix de la langue, et si seulement certaine partie du site existe en plusieurs langue associer toujours dans le .ini ou en base ou dans le code une liste de langue disponible par contrôleur, par module, par action.

peut être devrions nous réfléchir à un composant générique prenant en charge 100% de ce protocole

A+JYT

Dernière modification par sekaijin (03-04-2010 11:11:36)

Hors ligne

 

#9 28-04-2010 10:19:16

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: Zend Locale en format langue_pays

Hello,

sekaijin a écrit:

peut être devrions nous réfléchir à un composant générique prenant en charge 100% de ce protocole

100% d'accord smile

L'idéal serait de définir soit un plugin de ressource, soit un plugin de controlleur + une config apache (rewrite rules) qui prendrait correctement en charge tout ça une bonne fois pour toute. En tenant compte bien sûr des différentes possibilités pour intégrer la langue (sous-domaines, ajout dans l'url pour simuler un dossier par langue, etc.)


Ces questions là sont super récurrentes quelques soient les forums !


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages