WEBVTT 00:01.280 --> 00:00:02.560 Bonjour tout le monde. 00:02.560 --> 00:00:04.400 Je m’appelle Jean-Christophe Helary, 00:00:04.400 --> 00:00:05.680 et aujourd’hui je vais vous parler 00:00:05.680 --> 00:00:08.320 de la traduction des manuels Emacs avec OmegaT. 00:00:08.320 --> 00:00:10.960 Merci de vous joindre à moi aujourd’hui. 00:10.960 --> 00:00:12.880 La traduction dans le monde du logiciel libre 00:12.880 --> 00:00:15.040 est un phénomène très important. Vous savez déjà 00:15.040 --> 00:00:17.119 que la plupart des distributions Linux, 00:17.119 --> 00:00:18.720 la plupart des logiciels, 00:00:18.720 --> 00:00:19.920 la plupart des sites web 00:00:19.920 --> 00:00:22.320 sont traduits par des dizaines de communautés 00:00:22.320 --> 00:00:23.439 à l’aide de processus 00:23.439 --> 00:00:24.880 et de formats de fichiers tous différents. 00:24.880 --> 00:00:27.359 La traduction et la localisation 00:27.359 --> 00:00:29.599 sont des choses que nous connaissons bien. 00:29.599 --> 00:00:30.400 C’est un peu différent 00:00:30.400 --> 00:00:32.160 pour la communauté Emacs. 00:32.160 --> 00:00:34.079 Nous n’avons pas de processus de localisation 00:34.079 --> 00:00:35.200 parce que c’est encore trop complexe 00:00:35.200 --> 00:00:35.920 et parce que nous n’avons pas 00:00:35.920 --> 00:00:37.600 encore les ressources nécessaires. 00:37.600 --> 00:00:39.920 Néanmoins, nous pourrions traduire les manuels, 00:00:39.920 --> 00:00:41.200 et traduire les manuels 00:00:41.200 --> 00:00:42.399 apporterait probablement beaucoup 00:00:42.399 --> 00:00:45.600 à la communauté Emacs dans son ensemble. 00:45.600 --> 00:00:47.920 Quel est donc l’état des manuels ? 00:47.920 --> 00:00:51.199 À ce jour, nous avons 182 fichiers 00:51.199 --> 00:00:54.160 aux formats .texi et .org. 00:54.160 --> 00:00:56.559 Nous avons plus de 2 millions de mots. 00:56.559 --> 00:00:57.360 Nous avons plus de 00:00:57.360 --> 00:00:59.039 50 millions de caractères. 00:00:59.039 --> 00:01:00.559 C’est donc beaucoup de travail, 01:00.559 --> 00:01:04.559 et il est clair qu’une personne ne suffira pas. 01:04.559 --> 00:01:06.159 Quand on ouvre un fichier .texi 00:01:06.159 --> 00:01:07.760 qu’est-ce qu’on y trouve ? 01:07.760 --> 00:01:09.439 Eh bien, beaucoup de choses en fait 01:09.439 --> 00:01:10.560 que les traducteurs 00:01:10.560 --> 00:01:12.400 ne devraient pas avoir à traduire. 01:12.400 --> 00:01:13.680 Ici, on peut voir que seul 00:01:13.680 --> 00:01:15.040 le tout dernier segment, 00:01:15.040 --> 00:01:16.400 la toute dernière phrase 00:01:16.400 --> 00:01:18.080 doit être traduite. 01:18.080 --> 00:01:19.360 Toutes ces choses « méta » 00:01:19.360 --> 00:01:20.240 ne devraient pas être sous 00:01:20.240 --> 00:01:24.479 les yeux du traducteur. 01:24.479 --> 00:01:26.720 Comment faire face à cette situation ? 01:26.720 --> 00:01:27.680 Pour les fichiers de code, nous avons 00:01:27.680 --> 00:01:29.360 l’utilitaire gettext qui convertit 00:01:29.360 --> 00:01:30.640 toutes les chaînes de traduisibles 00:01:30.640 --> 00:01:32.079 dans un format traduisible, 00:01:32.079 --> 00:01:33.840 qui est le format .po. 01:33.840 --> 00:01:35.520 Ce format .po est omniprésent, 00:01:35.520 --> 00:01:36.400 même dans l’industrie de la traduction 00:01:36.400 --> 00:01:38.720 des logiciels non-libres. 01:38.720 --> 00:01:39.520 Pour la documentation, 00:01:39.520 --> 00:01:40.720 nous avons quelque chose de différent 00:01:40.720 --> 00:01:42.000 qui s’appelle po4a, 00:01:42.000 --> 00:01:45.119 l’abréviation de « po for all » (po pour tous). 01:45.119 --> 00:01:46.399 Quand on utilise po4a 00:01:46.399 --> 00:01:49.200 sur ces 182 fichiers .texi et .org, 00:01:49.200 --> 00:01:50.479 qu’est-ce qu’on obtient ? 01:50.479 --> 00:01:52.640 On obtient quelque chose de bien mieux. 01:52.640 --> 00:01:54.799 Maintenant on a trois segments. 01:54.799 --> 00:01:55.759 Ce n’est pas parfait, car, 00:01:55.759 --> 00:01:56.399 comme vous pouvez le voir, 00:01:56.399 --> 00:01:57.280 les deux premiers segments 00:01:57.280 --> 00:01:58.880 ne sont pas à traduire. 01:58.880 --> 00:01:59.520 Donc on peut encore 00:01:59.520 --> 00:02:02.479 améliorer les choses. 02:02.479 --> 00:02:04.960 Quand on met ces fichiers 00:02:04.960 --> 00:02:07.119 dans OmegaT, on réduit considérablement 00:02:07.119 --> 00:02:08.800 le nombre total de mots. 02:08.800 --> 00:02:11.360 On a maintenant 50 % de mots en moins 00:02:11.360 --> 00:02:14.239 et 23 % de caractères en moins à taper, 02:14.239 --> 00:02:15.680 mais c’est toujours encore beaucoup de travail. 00:02:15.680 --> 00:02:17.599 Je vais donc vous parler d’OmegaT maintenant 00:02:17.599 --> 00:02:22.239 pour voir où il peut nous être utile. 02:22.239 --> 00:02:25.440 OmegaT est un logiciel GPL3+, Java8+. 02:25.440 --> 00:02:27.599 C’est un outil de Traduction Assistée par Ordinateur. 02:27.599 --> 00:02:29.440 On abrège ça TAO. 02:29.440 --> 00:02:30.720 La TAO est aux traducteurs 00:02:30.720 --> 00:02:33.280 ce que les EDI sont aux programmeurs. 02:33.280 --> 00:02:35.040 Elle exploite la puissance de l’ordinateur 00:02:35.040 --> 00:02:36.480 pour automatiser notre travail, 00:02:36.480 --> 00:02:38.400 qui consiste en recherche de références, 00:02:38.400 --> 00:02:40.800 de correspondances, insertions automatiques, 00:02:40.800 --> 00:02:44.080 et d’autres choses comme ça. 02:44.080 --> 00:02:46.319 OmegaT n’est plus si jeune. 02:46.319 --> 00:02:48.319 Il aura 20 ans l’année prochaine, 02:48.319 --> 00:02:48.959 et à ce stade 00:02:48.959 --> 00:02:51.440 nous avons environ 1,5 million de téléchargements 00:02:51.440 --> 00:02:53.200 sur le site SourceForge 00:02:53.200 --> 00:02:54.080 ce qui ne veut pas dire grand-chose 00:02:54.080 --> 00:02:55.040 parce que cela inclut 00:02:55.040 --> 00:02:56.480 les fichiers utilisés pour la localisation 00:02:56.480 --> 00:02:57.920 les manuels, mais quand même 00:02:57.920 --> 00:02:59.599 c’est un chiffre quand même important. 02:59.599 --> 00:03:00.720 OmegaT est inclus dans 00:03:00.720 --> 00:03:02.400 beaucoup de distributions Linux, 00:03:02.400 --> 00:03:03.680 mais comme vous pouvez le voir ici, 03:03.680 --> 00:03:05.920 il est surtout téléchargé sur Windows 00:03:05.920 --> 00:03:06.800 car les traducteurs 00:03:06.800 --> 00:03:09.680 travaillent principalement sous Windows. 03:09.680 --> 00:03:11.120 OmegaT a un logo sympa 00:03:11.120 --> 00:03:12.080 et un site sympa aussi, 00:03:12.080 --> 00:03:13.920 et je vous invite vraiment à le visiter. 00:03:13.920 --> 00:03:16.159 L’URL est omegat.org et vous y trouverez 03:16.159 --> 00:03:17.280 toutes les informations dont vous avez besoin 00:03:17.280 --> 00:03:19.040 ainsi que les téléchargements des versions Linux, 00:03:19.040 --> 00:03:22.080 avec ou sans Java inclus. 03:22.080 --> 00:03:24.799 Alors, qu’est-ce qu’OmegaT nous apporte ? 03:24.799 --> 00:03:26.560 Les traducteurs professionnels doivent fournir 03:26.560 --> 00:03:27.680 des traductions rapides, cohérentes, 00:03:27.680 --> 00:03:29.519 et de qualité, 03:29.519 --> 00:03:30.720 et nous devons disposer d’outils appropriés 00:03:30.720 --> 00:03:32.159 pour y parvenir. 00:03:32.159 --> 00:03:34.239 J’aimerais que po-mode fasse partie de nos outils, 00:03:34.239 --> 00:03:35.120 mais ce n’est pas le cas, 03:35.120 --> 00:03:36.560 et c’est bien dommage. 03:36.560 --> 00:03:39.760 Nous devons donc utiliser ces outils de TAO. 03:39.760 --> 00:03:41.440 Laissez-moi vous montrer à quoi ressemble OmegaT 03:41.440 --> 00:03:43.120 quand j’ouvre ce projet que j’ai créé 03:43.120 --> 00:03:45.200 pour cette présentation. 03:45.200 --> 00:03:46.640 La fenêtre est assez impressionnante, 00:03:46.640 --> 00:03:47.760 mais vous pouvez en fait modifier 00:03:47.760 --> 00:03:49.519 toutes les parties selon vos besoins. 03:49.519 --> 00:03:50.400 Je veux juste vous montrer 00:03:50.400 --> 00:03:51.120 tout en même temps 00:03:51.120 --> 00:03:53.680 pour vous donner une idée rapide de l’ensemble. 03:53.680 --> 00:03:55.200 Vous avez différentes couleurs, fenêtres, 00:03:55.200 --> 00:03:55.920 et tous ces espaces 00:03:55.920 --> 00:03:57.120 ont des fonctions différentes 03:57.120 --> 00:03:58.560 qui aident le traducteur, 00:03:58.560 --> 00:03:59.360 et qui probablement ne vous sont 00:03:59.360 --> 00:04:02.879 pas familières. 04:02.879 --> 00:04:04.080 Je vais vous présenter 00:04:04.080 --> 00:04:05.680 l’interface maintenant. 04:05.680 --> 00:04:07.519 Tout d’abord, nous avons l’éditeur. 04:07.519 --> 00:04:09.439 L’éditeur est composé de deux parties : 04:09.439 --> 00:04:10.480 le segment courant, 00:04:10.480 --> 00:04:12.319 qui est associé à un numéro, 00:04:12.319 --> 00:04:13.519 et tous les autres segments, 00:04:13.519 --> 00:04:15.840 au-dessus ou en dessous. 04:15.840 --> 00:04:16.720 En haut de la fenêtre, 00:04:16.720 --> 00:04:18.720 vous pouvez voir les trois premiers segments 00:04:18.720 --> 00:04:20.799 qui étaient dans le fichier .po. 04:20.799 --> 00:04:22.880 Le dernier ici, le quatrième, inclut 00:04:22.880 --> 00:04:28.720 une insertion automatique de correspondance. 04:28.720 --> 00:04:30.880 On appelle ce type de traductions 04:30.880 --> 00:04:32.720 des « mémoires de traduction ». 04:32.720 --> 00:04:35.280 OmegaT a inséré celle-ci automatiquement 00:04:35.280 --> 00:04:37.120 parce que j’ai paramétré comme ça, 04:37.120 --> 00:04:38.560 et pour ma sécurité, elle est insérée avec 00:04:38.560 --> 00:04:40.639 le préfixe prédéfini « fuzzy » 00:04:40.639 --> 00:04:41.919 que je devrai retirer 00:04:41.919 --> 00:04:44.880 pour valider la traduction. 04:44.880 --> 00:04:47.919 La fonctionnalité suivante est le glossaire. 04:47.919 --> 00:04:48.479 Dans ce projet, 00:04:48.479 --> 00:04:50.160 on a beaucoup de glossaires. 00:04:50.160 --> 00:04:52.560 Certains sont pertinents, d’autres non. 04:52.560 --> 00:04:53.919 Dans le segment que je suis en train de traduire 00:04:53.919 --> 00:04:55.199 en ce moment, vous pouvez voir 00:04:55.199 --> 00:04:57.520 des éléments soulignés. 04:57.520 --> 00:04:59.040 Ce menu contextuel à droite 00:04:59.040 --> 00:05:02.240 me permet d’entrer les termes au fur et à mesure que j’écris. 05:02.240 --> 00:05:04.639 C’est une sorte de système d’insertion automatique 00:05:04.639 --> 00:05:07.039 qui propose aussi des prédictions de l’historique, 00:05:07.039 --> 00:05:14.479 des chaînes prédéfinies et d’autres choses comme ça. 05:14.479 --> 00:05:15.440 Dans la partie à droite, 00:05:15.440 --> 00:05:17.120 on a des informations de référence 00:05:17.120 --> 00:05:18.240 qui viennent directement 00:05:18.240 --> 00:05:21.440 des fichiers .po et .texi. 05:21.440 --> 00:05:23.440 On a également des notes à partager 00:05:23.440 --> 00:05:25.759 avec des collègues traducteurs, 05:25.759 --> 00:05:28.080 et nous avons des chiffres qui me disent 00:05:28.080 --> 00:05:31.199 qu’il me reste encore 143 000 segments à traduire 00:05:31.199 --> 00:05:35.280 avant de terminer cette traduction. 05:35.280 --> 00:05:37.120 Comme on le voit, il y a beaucoup de chaînes 05:37.120 --> 00:05:40.000 que nous ne voulons vraiment pas avoir à saisir. 05:40.000 --> 00:05:42.160 Par exemple, ces chaînes 00:05:42.160 --> 00:05:43.840 sont des chaînes .texi typiques 00:05:43.840 --> 00:05:45.039 que le traducteur 00:05:45.039 --> 00:05:46.479 ne devrait vraiment pas avoir à saisir. 00:05:46.479 --> 00:05:47.360 Nous allons donc devoir 00:05:47.360 --> 00:05:50.400 faire quelque chose pour gérer ça. 05:50.400 --> 00:05:51.600 On va devoir créer des 00:05:51.600 --> 00:05:52.479 chaînes protégées 00:05:52.479 --> 00:05:54.400 à l’aide d’expressions régulières, 05:54.400 --> 00:05:56.800 afin que les chaînes puissent être visualisées 00:05:56.800 --> 00:05:59.120 immédiatement dans le segment source, 05:59.120 --> 00:06:00.479 saisies de manière semi-automatique 00:06:00.479 --> 00:06:01.680 dans le segment cible, 00:06:01.680 --> 00:06:04.479 et validables. 06:04.479 --> 00:06:06.479 L’expression régulière que j’ai trouvée 06:06.479 --> 00:06:08.160 pour définir la plupart des chaînes 00:06:08.160 --> 00:06:09.600 est celle-ci, 06:09.600 --> 00:06:11.120 et je ne suis pas un pro des regex 00:06:11.120 --> 00:06:13.360 donc certains d’entre vous pourront me corriger. 00:06:13.360 --> 00:06:14.560 Mais cette expression me donne 00:06:14.560 --> 00:06:15.919 une définition suffisante 00:06:15.919 --> 00:06:17.919 même si elle n’inclut pas encore 00:06:17.919 --> 00:06:20.960 la syntaxe org-mode. 06:20.960 --> 00:06:22.344 Donc maintenant on a toutes ces 00:06:22.344 --> 00:06:23.440 chaînes spécifiques à .texi 00:06:23.440 --> 00:06:24.960 que nous ne voulons pas toucher 06:24.960 --> 00:06:26.100 affichées en gris. 00:06:26.100 --> 00:06:27.680 En fait, vous avez peut-être remarqué 00:06:27.680 --> 00:06:28.479 que j’ai un peu triché, 06:28.479 --> 00:06:30.319 car ici j’ai ajouté les années 00:06:30.319 --> 00:06:32.000 et le nom de la Free Software Foundation 00:06:32.000 --> 00:06:34.000 à la regex précédente 00:06:34.000 --> 00:06:35.520 pour vous montrer que vous pouvez protéger 00:06:35.520 --> 00:06:38.560 vraiment n’importe quel type de chaîne. 06:38.560 --> 00:06:39.520 On obtient maintenant 00:06:39.520 --> 00:06:41.360 une visualisation des chaînes de caractères 00:06:41.360 --> 00:06:43.440 que nous ne voulons pas toucher, 06:43.440 --> 00:06:45.440 mais on doit encore les saisir toutes 00:06:45.440 --> 00:06:46.880 dans la traduction. 06:46.880 --> 00:06:48.319 Pour ça, on a le menu contextuel 00:06:48.319 --> 00:06:50.400 que j’ai utilisé plus tôt avec le glossaire, 00:06:50.400 --> 00:06:51.520 et on a également des rubriques 00:06:51.520 --> 00:06:52.400 dans le menu d’édition 00:06:52.400 --> 00:06:53.919 qui sont accompagnés de raccourcis 00:06:53.919 --> 00:06:57.199 pour faciliter l’insertion des balises manquantes. 06:57.199 --> 00:06:58.800 Enfin, et ce n’est pas le moins important, 00:06:58.800 --> 00:07:00.800 nous pouvons maintenant valider nos entrées. 00:07:00.800 --> 00:07:02.479 Ici, OmegaT me dit correctement 00:07:02.479 --> 00:07:05.759 que j’ai raté 7 chaînes protégées. 07:05.759 --> 00:07:07.599 Je n’ai entré que 1998, 00:07:07.599 --> 00:07:09.280 mais il y avait cinq autres années, 00:07:09.280 --> 00:07:10.479 la chaîne de copyright, 00:07:10.479 --> 00:07:14.240 et le nom de la FSF. 07:14.240 --> 00:07:15.970 Avec ce support presque natif 00:07:15.970 --> 00:07:16.960 du format Texinfo, 00:07:16.960 --> 00:07:18.880 on a beaucoup moins de choses à saisir, 07:18.880 --> 00:07:19.919 et il y a beaucoup moins 00:07:19.919 --> 00:07:21.120 d’erreurs potentielles. 00:07:21.120 --> 00:07:25.199 Mais on est d’accord, c’est encore beaucoup de travail. 07:25.199 --> 00:07:26.319 Ce qu’on aimerait maintenant 00:07:26.319 --> 00:07:27.840 c’est de collaborer avec des collègues traducteurs, 00:07:27.840 --> 00:07:28.720 et là, on doit savoir 00:07:28.720 --> 00:07:29.840 qu’OmegaT est en fait 00:07:29.840 --> 00:07:32.080 un client svn/git dissimulé, 00:07:32.080 --> 00:07:34.240 et que les projets en équipe peuvent être hébergés 07:34.240 --> 00:07:36.319 sur des plates-formes svn/git. 07:36.319 --> 00:07:37.199 Les traducteurs n’ont pas besoin 00:07:37.199 --> 00:07:38.880 de connaître le contrôle de version. 00:07:38.880 --> 00:07:40.720 Ils ont juste besoin d’identifiants d’accès, 00:07:40.720 --> 00:07:42.400 et OmegaT va commiter pour eux. 00:07:42.400 --> 00:07:44.080 De cette façon, nous n’avons pas besoin d’utiliser 00:07:44.080 --> 00:07:45.759 d’interfaces de traduction web laides 00:07:45.759 --> 00:07:47.199 et peu ergonomiques 00:07:47.199 --> 00:07:48.800 puisqu’on peut utiliser un outil 00:07:48.800 --> 00:07:51.440 hors ligne professionnel. 07:51.440 --> 00:07:52.479 Voici donc à quoi ressemble 00:07:52.479 --> 00:07:54.160 la plateforme 00:07:54.160 --> 00:07:55.919 où j’héberge ce projet. 07:55.919 --> 00:07:57.199 Les dernières mises à jour datent d’il y a 00:07:57.199 --> 00:07:58.639 20 jours et 30 secondes 00:07:58.639 --> 00:08:00.720 quand j’ai créé cette présentation, 08:00.720 --> 00:08:02.479 et vous pouvez voir que j’ai un partenaire 00:08:02.479 --> 00:08:04.639 qui a travaillé avec moi sur le même ensemble de fichiers. 08:04.639 --> 00:08:05.520 Bien qu’il semble que 00:08:05.520 --> 00:08:06.879 que nous avons effectivement commité la traduction 00:08:06.879 --> 00:08:07.680 sur la plateforme, 00:08:07.680 --> 00:08:11.039 ce n’était pas nous, mais OmegaT. 00:08:11.039 --> 00:08:13.599 OmegaT fait le gros du travail. 08:13.599 --> 00:08:15.039 Il effectue régulièrement des sauvegardes et 00:08:15.039 --> 00:08:16.879 se synchronise avec les serveurs. 08:16.879 --> 00:08:18.720 Les traducteurs reçoivent régulièrement 08:18.720 --> 00:08:20.479 les mises à jour de leurs collègues, 00:08:20.479 --> 00:08:21.680 et quand il le faut, 00:08:21.680 --> 00:08:23.360 OmegaT affiche un simple 00:08:23.360 --> 00:08:25.440 dialogue de résolution des conflits. 08:25.440 --> 00:08:27.039 Les traducteurs n’ont jamais à manipuler 08:27.039 --> 00:08:29.360 svn ou git, jamais. 08:29.360 --> 00:08:30.800 Et maintenant, nous pouvons envisager un avenir 00:08:30.800 --> 00:08:31.599 pas si lointain 00:08:31.599 --> 00:08:33.120 où les manuels seraient traduits 00:08:33.120 --> 00:08:34.159 et éventuellement inclus 00:08:34.159 --> 00:08:35.279 dans la distribution, 00:08:35.279 --> 00:08:36.080 mais c’est un sujet 00:08:36.080 --> 00:08:39.760 pour une autre présentation. 08:39.760 --> 00:08:42.080 J’ai atteint la fin de cette session. 08:42.080 --> 00:08:44.240 Merci encore d’y avoir participé. 08:44.240 --> 00:08:45.600 Il y a beaucoup de sujets 00:08:45.600 --> 00:08:46.880 que j’avais promis de ne pas aborder, 00:08:46.880 --> 00:08:50.000 et je pense avoir tenu ma promesse. 08:50.000 --> 00:08:51.600 Il va y avoir des questions-réponses maintenant 00:08:51.600 --> 00:08:52.517 et j’ai aussi commencé 00:08:52.517 --> 00:08:53.600 un fil de discussion sur cette session 00:08:53.600 --> 00:08:55.519 samedi dernier, sur Reddit. 08:55.519 --> 00:08:57.279 Vous pouvez me trouver sur les listes emacs-help 00:08:57.279 --> 00:08:59.200 et emacs-devel, 00:08:59.200 --> 00:09:00.480 alors n’hésitez pas à m’envoyer 00:09:00.480 --> 00:09:02.080 vos questions et remarques. 09:02.080 --> 09:06.760 Merci encore, et à bientôt !