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

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par dorian53, 10 Juillet 2010.

?

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

  1. En dur

    0 vote(s)
    0.0%
  2. En base de données

    0 vote(s)
    0.0%
  3. En fichier à plat

    0 vote(s)
    0.0%
  4. Autre

    0 vote(s)
    0.0%
  1. dorian53
    dorian53 WRInaute passionné
    Inscrit:
    10 Avril 2005
    Messages:
    1 909
    J'aime reçus:
    1
    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:
    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
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 136
    J'aime reçus:
    322
    Pour la petite histoire:

    A mes débuts en PHP, des define:
    fr.php:
    Code:
    <?php
    define('TXT_WELCOME', "Bonjour le monde");
    ?>
    
    en.php:
    Code:
    <?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:
    <?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:
    <?php echo _('Bonjour le monde');?>
    
    qui affichera tout simplement sans traduction:
    Code:
    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 ;)
     
  3. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 136
    J'aime reçus:
    322
    Pas d'autres interventions ?
    Qu'en penses-tu Dorian ?
     
  4. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 911
    J'aime reçus:
    75
    +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.
     
  5. dorian53
    dorian53 WRInaute passionné
    Inscrit:
    10 Avril 2005
    Messages:
    1 909
    J'aime reçus:
    1
    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.
     
  6. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 911
    J'aime reçus:
    75
    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.
     
  7. ericdebra
    ericdebra WRInaute discret
    Inscrit:
    25 Juin 2004
    Messages:
    60
    J'aime reçus:
    0
  8. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 136
    J'aime reçus:
    322
    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é.
     
  9. Aaarrrgggh
    Aaarrrgggh WRInaute occasionnel
    Inscrit:
    16 Mars 2009
    Messages:
    299
    J'aime reçus:
    0
    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.
     
  10. ZelkiN
    ZelkiN WRInaute occasionnel
    Inscrit:
    27 Juillet 2007
    Messages:
    463
    J'aime reçus:
    0
    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 ?
     
  11. ericdebra
    ericdebra WRInaute discret
    Inscrit:
    25 Juin 2004
    Messages:
    60
    J'aime reçus:
    0
    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 ?
     
  12. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 136
    J'aime reçus:
    322
    +1, il y a une option cochée par défaut: "Compiler automatiquement les fichiers .mo lors de la sauvegarde".
     
  13. loran750
    loran750 WRInaute passionné
    Inscrit:
    15 Mars 2005
    Messages:
    2 017
    J'aime reçus:
    0
    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à.
     
  14. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 136
    J'aime reçus:
    322
    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 ?
     
  15. Julia41
    Julia41 WRInaute passionné
    Inscrit:
    31 Août 2007
    Messages:
    1 779
    J'aime reçus:
    0
    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.
     
  16. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 361
    J'aime reçus:
    2
    J'utilise gettext pour les chaines "statiques" (les constantes, les affichages générés par fonction, etc) et une base de données pour le contenu proprement dit.
     
  17. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 136
    J'aime reçus:
    322
    Si quelqu'un à une idée pour faire une interface de traduction des fichiers gettext (.po) en PHP comme dans Drupal, je suis preneur.
    Un désavantage de PoEdit c'est qu'on ne peux pas mettre en parallèle les différentes traductions d'une chaine.
    J'ai trouvé ceci: http://mp-poedit.sourceforge.net/ mais c'est trop rudimentaire.
     
  18. reglysse
    reglysse WRInaute discret
    Inscrit:
    19 Avril 2006
    Messages:
    147
    J'aime reçus:
    0
    J'ai utilisé pendant longtemps des fichiers .php avec des tableaux de traductions.
    Depuis 6 mois j'ai développé mon propre système de gestion multilingue avec quasi le même fonctionnement que les fichiers de ressources en .net

    Pour chaque fichier j'ai des fichiers de traductions par langues, par exemple index.fr-fr.php et index.en-en.php

    Pour le contenu dynamique qui a besoin d'être traduit c'est en BDD.
     
Chargement...
Similar Threads - gérez développement multilingue Forum Date
Comment gérez-vous adsense et Core Web Vitals AdSense 4 Avril 2021
Comment gérez-vous votre fil d'ariane ? Débuter en référencement 14 Mai 2013
[jeu Web] gérez des studios de cinéma Demandes d'avis et de conseils sur vos sites 12 Mars 2012
Google Webmasters Tools : Créez et gérez vos moteurs de recherche personnalisés Google : l'entreprise, les sites web, les services 14 Octobre 2011
Comment gérez-vous la localisation ? Développement d'un site Web ou d'une appli mobile 2 Décembre 2010
Développement application mobile Développement d'un site Web ou d'une appli mobile 29 Janvier 2021
Conseils sites en cours de développement Débuter en référencement 2 Juillet 2019
VisBug : extension Chrome par Google, pour le développement Google : l'entreprise, les sites web, les services 16 Novembre 2018
Espace de developpement en multi-site chez ovh Administration d'un site Web 13 Août 2018
Nouveau type développement e-commerce Développement d'un site Web ou d'une appli mobile 25 Mai 2018