Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-12-2007 14:39:19

Azema
Membre
Lieu: Paris
Date d'inscription: 26-09-2007
Messages: 51
Site web

[Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Alors voila, demain c'est le réveillon de Noël et je n'ai pas fait de cadeaux.

Alors je souhaitais en faire un aux utilisateurs du Zend Framework et aux administrateurs de ce site francophone qui contient une petite mine d'informations.

Donc nous allons travailler avec le Zend Framework et la classe Zend_Translate pour la traduction d'un site Web.
Pour apprendre à me servir de l'outil de traduction fournit dans le ZF, je suis allé consulter la documentation.
Et là, je me suis un peu prit la tête parce que, en tant que développeur, je voyais les choses compliquées, alors que c'est le plus simple du monde.

C'est pourquoi, je me suis dit que je pourrais faire un petit tutoriel sur la traduction à l'aide du Zend Framework, afin de vous expliquer comment j'ai
compris le fonctionnement de Zend_Translate et de ses dépendances.

Je travaille avec le Zend Framework 1.0.3 sur une plateforme Linux (Ubuntu 7.04 Feisty Fawn) avec l'IDE Eclipse 3.2.

Nous allons donc faire une application Web bilingue en prenant l'adaptateur Gettext pour la traduction.

Par quoi devons nous commencer ?

1) Nous devons charger les classes qui vont nous servir pour la traduction de l'application.

Comme c'est indiqué sur la doc de Zend, la traduction d'un site ne se limite pas à la simple traduction de texte.
Il faut aussi penser que les personnes non francophones ne lisent pas les dates de la même manière que nous, il n'ont pas la même monnaie que nous, etc...

Donc nous allons charger les classes suivantes :
     - Zend_Locale (Obligatoire : Elle nous sert pour connaitre la langue et le pays de notre visiteur)
     - Zend_Translate (Obligatoire : Elle va nous servir à traduire les textes qui seront affichés sur les pages Web)
     - Zend_Date (Optionnelle : Fortement recommandée, nous avons souvent des dates sur nos pages Web)
     - Zend_Currency (Optionnelle : Pour travailler avec des valeurs monétaires)
     - Zend_Measure (Optionelle : Pour travailler avec des valeurs de mesures)

2) Nous devons définir la langue de développement de l'application, qui sera la langue par défaut.

Ici, nous développerons en français.

3) Nous devons créer notre structure pour les fichiers sources de traductions.

Ici, nous utiliserons la structure par langue.
Choix personnel, mais vous pouvez très bien choisir une autre structure.

Code:

/application
/languages
     /fr
          default.mo
          specs.mo
     /en
          default.mo
          specs.mo
/library

4) Nous devons savoir comment nous allons récupérer la langue utilisée par notre visiteur.

Pour cela, il faut instancier un objet de la classe Zend_Locale.

Code:

$locale = new Zend_Locale(); // Nous ne passons pas d'argument, comme ça il va rechercher la langue de notre visiteur

Nous pouvons aussi récupérer la langue préférée de notre visiteur en le lui demandant. Pour cela, il vous faudra faire une liste HTML, contenant les langues que vous proposez. Et ainsi récupérer la langue qu'il souhaite utiliser.

Code:

$locale = new Zend_Locale ($reponse_list_html); // Ici nous passons en argument la réponse de votre visiteur, qu'il a choisit dans la liste HTML des langues,

5) Ensuite, nous devons créer un objet de la classe Zend_Translate pour la traduction de texte.

Pour cela, nous devons connaitre l'adaptateur que nous allons utiliser.
Nous devons indiquer les emplacements des fichiers de traduction.
Nous devons savoir quelles langues nous allons utiliser pour notre application.

Pour ce tuto :
     - nous utiliserons l'adaptateur 'Gettext'.
     - nous avons la structure par langues (cf. voir paragraphe 3)
     - nous allons proposer les langues française et anglaise.

Code:

// Notre adaptateur de traduction
$adaptateur = 'gettext';

// Nous instancions l'objet Zend_translate en indiquant comme première langue le français.
$translate = new Zend_Translate ($adaptateur, '/languages/fr/default.mo', 'fr');

// Nous ajoutons la langue anglaise
$translate->addTranslation('/languages/en/default.mo', 'en');

// Et nous indiquons au traducteur quelle langue afficher ($locale que nous avons initialiser dans le paragraphe 4)
$translate->setLocale($locale);

// Nous mettons dans le registre la variable $translate pour pouvoir l'utiliser dans toute notre application
Zend_Registry::set('translate', $translate);

Et voila, nous avons configuré l'outil de traduction (ceci est une configuration de base, pour de plus amples détails reportez vous à la doc du Zend Framework)

6) Nous allons voir la syntaxe à utiliser pour les textes qui seront à traduire.

Lorsque vous souhaitez afficher un texte dans votre page, utiliser cette syntaxe :

Code:

// Nous chargeons d'abord l'objet translate
$translate = Zend_Registry::get('translate');

// Nous affichons le titre de notre page
print ($translate->_("Le titre de notre page") . "<br />");

// Nous voulons afficher un texte avec une variable, on utilisera printf, n'oublier pas le "f"
printf ($translate->_("Vous êtes le %1\$s visiteur depuis le %2\$s" . "<br/>") , $nb_visiteurs, date('d, m, Y'));

print ($translate->_("Bonjour, nous souhaitons que ce tutoriel vous aidera à mieux comprendre l'utilisation de Zend_Translate") . "<br/>");

7) Nous allons maintenant devoir traduire toutes nos phrases.

Pour cela nous utiliserons PoEdit qui est un soft gratuit sur plateforme Linux (Debian & Ubuntu : sudo apt-get install poedit)
Il existe aussi xgettext que je n'explique pas dans ce tutoriel.
Pour les utilisateurs de Windows et bien je suis désolé pour vous mais je n'ai pas de solution pour vous. Faites une recherche sur Google pour trouver un équivalent de PoEdit.

Alors pour commencer, nous allons devoir créer un nouveau catalogue (Fichier -> Nouveau catalogue...)

Une fenêtre s'ouvre, remplissez les champs ainsi dans l'onglet "Info Projet" :
- Le nom et la version de votre application
- Soit le nom de l'équipe de traduction, soit votre nom
- Soit l'adresse mail de votre équipe, soit la votre
- Indiquez la langue qui sera traduite, ici ce sera English
- Indiquez le pays concernant la langue, ici ce sera United Kingdom
- Indiquez le jeu de caractères à utiliser, ici ce sera UTF-8
- Indiquez le jeu de caractères des sources, ici ce sera UTF-8

Dans l'onget "Chemins" :
- Indiquez le chemin de la racine de votre application

Dans l'onglet "Mots clé" :
- Indiquez "$translate->_" (sans les guillemets)

Puis cliquez sur "Valider" et enregistrez le fichier default.po dans le répertoire /votre/appli/languages/en/
PoEdit va scanner tous vos fichiers depuis la racine de votre application à la recherche de chaînes de texte à traduire grâce au mot clé que nous lui avons fournit.

Ensuite, vous devrez renseigner la traduction de chaque phrase. Pour cela, sélectionnez dans le cadre du haut, la chaine "Le titre de notre page".
Normalement, la chaine devrait apparaitre dans le cadre en dessous. Pour traduire cette chaine, entrez votre traduction dans le cadre en dessous.
Puis sélectionnez les autres chaines et faites de même.
Attention à ne pas traduire les indicateurs de variables (%1$s et %2$s). Mettez ces indicateurs aux emplacements prévus dans la traduction.

Il ne vous reste plus qu'a enregistrer votre catalogue et vous devriez retrouver votre fichier default.mo dans le répertoire /language/en/

8) Pour vérifier que votre fichier de traduction fonctionne correctement.

Lors de l'instanciation de l'objet Zend_Locale, passez en paramètre la valeur 'en'.

Et ensuite, allez sur votre navigateur préféré et entrez l'adresse de votre application, vous devriez voir vos textes en anglais.

Pour de plus amples explications sur l'utilisation de la classe Zend_Translate et des autres classes, veuillez vous référer à la doc du Zend Framework



Je tâcherai de mettre un peu mieux en forme ce tuto, mais pour le moment vous avez les renseignements qu'il vous faut. J'espère que ce petit tuto vous aidera à mettre le pied à l'étrier ;-)

Si vous trouvez des erreurs, n'hésitez pas à me les signaler.

En attendant, Je vous souhaite de joyeuses fêtes de fin d'année. Cordialement, Azema.

Dernière modification par Azema (14-10-2008 10:26:45)

Hors ligne

 

#2 26-12-2007 11:26:17

fincom
Membre
Date d'inscription: 13-04-2007
Messages: 11

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Bonjour,

Merci pour votre tutorial.

Pouvez vous nous expliquer comment on peut accéder à l'objet zend_translate depuis les fichiers template des views ?

Plus précisément s'il existe une façon plus propre que d'invoquer l'objet en passant par le zend_registry, genre un view_helper ou autre

Merci d'avance

Hors ligne

 

#3 03-01-2008 14:07:09

cliknet
Membre
Date d'inscription: 22-11-2007
Messages: 12

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Azema a écrit:

Bonjour,

7) Nous allons maintenant devoir traduire toutes nos phrases.

Pour cela nous utiliserons PoEdit qui est un soft gratuit sur plateforme Linux (Debian & Ubuntu : sudo apt-get install poedit)
Pour les utilisateurs de Windows et bien je suis désolé pour vous mais je n'ai pas de solution pour vous. Faites une recherche sur Google pour trouver un équivalent de PoEdit.

Merci pour le tutoriel     wink
Pour les utilisateurs de Windows
article - Site officiel PoEdit

Dernière modification par cliknet (03-01-2008 14:15:46)

Hors ligne

 

#4 07-01-2008 11:39:08

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Bonjour Azema,

Merci pour ce tuto, je viens de l'ajouter sur la page "comment débuter" dans les tutos par thèmes.

A+, Philippe
PS : et félicitations pour le job smile


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#5 07-01-2008 15:31:55

Seb
Membre
Lieu: Thuin (Belgique)
Date d'inscription: 19-11-2007
Messages: 62
Site web

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

fincom a écrit:

Bonjour,

Merci pour votre tutorial.

Pouvez vous nous expliquer comment on peut accéder à l'objet zend_translate depuis les fichiers template des views ?

Plus précisément s'il existe une façon plus propre que d'invoquer l'objet en passant par le zend_registry, genre un view_helper ou autre

Merci d'avance

Perso, je passe mon objet translate à ma view mais je ne sais pas s'il existe un meilleur moyen ...


Sébastien Bervoets

Hors ligne

 

#6 07-01-2008 17:04:11

Phoenix17
Membre
Lieu: Nancy
Date d'inscription: 09-04-2007
Messages: 73
Site web

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Salut et merci pour ce tuto.

Cependant il y a une chose que je fait personnelement, au niveau des locales :

Dans ton cas, sauf erreur de ma part, tu définit ta locale en te basant sur la locale par défaut de l'utilisateur (ENV, BROWSER, FRAMEWORK, 'auto' en fait).

Et ensuite, tu créer ton objet translate sans même vérifier que la locale correspond bien à une translation existante.

Perso, ce que je fais, c'est que je définit dans un tableau les locales qui sont valides (qui correspondent à une translation), et ensuite, suivant la locale du BROWSER, je définit une locale à utiliser.

Par exemple, si la locale 'auto' de l'utilisateur est 'de_DE', et que tu as uniquement une traduction Français/Anglais, dans ton cas, comment se comporte ton exemple ?

Hors ligne

 

#7 12-01-2008 18:03:01

jefsoum
Nouveau membre
Date d'inscription: 12-01-2008
Messages: 1

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Bonjour,
ce tuto ne dit rien sur le support des formes plurielles (cf. fonction ngettext). il semblerait que ce ne soit pas supporté (?) dans la version actuelle du ZF.
Quelqu'un sait-il ce qu'il en est ? ou ce qu'il en sera dans une future version ? Je n'ai rien trouvé sur le sujet.
Merci pour vos lumières.
Jef


Il faudrait essayer d'être heureux, ne serait-ce que pour donner l'exemple. (J. Prévert)

Hors ligne

 

#8 30-01-2008 12:02:30

Azema
Membre
Lieu: Paris
Date d'inscription: 26-09-2007
Messages: 51
Site web

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Salut à tous,

Pour répondre à Phoenix17,

Phoenix17 a écrit:

Par exemple, si la locale 'auto' de l'utilisateur est 'de_DE', et que tu as uniquement une traduction Français/Anglais, dans ton cas, comment se comporte ton exemple ?

Si jamais la locale du client n'existe pas dans tes traductions, le système prendra la langue par défaut de ton application. Mais il est vrai que tu peux très bien faire une vérification entre la locale du client et tes traductions.

Je n'ai pas détaillé au maximum ce tuto, car d'une il m'aurait fallu plus de place et de deux je pense qu'avec ce début les personnes désirant utiliser la traduction s'efforceront de chercher un peu plus dans la doc du Zend Framework qui est très bien documentée.

Bien à vous, Azema.

P.S: Merci à toi Philippe, et c'est avec grand plaisir que je partage mes connaissances. (Chacun son tour ;-) )

Hors ligne

 

#9 04-04-2008 22:08:58

Azema
Membre
Lieu: Paris
Date d'inscription: 26-09-2007
Messages: 51
Site web

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Salut à tous,

fincom a écrit:

Pouvez vous nous expliquer comment on peut accéder à l'objet zend_translate depuis les fichiers template des views ?

Alors pour répondre à fincom (tardivement, mais mieux vaut tard que jamais), il est possible de passer en direct dans les vues pour la traduction.

Pour ce faire, il vous faut créer une classe héritant de Zend_View et dans le constructeur de la classe, vous récupérez l'objet Zend_Translate dans le tableau des paramètres passés à Zend_View.

Exemple :

Code:

/**
 * @see Zend_View
 */
require_once('Zend/View.php');
/**
 * Ajoute une methode a Zend_View
 * pour utiliser directement
 * Zend_Translate
 *
 */
class Sl_View extends Zend_View {
    
    protected $_translate;
    
    public function __construct($config=array())
    {
        if(!empty($config['translate']) && $config['translate'] instanceof Zend_Translate) {
            $this->_translate = $config['translate'];
        }
        parent::__construct($config);
    }

    /**
     * Methode de traduction
     * 
     * @param string $messageId Le message a traduire
     * @param Zend_Locale $locale Vaut null par defaut
     * 
     * @return string Le message traduit
     */
    public function _($messageId, $locale = null)
    {
       return $this->_translate->_($messageId, $locale);
    }

    /**
     * UnEscapes a value for output in a view script.
     *
     * uses {@link $_encoding} setting.
     *
     * @param mixed $var The output to unescape.
     * @return mixed The unescaped value.
     */
    public function unescape($var)
    {
        return html_entity_decode($var, ENT_COMPAT, $this->getEncoding());
    }

}

Ensuite, dans votre bootstrap, il vous faut faire appelle à votre classe :

Code:

    /**
     * init viewRenderer
     * we're gonna use .tpl.php templates
     */
    $view = new Sl_View(array('translate' => $translate));
    $view->setEncoding($config->site->encoding);
    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    $viewRenderer->setView($view);

Ensuite, il ne vous reste plus qu'a utiliser l'appelle de la méthode de traduction dans vos vues :

Code:

$this->_('Message à traduire');

et dans vos controllers :

Code:

$this->view->_('Message à traduire');

Cordialement, Azema.

Hors ligne

 

#10 08-04-2008 22:15:36

DJC
Nouveau membre
Date d'inscription: 01-01-2008
Messages: 9

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Bonjour,
juste une petite question par rapport à ce dernier post,
=> où faut-il placer le fichier de la classe Sl_View dans l'arborescence du site MVC ?

Hors ligne

 

#11 10-04-2008 13:50:41

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

J'aurai une petite question sur la gestion de la traduction.
Si l'on se rend compte que l'on a fait une faute dans la version française du site et que l'on corrige sur la page, il faut alors relancer le scan de PoEdit pour qu'il puisse voir cette nouvelle version de la phrase et retaper ensuite la traduction. Il n'y a pas moyen d'appeler les phrases par un identifiant unique ?

--id--------fr------------en------
--1------bonjour------Hello-----
--2-----Au revoir----goodbye--

On appelle ainsi les phrases par leurs identifiants et on peut changer indépendamment la formulation de chaque phrase.

Je me demande également comment gérer la traduction d'un paragraphe entier avec une mise en page : gras, italique, lien internet....

Comment cela se passe?

Dernière modification par slaughter (10-04-2008 13:52:30)

Hors ligne

 

#12 10-04-2008 20:30:50

Azema
Membre
Lieu: Paris
Date d'inscription: 26-09-2007
Messages: 51
Site web

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Salut à tous,

Pour répondre DJC

DJC a écrit:

juste une petite question par rapport à ce dernier post,
=> où faut-il placer le fichier de la classe Sl_View dans l'arborescence du site MVC ?

En fait, le "Sl" est le répertoire de ma librairie.
Mon architecture :

Code:

 |->application
 |       |->administration
 |       |        |->controllers
 |       |        |->views
 |       |->default
 |       |        |->controllers
 |       |        |->views
 |->library
 |       |->Sl (Ma libraire Perso)
 |       |        |->view.php (--> ICI <--)
 |       |->Zend
 |->website
 |       |->index.php (bootstrap)
 |       |->resources
 |       |        |->css
 |       |        |->images
 |       |        |->javascript

J'espère avoir répondu à ta question.

-------------------------------------------------------

Pour répondre à slaughter,

slaughter a écrit:

J'aurai une petite question sur la gestion de la traduction.
Si l'on se rend compte que l'on a fait une faute dans la version française du site et que l'on corrige sur la page, il faut alors relancer le scan de PoEdit pour qu'il puisse voir cette nouvelle version de la phrase et retaper ensuite la traduction. Il n'y a pas moyen d'appeler les phrases par un identifiant unique ?

C'est une très bonne question, à vrai dire je n'ai pas la réponse pour le moment. Tout ce que je peux te dire, c'est qu'il est surement possible de faire de la manière dont tu parles puisque c'est comme ça que font certaines applications.

slaughter a écrit:

Je me demande également comment gérer la traduction d'un paragraphe entier avec une mise en page : gras, italique, lien internet....

Si tu laisses tes balises HTML dans ton paragraphe, il suffira de ne pas y toucher durant la traduction, sinon ce que tu peux faire, c'est de découper ton paragraphe en fonction de ta mise en page. Mais je trouve ça un peu lourd à gérer, d'autant plus que lorsque tu fais ta traduction, il n'est pas évident de traduire une phrase si tu n'as pas le contexte. Cependant, si tu souhaites modifier ta mise en page, cela t'évite de modifier tes fichiers de traduction. Je pense que c'est un choix personnel.
Tu devrais pouvoir trouver de la documentation sur Google qui explique les pour et les contre.

En espérant t'avoir apporté quelques idées sur tes questions, je tâcherai de plancher sur le sujet dès que j'aurai un peu de temps libre.

Cordialement, Azema.

Hors ligne

 

#13 11-04-2008 09:54:16

DJC
Nouveau membre
Date d'inscription: 01-01-2008
Messages: 9

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Merci beaucoup pour très réponses très efficaces Azema.

Dans ta réponse tu réponds également à une autre question que je posait:
Quand on  utilise une architecture en utilisant les modules, où placer toutes nos classes perso et modèles ?
En regardant ton architecture je suppose que tu places toutes ces classes dans ta librairie perso (Sl) et que dans application tu ne laisse que les contrôleurs et les vues, n'est ce pas ?

Hors ligne

 

#14 11-04-2008 11:54:34

Azema
Membre
Lieu: Paris
Date d'inscription: 26-09-2007
Messages: 51
Site web

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Salut DJC,

DJC a écrit:

En regardant ton architecture je suppose que tu places toutes ces classes dans ta librairie perso (Sl) et que dans application tu ne laisse que les contrôleurs et les vues, n'est ce pas ?

Tout à fait. Dans mon bootstrap, j'indique le chemin de mon répertoire 'library' et pour faire appel à mes classes j'utilise

Code:

require_once 'Sl/Class.php'

ensuite dans mon code lorsque je veux instancier un objet je fais appelle de la manière suivante

Code:

$myObject = new Sl_Class();

Ne pas utiliser cette manière avec le chargement des classes avec le Zend_Loader(), car cela ne marcherait pas.

Cordialement, Azema.

Hors ligne

 

#15 15-04-2008 08:30:46

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

J'aurai une petite question par rapport au multi-langue et le MVC. A quel moment utilisez vous la fonction translate?
Dans le controller et vous enregistrez l'ensemble de la phrase dans une variable que vous affichez ensuite dans la vue?

Autre question,

Est-il possible de faire également un fichier default.mo que l'on placera dans le fichier /languages/fr/ ? De cette façon, "Le titre de notre page", est juste une chaîne clé.
En gros, "bonjour" est un mot clé, dans le default.mo francais je peux mettre, "bonjour"ou "bonne journée", dans le default.mo anglais je peux mettre "hello"ou "hi" etc. Et je peux ainsi changer les correspondances dans les deux langues. Comme je fait toujours appel à la clé "bonjour", cela ne changera pas le fonctionnement de mon application. Peut être que je me trompe...

Hors ligne

 

#16 18-04-2008 08:55:34

Azema
Membre
Lieu: Paris
Date d'inscription: 26-09-2007
Messages: 51
Site web

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Salut slaughter,

J'aurai une petite question par rapport au multi-langue et le MVC. A quel moment utilisez vous la fonction translate?
Dans le controller et vous enregistrez l'ensemble de la phrase dans une variable que vous affichez ensuite dans la vue?

En fait, la fonction translate est appelée soit dans les vues, soit dans les controllers. Si tu as besoin d'initialiser ta phrase à traduire dans le controller, alors tu passes ta phrase dans une variable que tu passes ensuite à ta vue.
exemple :
Dans mon controller

Code:

public function indexAction()
{
    $this->view->maPhrase = $this->view->_('La phrase que je veux traduire et que j'initialise dans mon controller');
}

Dans ma vue

Code:

Ma phrase traduite est : <?php echo $this->maPhrase; ?>

Sinon, tu peux le faire directement dans ta vue, sans passer par le controller (du moins pour la traduction)
Dans ma vue

Code:

Ma phrase traduite est : <?php echo $this->_('La phrase que je veux traduire et que j'initialise dans ma vue'); ?>

Pour répondre à ta deuxième question :

Est-il possible de faire également un fichier default.mo que l'on placera dans le fichier /languages/fr/ ? De cette façon, "Le titre de notre page", est juste une chaîne clé.
En gros, "bonjour" est un mot clé, dans le default.mo francais je peux mettre, "bonjour"ou "bonne journée", dans le default.mo anglais je peux mettre "hello"ou "hi" etc. Et je peux ainsi changer les correspondances dans les deux langues. Comme je fait toujours appel à la clé "bonjour", cela ne changera pas le fonctionnement de mon application. Peut être que je me trompe...

Lorsque tu fais la traduction de tes chaines, il te faut choisir la traduction que tu souhaites pour un mot ou une phrase, et il n'y a qu'une seule traduction.
Lorsque que ton visiteur utilisera ton site, et qu'il demandera la langue anglaise (par exemple), ton application sélectionnera la traduction que tu auras fournit.

Je ne pense pas qu'il soit possible de renseigner différentes traduction pour un mot clé, cependant je te conseille de lire la doc officielle du Zend Framework et d'autres tutos sur le sujet pour comparer les informations données.

Cordialement, Azema.

Hors ligne

 

#17 18-04-2008 14:58:12

Borower
Nouveau membre
Date d'inscription: 18-10-2007
Messages: 9

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Bonjour tout le monde,

Je voulais savoir ou vous mettiez dans votre architecture la partie 5 du tuto, là ou on défini les langues disponible pour l'application.
Je le mettrais bien dans le fichier index.php à la racine de l'application et avec le registre pouvoir accéder au information partout dans les controleurs.
Mais hélas, je ne sais pas si c'est moi qui utilise mal le Zend_Registre.
Mais quand je le définit dans le fichier index.php à la racine de l'application celui ci n'est pas disponible dans les controleurs.

Merci de m'éclaircir un peut les idées.

Cordialement.


Romain

Hors ligne

 

#18 20-04-2008 10:40:55

Azema
Membre
Lieu: Paris
Date d'inscription: 26-09-2007
Messages: 51
Site web

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Salut Romain,

Si tu suis le tuto à la lettre, tu ne devrais pas avoir de problème.

Borower a écrit:

Je voulais savoir ou vous mettiez dans votre architecture la partie 5 du tuto, là ou on défini les langues disponible pour l'application.

Effectivement, tu dois le mettre dans le bootstrap.

Si après avoir suivi le tuto à la lettre tu as encore des problèmes, fournit nous un peu plus de détails sur les problèmes que tu rencontres, comme les messages d'erreurs renvoyés par le Zend, afin que l'on puisse t'aider.

Cordialement, Azema.

Hors ligne

 

#19 20-04-2008 13:33:06

Borower
Nouveau membre
Date d'inscription: 18-10-2007
Messages: 9

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Merci Azema de vouloir m'aider.
J'ai ma réponse : http://www.z-f.fr/forum/viewtopic.php?id=1145

Cordialement.

Hors ligne

 

#20 26-04-2008 20:18:12

cyno
Nouveau membre
Date d'inscription: 26-04-2008
Messages: 9

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Super TUTO, merci beaucoup.
Cependant j'ai un problème avec Poedit.
J'ai bien rajouté l'extension .phtml dans le parser PHP mais il me génère une erreur du type ".phtml is an unknown extension". Le parsing des fichiers .php se passe pourtant bien ...
Quelqu'un a-t-il rencontré ce problème ? (je suis sous windows)

Hors ligne

 

#21 27-04-2008 11:41:11

cyno
Nouveau membre
Date d'inscription: 26-04-2008
Messages: 9

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Le bug est connu. Dans le parser PHP il faut rajouter "-L php" à la fin de la ligne de command pour donner "xgettext --force-po -o %o %C %K %F -L php"

Hors ligne

 

#22 27-04-2008 13:32:04

Azema
Membre
Lieu: Paris
Date d'inscription: 26-09-2007
Messages: 51
Site web

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Merci Cyno d'avoir rapporté cette information.

Cordialement Azema.

Hors ligne

 

#23 04-06-2008 19:36:49

bucheron
Membre
Date d'inscription: 30-05-2008
Messages: 138

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

j'ai une petite question pour Azema.

La classe que tu as écris, si on suit la logique (Enfin peut être que c est la mienne) ne devrait on pas mettre la classe dans le folder genre /mon-appli/application/views/helper/

Ne serais ce pas un view helper ?

Apres tu peux me dire on peut la mettre partout mais c est surtout pour que je comprenne vu que je suis un débutant

Hors ligne

 

#24 17-06-2008 18:49:33

Akis
Membre
Date d'inscription: 29-03-2008
Messages: 86
Site web

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

J'ai suivi à la lettre le tuto (merci au passage) mais je n'ai aucune de mes traductions qui s'affichent... Je n'ai aucune erreur mais rien ne s'affiche.

Avez-vous déjà eu le soucis ? Savez-vous ce qui pourrait coincer ?


//edit : En fait, c'était à cause de moi, je faisais aucun echo hmm

Dernière modification par Akis (18-06-2008 21:37:55)

Hors ligne

 

#25 21-06-2008 21:55:39

Akis
Membre
Date d'inscription: 29-03-2008
Messages: 86
Site web

Re: [Zend_Translate][1.0.3] Un petit Tuto translate avec adapteur Gettext

Bon c'est encore moi en fait car j'avance petit à petit dans un projet...

Concernant les pluriels, il y a moyen de faire simple où il faut créer 2 "id" différent ?

Ainsi que le fait t'intervenir des variables dans la traduction, comment faut-il faire avec le ZF ?

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