Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-04-2008 14:50:06

stf
Membre
Date d'inscription: 03-04-2008
Messages: 156

[Zend_Translate][1.5.1] Traduction par défaut

Bonjour a tous,

Me lançant dans l'apprentissage du ZF, je suis devant un probleme avec le Zend_translate, ou plutot devant une interrogation.

Imaginons une application basique, avec juste une traduction.
Imaginons maintenant que je veuille faire du Francais/anglais sur mon application via gettext

Je charge le fichier .mo pour l'anglais :

Code:

$translate = new Zend_Translate('gettext', 'lang/en.mo', 'en');
$translate->setLocale('en');

Ici, la langue serait donc l'anglais.

J'affiche un texte :

$translate->_("Mon texte a traduire.");


Il n'y a aucun probleme pour l'afficher en anglais.
Cependant, pour l'afficher en francais, est on obligé d'avoir un .mo par défaut, traduisant le texte fourni, par le meme texte?, plus un autre pour les autres langages?

par exemple  :

Code:

$translate = new Zend_Translate('gettext', 'lang/fr.mo', 'fr');   //par défaut la traduction francais/francais
$translate->setLocale($lang);
$translate->addTranslation('lang/en.mo', 'en'); // traduction francais/anglais

Ne peut t'on pas définir au ZF que si l'on donne une autre langue via setLocale(non définie via addTranslation), il affiche le texte que l'on a fourni via $translate->_() ?

J'espere avoir été clair ^^

En gros : Est on obligé de spécifier un fichier de traduction pour le francais, meme si le texte fourni a $translate->_() est en francais, ou alors on peut direct afficher le texte envoyé a $translate->_() par défaut ?


Merci pour vos réponses smile

Hors ligne

 

#2 04-04-2008 14:06:52

fizzbanana
Membre
Date d'inscription: 29-05-2007
Messages: 40

Re: [Zend_Translate][1.5.1] Traduction par défaut

pour moi, j'utilise les fichiers CSV pour faire le traduction, mais j'imagine qu'il peut marché pour gettext aussi.

alors, la langue par défaut dans notre logiciel est  français aussi.  j'ai spécifier un fichier de traduction 'translate_fr.csv' mais il est vide.  alors:

Code:

 $translate->_("Mon texte a traduire.");

comme Zend_Translate ne peut pas trouver le traduction dans le fichier(parce que il est vide), il va afficher:

Code:

Mon texte a traduire.

Peut-être quelqu'un d'autre a un autre idée...

Hors ligne

 

#3 04-04-2008 14:13:54

stf
Membre
Date d'inscription: 03-04-2008
Messages: 156

Re: [Zend_Translate][1.5.1] Traduction par défaut

Hum......c'est bizarre comme facon de faire de la part du ZF tout de meme  ^^


Au passage, vous savez si i lest possible de définir plusieurs fichiers .mo a l'initialisation du Zend_translate ?

Par exemple si je veux que mon $translate soit composé de 2 fichiers mo, par ex core.mo, et plugin.mo

j'ai tenté de fournir un tableau au 2eme parametre lors de l'instanciation du Zend_translate, mais apparement il n'aime pas big_smile

Hors ligne

 

#4 04-04-2008 14:14:33

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Zend_Translate][1.5.1] Traduction par défaut

Moi perso je charge qu'un langue, celle que je détermine par la locale automatiquement avec $_SERVER["HTTP_ACCEPT_LANGUAGE"]. Me semble que zend peut déterminé la locale tout seul.
Dans tous les cas, j'utilise des clés pour ma traduction, comme ça dans tous les cas, j'ai tout mon texte dans un seul fichier, plus facile à maintenir.

Hors ligne

 

#5 04-04-2008 14:19:41

stf
Membre
Date d'inscription: 03-04-2008
Messages: 156

Re: [Zend_Translate][1.5.1] Traduction par défaut

Oui, mais le projet sur lequel je travaille est un peu particulier(une application intranet)

Celle ci est divisée en 3 gros modules, qui disposent chacun de plugins, qui peuvent se greffer au module, par un simple dossier.

Donc on ne  peut pas tout mettre dans le meme fichier de langue, étant donné qu'on ne sais pas les futurs plugins, etc etc ...

vous allez me dire que je peut faire deux Zend_translate (c'est d'ailleur ce qui arrivera si il n'y a pas d'autre solution), mais c'est quand meme mieux de n'avoir qu'un seul outil de langue smile  ( D'où la question pour savoir si l'on pouvait définir une langue grace à plusieurs fichiers wink )

Hors ligne

 

#6 04-04-2008 14:41:39

fizzbanana
Membre
Date d'inscription: 29-05-2007
Messages: 40

Re: [Zend_Translate][1.5.1] Traduction par défaut

peut-être il y a quelque chose intéressant ici(c'est en anglais):

http://framework.zend.com/manual/fr/zen … .detection

Hors ligne

 

#7 04-04-2008 15:53:32

stf
Membre
Date d'inscription: 03-04-2008
Messages: 156

Re: [Zend_Translate][1.5.1] Traduction par défaut

Des nouvelles du front big_smile

Alors, j'ai lu attentivement le chapitre du zf...

Au début je croyais que le

Code:

$translate = new Zend_Translate('gettext', '/language', null, array('scan' => Zend_Translate::LOCALE_DIRECTORY));

allait juste faire l'équivalent d'un Zend_translate + le setLocale() + les différents AddTranslation .

Cependant, apres des tests, j'ai finalement réussi a faire marcher la chose voulue smile
ZF semble récuperer tout ca en fonction du formatage du nom de fichier lang.

par exemple, voici le code :

Code:

//on charge tout les fichiers lang qui sont dans lang/, en scannant ceux qui sont comme langue ente
$translate = new Zend_Translate('gettext', 'lang/', null, array('scan' => 'ente'));

    echo "message1=".$translate->_("Message1");
    echo "erreur=".$translate->_("Une erreur est survenue.");

Je disposais de 2 fichiers lang "ente" ( langue spécifique a une entreprise) :
-> en_ente.mo
-> message_ente.mo


Dans en_ente était défini : "Une erreur est survenue." => "An error occured."
et dans message_ente était défini : "Message 1 " => "1st Message"

L'affichage donne bien :

Message 1 = 1st Message
Une erreur est survenue. = An error occured.


Ca marche donc !
Par contre , on ne peut pas charger plusieurs fichiers qui sont dans différents répertoires (j'ai bien essayé de mettre comme répertoire /, mais là faut pas etre pressé pour afficher sa page(long a parcourir tout les fichiers).
Mais bon ! On peut toujours  s'arranger pour qu'au final ils soient dans le meme dossier sans y etre à l'original (un lang_tmp/ ou on copierait les fichiers recherchés )big_smile
Cependant, est il possible  de définir une option concernant les "non-traduction" ?

Je m'explique,
Dans mon cas, message_ente était "chargé" avant en_ente, hors , en_ente possédait bien la chaine "Message 1", mais n'était pas traduite.Au premier essai, j'avais donc "Message 1 = "
Il m'affichait la traduction "vide" de Message1 .

Est il donc possible de définir la non prise en compte de la traduction si cette chaine n'est pas traduite ?
Et pour revenir a ma toute 1ere question, la présence d'un fichier vide de traduction par défault  est 'il necessaire ?(je relance au cas ou quelqu'un aurait la solution big_smile )

Dernière modification par stf (04-04-2008 16:13:09)

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