Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 14-04-2009 12:16:44

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

[ZF 1.7] Zend_Translate, Tmx et Safari

Bonjour à tous !
J'utilise Zend_Translate avec une fichier TMX :

<?xml version="1.0" ?>
<!DOCTYPE tmx SYSTEM "tmx14.dtd">
<tmx version="1.4">
<header creationtoolversion="1.0.0"
    datatype="winres"
    segtype="sentence"
    adminlang="fr_FR"
    srclang="fr_FR"
    o-tmf="abc"
    creationtool="XYZTool" />
<body>
    <tu tuid='Bonjour'>
        <tuv xml:lang="fr"><seg>Bienvenue</seg></tuv>
        <tuv xml:lang="en"><seg>Welcome</seg></tuv>
    </tu>
    <tu tuid='Exemple de traduction'>
        <tuv xml:lang="fr"><seg>Bienvenue</seg></tuv>
        <tuv xml:lang="en"><seg>Translation example</seg></tuv>
    </tu>
    <tu tuid='Apr-courtage'>
        <tuv xml:lang="fr"><seg>Apr-courtage</seg></tuv>
        <tuv xml:lang="en"><seg>Apr-courtage</seg></tuv>
    </tu>
    <tu tuid="accueil">
        <tuv xml:lang="fr"><seg>Bienvenue</seg></tuv>
        <tuv xml:lang="en"><seg>reception</seg></tuv>
    </tu>
    <tu tuid="lister">
        <tuv xml:lang="fr"><seg>Bienvenue</seg></tuv>
        <tuv xml:lang="en"><seg>list</seg></tuv>
    </tu>
    <tu tuid="ajouter">
        <tuv xml:lang="fr"><seg>Bienvenue</seg></tuv>
        <tuv xml:lang="en"><seg>add</seg></tuv>
    </tu>
    <tu tuid="exporter">
        <tuv xml:lang="fr"><seg>Bienvenue</seg></tuv>
        <tuv xml:lang="en"><seg>export</seg></tuv>
    </tu>
    <tu tuid="précédent">
        <tuv xml:lang="fr"><seg>Bienvenue</seg></tuv>
        <tuv xml:lang="en"><seg>previous</seg></tuv>
    </tu>
    <tu tuid="suivant">
        <tuv xml:lang="fr"><seg>Bienvenue</seg></tuv>
        <tuv xml:lang="en"><seg>next</seg></tuv>
    </tu>
</body>
</tmx>

Sous IE et firefox pas de problèmes, cela fonctionne parfaitement mais sous safari j'ai le problème suivant :

Notice: No translation for the language 'fr_FR' available. in /home/library/Zend/Translate/Adapter.php on line 313

Notice: No translation for the language 'fr_FR' available. in /home/library/Zend/Translate/Adapter.php on line 313

La locale est donc fr_FR sous safari et fr sous les autres navigateurs (si je comprends bien).

Quelqu'un saurait-il résoudre ce problème ?
Merci.

Hors ligne

 

#2 14-04-2009 12:41:53

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

Re: [ZF 1.7] Zend_Translate, Tmx et Safari

non il ne s'agit pas de safari et des autres navigateurs
mais de la norme sur les locale

fr signifie français en général
fr_be français belgique
fr_ca français canada etc.
et
fr_FR français france

c'est la même chose pour le en_UK en_US etc.

pour gérer correctement les locales tu doit faire plusieurs chose
la première regarder la liste des locale accepté par ton client
lui servir celle qui corresponds si tu l'a sinon prendre la plus pertinente

ex le client te dit fr_FR; en_us; fr; en
tu dois dans l'ordre de préférence lui donner du français de france si tu n'en a pas lui fournir de l'anglais us si tu l'as et ce même si tu avait du français (général)

dans ton exemple tu ne gère pas les particularité locales (CA BE FR) mais uniquement les langues
tu dois donc chercher dans la liste demandé par le client la première correspondant exactement donc la présence d'un fr ou en seul

si aucune des langue que tu gère n'est présente dans la liste tu peux chercher par ordre de préférence la locale la plus proche en regardant ce qu'il y a avant le _ et si tu ne trouve pas lui fournir la langue par défaut

il faut noter que le choix de la langue relève de la configuration du client et peut donc contenir ce qu'il veut
j'ai moi par exemple fr_FR, es_ES, en, ja

A+JYT

Hors ligne

 

#3 14-04-2009 14:03:40

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Re: [ZF 1.7] Zend_Translate, Tmx et Safari

Si je comprends bien lorsque que j'envoi  la locale (qui est donc à fr dans mon cas) à Safari, il cherche fr_FR alors que pour firefox et IE7 pas de problème. Par contre lorsque j'envoi la locale "en" à Safari le site s'affiche bien en anglais. C'est ça que je ne comprends pas du coup. J'en déduis que pour le français (pour safari toujours) il faut lui préciser la particularité locale  (FR, BE, CA, ...) mais pas pour l'anglais.

Voici le code dans mon bootstrap au cas ou :

// Locale par défaut
$locale = new Zend_Locale();

// Partage de la locale actuelle pour tous les composants l'utilisant
Zend_Registry::set('Zend_Locale', $locale);



/**
* Déclaration de la gestion des langues
*/

// Déclaration d'un objet Zend_Translate
$translate = new Zend_Translate("tmx", $appPath."/languages", null, array("scan" => Zend_Translate::LOCALE_FILENAME));

//Détection de la langue locale
$langLocale = isset($session->lang) ? $session->lang : $locale;

// Passage de la locale en cours à Zend_Translate
$translate->setLocale($langLocale);

Sinon dans ce cas j'ai simplement rajouté une troisième ligne dans mon .tmx :

<?xml version="1.0" ?>
<!DOCTYPE tmx SYSTEM "tmx14.dtd">
<tmx version="1.4">
<header creationtoolversion="1.0.0"
    datatype="winres"
    segtype="sentence"
    adminlang="fr_FR"
    srclang="fr_FR"
    o-tmf="abc"
    creationtool="XYZTool" />
<body>
    <tu tuid='Bonjour'>
        <tuv xml:lang="fr"><seg>Bienvenue</seg></tuv>
        <tuv xml:lang="fr_FR"><seg>Bienvenue</seg></tuv>
        <tuv xml:lang="en"><seg>Welcome</seg></tuv>
    </tu>
    <tu tuid='Exemple de traduction'>
        <tuv xml:lang="fr"><seg>Bienvenue</seg></tuv>
        <tuv xml:lang="fr_FR"><seg>Bienvenue</seg></tuv>
        <tuv xml:lang="en"><seg>Translation example</seg></tuv>
    </tu>
    <tu tuid='Apr-courtage'>
        <tuv xml:lang="fr"><seg>Apr-courtage</seg></tuv>
        <tuv xml:lang="fr_FR"><seg>Apr-courtage</seg></tuv>
        <tuv xml:lang="en"><seg>Apr-courtage</seg></tuv>
    </tu>
    <tu tuid="accueil">
        <tuv xml:lang="fr"><seg>accueil</seg></tuv>
        <tuv xml:lang="fr_FR"><seg>accueil</seg></tuv>
        <tuv xml:lang="en"><seg>reception</seg></tuv>
    </tu>
    <tu tuid="lister">
        <tuv xml:lang="fr"><seg>lister</seg></tuv>
        <tuv xml:lang="fr_FR"><seg>lister</seg></tuv>
        <tuv xml:lang="en"><seg>list</seg></tuv>
    </tu>
    <tu tuid="ajouter">
        <tuv xml:lang="fr"><seg>ajouter</seg></tuv>
        <tuv xml:lang="fr_FR"><seg>ajouter</seg></tuv>
        <tuv xml:lang="en"><seg>add</seg></tuv>
    </tu>
    <tu tuid="exporter">
        <tuv xml:lang="fr"><seg>exporter</seg></tuv>
        <tuv xml:lang="fr_FR"><seg>exporter</seg></tuv>
        <tuv xml:lang="en"><seg>export</seg></tuv>
    </tu>
    <tu tuid="précédent">
        <tuv xml:lang="fr"><seg>précédent</seg></tuv>
        <tuv xml:lang="fr_FR"><seg>précédent</seg></tuv>
        <tuv xml:lang="en"><seg>previous</seg></tuv>
    </tu>
    <tu tuid="suivant">
        <tuv xml:lang="fr"><seg>suivant</seg></tuv>
        <tuv xml:lang="fr_FR"><seg>suivant</seg></tuv>
        <tuv xml:lang="en"><seg>next</seg></tuv>
    </tu>
</body>
</tmx>

Cela fonctionne dans les trois navigateurs cités précédemment.
Merci pour ton aide encore une fois.

Hors ligne

 

#4 14-04-2009 14:53:01

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

Re: [ZF 1.7] Zend_Translate, Tmx et Safari

Hello,

C'est ton navigateur qui envoie la liste des locales supportées : "Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3" avec FF3, ton site récupère cette info et renvoie la bonne traduction. Regardes le header de requête envoyé par Safari.

A+


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

Hors ligne

 

#5 14-04-2009 15:47:57

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Re: [ZF 1.7] Zend_Translate, Tmx et Safari

En fait pour FF3 j'ai : ["HTTP_ACCEPT_LANGUAGE"]=>  string(35) "fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3".
par contre pour Safari : ["HTTP_ACCEPT_LANGUAGE"]=> string(5) "fr-FR". Je comprend maintenant pourquoi cela ne marche pas quand j'envoi la locale "fr" il cherche fr_FR comme translation.
Par contre quand je mets explicitement la locale à "en" cela fonctionne quand même pour safari. Là je ne saisi pas trop ?

Si quelqu'un peut m'aider.
Dernière question, il n'y a t-il pas un moyen d'uniformiser cela ? (cela permettrait de ne pas avoir plusieurs ligne pour la même langue dans le fichier ".tmx")

Merci pour les réponses.

Hors ligne

 

#6 14-04-2009 16:05:03

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

Re: [ZF 1.7] Zend_Translate, Tmx et Safari

Hello,

En regardant un peu le code de Zend/Translate/Adapter.php, il apparait un option disableNotices. Regardes du côté de http://framework.zend.com/manual/en/zen … tooneseven


A+


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

Hors ligne

 

#7 14-04-2009 16:25:57

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: [ZF 1.7] Zend_Translate, Tmx et Safari

j'ai déjà eu ce petit problème et je l'ai réglé comme ceci

Code:

// Passage de la locale en cours à Zend_Translate
$translate->setLocale($langLocale->getLanguage());

Il semblerait que de cette manière seul la langue soit spécifié et non la région.

Hors ligne

 

#8 14-04-2009 16:45:02

jbunel
Membre
Lieu: Paris
Date d'inscription: 25-06-2008
Messages: 89
Site web

Re: [ZF 1.7] Zend_Translate, Tmx et Safari

Oui en effet cela permet de passer la langue mais cela doit surement bloquer au niveau de Zend_Currency et de Zend_Date si on leur envoi la locale car je pense que ces deux composant utilises la langues mais aussi la particularités locales (CA, BE, FR, ...). Sinon cela fonctionne correctement.
Merci à tous.

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