Dans Symfony, il est possible de traduire le contenu des tables grace aux
Behaviors.
L'internalisation est déjà prévue, autant ne pas réinventer la roue ;)

http://www.symfony-project.org/jobeet/1_4/Doctrine/fr/19#chapter_19_sub_les_
objets_de_doctrine

 

-----Message d'origine-----
De : symfony-fr@googlegroups.com [mailto:symfony...@googlegroups.com] De la
part de Mohamed Ayoub Benjelloun
Envoyé : mardi 28 décembre 2010 23:46
À : symfony-fr@googlegroups.com
Objet : Re: [symfony-fr] Re: Internationalisation

J'essaierai de te lister les méthodes possibles, après en fonction de ton
besoin et de tes contraintes tu en choisis celle qui te conviens le plus

- Méthode 1: [n bdd] (But: ne pas toucher à notre code) Je pense que la
seule manière possible de traduire le contenu dynamique de ton site sans
avoir à toucher ni à la base de données ni aux actions c'est d'utiliser une
autre base de données dont le schéma est identique à la première, mais avec
des données différentes (données de l'autre langue), il faudra déjà:
- trouver le moyen de passer outre le databases.yml, tu n'as qu'à explorer
le code de symfony le but c'est d'en avoir 1 par langue, et de forcer
symfony à choisir celui qui correspond à la langue en cours lors de ces
connexions à la base de données.
- Détecter les données communes aux deux bases et écrire un script qui les
copiera sur les copies de la base principale
- Écrire un cron qui permettra la mise à jour des copies en fonction du
besoin => Avantages: tu ne toucheras point à tes actions => Inconv: données
redondante, latence entre les maj, tu t'aventureras sur la partie ORM de
symfony attends toi à des obstacles, bug, incohérances...

- Méthode2: [Moteur de traduction] (toucher peu à notre code en dépit d'un
manque de qualité du traduisible) Si tu juges que le moteur de traduction de
yahoo ou astalavista basé sur babelfish est assez performant, tu pourra
l'utiliser via la classe en pièce jointe il faut:
- réécrire la fonction "echo" en tant que helper pour qu'elle puisse en fait
afficher le résultat de la méthode translate() de notre classe (
http://blog.firehist.org/2010/02/21/symfony-creer-un-helper-personnalise/ )
- faire un ctrl+H sur tes modules (eclipse) et recherche les instances de
"echo" tu les changeras par le nom de ta méthode => Avantages: tu ne
toucheras que peu à ton code => Inconv: Babelfish est loin d'être un
traducteur assermenté, il en créera des vannes sur ton site, pourvu que ça
soit pas un site de pompe funèbre 

- Méthode3: [réutilisation des tables] (modifier le code, mais faire du
clean) l'idée est d'insérer deux id supplémentaires à toutes tes tables dont
le contenu désire être traduit, un id pour définir la langue, puis un id
propre à chaque objet et qui sera le même pour 3 lignes par exemple
représentant la même information mais en 3 langues différentes, ces deux
dimensions permettront de situer n'importe quel article dans son contexte.
il faut:
- revoir la logique de toutes tes actions,
- sortir le bon article dans la langue adéquate, traiter le cas de la non
existence de la traduction ...
=> Avantages: tu auras du code clean
=> Inconv: il te faut assez de temps pour tous modifier

- Méthode4: [tables de traduction] (modifier le code, mais faire du clean)
l'idée est un peu près la même que la 3 sauf que tu lieras chaque table à
contenu traduisible avec une autre contenant les traductions, ceci est le
cas général après en fonction des relations entre tes tables tu peux
rencontrer des complications (jointures, ...) => Avantages: tu auras du code
clean => Inconv: il te faut assez de temps pour tous modifier

Cordialement,

Ayoub Mohamed BENJELLOUN
IED-CP / Smile Maroc
Smile – Open Source Solutions
www.smile.fr
benjellounay...@gmail.com
+212 661 96 44 01



--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes
Symfony-fr.
Pour envoyer un message à ce groupe, adressez un e-mail à
symfony...@googlegroups.com.
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse
symfony-fr+unsubscr...@googlegroups.com.
Pour plus d'options, consultez la page de ce groupe :
http://groups.google.com/group/symfony-fr?hl=fr


-- 
Vous recevez ce message, car vous êtes abonné au groupe Google 
Groupes Symfony-fr.
Pour envoyer un message à ce groupe, adressez un e-mail 
à symfony...@googlegroups.com.
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse 
symfony-fr+unsubscr...@googlegroups.com.
Pour plus d'options, consultez la page de ce groupe : 
http://groups.google.com/group/symfony-fr?hl=fr

Répondre à