OmegaT の用語集と翻訳メモリを作ってみる

maint-guide の翻訳を PO 形式で更新することにしたので、ずっと後回しにしていた OmegaT いじりも兼ねて、翻訳をはじめる人向けのサポートになるかなーと思って、表題のようなことをやろうとしてみた。

用語集

Debian JP では対訳表というのを……作って……いて……、skk の辞書データという形でマスターが管理されている。もとのデータも簡単な key/value で、すでに他の形式に変換するスクリプトがいくつかあるので、それを真似て OmegaT の用語集形式 (tsv) に変換するスクリプトを作ってみた。変換したデータは

http://www.debian.or.jp/community/translate/

にある tsv のリンクからダウンロードできるようにしてある。

これを、OmegaT の PROJECT/glossary ディレクトリに置いておくと、用語集にある単語が翻訳文中にあると、右下の窓に訳語の候補を出してくれるようになるので、翻訳をやりはじめた最初のうちは役に立つんじゃないかと思う。

翻訳メモリ

こちらが本命なのだけど、debconf po の翻訳が結構進んでいるので、その結果を翻訳メモリとして流用したいなぁ、と企んでいる。うまくいってないので、とりあえず今やってみたことだけメモ。

まずは、OmegaT を起動して、新しいプロジェクト (EN → JA、「文レベルで文節化する」のチェックを外す) を作成したら、コンソールに移動する。プロジェクトフォルダの下にsources ディレクトリが作成されているので、そこに

http://i18n.debian.net/material/

に置かれている現時点の debconf po 全部の tar 玉をダウンロードして、展開する。他の言語は不要なので全て消し、euc-jp と UTF-8 が入り乱れているので UTF-8 に揃える。

# 確かこんな感じでやったけど細かいところは覚えてないので適当
cd /path/to/project/sources
wget http://i18n.debian.net/material/po-debconf-unstable.tar.gz
tar zxf po-debconf-unstable.tar.gz
find . -name \*.po.gz | while read FILENAME
do
  if echo $FILENAME | grep -qv ja.po
  then
    rm $FILENAME
  else
    gunzip $FILENAME
    nkf -w --overwrite `echo $FILENAME | sed -e 's/\.gz$//'`
  fi
done

OmegaT文字コード判別はあまりあてにならないので、「設定>ファイルフィルタ>POファイル>編集」と辿って、*.po ファイルのエンコードを両方明示的に UTF-8 に変更し、確定。

再度読み込むか、みたいなことを聞かれるので、そのようにさせると、翻訳済の po ファイルをデータとしてのみこんだ omegat プロジェクトのできあがり。保存して一旦 omegat を終了する。

最終的に、/path/to/project/projectname-po-*.tmx というのが 3 ファイルできている。これが欲しかった翻訳メモリのデータファイルのはず。この *.tmx を翻訳したいプロジェクトの tm/auto/ に配置すると、すでに翻訳された英文をもとに参考訳文とか出してくれるはずなんだけど……そううまくはいかないみたい。

データとしてはちゃんと tmx として読みこんでくれている。ただし、元の po の一単位 (msgstr)が複数文章をもってて長いせいか、ほとんど参考訳文としてマッチしていない模様。

宿題

  • PO ファイルのフィルタが改善されているらしい新バージョンで試してみる
  • 「。」で区切った状態で認識させる方法を追求する
  • omegat 内のブラウザが UTF-8 を文字化けさせる謎を解く

それにしても、今回は mentors に再 put しようと手元でいじっていた omegat 2.0.5.4 を使ったけど、omegat の新バージョンはいつまでも Beta がとれなくて困る……。

2010-10-21追記

omegat のマニュアルが文字化けするのは、現在の debian パッケージが何か悪さをしている気配。svn checkout して ant build したら、きちんと表示された。