IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

[Zend_Translate] et site multilingue


Sujet :

Zend Framework PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut [Zend_Translate] et site multilingue
    Bonjour à tous,

    Je débute dans l'utilisation du ZF et je suis en train de regarder quels sont les moyens de faire un site mutilingue.
    Je pensais déterminer la langue à utilisé selon l'url.
    ex: www.monsite.com/fr/news
    www.monsite.com/en/news
    etc

    Ensuite, je voulais écrire tout ce qui est en dure dans le site (lien, definition etc) dans toutes les langues et les stocker (je ne sais pas comment).
    Pour les données dynamique, prenons l'exemple des news, chaque news à un attribut langue et on affiche ensuite la news seulement si elle est écrite dans la version du site sur laquelle nous nous trouvons.

    En faisant quelques recherches je suis tombé sur le Zend Translate.
    Est-ce que les traductions données par le zend translate sont vraiment juste?

    Quel est le meilleur moyen de faire un site multilingue?

    Merci d'avance.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Par défaut
    alors le multi-linguisme avec Zend n'est pas compliquer quand tu utilise l'objet translate, par contre je pense que tu ne comprends pas son fonctionnement, en gros tu as des fichiers de traduction, un pour chaque langue avec en colone 1 un ID du champ en 2 sa traduction : exemple pour traduite le champ numero de telephone

    en anglais :
    en français
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tel;numero de telephone

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    Oki, d'après ce que j'ai pu lire en plus et ton explication, cela me parrait un peu plus clair.
    Dans mon cas, je pense utilisé la version csv qui me parait plutôt simple, avec un fichier par langue.

    Ce que je en vois toujours pas, c'est comment l'utiliser concrètement.
    Si je prend l'exemple d'un texte en francais, avec une mise en page (gras, lien etc), comment je fais pour mettre en place la traduction de ce fichier?

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    J'utilise pour l'instant le ZF sous forme de module:
    www.monsite.com/module/controller/action,
    il me reste également à savoir comment rajouter la langue dans l'url sous cette forme:
    www.monsite.com/fr/module/controller/action,
    et je ne vois pas du tout comment faire.

    Avez vous une piste?

  5. #5
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Salut,

    En attente de trouver une meilleure solution, tu peux regarder du côté du routeur intégré au Controller du Zend Framework. Ce n'est pas optimal (il faut redéfinir toutes les urls) mais c'est fonctionnel.

    Bon courage.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Par défaut
    je t'invite a consulter le post [Zend Form] Traduction des messages d'erreur dans la section Zend_Form , j'ai posté aussi un bout de code sur les sites multi-lingues,

    pour l'URL je ne peux t'aider moi je gere la langue par la langue du navigateur et l'URL ne change pas

    bon courage en tout cas

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    Je souhaiterais tout de même avoir le langage dans l'url pour une question de référencement et de claireté. J'ai l'impression que sans cela, le moteur ne verra le site que sous une seule langue, la sienne...

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    Citation Envoyé par neufcm Voir le message
    je t'invite a consulter le post [Zend Form] Traduction des messages d'erreur dans la section Zend_Form , j'ai posté aussi un bout de code sur les sites multi-lingues
    Désolé, mais je n'arrive pas à voir de quel post tu parles ni de quel code...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Par défaut
    voila si sa peut t'aider, je parle un peu du site multi-langue que je fais mais je ne gere pas l'identifiant de langue dans l'url



    http://www.developpez.net/forums/sho...d.php?t=522522

  10. #10
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    Si j'ai bien compris le zend_translate, ca se présente sous cette forme

    -----id------------francais--------anglais-----
    -msg_bienvenue---Bonjour---------Hello------
    -msg_aurevoir-----Au revoir-------Good Bye--

    On fait donc ensuite appel à un "identifiant" de phrase, par exemple msg_bienvenue et le message correspondant s'affiche selon la langue que l'on veut.

    Il me reste juste à savoir comment gérer la traduction de paragraphe entier avec une mise en page d'italique, de gras, de lien internet.
    On entre le code html entier dans le tableau?

  11. #11
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    Il me reste également à savoir comment intégrer le nom de la langue dans l'url et je n'arrive pas à comprendre le fonctionnement de router. La documentation est assez incompréhensible à mon gout.

    Avez vous une piste à me donner?

  12. #12
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    Oui. J'avais vu ce topic et voici le bootstrap que j'en ai déduit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <?php
    error_reporting(E_ALL|E_STRICT);
    date_default_timezone_set('Europe/Paris');
    set_include_path('.'
        . PATH_SEPARATOR . realpath('./../library')
        . PATH_SEPARATOR . realpath('./../application/models/')
        . PATH_SEPARATOR . get_include_path());
     
    include "Zend/Loader.php";
    //Zend_Loader::registerAutoload();
    Zend_Loader::loadClass('Zend_Controller_Front');
    Zend_Loader::loadClass('Zend_Config_Ini');
    Zend_Loader::loadClass('Zend_Registry');
    Zend_Loader::loadClass('Zend_Db');
    Zend_Loader::loadClass('Zend_Db_Table');
    Zend_Loader::loadClass('Zend_Controller_Router_Rewrite');
     
     
    // load configuration
    $config = new Zend_Config_Ini('./../application/config.ini', 'general');
    $registry = Zend_Registry::getInstance();
    $registry->set('config', $config);
     
    // setup database
    $db = Zend_Db::factory($config->db->adapter,  $config->db->config->toArray());
    Zend_Db_Table::setDefaultAdapter($db);
     
    // setup controller
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->throwExceptions(true);
    $frontController->setBaseUrl('/zf-test2/');
    //$frontController->setControllerDirectory('./../application/controllers');
    $frontController->setControllerDirectory(array(
          'album'    => './../application/modules/album/controllers'
    ));
    $frontController->addModuleDirectory('./../application/modules');
     
    //router
    $router = new Zend_Controller_Router_Rewrite();
    $router->addRoute(
        "basic",
        new Zend_Controller_Router_Route(
            "/:language/:modules/:controller/:action/:parameter1/:parameter2",
            array(
                "language"=>"fr",
                "modules"=>"album",
                "controller"=>"index",
                "action"=>"index",
                "parameter1"=>null,
                "parameter2"=>null)
        )
    );
     
     
    // run!
    $frontController->dispatch();
    Et voilà le message d'erreur quand je vais sur la page "http://192.168.2.11/zf-test2/fr/album":

    Fatal error: Uncaught exception 'Zend_Controller_Exception' with message 'No default module defined for this application' in /var/www/zf-test2/library/Zend/Controller/Dispatcher/Standard.php:392 Stack trace: #0 /var/www/zf-test2/library/Zend/Controller/Dispatcher/Standard.php(211): Zend_Controller_Dispatcher_Standard->getControllerClass(Object(Zend_Controller_Request_Http)) #1 /var/www/zf-test2/library/Zend/Controller/Dispatcher/Standard.php(245): Zend_Controller_Dispatcher_Standard->isDispatchable(Object(Zend_Controller_Request_Http)) #2 /var/www/zf-test2/library/Zend/Controller/Front.php(914): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #3 /var/www/zf-test2/public/index.php(56): Zend_Controller_Front->dispatch() #4 {main} thrown in /var/www/zf-test2/library/Zend/Controller/Dispatcher/Standard.php on line 392
    J'ai remarqué que j'ai exactement le même message si je vais à la racine du site "http://192.168.2.11/zf-test2/".

    Je n'arrive pas à savoir d'où cela vient.

  13. #13
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    Il fallait tout simplement que j'enlève le "s" à module. J'avais pour l'instant tout mis au pluriel....

    Résolu

  14. #14
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    Etape suivante:

    Comment je créer les liens. Faut-il que je recherche la valeur de :language pour concaténer avec le reste?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    href="<?php echo $this->baseUrl.$this->language;?>/mon/chemin/" />
    Ou est ce que je peux faire cela de façon automatique et avoir simplement cela?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    href="<?php echo $this->baseUrl;?>/mon/chemin" />

  15. #15
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Je ne vois trop l'intérêt de faire ça, tu perds un peu en flexibilité. Il vaut mieux garder le baseUrl comme il est. Le premier choix est bon je pense

    Bon courage.

  16. #16
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    Donc on doit le faire manuellement ? Il n'y a pas moyen de garder les URLs comment dans le second cas et que le ZF détecte tout seul le langage et adapte les URLs en fonction?

  17. #17
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Citation Envoyé par Jonathan.b Voir le message
    Donc on doit le faire manuellement ? Il n'y a pas moyen de garder les URLs comment dans le second cas et que le ZF détecte tout seul le langage et adapte les URLs en fonction?
    Euh je vais réfléchir mais là tout de suite je vois pas. Ya quelques articles sur le WIKI du ZendFramework, tu devrais déjà aller voir par là

    Bon courage.

  18. #18
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    J'ai déjà fait le tour mais je n'arrive pas à trouver d'exemple complet de mise en place du multi-langue

  19. #19
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 277
    Par défaut
    Petit Up.

    L'idéal serait d'avoir dans le bootstrap, un moyen de connaitre la langue utilisé actuellement et de rajouter le préfixe "fr", "en", etc à toutes les redirections pour ne pas avoir à le faire dans toutes les pages.

    J'ai regardé le wiki et il n'y a rien du tout sur le multilingue. Les aides sont loin d'être complète pour le moment.

Discussions similaires

  1. Site multilingue - méthode ?
    Par khephren dans le forum Général Conception Web
    Réponses: 12
    Dernier message: 21/06/2016, 17h18
  2. [Cookies] problème avec site multilingue
    Par lacfab dans le forum Langage
    Réponses: 13
    Dernier message: 30/12/2005, 23h10
  3. [Tableaux] Site multilingue
    Par francis m dans le forum Langage
    Réponses: 15
    Dernier message: 10/12/2005, 01h58
  4. Site multilingue : comment s'y prendre ?
    Par sg-40 dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 26/04/2005, 14h40
  5. [C#] Mise en place d'un site multilingue
    Par regbegpower dans le forum ASP.NET
    Réponses: 6
    Dernier message: 19/03/2004, 19h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo