Back to the schedule
Previous: The True Frownies are the Friends We Made Along the Way: An Anecdote of Emacs's Malleability
Next: GNU's Not UNIX: Why Emacs Demonstrates The UNIX Philosophy Isn't Always The Only Answer

Emacs manuals translation and OmegaT

Jean-Christophe Helary

Q&A: live Q&A / IRC / pad
Duration: 9:07

This talk was also streamed at an alternate time for APAC hours: https://libreau.org/past.html#emacsconf21

If you have questions and the speaker has not indicated public contact information on this page, please feel free to e-mail us at emacsconf-submit@gnu.org and we'll forward your question to the speaker.

Description

Even if it is generally agreed that software localization is a good thing, Emacs is lacking in that respect for a number of technical reasons. Nonetheless, the free software using public could greatly benefit from Emacs manuals translations, even if the interface were to remain in English.

OmegaT is a multiplatform GPL3+ "computer aided translation" (CAT) tool running on OpenJDK 8. CATs are roughly equivalent for translators to what IDEs are for code writers. Casual translators can benefit from their features but professionals or committed amateurs are the most likely to make the most use of such tools.

When OmegaT, free software based forges and Emacs meet, we have a free multi-user translation environment that can easily sustain the (close to) 2 million words load that comprise the manuals distributed with Emacs, along with powerful features like arbitrary string protection for easy typing and QA (quality assurance), automatic legacy translation handling, glossary management, history based or predictive autocompletion, etc.

The current trial project for French is hosted on 2 different forges:

  1. sr.ht hosts the source files https://sr.ht/~brandelune/documentation_emacs/
  2. chapril hosts the OmegaT team project architecture https://forge.chapril.org/brandelune/documentation_emacs

The sources are regularly updated with a po4a based shell script.

Discussion

IRC nick: brandelune

  • Q: Does this project encompass Emacs packages? Is there anything we can do, as package authors, to make translation easier?
  • Q: Could this package be used to generate translated and well-formatted MOBI or EPUB ebooks? Or better yet, an interactive multi-language Emacs Manual "Bible" App for Android?
  • Q: I love OmegaT and use it always. But I would have liked to hear about the experience of working both with Emacs and OmegaT. Can you tell us something about it?

  • translation is nice but typing anything non latin or cyrillic is hard with keyboard

    • Try out the Emacs IMF. One of the main reasons I use Emacs. Input Method Framework: https://www.gnu.org/software/emacs/manual/html_node/emacs/Input-Methods.html
  • Hi, thanks for the talk. I love OmegaT and use it always. But I would have liked to here about the experience of working both with Emacs and OmegaT. Can you tell us something about it?
  • brandelune: wondering if anyone is interested in working on translating the emacs manuals to a language different from French. I know there are ongoing attempts in a number of languages (Japanese for one). LibreOffice JA has worked with "machine translation post editing" (MTPE in the "industry") and they seem to have produced good results.
    • i'd definitely be interested, tho not sure i'll have the time anytime soon. but if there's a mailing list i'd be interested in subscribing or joining an irc channel.

Feedback:

  • OmegaT looks very powerful: it goes to show how much work goes into translations; work that we sometimes take for granted
  • I once had to translate a document the old-fashioned way: it was painful... Will check OmegaT afterwards. Thanks!

Outline

  • Duration: 10 minutes
  • Software introduced during the presentation
    • po4a a tool to convert documentation formats to and from the commonly used gettext PO format. po4a supports the texinfo format along with many others.
    • OmegaT a "computer aided translation" tool used by professional (and amateur) translators to efficiently combine translation resources (legacy translations, glossaries, etc.) so as to produce more consistent translations.

During this short presentation, I will address:

  • The specificities of the Emacs manuals and the difficulties they present to the translator
  • How to convert the texi and org files to a format that translators can handle
  • How to adapt OmegaT to the Emacs manual specificities
  • How to use OmegaT features such as arbitrary string protection, legacy translation handling, glossaries, autocompletion, QA, etc.
  • How to use OmegaT with a team of 2 (or more) translators working at the same time

I will not discuss:

  • How to create an OmegaT project
  • How to set up an OmegaT team project
  • How to use OmegaT from the command line to work in localization pipelines
  • How to use machine translation and MT "post-edit"
  • How to convert back the translated files to texi format
  • How to install translated texi files for use in Emacs

People who are interested in knowing more about OmegaT are invited to check the online user manual.

Personal information

Transcript

Hello, everybody. My name is Jean-Christophe Helary, and today I'm going to talk about Emacs manuals translation and OmegaT. Thank you for joining the session.

[00:00:10.960] Translation in the free software world is really a big thing. You already know that most of the Linux distributions, most of the software packages, most of the websites are translated by dozens of communities using different processes and file formats. Translation and localizations are things we know very well. It's a tad different for the Emacs community. We didn't have a localization process because it's quite complex and because we don't have the resources yet. Still, we could translate the manuals, and translating the manuals would probably bring a lot of good to the Emacs community at large.

[00:00:45.600] So what's the state of the manuals? As of today, we have 182 files coming in .texi and .org format. We've got more than 2 million words. We've got more than 50 million characters. So that's quite a lot of work, and obviously, it's not a one person job.

[00:01:04.559] When we open .texi files, what do we have? Well, we actually have a lot of things that the translators shouldn't have to translate. Here we can see that only the very last segment, the very last sentence should be translated. All those meta things should not be under the translator's eyes. How do we deal with this situation? For code files, we have the gettext utility that converts all the translatable strings into a translable format, which is the .po format. And that .po format is ubiquitous, even in the non-free software translation industry. For documentation, we have something different. It's called po4a, which is short for .po for all. When we use po4a on those 182 .texi and .org files, what do we get? We get something that's much better. Now we have three segments. It's not perfect because, as you can see, the two first segments should not be translated. so there's still room for improvement. Now, when we put that file set into OmegaT, we considerably reduce the words total. We have now 50% less words and 23% less characters to type, but that's still a lot of work.

[00:02:15.680] So let's talk about OmegaT now and see where it can help. OmegaT is a GPL3+ Java8+ computer aided translation tool. We call them CATs. CATs are to translators what ideas are to programmers. They leverage the power of computers to automate our work, which is reference searches, fuzzy matching, automatic insertions, and things like that.

[00:02:44.080] OmegaT is not really recent. It will turn 20 next year, and at this point, we have about 1.5 million downloads from the SourceForge site, which doesn't mean much because that includes files used for localization and manuals, but still it's a pretty big number. OmegaT is included in a lot of Linux distributions, but as you can see here, it's mostly downloaded on Windows systems because translators mostly work on Windows. OmegaT comes with a cool logo and a cool site too, and I really invite you to visit it. It's omegat.org , and you'll see all the information you need, plus downloads to Linux versions, with or without Java included. So what does OmegaT bring to the game? Professional translators have to deliver fast, consistent, and quality translations, and we need to have proper tools to achieve that. I wish po-mode was part of the toolbox, but that's not the case, and it's a pity. So we have to use those CAT tools.

[00:03:39.760] Let me show you what OmegaT looks like when I open this project that I created for this demonstration. The display is quite a mouthful, but you can actually modify all windows as needed. I just want to show you everything at once to give you a quick idea of the thing. You have various colors, windows, and all those spaces have different functions that help the translator, and that you're probably not familiar with.

[00:04:02.879] I'm going to introduce you to the interface now. So first, we have the editor. The editor comes in two parts: the current segment, which is associated to a number, and all the other segments above or below. At the top of the window, you can see the three first segments that were in the .po file.

[00:04:20.799] The last one here, the fourth one, comes with an automatic fuzzy match insertion. Such legacy translations are what we call "translation memories". OmegaT has inserted this one automatically because I told it to do so, and for my security, it comes with the predefined fuzzy prefix that i will have to remove to validate the translation.

[00:04:44.880] Our next feature is the glossary feature. In this project, we have a lot of glossary data. Some is relevant and some is not. In the segment that I'm translating at the moment, you can see underlying items.

[00:04:57.520] This pop-up menu on the right allows me to enter the terms as I type. It's kind of an auto insertion system that also supports history predictions, predefined strings, and things like that.

[00:05:14.479] In the part on the right, we have reference information that comes directly from the .po and the .texi files.

[00:05:21.440] We also have notes that I can share with fellow translators, and we have numbers that tell me that I still have 143 segments more to go before I complete this translation. As we see, there are plenty of strings that we really don't want to have to type. For example, those strings are typical .texi strings that the translator should really not have to type. So we're going to have to do something about that. we're going to have to create protected strings with regular expressions, so that the strings can be visualized right away in the source segment, entered semi-automatically in the target segment, and checked for integrity. The regular expression I came up with for defining most of the strings is this one, and I'm not a regular expression pro so I'm sure some of you will correct me. But this expression gives me a good enough definition even though it does not yet include Org mode syntax. So now we have all those .texi-specific things that we don't want to touch displayed in gray. Actually, you may have noticed that I cheated a bit, because here I added the years and the Free Software Foundation name to the previous regular expression to show you that you can protect any kind of string, really.

[00:06:38.560] So what we have now is a way to visualize the strings that we do not want to touch, but we still have to enter all of them in the translation. For that, we have the pop-up menu that I used earlier with the glossary, and we also have items in the edit menu that come with shortcuts for easy insertion of missing tags.

[00:06:57.199] Last, but certainly not least, we can now validate our input. Here, OmegaT properly tells me that I made 7 protected strings, I entered only 1998, but there were five different years, the copyright string, and the FSF name string. With all this almost-native Texinfo support, we have much less things to type, and there is a much lower potential for errors. But we agree, it's still a lot of work.

[00:07:25.199] What we'd like now is to work with fellow translators, and here we need to know that OmegaT is actually a hidden svn/git client, and team projects can be hosted on svn/git platforms. Translators don't need to know anything about VCS. They just need access credentials, and OmegaT commits for them. This way we do not have to use ugly and clumsy web-based translation interfaces, and we can use a powerful offline professional tool. So this is how it looks when you look at the platform where I hosted this project. The last updates are from 20 days and 30 seconds ago when I created this slide, and you can see that I had a partner who worked with me on the same file set. Although it looks like we actually committed the translation to the platform, it was not us, but OmegaT. OmegaT does all the heavy-duty work. It regularly saves to and syncs from the servers. Translators are regularly kept updated with work from fellow translators and when necessary, OmegaT offers a simple conflict-resolution dialogue. Translators never have to do anything with svn or git ever. And now we can envision a future not so far away where the manuals will be translated and eventually included in the distribution, but that's a topic for a different presentation.

[00:08:39.760] So we've reached the end of this session. Thank you very much again for joining it. There are plenty of topics I promised I would not address, and I think I kept my promise. There will be a Q&A now, and I also started a thread about this talk on Reddit last saturday. You can find me on emacs-help and emacs-devel list as well, so don't hesitate to send me questions and remarks. Thank you again, and see you around.

Transcript (Japanese)

[00:00:01.280] 皆さん、こんにちは。 エラリー ジャンクリストフといいます。 今日はEmacsのマニュアルの翻訳と OmegaTについてお話しします。 セッションに参加いただき、ありがとうございます。 自由ソフトウェアの世界では 翻訳は本当に大きな意味を持ちます。 ほとんどのLinuxディストリビューション、 ソフトウェアパッケージ ウェブサイトが 異なるプロセスやファイル形式を使い、 多くのコミュニティによって 翻訳されていることをすでにご存知でしょう。 翻訳とローカライゼーションについては ノウハウと経験がかなり蓄積されています。 しかし、Emacsコミュニティについては 必ずしもそうではありません。 色々と複雑で、 またリソースがないため、 ローカライゼーションプロセスが まだ確立していません。 しかし、マニュアルの翻訳は可能ですし、 マニュアルの翻訳によって、 Emacsコミュニティ全体に 多くの利益がもたらされるでしょう。

[00:00:45.600] では、マニュアルはどうなっているのでしょうか? 今日現在、182のファイルが .texi や.org 形式で作成されています。 単語数は200万以上です。 文字数は、 5000万以上です。 これはかなりの量ですし、 当然ながら、一人でできる仕事ではありません。

[00:01:04.559] .texi ファイルを開くと、 何が出てくるのでしょうか? 実は、翻訳者が翻訳する必要が ないものが たくさんあるのです。 ここでは、一番最後の セグメント、一番最後の 文だけが翻訳する 必要があります。 このようなメタ的なものは すべて翻訳者の目に 触れる必要はありません。 このような場合はどう対処すればいいのでしょうか? ソースファイルの場合、 gettext というユーティリティーがあり、 翻訳可能な文字列を 翻訳可能な形式に変換します。 それが .po 形式になります。 この .po 形式はどこにでもあり、 自由ではないソフトウェア 翻訳業界でも広く使われています。 ドキュメントについては 別のツールがあります。 po4a と呼ばれるもので、 これは「po for all」の略です。 po4aを182.texiと .org ファイルに用いると どうなるでしょうか? 先ほどよりずっといいものができました。 これで分節が3つができました。 ご覧の通り、 最初の2つの分節は 翻訳の必要がないので、 完璧ではありません。 ですから、まだ 改善の余地があります。 さて、このファイルセットを OmegaTに入れると翻訳対象単語数が かなり減ります。 単語数が50%、 文字数が23%減りましたが、 まだかなりの仕事量です。

[00:02:15.680] では、ここでOmegaTについて、 そして、OmegaTがどこに役立つかを見てみましょう。 OmegaTは、GPL3+ Java8+ のソフトで コンピューター支援翻訳ツールです。 Computer Aided Translationと呼ばれます。 CATは翻訳者にとって、 プログラマーにとってのIDEのようなものです。 CATは、コンピュータの力を利用して 翻訳者の仕事を自動化します。 例えば、参考翻訳の検索や ファジーマッチ、自動入力 などのようなものです。 OmegaTは最近のものありません。 来年で20年になり、 現時点では SourceForgeのサイトから 150万件前後のダウンロードがあります。 これにはローカライズや マニュアルに使用されるファイルが 多少含まれるので、 それほど意味はありませんが、 それでもかなり大きな数字です。 OmegaTは、多くのLinux ディストリビューションに含まれますが、 ここで見られるように ほとんどがWindowsでダウンロードされています。 なぜなら、翻訳者は ほとんどWindows上で作業しているからです。 OmegaTにもかっこいいロゴと かっこいいサイトがあります。 ぜひ一度ご覧ください。 サイトはomegat.orgで、 すべての必要な情報が見られます。 また、Javaの有無の関わらず、 Linuxバージョンもダウンロードできます。 では、OmegaTによって何が変わるのでしょうか? プロの翻訳者が提供しなければいけないのは、 速く、一貫性があり 品質の高い翻訳です。 それを実現するためには、 適切なツールが必要です。 po-modeがツールボックスの一部であればいいのですが、 そうはなっていません。 残念ながら。 ですから、そのようなCATツールを使わなければなりません。

[00:03:39.760] このデモのために作成したプロジェクトを 開くと、OmegaTがどのように表示されるか お見せしましょう。 表示はかなりややこしいですが、 実際には、必要に応じてすべての ウィンドウを変更できます。 OmegaTがどんなものなのか 理解していただくために 一度にすべてをお見せしたいと思います。 さまざまな色やウィンドウがあり、 それらスペースには 翻訳者を支援する さまざまな機能がありますが、 皆さんにはあまり 馴染みがないかもしれません。 今からそのインターフェースを ご紹介します。 まずは、エディターですね。 エディターは2つの部分から成ります。 番号に関連づけられた 現在の分節と、 もうひとつは上下にあるすべての 分節です。 ウィンドウの一番上には .poファイルにあった最初の3つの分節が 表示されています。 ここの最後の4つ目の分節には ファジーマッチが自動挿入されています。 このようなレガシー翻訳は 「翻訳メモリ」と呼ばれます。 OmegaTがこれを自動挿入したのは、 私がそうするように設定したからです。 また、私自身のセキュリティのために、 翻訳の検証のために 削除しなければならない規定の [fuzzy] がついています。 次の機能は、用語集機能です。 今回のプロジェクトには たくさんの用語集データがあります。 関連のあるものもあれば、そうでないものもあります。 今翻訳している分節では 下線が引かれた項目が あります。 右側のポップアップメニューでは 入力中に用語を入れることができます。 これは自動挿入システムのようなもので、 履歴予測や定型文などと いったような入力補完に対応しています。 右側の部分には、 .poと.texiのファイルから 直接得られた 参照情報があります。

[00:05:21.440] また、パートナーの翻訳者と 共有できるメモもあり、 翻訳完了までに あと143,000分節あることを示す 数字も表示されています。 しかし、どうしても 入力したくない文字列がたくさんあります。 例えば、これらの文字列は 典型的な .texi の文字列で、 翻訳者が入力する 必要はありません。 これについて どうにかしなければなりません。 そのためには、正規表現を使い 保護された文字列を作成し、 ソース分節では 文字列をすぐに視覚化し、 ターゲット分節で 半自動的に入力し、 整合性を チェックできるようにしましょう。 処理したい文字列を定義するのに 考えた正規表現は このようなものです。 正規表現のプロではないので、 皆さんからのご指摘もあると思います。 しかし、この表現は Orgモードの構文を まだ含んでいないにもかかわらず 十分な定義になっています。 これで、触ってはいけない .texi 特有のものが すべてグレーで 表示されるようになりました。 実は、お気づきかもしれませんが 少しズルをしました。 先ほどの正規表現に「年」と 「Free Software Foundation」の名前を追加しました。 なぜなら、どんな種類の文字列でも 保護できることを 示したかったからです。

[00:06:38.560] これで、 触れたくない文字列を 可視化することができましたが、 それでもすべての文字列を翻訳に 入力しなければなりません。 そのために、先ほどの用語集で使った ポップアップメニューがあれば、 編集メニューの中にも 不足しているタグを 簡単に挿入するための ショートカットも用意されています。

[00:06:57.199] 最後に忘れてはならないのが 入力の検証が可能なことです。 ここで、OmegaTは7つの保護された文字列を 見逃したことをきちんと見せてくれます。 私は1998年だけを入力しましたが、 5つの異なる年があり、 著作権の文字列と FSF名の文字列がありました。 この極めてネイティブに近い Texinfo対応により、 入力するものがずっと少なくなり、 エラーの可能性も ずっと低くなりました。 とはいえ、まだまだ大変な作業であることは間違いありません。

[00:07:25.199] 今、私たちが望んでいるのは、 仲間の翻訳者と一緒に仕事をすることです。 ここでわからないければならないのは、 OmegaTが実際に隠れ svn/gitクライアントであり、 チームプロジェクトがsvn/gitプラットフォームで ホスト可能であることです。 翻訳者は、VCSについて 何も知る必要はありません。 ただ、アクセス認証を必要とし、 OmegaTは翻訳者の代わりにコミットします。 このようにして、 醜くて不十分なウェブベースの 翻訳システムを使う必要なく、 強力なオフラインのプロフェッショナルツールを 使うことができるのです。 この翻訳プロジェクトを ホストしているプラットフォームを見ると、 このように見えます。 最後の更新は、このスライドを作成した 20日と30秒前のもので、 同じファイルセットで 一緒に作業したパートナーが いたことがわかります。 私たちは翻訳をプラットフォームに コミットしたように見えますが、 それは私たちでなく、 OmegaTでした。 すべての面倒臭い仕事はOmegaTが行います。 定期的にサーバーに保存し、 サーバーから同期します。 翻訳者は、仲間の翻訳した内容を 定期的に得られます。 そして必要に応じて OmegaTは、簡単な コンフリクト解決のためのウインドーを表示します。 翻訳者は、svnやgitを使って 何かをする必要はありません。 そして今、私たちは、 マニュアルが翻訳され、 最終的にはEmacsに含まれるという そう遠くはない未来を 思い描くことができますが、 それはこのプレゼンテーションとは 別の話になります。

[00:08:39.760] というわけで、セッションの終わりになりました。 ご参加いただいた皆様、本当にありがとうございました。 たくさんのトピックについて 触れないと約束しましたが、 約束は守れたのではないでしょうか。 Q&Aもありますが、 実は、先週の土曜日に Redditでこのセッションに関するスレッドも 立ち上げました。 emacs-helpやemacs-develのメーリングリストでも 私の名前を見つけることができますので、 ご質問やご意見がありましたら、 遠慮なくお寄せください。 それでは、またお会いしましょう。

Transcript (French)

[00:00:01.280] 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.

[00:00:45.600] 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.

[00:01:04.559] 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.

[00:02:15.680] 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.

[00:03:39.760] 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.

[00:05:21.440] 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.

[00:06:38.560] 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.

[00:06:57.199] 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.

[00:07:25.199] 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.

[00:08:39.760] 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 !

Back to the schedule
Previous: The True Frownies are the Friends We Made Along the Way: An Anecdote of Emacs's Malleability
Next: GNU's Not UNIX: Why Emacs Demonstrates The UNIX Philosophy Isn't Always The Only Answer