Bonjour tout le monde.
Je m’appelle Jean-Christophe Helary,
et aujourd’hui je vais vous parler
de la traduction des manuels Emacs avec OmegaT.
Merci de vous joindre à moi aujourd’hui.
La traduction dans le monde du logiciel libre
est un phénomène très important. Vous savez déjà
que la plupart des distributions Linux,
la plupart des logiciels,
la plupart des sites web
sont traduits par des dizaines de communautés
à l’aide de processus
et de formats de fichiers tous différents.
La traduction et la localisation
sont des choses que nous connaissons bien.
C’est un peu différent
pour la communauté Emacs.
Nous n’avons pas de processus de localisation
parce que c’est encore trop complexe
et parce que nous n’avons pas
encore les ressources nécessaires.
Néanmoins, nous pourrions traduire les manuels,
et traduire les manuels
apporterait probablement beaucoup
à la communauté Emacs dans son ensemble.
Quel est donc l’état des manuels ?
À ce jour, nous avons 182 fichiers
aux formats .texi et .org.
Nous avons plus de 2 millions de mots.
Nous avons plus de
50 millions de caractères.
C’est donc beaucoup de travail,
et il est clair qu’une personne ne suffira pas.
Quand on ouvre un fichier .texi
qu’est-ce qu’on y trouve ?
Eh bien, beaucoup de choses en fait
que les traducteurs
ne devraient pas avoir à traduire.
Ici, on peut voir que seul
le tout dernier segment,
la toute dernière phrase
doit être traduite.
Toutes ces choses « méta »
ne devraient pas être sous
les yeux du traducteur.
Comment faire face à cette situation ?
Pour les fichiers de code, nous avons
l’utilitaire gettext qui convertit
toutes les chaînes de traduisibles
dans un format traduisible,
qui est le format .po.
Ce format .po est omniprésent,
même dans l’industrie de la traduction
des logiciels non-libres.
Pour la documentation,
nous avons quelque chose de différent
qui s’appelle po4a,
l’abréviation de « po for all » (po pour tous).
Quand on utilise po4a
sur ces 182 fichiers .texi et .org,
qu’est-ce qu’on obtient ?
On obtient quelque chose de bien mieux.
Maintenant on a trois segments.
Ce n’est pas parfait, car,
comme vous pouvez le voir,
les deux premiers segments
ne sont pas à traduire.
Donc on peut encore
améliorer les choses.
Quand on met ces fichiers
dans OmegaT, on réduit considérablement
le nombre total de mots.
On a maintenant 50 % de mots en moins
et 23 % de caractères en moins à taper,
mais c’est toujours encore beaucoup de travail.
Je vais donc vous parler d’OmegaT maintenant
pour voir où il peut nous être utile.
OmegaT est un logiciel GPL3+, Java8+.
C’est un outil de Traduction Assistée par Ordinateur.
On abrège ça TAO.
La TAO est aux traducteurs
ce que les EDI sont aux programmeurs.
Elle exploite la puissance de l’ordinateur
pour automatiser notre travail,
qui consiste en recherche de références,
de correspondances, insertions automatiques,
et d’autres choses comme ça.
OmegaT n’est plus si jeune.
Il aura 20 ans l’année prochaine,
et à ce stade
nous avons environ 1,5 million de téléchargements
sur le site SourceForge
ce qui ne veut pas dire grand-chose
parce que cela inclut
les fichiers utilisés pour la localisation
les manuels, mais quand même
c’est un chiffre quand même important.
OmegaT est inclus dans
beaucoup de distributions Linux,
mais comme vous pouvez le voir ici,
il est surtout téléchargé sur Windows
car les traducteurs
travaillent principalement sous Windows.
OmegaT a un logo sympa
et un site sympa aussi,
et je vous invite vraiment à le visiter.
L’URL est omegat.org et vous y trouverez
toutes les informations dont vous avez besoin
ainsi que les téléchargements des versions Linux,
avec ou sans Java inclus.
Alors, qu’est-ce qu’OmegaT nous apporte ?
Les traducteurs professionnels doivent fournir
des traductions rapides, cohérentes,
et de qualité,
et nous devons disposer d’outils appropriés
pour y parvenir.
J’aimerais que po-mode fasse partie de nos outils,
mais ce n’est pas le cas,
et c’est bien dommage.
Nous devons donc utiliser ces outils de TAO.
Laissez-moi vous montrer à quoi ressemble OmegaT
quand j’ouvre ce projet que j’ai créé
pour cette présentation.
La fenêtre est assez impressionnante,
mais vous pouvez en fait modifier
toutes les parties selon vos besoins.
Je veux juste vous montrer
tout en même temps
pour vous donner une idée rapide de l’ensemble.
Vous avez différentes couleurs, fenêtres,
et tous ces espaces
ont des fonctions différentes
qui aident le traducteur,
et qui probablement ne vous sont
pas familières.
Je vais vous présenter
l’interface maintenant.
Tout d’abord, nous avons l’éditeur.
L’éditeur est composé de deux parties :
le segment courant,
qui est associé à un numéro,
et tous les autres segments,
au-dessus ou en dessous.
En haut de la fenêtre,
vous pouvez voir les trois premiers segments
qui étaient dans le fichier .po.
Le dernier ici, le quatrième, inclut
une insertion automatique de correspondance.
On appelle ce type de traductions
des « mémoires de traduction ».
OmegaT a inséré celle-ci automatiquement
parce que j’ai paramétré comme ça,
et pour ma sécurité, elle est insérée avec
le préfixe prédéfini « fuzzy »
que je devrai retirer
pour valider la traduction.
La fonctionnalité suivante est le glossaire.
Dans ce projet,
on a beaucoup de glossaires.
Certains sont pertinents, d’autres non.
Dans le segment que je suis en train de traduire
en ce moment, vous pouvez voir
des éléments soulignés.
Ce menu contextuel à droite
me permet d’entrer les termes au fur et à mesure que j’écris.
C’est une sorte de système d’insertion automatique
qui propose aussi des prédictions de l’historique,
des chaînes prédéfinies et d’autres choses comme ça.
Dans la partie à droite,
on a des informations de référence
qui viennent directement
des fichiers .po et .texi.
On a également des notes à partager
avec des collègues traducteurs,
et nous avons des chiffres qui me disent
qu’il me reste encore 143 000 segments à traduire
avant de terminer cette traduction.
Comme on le voit, il y a beaucoup de chaînes
que nous ne voulons vraiment pas avoir à saisir.
Par exemple, ces chaînes
sont des chaînes .texi typiques
que le traducteur
ne devrait vraiment pas avoir à saisir.
Nous allons donc devoir
faire quelque chose pour gérer ça.
On va devoir créer des
chaînes protégées
à l’aide d’expressions régulières,
afin que les chaînes puissent être visualisées
immédiatement dans le segment source,
saisies de manière semi-automatique
dans le segment cible,
et validables.
L’expression régulière que j’ai trouvée
pour définir la plupart des chaînes
est celle-ci,
et je ne suis pas un pro des regex
donc certains d’entre vous pourront me corriger.
Mais cette expression me donne
une définition suffisante
même si elle n’inclut pas encore
la syntaxe org-mode.
Donc maintenant on a toutes ces
chaînes spécifiques à .texi
que nous ne voulons pas toucher
affichées en gris.
En fait, vous avez peut-être remarqué
que j’ai un peu triché,
car ici j’ai ajouté les années
et le nom de la Free Software Foundation
à la regex précédente
pour vous montrer que vous pouvez protéger
vraiment n’importe quel type de chaîne.
On obtient maintenant
une visualisation des chaînes de caractères
que nous ne voulons pas toucher,
mais on doit encore les saisir toutes
dans la traduction.
Pour ça, on a le menu contextuel
que j’ai utilisé plus tôt avec le glossaire,
et on a également des rubriques
dans le menu d’édition
qui sont accompagnés de raccourcis
pour faciliter l’insertion des balises manquantes.
Enfin, et ce n’est pas le moins important,
nous pouvons maintenant valider nos entrées.
Ici, OmegaT me dit correctement
que j’ai raté 7 chaînes protégées.
Je n’ai entré que 1998,
mais il y avait cinq autres années,
la chaîne de copyright,
et le nom de la FSF.
Avec ce support presque natif
du format Texinfo,
on a beaucoup moins de choses à saisir,
et il y a beaucoup moins
d’erreurs potentielles.
Mais on est d’accord, c’est encore beaucoup de travail.
Ce qu’on aimerait maintenant
c’est de collaborer avec des collègues traducteurs,
et là, on doit savoir
qu’OmegaT est en fait
un client svn/git dissimulé,
et que les projets en équipe peuvent être hébergés
sur des plates-formes svn/git.
Les traducteurs n’ont pas besoin
de connaître le contrôle de version.
Ils ont juste besoin d’identifiants d’accès,
et OmegaT va commiter pour eux.
De cette façon, nous n’avons pas besoin d’utiliser
d’interfaces de traduction web laides
et peu ergonomiques
puisqu’on peut utiliser un outil
hors ligne professionnel.
Voici donc à quoi ressemble
la plateforme
où j’héberge ce projet.
Les dernières mises à jour datent d’il y a
20 jours et 30 secondes
quand j’ai créé cette présentation,
et vous pouvez voir que j’ai un partenaire
qui a travaillé avec moi sur le même ensemble de fichiers.
Bien qu’il semble que
que nous avons effectivement commité la traduction
sur la plateforme,
ce n’était pas nous, mais OmegaT.
OmegaT fait le gros du travail.
Il effectue régulièrement des sauvegardes et
se synchronise avec les serveurs.
Les traducteurs reçoivent régulièrement
les mises à jour de leurs collègues,
et quand il le faut,
OmegaT affiche un simple
dialogue de résolution des conflits.
Les traducteurs n’ont jamais à manipuler
svn ou git, jamais.
Et maintenant, nous pouvons envisager un avenir
pas si lointain
où les manuels seraient traduits
et éventuellement inclus
dans la distribution,
mais c’est un sujet
pour une autre présentation.
J’ai atteint la fin de cette session.
Merci encore d’y avoir participé.
Il y a beaucoup de sujets
que j’avais promis de ne pas aborder,
et je pense avoir tenu ma promesse.
Il va y avoir des questions-réponses maintenant
et j’ai aussi commencé
un fil de discussion sur cette session
samedi dernier, sur Reddit.
Vous pouvez me trouver sur les listes emacs-help
et emacs-devel,
alors n’hésitez pas à m’envoyer
vos questions et remarques.
Merci encore, et à bientôt !