Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 15-12-2009 22:31:28

webmastard
Nouveau membre
Date d'inscription: 15-12-2009
Messages: 6

Zend translate et pluriel

Salut,

Pour mon premier message sur ce forum qui m'a déjà pas mal servi (je vous remercie), j'ai un problème et une solution pas très propre mais je pense que ça pourrait intéresser du monde.

J'ai découvert un peu par hasard qu'on pouvait, depuis la version 1.9, du zf gérer les pluriels dans les chaînes de traduction.
deux liens qui en parlent : http://www.thomasweidner.com/flatpress/ … alization/ et bien sûr la doc officielle http://framework.zend.com/manual/fr/zen … urals.html

Ca a l'air pas mal du tout puisqu'il suffit de faire

Code:

$translate->plural('Car', 'Cars', $number);

ou bien

Code:

$translate->translate(array('Car', 'Cars', $number));

Et les chaînes sont traduites. Formidable oui mais ... j'utilise poedit pour traduire mes chaînes et je ne suis pas arrivé à lui faire digérer le tableau ou la deuxième chaine. Donc la solution que j'ai trouvé - sale il faut bien le reconnaître - c'est de faire quelque chose comme ça

Code:

$translate->translate('Car') ;
$translate->translate('Cars') ;
$translate->translate('Car', 'Cars', $number);

Comme ça poedit reconnait mes deux chaines et me permet de les traduire et ensuite j'ai bien mon pluriel. Je n'ai malheureusement pas trouvé mieux...

Dernière modification par webmastard (15-12-2009 22:31:48)

Hors ligne

 

#2 15-12-2009 22:50:26

etaty
Membre
Date d'inscription: 16-10-2008
Messages: 49

Re: Zend translate et pluriel

Je sais pas si tu as fait comme ça, mais moi j'utilise un fichier séparé pour rajouter les traductions qui ne passe pas avec poedit.

Hors ligne

 

#3 15-12-2009 22:53:00

webmastard
Nouveau membre
Date d'inscription: 15-12-2009
Messages: 6

Re: Zend translate et pluriel

Effectivement ça serait une solution un peu plus propre que la mienne mais qui y ressemble pas mal wink

J'aurais aimé pouvoir mettre dans poedit un mot clé du style translate(array()) mais je n'ai rien trouvé qui s'en approchait.

Hors ligne

 

#4 16-12-2009 10:44:27

elec
Membre
Date d'inscription: 16-10-2009
Messages: 118

Re: Zend translate et pluriel

Bonjour,

Tu peux utiliser directement un fichier de traduction TMX ou CVS avec un plugin,voilà un tuto  utile pour toi :

http://www.zendcasts.com/introducing-ze … e/2009/11/

A+.Nll

Hors ligne

 

#5 16-12-2009 21:41:59

webmastard
Nouveau membre
Date d'inscription: 15-12-2009
Messages: 6

Re: Zend translate et pluriel

Merci mais d'après la doc les pluriels ne fonctionnent pas avec les fichiers tmx, seulement gettext, array et csv.

Le csv et les tableaux ne me paraissent pas terribles pour la maintenance - mais je ne pas utilisé ces systèmes.

Hors ligne

 

#6 16-12-2009 22:21:05

Blount
Membre
Date d'inscription: 23-06-2009
Messages: 98
Site web

Re: Zend translate et pluriel

Il me semble que Poedit ignore les commentaires en analysant les sources, mais comme je n'en suis plus sur, ou si quelque peut dire comment indiquer à Poedit de ne pas ignorer les commentaires, il serait alors intéressant de pouvoir faire :

Code:

/**
 * translate('Car')
 * translate('Cars')
 */
$translate->translate('Car', 'Cars', $number);

Ou encore :

Code:

/**
 * @translate Car
 * @translate Cars
 */
$translate->translate('Car', 'Cars', $number);

Ceci ajoute un peu de chose à taper au clavier, mais ça à le mérite d'être clair, et je pense assez propre.

Dernière modification par Blount (16-12-2009 22:22:06)

Hors ligne

 

#7 16-12-2009 23:49:33

webmastard
Nouveau membre
Date d'inscription: 15-12-2009
Messages: 6

Re: Zend translate et pluriel

Bon c'est pas faute d'avoir chercher mais je ne suis pas arrivé à faire analyser les commentaires par poedit. Dommage c'était une méthode élégante - à défaut de lui faire analyser directement le tableau des pluriels.

Hors ligne

 

#8 17-12-2009 00:15:12

webmastard
Nouveau membre
Date d'inscription: 15-12-2009
Messages: 6

Re: Zend translate et pluriel

En fait je me suis aperçu que les pluriels ne fonctionnaient à partir du moment où la chaine était traduite dans poedit....hmm Ou bien j'ai raté mon coup quelque part

donc pour faire simple
ce code fonctionne sans traduction

Code:

// je charge un tableau vide
$translate=new Zend_Translate('array', array(''), 'fr') ;
$translate->translate(array('car', 'cars', 2)) ;

Mais ne marche plus si on charge la traduction

Code:

$translate = new Zend_Translate ($adaptateur, APPLICATION_PATH.'/configs/translate/fr.mo', 'fr');
$translate->translate(array('car', 'cars', 2)) ;

Dans le deuxième cas il écrit "a" - cad la deuxième lettre de mon car singulier -  en cherchant je suis arrivé à corriger le problème en modifiant le code à la ligne 566 de Zend/Translate/Adapter.php (je pense qu'il faut faire la même modif à la ligne 579 pour les locales à plus de trois lettres)
J'ai changé

Code:

            if (isset($this->_translate[$locale][$plural[0]][$rule])) {
                return $this->_translate[$locale][$plural[0]][$rule];
            }

par

Code:

            if (isset($this->_translate[$locale][$plural[$rule]])) {
                    return $this->_translate[$locale][$plural[$rule]];
            }

Est ce que quelqu'un pourrait me dire si j'ai foiré quelque part ou bien il y a un bug mais il me parait gros pour qu'il n'ait pas été corrigé... neutral

Dernière modification par webmastard (17-12-2009 00:15:37)

Hors ligne

 

#9 14-01-2010 14:22:17

JOHO
Nouveau membre
Date d'inscription: 14-01-2010
Messages: 2

Re: Zend translate et pluriel

I read this thread in english: http://tiny.cc/jhFZv
It seems to me that this is a bug. I can't find any bug reports on it. Maybe we should report it to the ZF issue tracker.

library/Zend/Translate/Adapter.php (Line 558-584)

Code:

        $locale = (string) $locale;
        if (isset($this->_translate[$locale][$messageId])) {
            // return original translation
            if ($plural === null) {
                return $this->_translate[$locale][$messageId];
            }

            $rule = Zend_Translate_Plural::getPlural($number, $locale);
            if (isset($this->_translate[$locale][$plural[$rule]])) { // was [$plural[0]][$rule]
                return $this->_translate[$locale][$plural[$rule]]; // was [$plural[0]][$rule]
            }
        } else if (strlen($locale) != 2) {
            // faster than creating a new locale and separate the leading part
            $locale = substr($locale, 0, -strlen(strrchr($locale, '_')));

            if (isset($this->_translate[$locale][$messageId])) {
                // return regionless translation (en_US -> en)
                if ($plural === null) {
                    return $this->_translate[$locale][$messageId];
                }

                $rule = Zend_Translate_Plural::getPlural($number, $locale);
                if (isset($this->_translate[$locale][$plural[$rule]])) { // was [$plural[0]][$rule]
                    return $this->_translate[$locale][$plural[$rule]]; // was [$plural[0]][$rule]
                }
            }
        }

Hors ligne

 

#10 14-01-2010 15:25:27

JOHO
Nouveau membre
Date d'inscription: 14-01-2010
Messages: 2

Re: Zend translate et pluriel

Hors ligne

 

#11 23-11-2010 10:23:26

Anthony Stéphan
Nouveau membre
Lieu: Paris
Date d'inscription: 04-02-2009
Messages: 7

Re: Zend translate et pluriel

Je suis confronté au même problème.
Est ce que, depuis l'ouverture de ce topic, quelqu'un a réussi à faire quelque chose de correct pour gérer ses pluriels via PoEdit ?

Merci par avance.

Hors ligne

 

#12 03-11-2011 10:42:15

siriu
Membre
Date d'inscription: 17-05-2011
Messages: 55

Re: Zend translate et pluriel

Bonjour,

Est ce que quelqu'un à trouvé la solution ?

Merci par avance

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