Publication de Anwiki 0.1.0 alpha 1

Posté par . Modéré par Benoît Sibaud.
4
14
sept.
2008
Internet
Après un an de développement par notre camarade anw, voici enfin la sortie de la première version de Anwiki (sous licence GNU GPL 3).

Anwiki est un projet destiné à gérer simplement les contenus multilingues. Il s'agit donc d'un wiki mais concentré sur les processus d'internationalisation et de traduction : traduction directement dans les pages du wiki, édition et internationalisation de code PHP, définition de contenus multilingues fortement structurés, architecture de composants modulaires.

Techniquement le programme est codé en PHP5/MySql ; il repose principalement sur un algorithme permettant de détecter les différences entre deux versions d'un document XML, et d'adapter les modifications aux traductions existantes, permettant ainsi de mettre à jour chaque bloc modifié.

Le projet est encore en version expérimentale, mais le développeur assure que le projet est assez mature pour que les fonctions de localisations soient testées par tout un chacun, afin d'effectuer des retours. Anwiki recherche également un designer, afin d'améliorer les modèles PHP, qui ne sont que très basiques et non conformes aux standards pour le moment. Ce projet est né il y a deux ans, suite aux recherches infructueuses de l'auteur dans le domaine de la gestion de contenus multilingues. Notre ami avait posté un message dans nos forums, afin de recueillir les informations de la communauté. Ses objectifs étaient alors :

« Idéalement, l'application devrait permettre :

  • De créer de nouvelles pages dans une langue de départ
  • De traduire une page existante vers une autre langue, et de définir son statut comme "traduction à jour"
  • Lors de l'édition d'une page dans la langue de départ, le statut des autres traductions de la page passe en "traduction obsolète"
  • Lors de l'édition d'une "traduction obsolète", visualisation d'un diff montrant les changements effectués dans la langue de départ depuis la dernière traduction de la page. Les traducteurs peuvent ainsi mettre à jour la traduction sans avoir à relire toute la page pour trouver ce qui a été modifié.
  • Si possible, une application en PHP  »

Mathieu détaille par ailleurs le fruit de ses recherches sur le site d'Anwiki :
  • Ce qu'il appelle « la solution de facilité » consiste à utiliser autant de sites en parallèle que de langues cibles. C'est assez aisé à mettre en place, mais la synchronisation des contenus l'est beaucoup moins. Cela nécessite une coordination rigoureuse entre les administrateurs, les éditeurs et les traducteurs.
  • L'externalisation de la traduction consiste à utiliser des systèmes dynamiques tel que gettext : cela permet au site web de rester synchronisé dans toutes les langues. Néanmoins ce système nécessite davantage de compétences techniques, aussi bien pour les administrateurs du site, que pour les éditeurs qui doivent externaliser les nouveaux contenus par gettext, et que pour les traducteurs qui doivent savoir gérer le format de fichier gettext.
  • L'utilisation d'un wiki ou CMS gérant les contenus multilingues : Anwiki n'est pas le premier dans la gestion de contenus multilingues, néanmoins les solutions existantes souffrent de nombreux défauts. En effet la plupart des CMS ne sont pas conçus d'origine pour gérer les contenus multilingues, ils se servent le plus souvent d'une extension pour s'en charger. La plupart du temps, les contenus ne sont pas synchronisés avec la source, et les traducteurs doivent donc analyser les différences entre la source et la traduction existante afin de vérifier si des modifications ont eue lieu, ce qui est particulièrement difficile et fastidieux sans système de diff.

Anwiki permet de faire face à toutes ces problématiques grâce à des fonctionnalités très complètes :
  • Pour les administrateurs, gestion des contenus et des modèles, internationalisation des contenus dynamiques dont les scripts PHP, suivi de l'avancement des traductions, gestions des droits des utilisateurs
  • Pour les éditeurs, création de nouveaux contenus à partir de modèles, édition collaborative croisée sur plusieurs langues (avec verrous AJAX pour les conflits), mise à jour synchronisée de l'ensemble des traductions
  • Pour les traducteurs, liste des contenus non traduits ou partiellement, traduction à la volée : un simple clic sur une phrase non traduite permet son édition immédiate dans la langue appropriée, traduction collaborative

Pour plus de détails sur les fonctionnalités d'Anwiki, vous pouvez consulter cette page d'où sont repris les exemples ci-dessus, ainsi que celle listant toutes les fonctionnalités d'Anwiki.

Une préversion a déjà été installée il y a plusieurs mois pour servir de base au site web Ulteo. Votre serviteur, traducteur de son état, a donc pu s'en servir allègrement grâce à Jéremy Desvages de l'équipe Ulteo. Une fois accrédité traducteur, vous disposez d'un menu supplémentaire à côté de la zone d'identification ; ce menu vous permet d'accéder aux pages non traduites, aux dernières modifications effectuées sur le site et au plan du site (ces deux dernières options peuvent être triées selon des critères de langue et de catégories).
Sur chaque page vous disposez également d'un menu spécifique vous permettant d'activer le mode d'édition. Dans ce mode, la disposition de la page ne change pas mais le texte est segmenté en zones de traduction. En cliquant dessus, une boite d'édition (probablement réalisée grâce à Ajax) vous permet de les traduire, et de passer en revue l'ensemble des chaînes grâce à des boutons précédent/suivant. Vous pouvez également traduire en lot une chaîne particulière grâce à un bouton permettant d'appliquer les modifications sur la chaîne à d'autres pages.
  • # Démo en ligne

    Posté par . Évalué à 6.

    Merci pour cet excellent résumé, je ne m'attendais pas à être publié si rapidement :-)
    J'ajoute un lien vers une démo en ligne qui vous permet de tester les fonctions multilingues ( édition, traduction, gestion des contenus) :
    http://demo.anwiki.com
    • [^] # Re: Démo en ligne

      Posté par (page perso) . Évalué à 1.

      Tout d'abord merci pour ton travail qui a l'air vraiment intérréssant. Ensuite je n'ai pas pu testé car le lien renvoi une erreur 404.

      Le lien redirige vers http://demo.anwiki.com/wait.html et cette page n'existe pas.
      • [^] # Re: Démo en ligne

        Posté par . Évalué à 2.

        Effectivement, une ancienne règle de filtrage était encore active... ça devrait passer maintenant.
        N'hésitez pas à proposer vos idées d'amélioration, le mode de fonctionnement du système n'est pas encore figé. Je réfléchis notamment à la possibilité d'intégrer un processus de relecture/validation. Actuellement tous les traducteurs sont au même niveau, le dernier qui édite l'emporte.
    • [^] # Re: Démo en ligne

      Posté par (page perso) . Évalué à 4.

      la demo est en panne à 14h46.

      Je trouve l'idée interessante, d'autant que le mulitlinguisme, je suis en plein dedans sur mon site.

      Pour avoir par la passé traduit quelques softs (jpilot en catalan, plus récemment mactravelrecord(MTR)), je trouve que ce qui manque le plus, c'est un vrai soft de traduction assistée en php, notamment pour les CMS (xoops pour moi).

      Je m'explique : pour MTR, j'ai utilisé Lingua, sous mac. Rapide, léger, avec possibilité de visualiser la traduction en temps réel, et faire les modifs facilement.
      En plus, on voit tout de suite, ce qui manque.
      Pour Jpilot, j'avais utilisé Kbabel de mémoire.

      Là, pour xoops, et ses modules par exemple, il faut se fader l'édition de tous les fichiers PHP avec un éditeur, et c'est un peu rébarbatif.
      De plus, on en reviens souvent à traduire les mêmes expressions (soumettre, valider, répertoire, date, heure, ....).

      Toujours dans l'idée de traduction, et pour compléter mon post, l'idée développée par http://www.softcatala.org d'un guide de style et traduction est vraiment très importante.
      http://www.softcatala.org/projectes/eines/guiaestil/guiaesti(...)
      ça uniformise un peu les traductions...
      • [^] # Re: Démo en ligne

        Posté par . Évalué à 3.

        Toujours dans l'idée de traduction, et pour compléter mon post, l'idée développée par http://www.softcatala.org d'un guide de style et traduction est vraiment très importante.
        http://www.softcatala.org/projectes/eines/guiaestil/guiaesti(...)
        ça uniformise un peu les traductions...


        Très intéressant ce guide. Nous avons également différents guides disponibles en français, sur traduc.org. L'un des plus intéressant est le Guide stylistique partagé par Sun Microsystems, http://traduc.org/gnomefr/GuideStylistique
        Concernant l'harmonisation des traductions il est vrai que c'est un grand chantier en mettre en œuvre, je pense qu'un outil permettant d'analyser une grosse quantité de fichiers po/xliff et donnant des probabilités sur les différentes traductions d'une même chaine serait intéressant, mais je ne connais pas de tel logiciel. La génération automatique de mémoire de traduction au format TMX est aussi une piste, mais je ne connais pas grand chose à ces outils non plus.
        • [^] # Re: Démo en ligne

          Posté par (page perso) . Évalué à 4.

          Pour la traduction, il y a pas mal de projets libres qui émergent :
          - entre https://linuxfr.org//2008/05/07/24038.html le projet Shtooka pour l'audio
          - et https://linuxfr.org//2008/03/07/23811.html le projet Apertium pour la traduction automatique (catalan, espagnol, français, un peu d'esperanto)
          • [^] # Re: Démo en ligne

            Posté par (page perso) . Évalué à 2.

            ah ben je ne connaissais pas Apertium.
            je viens de tester quelques phrases entre le français et le catalan. Le catalan utilisé est plutôt matiné de valencien (normal, le projet est porté depuis là-bas).
            Autre truc rigolo: le traducteur en ligne ignore le mot... "internet".

            En fait, je pensais plus à une appli intégrée directement au CMS lui-même.

            parce que pour traduire un truc comme ça :

            <?php
            // $Id: misc.php 2 2005-11-02 18:23:29Z skalpa $
            define("_MSC_YOURNAMEC","Your Name: ");
            define("_MSC_YOUREMAILC","Your Email: ");
            define("_MSC_FRIENDNAMEC","Friend Name: ");
            define("_MSC_FRIENDEMAILC","Friend Email: ");
            define("_MSC_RECOMMENDSITE","Recommend this Site to a Friend");
            // %s is your site name
            define("_MSC_INTSITE","Interesting Site: %s");
            define("_MSC_REFERENCESENT","The reference to our site has been sent to your friend. Thanks!");
            define("_MSC_ENTERYNAME","Please enter your name");
            define("_MSC_ENTERFNAME","Please enter your friend's name");
            define("_MSC_ENTERFMAIL","Please enter your friend's email address");
            define("_MSC_NEEDINFO","You need to enter required info!");
            define("_MSC_INVALIDEMAIL1","The email address you provided is not a valid address.");
            define("_MSC_INVALIDEMAIL2","Please check the address and try again.");

            define("_MSC_AVAVATARS","Available Avatars");

            define("_MSC_SMILIES","Smilies");
            define("_MSC_CLICKASMILIE","Click a smilie to insert it into your message.");
            define("_MSC_CODE","Code");
            define("_MSC_EMOTION","Emotion");
            ?>


            c'est quand même pas évident de le faire gober à Apertium, hein...

            Par contre, je garde ton lien pour mes articles... ça va me simplifier la tâche! :D
            • [^] # Re: Démo en ligne

              Posté par . Évalué à 3.

              Pour organiser une traduction collaborative de fichiers tels que celui que tu as cité (php, po...), voici un système qu'on utilise pour traduire Anwiki lui-même, mais aussi des applis externes.
              Ca demande un minimum de temps à mettre en place, mais ensuite c'est très efficace :

              1) Import initial des fichiers de trad vers Anwiki :
              Il s'agit de faire un script qui va rechercher tous les fichiers de trad dans une langue donnée, en extraire une liste d'associations clés-valeurs et les injecter dans Anwiki.

              2) Traduction collaborative des fichiers :
              Les traducteurs qui se connectent à Anwiki voient et traduisent ces contenus exactement comme ils le font pour autres contenus.
              De plus, aucun risque qu'un traducteur "casse" ou détourne un fichier, ou que des chaines soient oubliées, vu qu'on édite un contenu structuré et synchronisé.
              J'ai repris ton exemple ici : http://demo.anwiki.com/fr/trfile (passe en mode "translate", puis "edit")

              3) Export des traductions :
              Un script va retransformer les contenus traduits d'Anwiki vers le format initial des fichiers de trad.
              Cet export peut être déclenché dès qu'un traducteur enregistre une modification, ou simplement se faire manuellement.

              4) Mise à jour des fichiers de traduction originaux :
              Lorsque les fichiers de traduction originaux ont changé, on réexécute le script d'import réalisé en 1).
              Ce script va repérer qu'ils ont déjà été importés, et va faire une mise à jour "intelligente", exactement comme si tu éditais les contenus depuis Anwiki.
              Il va repérer les changements effectués, et resynchroniser en conséquence les traductions déjà effectuées.
              Les clés nouvelles ou modifiées seront marquées comme non traduites, les clés supprimées seront supprimées des traductions.
              S'il y a des nouvelles chaînes à traduire, les traducteurs seront alertés par RSS et repassent à l'étape 2).

              Pour la réalisation du script évoqué en 1), on a un script générique qu'il suffit d'étendre par héritage, pour indiquer :
              - comment trouver les fichiers de trad sur le disque (spécifique à chaque usage)
              - comment extraire les associations clés-valeurs, et comment effectuer l'opération inverse pour exporter les traductions. Le script sait déjà le faire pour les tableaux php et les fichiers po.

              Ce script n'est pas inclus dans la release, il sera distribué à part en tant que composant.
  • # Ca ressemble a wiclear en mieux !

    Posté par (page perso) . Évalué à 1.

    Hello,

    j'avais essaye de faire plus ou moins la meme chose, et ca a donne wiclear (http://wiclear.free.fr). Sauf que ca fait une bonne annee que je ne travaille plus dessus (plus le temps, plus la motivation).
    Dommage de s'etre "loupe", ca aurait pu donner des synergies interessantes.

    Un mot sur wiclear tout de meme : c'est un wiki, il y a une notion de langue maitre et de langues secondaires. Lorsque tu cree une page, c'est forcement d'abord dans la langue maitre. Tu peux ensuite traduire ta page dans une langue secondaire.
    L'admin est responsable des langues "autorisees".
    Il n'y a pas de notion de suivi des traductions. C'etait plus ou moins prevu grace a un systeme de meta donnees (en place), ne restait plus qu'a faire le plugin s'adossant aux meta donnees pour permettre le suivi des traductions.
    Avec ca, il y a une notion d'arborescence : une page est forcement fille d'une autre page. De cette facon, il n'y a pas de pages orphelines.
    Au niveau presentation, tu es libre de mettre en avant ou pas cette arborescence.
    Wiclear est themable, le moteur est tout petit et est cense donner les briques de bases pour batir des plugins ajoutant d'autres fonctionalites "a l'exterieur" pour conserver un code petit et simple.

    Vala, A+

    David

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.