Comment gérez-vous le développement d'un site multilingue ?

Comment gérez-vous le développement d'un site multilingue ?

En dur
4
29%
En base de données
8
57%
En fichier à plat
1
7%
Autre
1
7%
 
Nombre total de votes : 14


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2215
Inscription: 10 Avr 2005

Comment gérez-vous le développement d'un site multilingue ?

Message le Sam Juil 10, 2010 14:35

Bonjour,

Comment gérez-vous le développement d'un site multilingue ?

1/ Un template par langue avec les traductions écrites en dur dans les "vues".

2/ Tous les textes en base de données :
Code: Tout sélectionner
texte_id    langue_id     traduction
1              1            Texte en français
1              2            Texte en anglais

3/ Textes stockés dans des fichiers à plat : .ini, .xml, etc.

4/ Autre...


Merci,
Dorian


spout
WRInaute accro
WRInaute accro
 
Messages: 4377
Inscription: 14 Mai 2003

Re: Comment gérez-vous le développement d'un site multilingue ?

Message le Dim Juil 11, 2010 1:14

Pour la petite histoire:

A mes débuts en PHP, des define:
fr.php:
Code: Tout sélectionner
<?php
define('TXT_WELCOME', "Bonjour le monde");
?>

en.php:
Code: Tout sélectionner
<?php
define('TXT_WELCOME', "Hello world");
?>


Ensuite je me suis lancé dans CakePHP qui n'avait (à ce moment là) pas le support du multilangues, je me suis tourné vers PEAR::Translation2: http://pear.php.net/package/Translation2 avec le container XML (traductions chargées dans un array $lang, ex: $lang['welcome']).

A la longue, je trouvais que le fichier XML était plutôt lourd à parser via PEAR::Translation2.

Ensuite (il y a +/- 6 mois) j'ai regardé au multilangue qui a été (entre temps) implémenté en CakePHP.

En gros (je ne vx pas m'attarder sur le système de CakePHP), c'est du gettext:

http://fr.wikipedia.org/wiki/GNU_gettext
Tuto: http://www.waanser.com/php/general-php/184-get-text.html

QUE DU BONHEUR

Maintenant je regrette de ne pas avoir utilisé gettext plus tôt.
Pourquoi:
Avec les define() ou autre (xml, sql, ini, ...), chaque "identifiant" de texte à traduire doit être "encodé" à plusieurs reprises: dans le code et dans le système de traduction.

Avec gettext, je crée uniquement "l'identifiant" de texte dans le code PHP.
Code: Tout sélectionner
<?php echo _('welcome');?>

Et xgettext en ligne de commande lit tous les fichiers PHP à la recherche de ces chaines à traduire et génère un fichier .POT qui sert à mettre à jour le fichier .PO avec Poedit ( http://www.poedit.net/ ).

Et ça ne pose aucun problème de se servir directement du texte traduit (en une langue choisie) comme identifiant
ex:
Code: Tout sélectionner
<?php echo _('Bonjour le monde');?>

qui affichera tout simplement sans traduction:
Code: Tout sélectionner
Bonjour le monde


Bon c'est pas si facile à argumenter, il faut tester (cfr. tuto cité) pour se faire une idée de la simplicité et du gain de productivité, je conseille vivement gettext qui est vraiment fait pour ça ;)


spout
WRInaute accro
WRInaute accro
 
Messages: 4377
Inscription: 14 Mai 2003

Re: Comment gérez-vous le développement d'un site multilingue ?

Message le Mer Juil 14, 2010 17:00

Pas d'autres interventions ?
Qu'en penses-tu Dorian ?


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8575
Inscription: 23 Nov 2005

Re: Comment gérez-vous le développement d'un site multilingue ?

Message le Mer Juil 14, 2010 21:59

+1 pour gettext que je suis en train de mettre en place sur le CMS maison de ma boîte. C'est le format idéal quand on bosse avec des boîtes de traduction.

J'étais jusque là parti sur un fichier php par langue, ce fichier contenant un tableau avec en index les codes de trad et en valeur les traductions pour la langue en cours. Le tout doté d'une zone d'administration qui permet de mettre à jour facilement les différents.


dorian53
WRInaute passionné
WRInaute passionné
 
Messages: 2215
Inscription: 10 Avr 2005

Re: Comment gérez-vous le développement d'un site multilingue ?

Message le Jeu Juil 15, 2010 13:48

Je vais m'intéresser à gettext que je n'ai jamais eu l'occasion de tester.

Jusqu'à présent j'utilisais également une base de données.
Dans la problématique, j'ai oublié de préciser que les textes devaient facilement être éditables / modifiables.

Merci pour vos réponses.


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8575
Inscription: 23 Nov 2005

Re: Comment gérez-vous le développement d'un site multilingue ?

Message le Jeu Juil 15, 2010 15:03

dorian53 a écrit:Jusqu'à présent j'utilisais également une base de données.


Je faisais également appel à une BDD quand j'ai commencé à bosser sur ce genre de problématique mais j'ai au final choisi les fichiers plats à la place, pour des questions de rapidité, et après avoir étudié comment fonctionnaient la plupart des CMS du marché sur ce même problème. Ca permet en tout cas de facilement mettre en place une zone d'admin qui permet à un administrateur de gérer lui-même ses traductions via un GUI ergonomique.

ericdebra
WRInaute discret
WRInaute discret
 
Messages: 71
Inscription: 25 Juin 2004

Re: Comment gérez-vous le développement d'un site multilingue ?

Message le Lun Déc 27, 2010 0:35

Hello,

J'ai justement comme projet de faire un site bilingue (fr, en), je me permets donc d'up ce sujet.

J'ai toujours une hésitation entre gettext et un simple tableau associatif, notamment à cause de ce benchmark où il semble que gettext soit lent : http://mel.melaxis.com/devblog/2006/04/10/benchmarking-php-localizatio ... st-enough/

Qu'en pensez-vous ?


spout
WRInaute accro
WRInaute accro
 
Messages: 4377
Inscription: 14 Mai 2003

Re: Comment gérez-vous le développement d'un site multilingue ?

Message le Lun Déc 27, 2010 10:32

Le benchmark a été fait juste sur 3 chaines à traduire...
C'est pas ce genre de benchmark qui me ferais changer d'avis pour gettext, quand je vois tout le temps gagné.


Aaarrrgggh
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 394
Inscription: 16 Mar 2009

Re: Comment gérez-vous le développement d'un site multilingue ?

Message le Lun Déc 27, 2010 15:27

Hello,

pour les textes "statiques", j'utilise de mon coté des fichiers CSV. A voir si c'est plus rapide ou pas que des gettext. Ce sont des fichiers assez lourds, alors je me tate pour bientôt pour faire des tests...

mais d'un point de vue maintenance, c'est très simple. Y a juste à avoir un éditeur txt ou tableur.

ZelkiN
WRInaute impliqué
WRInaute impliqué
 
Messages: 500
Inscription: 27 Juil 2007

Re: Comment gérez-vous le développement d'un site multilingue ?

Message le Mar Déc 28, 2010 12:32

J'ai essayé GETTEXT, j'ai essayé les tableaux de variables, chacun a ses pour et ses contres.

Pour modifier ou ajouter un texte a traduire gettext n'est pas super adapter (enfin moi j'ai trouvé) parcequ'il faut recompiler tout le fichier a chaque fois.

Pour les variables tableaux, beaucoup plus facile a mettre en place mais relativement lourde au chargement.


J'aurai une question, est ce que quelqu'un aurait trouver un moyen de mettre a jour les traductions gettext facilement sans recompiler en ssh a chaque fois ?

ericdebra
WRInaute discret
WRInaute discret
 
Messages: 71
Inscription: 25 Juin 2004

Re: Comment gérez-vous le développement d'un site multilingue ?

Message le Mar Déc 28, 2010 12:54

PoEdit recompile tout seul à priori, c'est un éditeur disponible sur plusieurs plates-formes.

Sinon je me suis mis à GetText, mais premier problème : les fichiers qui ne sont pas en UTF-8. Ils sont tous encodés en ANSI pour mon site et c'est du ISO-8859-1. J'ai beau mettre le --from-code pour la génération du .po avec xgettext en ssh, y me ressort mal les accents. Je vais pouvoir reconvertir tous mes fichiers en UTF-8 pour passer à ce charset o/

Edit: Charset modifié, par contre j'aurais une question concernant les traductions. Les msgid d'entrées sont des chaînes déjà en français, du coup ai-je besoin de faire des fichiers de traduction français également ? J'imagine que c'est plus rapide si je mets juste un fichier de traduction vide dans le répertoire non ? Ou il y a une procédure autre pour cela ?


spout
WRInaute accro
WRInaute accro
 
Messages: 4377
Inscription: 14 Mai 2003

Re: Comment gérez-vous le développement d'un site multilingue ?

Message le Mar Déc 28, 2010 14:30

ericdebra a écrit:PoEdit recompile tout seul à priori, c'est un éditeur disponible sur plusieurs plates-formes.

+1, il y a une option cochée par défaut: "Compiler automatiquement les fichiers .mo lors de la sauvegarde".


loran750
WRInaute passionné
WRInaute passionné
 
Messages: 2247
Inscription: 15 Mar 2005

Re: Comment gérez-vous le développement d'un site multilingue ?

Message le Mar Déc 28, 2010 16:36

Pour ma part : 4/ autre.

Ce matin, j'ai transformé pas 1 mais 2 sites Joomla en multilingue. Et encore, je l'ai fait par téléphone.
5 minutes après c'était plié.

Ok, on est loin de ce que tu veux mettre en place mais en ce qui me concerne, je trouve que le temps de paramétrage est à l'avantage du CMS : tu prends un Joomla existant ou pas, tu lui ajoutes le composant Joomfish (qui gère le multilingue = traductions des articles, menu, items, picto des langues sur la front, ...) et enfin le composant sh404SEF (pour la réécriture des URLs) et c'est terminé.

Je présume que c'est à peu près la même chose chez Drupal & Wordpress.

Voilà.


spout
WRInaute accro
WRInaute accro
 
Messages: 4377
Inscription: 14 Mai 2003

Re: Comment gérez-vous le développement d'un site multilingue ?

Message le Mar Déc 28, 2010 21:41

Dans Drupal & WP les chaînes à traduire de l'interface c'est en gettext.
Aucune idée pour les contenus multilingues, il y a-t-il un expert dans la salle ?


Julia41
WRInaute passionné
WRInaute passionné
 
Messages: 1765
Inscription: 31 Aoû 2007

Re: Comment gérez-vous le développement d'un site multilingue ?

Message le Mer Déc 29, 2010 11:08

Perso, un bon moment avec du en.php fr.php en array dedans.
Après passé en gettext, très performant et le gros avantage du "si pas traduit ça marche quand même".
Plus récemment à la facebook, ce qui permet à tous mes users de corriger/modifier quelque chose.
Ma fonction est un peu un remix du _('Phrase dans sa langue') qui fait en fait un SELECT du md5('phrase dans ma langue').
Ca permet des résultats pas cher dans des langues qu'on pensait pas, ainsi qu'une "notation" sympa.

Comment gérez-vous le développement d'un site multilingue ?

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités