こんなツールがあったのか!

知っておきたい、オープンソース翻訳支援ツール最新動向



Copyright 2006 Yutaka Kachi

http://www.catch.jp/


 この記事は、ソフトバンク クリエイティブより発売されたオープンソースマガジ20067月号に寄稿したものです。内容は掲載時のままです。OmegaT1.6rc8英語版を取り上げていますが、正式リリース版ではメニューなどが日本語化されています。

 この記事は、OpenOffice.orgを使って編集し、HTMLに変換しました。

 この記事は、誰でも自由に複製・配布して構いませんが、内容については保証しません。

 このような記事を執筆する機会を与えてくれたオープンソースマガジン編集部に感謝します。 2006-11-02


 英語で表示されるメッセージを日本語化したり、日本語の資料を英語化したりと、翻訳に関わる作業は意外と多いものです。これまでも、gettextのようにソフトウェアの国際化のための開発ツールはありましたが、最近注目を集めているのは、翻訳作業そのものを支援するツールです。本記事では、オープンソースの翻訳支援ツールを紹介すると共に、そのひとつであるOmegaTの使い方を解説します。これらのツールを活用すれば、あなたの翻訳関連作業が大きく変わります。

翻訳支援ツールの役割

 インターネットのおかげで、海外のニュースや資料・ソフトウェアを手に入れたり、日本から情報を発信したりすることが、とても手軽になりました。それに伴い、英語や中国語といった言語の日本語訳を作ったり、その逆の作業が増えてきました。

 これまでは、gettextpoファイルといったソフトウェアの国際化のための仕組みを利用してきました。でも、実際に翻訳作業をするときは、エディタを2つのファイルを見比べたり、ブラウザでExcite翻訳や英辞郎を開きながら作業したりなんてやっていませんか。

「機械翻訳が実用的になればなぁ」と私も思いますが、Excite翻訳の自動翻訳機能や、AltaVistaBabel Fish Translation(*)を試してみると、まだまだだなぁという感じがします。


* 海外のWebサイトによく貼ってあるBabel Fish Translationのバナー。
 各国の旗をクリックすると、そのページを翻訳してくれる。翻訳品質はまだまだな感じ。



 そこで注目を集めているのが、翻訳作業そのものをサポートするソフトウェアです。これは機械翻訳ではなく、翻訳者の作業 をサポートするツールです。過去の翻訳文を探し出したり、翻訳した文書を他のフォーマットに変換したりといった、翻訳作業を効率よく進める機能を持ってい ます。プロの翻訳者の間でも、用途によって、Tradosのような商用翻訳支援ツールが使われています。小説のような文芸作品の翻訳には向きませんが、マニュアルやビジネス文書、ソフトウェアのメッセージのように文体や用語の形式が固まっている場合に効果を発揮します。

 ソフトウェア開発でも、単機能なテキストエディタより、プログラミングをサポートしたエディタや統合開発環境の方が効率アップするように、翻訳作業にも便利なツールが存在しているのです。



翻訳作業に必要なモノ

 ここで、ソフトウェア内のメッセージやオンラインヘルプ、ドキュメントの日本語訳を作成する作業について考えてみましょう。あなたが、このような作業を行うとしたら、気を付けるべきことは何でしょう。使い慣れたエディタと英和辞典があれば十分でしょうか。

 ソフトウェア内のメッセージやオンラインヘルプ、ドキュメントでは、同じような表現が繰り返し登場します。これは、過去に翻訳した例文集を参考にすると、効率よく作業を進められそうです。

 コンピュータ関連のドキュメントでは、辞書に載っていない言葉もたくさん登場します。これらの言葉は、どのように置き換えるかを統一しておく必要があるでしょう。日本語として表記のルール(コンピュータ or コンピューター)も考えておきたいところです。RFC-2119(*)では、なんと「Must」「Should」「May」といった助動詞をどのように使い分けるべきか定義しています。日本語訳を作るときにも、このようなルールをふまえる必要があるでしょう。

 さらに複数の人が共同で作業する場合には、作業者の間で、これらの情報を共有しておいたほうがいいでしょう。独りで作業する場合も、分量の多い文書では、前半と後半で表現が変わらないよう気を付けます。

 そこで、辞書のほかに過去例文集や用語集、スタイルガイドがあれば便利そうです。そして、これらを高速に検索したり置換したりするツールがあれば、翻訳作業がはかどりそうです。



一覧:翻訳作業に必要そうなモノ



翻訳メモリの効果

 そこで紹介したいのが、「翻訳メモリ」と呼ばれるツールです。「翻訳メモリ」は、翻訳支援ツールの中心的な機能で、過去の例文を高速に検索し、必要に応じて置換できます。

 翻訳メモリの動作を説明していきましょう。次のような英文があるとします。



OpenOffice.org Writer Features

OpenOffice.org Impress Features



 2つの英文は、OpenOffice.orgのワープロとプレゼン機能について説明文の見出しです。違うのは、単語1つだけです。

 最初の英文を訳したとしましょう。すると、この英文と対応する日本語訳が、「翻訳メモリ」(Translation memory:以下TM)に記録されます。これは、一種のデータベースで、原文と訳文の対応を記録していきます。

 さて、2つ目の英文の先頭行に注目してみましょう。すでにTMには、これとよく似た英文-日本語訳が登録されています。翻訳支援ツールは、よく似た英文の日本語訳をTMから表示します。これを挿入すれば、あとはその違いを修正するだけで作業完了です。


* 翻訳メモリ(TM)から、よく似た訳文を表示



 TMに は、現在作業中の文章だけでなく、過去の翻訳作業の成果も保存できます。ソフトウェアやドキュメントのバージョンアップ時にも、効果を発揮します。他の人 が作った翻訳メモリも利用可能です。一方、翻訳メモリを十分に蓄えていないうちは、それほど効果を発揮しないかも知れません。



採用が広がる翻訳支援の標準フォーマット

 このような翻訳メモリ機能は、従来の翻訳支援ツールにも備わっていました。現在注目を集めているのは、ツール間でデータ交換を可能にする標準ファイルフォーマットの存在です。次のような、XMLをベースにした2つのファイルフォーマットが登場しました。

 TMX(Translation Memory eXchange)(*)は、翻訳メモリを交換するためのファイルフォーマットです。LISA(Localization Industry Standards Assosiation)という、ローカライゼーションに関する国際標準化団体が策定しています。TMXは、すでに多くの商用翻訳支援ツールでもサポートされています。

 XLIFF(XML Localisation Interchange File Format)(*)は、翻訳したドキュメントやリソースファイルを交換するためのファイルフォーマットです。eビジネスに関する国際的な標準化団体であるOASISの標準フォーマットのひとつになっています。こちらも、多くの商用翻訳支援ツールでサポートされています。

 これらの標準フォーマットのおかげで、特定の翻訳支援ツールに依存することなく、翻訳データを交換できるようになりまし た。これらの標準フォーマットは、商用の翻訳支援ツールにも採用されているので、商用ツールからオープンソースのツールに切り替えたり、相互運用すること が可能になります。

 表に、オープンソースになっている主な翻訳支援ツールを示します。



:主なオープンソース翻訳支援ツール

ツール名

ライセンス

開発元/入手先

動作環境

対応フォーマット

TMX/XLIFF

利用情報

OmegaT

GPL

http://www.omegat.org/

Java

テキスト, HTML, OpenOffice.org

TMX Level1

http://www.eskimo.com/~helary/OmegaT/
http://sourceforge.net/projects/omegat

open-language-tools

CDDL

https://open-language-tools.dev.java.net/

Java

HTML, Docbook SGML, JSP, XML, OpenOffice.org, テキスト, PO, Msg/tmsg , Java .properties, Java ResourceBundle, Mozilla .DTD resource files

TMX, XLIFF

http://jp.sun.com/communities/users/0601/feature03.html
http://jp.sun.com/communities/users/0602/feature03.html
http://jp.sun.com/communities/users/0602/feature05.html

KBabel

GPL

http://kbabel.kde.org/

KDE

PO

TMX, XLIFF

http://www.kde.gr.jp/pukiwiki/index.php?KBabel
http://www.kde.gr.jp/document/po/kbabel.html

Pootle

GPL

http://translate.sourceforge.net/
http://sourceforge.net/projects/translate
http://pootle.wordforge.org/

Web

PO


http://takanory.net/plone/japanese/pootle/
http://takanory.net/plone/japanese/pootleuse/

poEdit

MIT

http://www.poedit.org/

Windows, Linux

PO, MO, RPM


http://wp.mmrt-jp.net/plugin-japanization-project/poedit/



 では、この中からOmegaTの基本的な使い方を解説しましょう。



OmegaTを使ってみる

 OmegaT(*)は、オープンソースの翻訳支援ツールのひとつです。Keith Godfreyらにより開発されています。OmegaTの翻訳メモリは、柔軟なマッチング機能を備えています。サブウィンドウで用語集(Glossary)を表示する機能も持っています。

 Javaで動作するため、WindowsLinuxMacなど幅広いプラットフォームで使用できます。

 対応フォーマットは、プレーンテキスト、HTMLOpenOffice.org(1.x2.0)です。OpenOffice.orgを使ってMicrosoft WordExcelのファイルを変換しておけば、これも翻訳できます。今のところ、POファイルには対応していませんが、.propertiesファイルによるJavaプログラムのローカライズやドキュメントの翻訳に利用できます。

 現在の安定版はバージョン1.4.5です。次の安定版のリリースに向けて、1.6rc8を公開しています。まだ日本語化が完了していませんが、この記事が掲載されているころには、日本語化されていると思われます。





 ここでは、Windows版のバージョン1.6.rc8を例にとり、基本的な使い方を説明します。

Omegatのインストール

 OmegaTは、Javaで動作するプログラムです。事前に、Java実行環境1.4以降をインストールしておきましょう。

 OmegaTWindows版は、exeファイルとして配布されています。そのため、ダウンロードしたファイルをダブルクリックすると、インストールウィザードが起動します。このウィザードの指示に従っていくと、スタートメニューにOmegaTが登録されます。アンインストーラーも、このメニューに登録されています。

 MacLinuxなどで使う場合は、Zipファイル版をダウンロードします。このファイルを解凍して、適当なフォルダに保存したら、インストールは完了です。起動するには、OmegaT.batファイルを呼び出します。





翻訳の準備

 OmegaTは、起動すると次の画面を表示します。


* OmegaTの画面構成



 左側は、Editウィンドウです。ここに原文を表示するので、翻訳文を入力/編集します。起動時には、簡単な入門を表示します。

 右上は、翻訳メモリの検索結果を表示します。右下には、用語集を表示します。この用語集データは、ユーザーが事前に用意しておく必要があります。

 では、翻訳作業を開始してみましょう。最初に、作業の元になるプロジェクトを作成します。OmegaTでは、このプロジェクト単位で複数の翻訳対象ファイルを管理します。



@[Project]→[New]

A「Create a New Project」ダイアログが表示されたら、プロジェクト用フォルダを作成する場所とプロジェクト名を指定する。このプロジェクト名が、プロジェクトデータを保存するフォルダ名になる。



* プロジェクト名を指定する



B次のダイアログが表示されたら、原文の言語(Source Language)、翻訳文の言語(Target Language)を指定する。



* プロジェクト名を指定する



C「Project Files」ウィンドウが表示されたら、<Import Source Files>ボタンをクリックする。

D「開く」ダイアログで、翻訳対象のファイルまたはフォルダを指定する。




*翻訳対象のファイル/フォルダを指定する



 フォルダを読み込んだ場合は、フォルダ以下のファイルをプロジェクト→sourceフォルダに構成を維持したままコピーします。

 さて、これでフォルダ内のドキュメントを翻訳可能になりました。翻訳対象ファイルをクリックすると、Editウィンドウに読み込まれます。

 ここでは、簡単なHTMLファイルを翻訳してみます。翻訳作業中は、「Project Files」ウィンドウを閉じても構いません。これは、[Project]→[Reload]で再呼び出しできます。



OmegaTで翻訳する

 では、実際の翻訳作業を始めましょう。HTMLファイルを読み込むと、タグを無視して、テキストだけを表示します。




* 翻訳対象のHTMLファイルを読み込んだ



 OmegaTでは、原文を「セグメント」という単位に分割します。英語では、ピリオド「.」で区切るよう設定されています。「Mr.」や「test.jpg」などのピリオドは無視されます。

 Editウィンドウには、原文を2つ表示します。最初の行が、オリジナルデータです。次行で<segment><end segment>に囲まれているのが訳文になります。ここに翻訳した文章を入力します。[Enter]キーを押すと、次のセグメントに移動します。同時に、原文と訳文のペアがTMに登録されます。



* 訳文を入力する



 頻繁に行う操作には、ショートカットキーを用意しています。これは、各メニューに表示してあります。

 では、他のセグメントも翻訳してしまいましょう。直接移動するには、そのセグメントをダブルクリックします。

 OmegaTは、現在選択しているセグメントと同じような形の文をTMに見つけると、右上のウィンドウに表示します。複数の候補があれば、それを表示します。%表示は、その文章が、どの程度一致しているかを示しています。

 ここで、[Edit]→[Insert Match]とすると、翻訳メモリの内容を挿入します。




*翻訳メモリの内容をセグメントに挿入する


翻訳済みファイルを変換する

 翻訳したファイルは、[Project]→[Save]で保存します。

 さらに、次のように操作すると、プロジェクトに登録されている全HTMLファイルから、翻訳済みのHTMLファイルを自動的に作成します。





 作成されたHTMLファイルは、プロジェクト→targetフォルダに保存されます。フォルダごと登録していた場合には、フォルダ構成を維持したまま、翻訳ファイルを作成します。

 この機能を使うと、直接HTMLファイルを編集しなくても、翻訳対象となるテキストだけを修正して、そこから翻訳済みファイルを作成できます。Webサイトのように、翻訳対象が複雑なフォルダ構成になっていても、翻訳者はそれを気にすることなく、翻訳作業を進められます。



*翻訳済みのHTMLファイルを作成する



用語集(Glossary)を使う

 用語集は、翻訳に出てくる専門用語について原文と訳文をペアにして、あらかじめユーザー側で整理しておきます。用語集ファイルは、単なるテキストファイルです。次の3つの項目をタブで区切って記述します。





 用語集ファイルに、システムネイティブな文字コードを使う場合は、拡張子を「.tab」として保存します。また、UTF-8を使う場合は、拡張子を「.utf8」として保存します。このファイルをプロジェクト→glossaryフォルダに保存します。

 セグメント内の単語が用語集ファイルにあると、それがGlossaryウィンドウに表示されます。ただし、用語集の単語を自動的に挿入したり、用語集ファイルを編集するといった機能は、今のところありません。


* セグメント中の単語がGlossaryに表示される



 このようにOmegaTは、シンプルでありながら、使いやすさを持つ翻訳支援ツールです。まだ、機能が足らないところもありますが、それはオープンソースコミュニティの力で、改善する可能性があります。日本在住のフランス人で、OmegaTのコミュニティで積極的に活動するJ.C.エラリー氏は、「ぜひ、Javaプログラマーに参加して欲しい」と語っています。



翻訳作業を支援するサン・マイクロシステムズ



 翻訳支援ツールであるOmegaTを紹介してきましたが、他にも、翻訳作業に必要なものはありました。用語集やスタイルガイドは、どうなっているのでしょう。

 これについては、サン・マイクロシステムズ(以下、サン)が公開しているリソースを利用できます。サンは、自社で開発/利用している翻訳リソースをOpen Translation(*)というWebサイトを中心に公開しています。



翻訳用語集SunGloss

 SunGloss(*)は、サンがローカライズに協力しているソフトウェアとサン製品とについての用語集です。Java/Solaris/Gnomeなどについて、各国版の用語を全て参照できます。簡単なユーザー登録をするだけで、Webブラウザ経由で情報を取り出せます。用語集データをCSVファイルとして出力できます。




*SunGloss"Override"を検索する



Language StyleGuide

 サンは、翻訳スタイルガイドも公開しています。これは元々、自社の翻訳作業を外注するために作られたマニュアルです。翻訳会社や翻訳者によって、スタイルや品質がバラつくことが考えられるので、このスタイルガイドを利用することで、訳文のスタイルの統一を狙っています。

 たとえば、助動詞の表現について、次のような例を挙げています。



:スタイルガイドの助動詞についての表現一覧

意味

英語表現の例

日本語表現の例

強い指示・要求

be sure tomake sureensure

必ず〜してください、〜することを確認してください

指示・要求

musthave toplease

〜する必要があります、〜します、〜してください

提案・推奨

shouldrecommended

〜するべきです、〜するべきではありません、〜するとよいでしょう、〜することをお勧めします、〜するようにしてください

強い禁止

must notshould never benever

〜してはいけません、決して〜しないでください

弱い禁止

do notis notmay not

〜しません、〜しないでください、〜(では)ありません



 ただし、スタイルはあくまで指針であり、絶対にこのようにしなければいけないという物ではないそうです。

 オープンソースプロジェクトの翻訳作業でも、このようなスタイルガイドを利用すれば、ドキュメント翻訳の品質を揃える効果があるでしょう。



翻訳メモリOpen Language tools

 サンは、Open Language tools(*)という翻訳支援ツールも公開しています。これは、サンが開発した翻訳支援ツールSunTransを、オープンソースソフトウェアとして公開したものです。現在も、サンの翻訳作業で利用されています。TMXXLIFFをサポートしています。幅広いファイル形式に対応しており、poファイルも対応しています。

 実際には、「XLIFF Filters」と「XLIFF Translation Editor」という2つのツールで構成されています。


* サンが利用している翻訳支援ツールXLIFF Translation Editor



 これらのツールとドキュメントについて、Sun&UsersというWebサイト(*)に基本的な使い方の解説記事が掲載されています。



オープンソース翻訳作業を取り巻く状況



 ご存じのとおり、オープンソースソフトウェアは世界中で開発/利用されています。その多くは、英語で情報を提供しています。英語以外をネイティブで用いる人間は、これらのソフトウェアを利用したり、世界に向けて情報を発信するために、翻訳作業を必要としています。

 このような翻訳作業は、これまで個人やプロジェクトごとの活動として行われてきました。そこには、共通の課題や問題があるはずです。そこで、このような課題に横断的に取り組もうという動きが始まりつつあります。



情報は共有できているか

 これまでも、オープンソースソフトウェアの国際化と地域化・日本語化のために、多くに人たちが活躍してきました。その活動に伴い、多くのノウハウとツールが、プロジェクト内などに蓄積されています。

 しかし、このような情報は他のオープンソースコミュニティでは、十分共有できていないようです。プロジェクトによっては、十分な人手とノウハウを持たないところもあるでしょうし、翻訳支援ツールや翻訳メモリのことを知らない人も多いのではないかと思います(私自身も、最近までこのようなツールを知りませんでした)



Open Source Documentation Meeting

 そこでスタートしたのが、Open Source Documentation Meetingです。これは、オープンソースプロジェクトを横断して、ドキュメント作成/翻訳の問題に取り組もうという集まりです。日本Linux協会の主催で、何度かミーティングを開催しました。OmegaTやサンの翻訳支援活動に関するセミナーも行いました。

 現在は、Doc-ja Archive Project(*)のメーリングリストを利用して情報交換しています。



今後の可能性

 今後は、TMXXLIFFといった標準フォーマットにより、これまで個別に開発されてきた翻訳支援ツールを相互に利用できるかも知れません。

 翻訳メモリデータ自体をプールすることも考えられますが、出自の異なる翻訳データを統合することは、ライセンス上の問題があるんじゃないかという指摘がされています。とりあえずは、プロジェクトごとに個別に管理していくのが良いでしょう。

 何はともあれ、このような翻訳作業のノウハウを共有することで、他のプロジェクトのツールを流用したり、用語集などの最低限のデータ整備するだけで、今までより効率よく翻訳作業を進められるようになっていくでしょう。また、このようなフリーのツールが、プロの翻訳者などの注目を集めれば、オープンソースにも興味を持ってくれるかも知れません。その結果、翻訳作業を手伝ってくれる人が増えてくれることを期待しています。



●参考リンク

AltaVista - Babel Fish Translation

http://babelfish.altavista.com/

RFC文書中で要求レベルを表現するために用いられるキーワードの使用法について

http://www.asahi-net.or.jp/~sd5a-ucd/rfc-j/rfc-2119j.html

LISA:Localization Industry Standards Assosiation

http://www.lisa.org/

TMX:Translation Memory eXchange

http://www.lisa.org/standards/tmx/

TMX Specification

http://www.lisa.org/standards/tmx/specification.html

XLIFF 1.1 仕様書 日本語版

http://www.tradic.jp/tr/oasis/xliff/xliff-specification.html

XLIFF 1.1 Specification

http://www.oasis-open.org/committees/xliff/documents/cs-xliff-core-1.1-20031031.htm

OmegaTオフィシャルサイト

http://www.omegat.org/

OmegaTプロジェクト

http://sourceforge.net/projects/omegat

Google Groups:OmegaT(日本語)

http://groups.google.com/group/omegat

Open Translation Web サイト

http://developers.sun.com/techtopics/global/technology/translation/

Open Translation日本語情報ページ

http://developers.sun.com/techtopics/global/technology/translation/ja-index.html

SunGloss

https://g11nportal.sun.com/sungloss/

What's Translation@Sun サン・マイクロシステムズ日本語翻訳担当斎藤氏のブログ

http://blogs.sun.com/reiko/



Sun Microsystems - Sun&Users

* オープンソースプロジェクトの翻訳作業を支援するサン 第1

翻訳支援ツールをコミュニティと共に育てていきたい

http://jp.sun.com/communities/users/0601/feature03.html

* オープンソースプロジェクトの翻訳作業を支援するサン 第2

サンの翻訳方針とノウハウを公開!

http://jp.sun.com/communities/users/0602/feature03.html

* オープンソースプロジェクトの翻訳作業を支援するサン 第3

ユーザーのリクエストに応えたい

http://jp.sun.com/communities/users/0602/feature05.html



Doc-ja Archive Project

http://openlab.ring.gr.jp/doc-ja/



筆者のブログでも、翻訳支援ツールに関する情報を整理しています。

http://www.catch.jp/blog/opensource/translation/