Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework
Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/04/2008, 22h59   #1
Membre du Club
 
Homme Jonathan
Inscription : avril 2007
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Jonathan

Informations forums :
Inscription : avril 2007
Messages : 274
Points : 57
Points : 57
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.
Jonathan.b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 14h52   #2
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 28
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : mai 2007
Messages : 28
Points : 10
Points : 10
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 :
1
2
 
tel;numero de telephone
neufcm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 18h08   #3
Membre du Club
 
Homme Jonathan
Inscription : avril 2007
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Jonathan

Informations forums :
Inscription : avril 2007
Messages : 274
Points : 57
Points : 57
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?
Jonathan.b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 09h09   #4
Membre du Club
 
Homme Jonathan
Inscription : avril 2007
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Jonathan

Informations forums :
Inscription : avril 2007
Messages : 274
Points : 57
Points : 57
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?
Jonathan.b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 10h07   #5
Membre Expert
 
Avatar de Janitrix
 
Inscription : octobre 2005
Messages : 3 398
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 3 398
Points : 2 331
Points : 2 331
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.
Janitrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 15h13   #6
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 28
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : mai 2007
Messages : 28
Points : 10
Points : 10
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
neufcm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 15h17   #7
Membre du Club
 
Homme Jonathan
Inscription : avril 2007
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Jonathan

Informations forums :
Inscription : avril 2007
Messages : 274
Points : 57
Points : 57
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...
Jonathan.b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 21h29   #8
Membre du Club
 
Homme Jonathan
Inscription : avril 2007
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Jonathan

Informations forums :
Inscription : avril 2007
Messages : 274
Points : 57
Points : 57
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...
Jonathan.b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2008, 16h26   #9
Candidat au titre de Membre du Club
 
Inscription : mai 2007
Messages : 28
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : mai 2007
Messages : 28
Points : 10
Points : 10
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
neufcm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2008, 17h21   #10
Membre du Club
 
Homme Jonathan
Inscription : avril 2007
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Jonathan

Informations forums :
Inscription : avril 2007
Messages : 274
Points : 57
Points : 57
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?
Jonathan.b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2008, 23h30   #11
Membre du Club
 
Homme Jonathan
Inscription : avril 2007
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Jonathan

Informations forums :
Inscription : avril 2007
Messages : 274
Points : 57
Points : 57
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?
Jonathan.b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2008, 21h26   #12
Membre du Club
 
Homme Jonathan
Inscription : avril 2007
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Jonathan

Informations forums :
Inscription : avril 2007
Messages : 274
Points : 57
Points : 57
Oui. J'avais vu ce topic et voici le bootstrap que j'en ai déduit:

Code :
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":

Citation:
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.
Jonathan.b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2008, 22h40   #13
Membre du Club
 
Homme Jonathan
Inscription : avril 2007
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Jonathan

Informations forums :
Inscription : avril 2007
Messages : 274
Points : 57
Points : 57
Il fallait tout simplement que j'enlève le "s" à module. J'avais pour l'instant tout mis au pluriel....

Résolu
Jonathan.b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2008, 08h42   #14
Membre du Club
 
Homme Jonathan
Inscription : avril 2007
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Jonathan

Informations forums :
Inscription : avril 2007
Messages : 274
Points : 57
Points : 57
Etape suivante:

Comment je créer les liens. Faut-il que je recherche la valeur de :language pour concaténer avec le reste?
Code :
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 :
href="<?php echo $this->baseUrl;?>/mon/chemin" />
Jonathan.b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2008, 21h01   #15
Membre Expert
 
Avatar de Janitrix
 
Inscription : octobre 2005
Messages : 3 398
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 3 398
Points : 2 331
Points : 2 331
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.
Janitrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2008, 21h09   #16
Membre du Club
 
Homme Jonathan
Inscription : avril 2007
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Jonathan

Informations forums :
Inscription : avril 2007
Messages : 274
Points : 57
Points : 57
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?
Jonathan.b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2008, 21h38   #17
Membre Expert
 
Avatar de Janitrix
 
Inscription : octobre 2005
Messages : 3 398
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 3 398
Points : 2 331
Points : 2 331
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.
Janitrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2008, 22h46   #18
Membre du Club
 
Homme Jonathan
Inscription : avril 2007
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Jonathan

Informations forums :
Inscription : avril 2007
Messages : 274
Points : 57
Points : 57
J'ai déjà fait le tour mais je n'arrive pas à trouver d'exemple complet de mise en place du multi-langue
Jonathan.b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2008, 09h54   #19
Membre du Club
 
Homme Jonathan
Inscription : avril 2007
Messages : 274
Détails du profil
Informations personnelles :
Nom : Homme Jonathan

Informations forums :
Inscription : avril 2007
Messages : 274
Points : 57
Points : 57
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.
Jonathan.b est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h27.


 
 
 
 
Partenaires

Hébergement Web