Pootleを活用するために

OLPCではソフトやWebページの翻訳のため、Pootleという、シンプルな翻訳支援ポータルソフトを使っています。このソフト、見た目がシンプルなので使いやすそうに見えるためか、いろんなところで紹介されたり、使われています。ただ、正直言ってまだ完成度があまり高くなく、実運用で使っていると見た目と違っていろいろなことに遭遇します。
DebianでもPootleを翻訳に使う予定だそうですが、当時のコミュニテイの評価はあまり芳しくなく、導入は慎重に進めているようです。
(少し古いですが参考:
http://dolphin.c.u-tokyo.ac.jp/~nori1/w/?cmd=view;name=TokyoDebianMeeting20061021

    * とにかく遅い。無駄に Ajax 的にしようとしすぎている。しかしこれは Ajax ハッカーが適切なコードを書けばよいだけかもしれない。
    * 煩わしいウェブインタフェースでしか作業できない。
    * 作業の衝突に対応していない (ようだ)。インポートやエクスポートはオフラインでやった方が安全らしい。
    * 変な翻訳を突っ込まれた場合にそれが素通りしてしまう。査読して OK を出されたもののみ通るようになっていない。

現在OLPCで使っているのは v1.0.2ですが、近く 1.1RCが出るようなので多少は改善されていることもあるかもしれません。しかし、OLPCは既に実戦投入しており、次々新しいリリースを出していますので、なんとか乗り切らないといけません。ここでは、Etoys関係を中心に、気になっていることと回避への思いつきやPootleへの勝手な改善希望を書き留めておきます。

作業分担とToDoの管理

Pootleが本来想定している使い方は次のようなものです。

  • プロジェクト管理者はゴールを定義します。これはプロジェクト内で作業を分解して割り当てることができる最小単位です。
  • プロジェクト管理者は、ゴールに対して翻訳対象を割り当てます。POファイル単位が割り当てられる最小単位になり、残念ながらそれ以上細かい単位(たとえば特定の語)を指定して割り当てることはできません。
  • プロジェクト管理者は、ゴールに対して作業を担当するユーザを割り当てます。
  • 個々の翻訳者が翻訳を開始すると、自分に割り当てられた語(実際にはファイルです)が出てくるので、それを処理していきます。

ここで、POファイルの単位が十分小さく、割り当てられた語を全部翻訳することが十分現実的なスコープの場合は、プロジェクト管理者がちゃんと仕事をしている限り、現在の設計でも十分機能すると思われます。
しかしEtoysには3千以上のフレーズがあり、これを全部翻訳するというのはすごく大変な作業です。この中には一般のワークショップではあまり使われない機能(たとえば Connectors)のフレーズも含まれます。それをボランティアベースで作業しているとしたら、翻訳を全部完成させるというゴール設定はあまり現実的ではありません。

ですから、なんらかの方法で「残り翻訳すべき語のリスト」を管理する必要があります。現在のPootleの機能ではfuzzyフラグをつけておくくらいしか手段がありませんから、外部のWikiなどで管理するしかないと思われます。
もしPootle内で個々の語にタグをつけて、それを使って検索抽出したり、ゴール設定に使えたらうれしいと思います。

検索機能

どうも多くのユーザさんは、Pootle画面に出てくるフレーズを上から順番に翻訳しているみたいです。(OLPC Pootleで眺めていると、作業を始めたばかりの言語は、ことごとく最初のほうだけ翻訳したところで放置されていることに気がつきます)
しかし、もっと自由にPOファイルの中で、訳したい語をあちこち探して作業したいです。残念ながらPootleの検索機能は非常に弱いです:

  • msgidでしか検索できません。msgstrやコンテキストコメントでは検索できません。
  • 常にFind Firstしかできないようです。Find Nextができません。

これはなんとかしてほしいです。

私の場合はしかたがないので、POファイルをいったんダウンロードして、手元でエディタで開いてそこで場所を調べてから、Pootleで検索をやりなおしたりしています。

レビュー

Pootleではレビュー権限を持つユーザが、入力されている訳語に対してサジェスチョンを入力し、翻訳者がそれを参照しながら作業をできます。
でも難しいフレーズの場合、作業者コミュニティの間でディスカッションが必要になると思うのですが、そんなことはできないですから、外部のMLやWikiを併用する必要があります。翻訳支援ポータルというなら、こういう機能をぜひ提供してほしいです。

作業の追跡

せめて

  • Recent ChangesのリストをどこかのWebページに出す
  • 個々の語について、最終更新者・更新日時を表示する

くらいはできてもよさそうですが、そんな機能はありません。

したがって、Pootle上のデータの変化を追跡するには、こまめにリポジトリにコミットするしかありません。またそのコミットがWeb画面上のボタンをマニュアル操作で押すというようになっているのですが、夜間バッチで定期的にコミットしてくれても罰はあたらないと思います。

テスト/品質保証

POファイルをコンパイルする msgfmtコマンドは、いろんなチェックをしてくれるのですが、余計なチェックをしてくれることもあります。
Etoysの場合何回かひっかかっているのは、文字列の先頭・末尾の改行文字の存在が翻訳前後で一致しないといけないというエラーです。たとえば、以下はコンパイルエラーになります。

msgid = "\nhoge"
msgstr = "ほげ\n"

Pootleは、翻訳内容をチェックするいくつかのテストを用意しており、これを流すことで効率的にレビューすることを狙っています。本来はこういうテストに含めておくべきことです。

また、プロジェクト管理者はリポジトリにコミットする前にテストをしてほしいところです。業務としてしっかりしたプロジェクトでやっているならこれを要求できるのですが、現在のOLPCでの翻訳者コミュニティはほとんどがボランティアであり、スキルセットもばらばらですから、一律にこれを求めることは難しいです。

ですから、Agile開発で行われる継続的インテグレーションと同様に、自動的にがんがんテストやコンパイルを流せばいいと思うのです。そしてその最新の結果はどこかのWebページでいつでも見れるようにしておく。あるいは、テストが通ってないとコミットできないとか。