Comment gérez-vous le développement d'un site multilingue ?
18 messages
• Page 1 sur 2 • 1, 2
-

dorian53 - WRInaute passionné

- Messages: 2215
- Inscription: 10 Avr 2005
Comment gérez-vous le développement d'un site multilingue ?
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 :
3/ Textes stockés dans des fichiers à plat : .ini, .xml, etc.
4/ Autre...
Merci,
Dorian
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

- Messages: 4377
- Inscription: 14 Mai 2003
Re: Comment gérez-vous le développement d'un site multilingue ?
Pour la petite histoire:
A mes débuts en PHP, des define:
fr.php:
en.php:
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.
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:
qui affichera tout simplement sans traduction:
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
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
-

UsagiYojimbo - WRInaute accro

- Messages: 8575
- Inscription: 23 Nov 2005
Re: Comment gérez-vous le développement d'un site multilingue ?
+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.
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é

- Messages: 2215
- Inscription: 10 Avr 2005
Re: Comment gérez-vous le développement d'un site multilingue ?
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.
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

- Messages: 8575
- Inscription: 23 Nov 2005
Re: Comment gérez-vous le développement d'un site multilingue ?
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

- Messages: 71
- Inscription: 25 Juin 2004
Re: Comment gérez-vous le développement d'un site multilingue ?
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 ?
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 ?
-

Aaarrrgggh - WRInaute occasionnel

- Messages: 394
- Inscription: 16 Mar 2009
Re: Comment gérez-vous le développement d'un site multilingue ?
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.
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é

- Messages: 500
- Inscription: 27 Juil 2007
Re: Comment gérez-vous le développement d'un site multilingue ?
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 ?
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

- Messages: 71
- Inscription: 25 Juin 2004
Re: Comment gérez-vous le développement d'un site multilingue ?
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 ?
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

- Messages: 4377
- Inscription: 14 Mai 2003
Re: Comment gérez-vous le développement d'un site multilingue ?
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é

- Messages: 2247
- Inscription: 15 Mar 2005
Re: Comment gérez-vous le développement d'un site multilingue ?
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à.
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à.
-

Julia41 - WRInaute passionné

- Messages: 1765
- Inscription: 31 Aoû 2007
Re: Comment gérez-vous le développement d'un site multilingue ?
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.
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.
18 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Développement d'un site multilingue, ma méthode.
- Comment gérez-vous la localisation ?
- Référenceurs : comment gérez-vous la Sandbox ?
- Comment gerez vous vos newsletters?
- Comment gérez-vous vos médias type image ?
- [référenceurs] comment gérez-vous les conflits d'intérêts?
- Emploi temps plein et Webmaster à côté : Vous gérez comment?
- Comment gerez vous les 10 1er jours de votre site ?
- Comment gérez vous vos hosts virtuels sur dédié ?
- Financement d'achat d'un site web monétisé, comment le gérez vous ?
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
