皆さん、こんにちは。
エラリー ジャンクリストフといいます。
今日はEmacsのマニュアルの翻訳と
OmegaTについてお話しします。
セッションに参加いただき、ありがとうございます。
自由ソフトウェアの世界では
翻訳は本当に大きな意味を持ちます。
ほとんどのLinuxディストリビューション、
ソフトウェアパッケージ
ウェブサイトが
異なるプロセスやファイル形式を使い、
多くのコミュニティによって
翻訳されていることをすでにご存知でしょう。
翻訳とローカライゼーションについては
ノウハウと経験がかなり蓄積されています。
しかし、Emacsコミュニティについては
必ずしもそうではありません。
色々と複雑で、
またリソースがないため、
ローカライゼーションプロセスが
まだ確立していません。
しかし、マニュアルの翻訳は可能ですし、
マニュアルの翻訳によって、
Emacsコミュニティ全体に
多くの利益がもたらされるでしょう。
では、マニュアルはどうなっているのでしょうか？
今日現在、182のファイルが
.texi や.org 形式で作成されています。
単語数は200万以上です。
文字数は、
5000万以上です。
これはかなりの量ですし、
当然ながら、一人でできる仕事ではありません。
.texi ファイルを開くと、
何が出てくるのでしょうか？
実は、翻訳者が翻訳する必要が
ないものが
たくさんあるのです。
ここでは、一番最後の
セグメント、一番最後の
文だけが翻訳する
必要があります。
このようなメタ的なものは
すべて翻訳者の目に
触れる必要はありません。
このような場合はどう対処すればいいのでしょうか？
ソースファイルの場合、
gettext というユーティリティーがあり、
翻訳可能な文字列を
翻訳可能な形式に変換します。
それが .po 形式になります。
この .po 形式はどこにでもあり、
自由ではないソフトウェア
翻訳業界でも広く使われています。
ドキュメントについては
別のツールがあります。
po4a と呼ばれるもので、
これは「po for all」の略です。
po4aを182.texiと
.org ファイルに用いると
どうなるでしょうか？
先ほどよりずっといいものができました。
これで分節が３つができました。
ご覧の通り、
最初の2つの分節は
翻訳の必要がないので、
完璧ではありません。
ですから、まだ
改善の余地があります。
さて、このファイルセットを
OmegaTに入れると翻訳対象単語数が
かなり減ります。
単語数が50％、
文字数が23％減りましたが、
まだかなりの仕事量です。
では、ここで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ツールを使わなければなりません。
このデモのために作成したプロジェクトを
開くと、OmegaTがどのように表示されるか
お見せしましょう。
表示はかなりややこしいですが、
実際には、必要に応じてすべての
ウィンドウを変更できます。
OmegaTがどんなものなのか
理解していただくために
一度にすべてをお見せしたいと思います。
さまざまな色やウィンドウがあり、
それらスペースには
翻訳者を支援する
さまざまな機能がありますが、
皆さんにはあまり
馴染みがないかもしれません。
今からそのインターフェースを
ご紹介します。
まずは、エディターですね。
エディターは2つの部分から成ります。
番号に関連づけられた
現在の分節と、
もうひとつは上下にあるすべての
分節です。
ウィンドウの一番上には
.poファイルにあった最初の3つの分節が
表示されています。
ここの最後の4つ目の分節には
ファジーマッチが自動挿入されています。
このようなレガシー翻訳は
「翻訳メモリ」と呼ばれます。
OmegaTがこれを自動挿入したのは、
私がそうするように設定したからです。
また、私自身のセキュリティのために、
翻訳の検証のために
削除しなければならない規定の
[fuzzy] がついています。
次の機能は、用語集機能です。
今回のプロジェクトには
たくさんの用語集データがあります。
関連のあるものもあれば、そうでないものもあります。
今翻訳している分節では
下線が引かれた項目が
あります。
右側のポップアップメニューでは
入力中に用語を入れることができます。
これは自動挿入システムのようなもので、
履歴予測や定型文などと
いったような入力補完に対応しています。
右側の部分には、
.poと.texiのファイルから
直接得られた
参照情報があります。
また、パートナーの翻訳者と
共有できるメモもあり、
翻訳完了までに
あと143,000分節あることを示す
数字も表示されています。
しかし、どうしても
入力したくない文字列がたくさんあります。
例えば、これらの文字列は
典型的な .texi の文字列で、
翻訳者が入力する
必要はありません。
これについて
どうにかしなければなりません。
そのためには、正規表現を使い
保護された文字列を作成し、
ソース分節では
文字列をすぐに視覚化し、
ターゲット分節で
半自動的に入力し、
整合性を
チェックできるようにしましょう。
処理したい文字列を定義するのに
考えた正規表現は
このようなものです。
正規表現のプロではないので、
皆さんからのご指摘もあると思います。
しかし、この表現は
Orgモードの構文を
まだ含んでいないにもかかわらず
十分な定義になっています。
これで、触ってはいけない
.texi 特有のものが
すべてグレーで
表示されるようになりました。
実は、お気づきかもしれませんが
少しズルをしました。
先ほどの正規表現に「年」と
「Free Software Foundation」の名前を追加しました。
なぜなら、どんな種類の文字列でも
保護できることを
示したかったからです。
これで、
触れたくない文字列を
可視化することができましたが、
それでもすべての文字列を翻訳に
入力しなければなりません。
そのために、先ほどの用語集で使った
ポップアップメニューがあれば、
編集メニューの中にも
不足しているタグを
簡単に挿入するための
ショートカットも用意されています。
最後に忘れてはならないのが
入力の検証が可能なことです。
ここで、OmegaTは7つの保護された文字列を
見逃したことをきちんと見せてくれます。
私は1998年だけを入力しましたが、
5つの異なる年があり、
著作権の文字列と
FSF名の文字列がありました。
この極めてネイティブに近い
Texinfo対応により、
入力するものがずっと少なくなり、
エラーの可能性も
ずっと低くなりました。
とはいえ、まだまだ大変な作業であることは間違いありません。
今、私たちが望んでいるのは、
仲間の翻訳者と一緒に仕事をすることです。
ここでわからないければならないのは、
OmegaTが実際に隠れ
svn/gitクライアントであり、
チームプロジェクトがsvn/gitプラットフォームで
ホスト可能であることです。
翻訳者は、VCSについて
何も知る必要はありません。
ただ、アクセス認証を必要とし、
OmegaTは翻訳者の代わりにコミットします。
このようにして、
醜くて不十分なウェブベースの
翻訳システムを使う必要なく、
強力なオフラインのプロフェッショナルツールを
使うことができるのです。
この翻訳プロジェクトを
ホストしているプラットフォームを見ると、
このように見えます。
最後の更新は、このスライドを作成した
20日と30秒前のもので、
同じファイルセットで
一緒に作業したパートナーが
いたことがわかります。
私たちは翻訳をプラットフォームに
コミットしたように見えますが、
それは私たちでなく、
OmegaTでした。
すべての面倒臭い仕事はOmegaTが行います。
定期的にサーバーに保存し、
サーバーから同期します。
翻訳者は、仲間の翻訳した内容を
定期的に得られます。
そして必要に応じて
OmegaTは、簡単な
コンフリクト解決のためのウインドーを表示します。
翻訳者は、svnやgitを使って
何かをする必要はありません。
そして今、私たちは、
マニュアルが翻訳され、
最終的にはEmacsに含まれるという
そう遠くはない未来を
思い描くことができますが、
それはこのプレゼンテーションとは
別の話になります。
というわけで、セッションの終わりになりました。
ご参加いただいた皆様、本当にありがとうございました。
たくさんのトピックについて
触れないと約束しましたが、
約束は守れたのではないでしょうか。
Q&Aもありますが、
実は、先週の土曜日に
Redditでこのセッションに関するスレッドも
立ち上げました。
emacs-helpやemacs-develのメーリングリストでも
私の名前を見つけることができますので、
ご質問やご意見がありましたら、
遠慮なくお寄せください。
それでは、またお会いしましょう。