C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

po4aを用いたドキュメントのローカライズプロジェクトを自動化する為のツール「auto-po4a」を公開しました。

po4aを用いたドキュメントのローカライズプロジェクトを自動化する為のツール「auto-po4a」を公開しました。

これは差し当たり、今後多くのEnglishなドキュメント、それもちまちま更新されるであろうドキュメントのローカライズ(邦訳版の作成・メンテ)が必要な見込みの dartrefjp で使用する為に作成しました。とは言え、もちろん公開するに辺り一般化してありますので、多くのドキュメントのローカライズプロジェクトでも採用可能(なつもり)です。

*特徴

  • ソースのリスト管理
    • http(s)やftpなどのURLをソース(原文)として列挙するだけで管理対象を追加できます
    • スキームのnull、alternative拡張によりオンラインに限らずあらゆるソースの取得/生成に対応(後述)
  • ソースの自動取得(更新)
    • wget|curl|aria2cなどと連携してリスト管理されたURLからソースを自動的に取得(更新)
    • nullスキームを使うとソースの取得を省略しつつpo生成やローカライズ版ドキュメントの自動生成のみも行える
    • alternativeスキームを使うと任意のスクリプト(実際にはバイナリも可)による柔軟なソースの取得または動的生成も可能
  • poの生成(更新)の自動化
  • ローカライズ版ドキュメントの自動生成
  • git init/pull/add/commmitの自動化

と、言う訳で、導入するとpoの訳出とgit push(必要ならmergeやブランチ管理)などの作業を除いてほぼ自動化できます。まあ、ちょっとしたシェルスクリプトなんですけどね・w・b

(※完全な自動化にはcronなども併用する必要がありますが、そこはまあ必要に応じて。)

*日本語でのとりあえずな説明

基本的にはパスの通ったところにbin/auto-po4a*を放り込んでお好きな作業ディレクトリで`auto-po4a`ってするだけです。gitが使用可能な環境ならば自動的にgitのinitも行われます。

設定は実行したディレクトリに生成されるetc/auto-po4a.configureをVimなどのテキストエディタで開けば、設定変数名と初期値から何をどう書けば自分の目的を達成できるか分かると思います。

基本的には sources にそのプロジェクトでローカライズしたい原文のURLをずんずん放り込むだけです。もし、単純にURLからwgetcurl、またはaria2cなどで取得するのが難しいソースがあれば、そのプロジェクトに bin ディレクトリを作成して、ソース生成用のスクリプトを入れて対応する事ができます。

例えば、ソースのURLとして alternative://hoge.fuga/neko/nyan.txt の様に alternative スキーマを指示すれば、ソース取得の段階で bin/hoge.fuga-neko スクリプトが実行されます。このスクリプトは以下のような単純なスクリプトでも構いませんし、より複雑怪奇な動的ソース生成プログラムを作っても構いません。

#!/usr/bin/runhaskell

main = writeFile "nyan.txt" c
  where
    c = "test now."

(※シバンでrunhaskellとかただのネタなので実用するなら bin/hoge.fuga-neko.hs を ghc でコンパイルしておくとかしたらいいと思います。或いは勿論/bin/shだとか/usr/bin/perlやら/usr/bin/pythonのスクリプトとかでもOK)

また、 null://host/dir/document の様に null スキーマを指示すると、ソース取得だけをすっ飛ばします。原文は一度だけ取得したらあとはいいやって場合や、手元にある原文データをそのまま配置してauto-po4aで管理したい場合などに使うと良いです。

参考に以下が dartrefjp に供給する日本語ローカライズデータ群をこの auto-po4 で管理してみようという試みになります。ちょっと使ってみて問題が無さそうなら今後適用範囲を広げて作業を進めたいですね・w・b

<おまけ>

f:id:USAGI-WRP:20120308073630p:plain

こちらは Gtranslator: Translation file editor を使いながら編集してみたでござるの図・w・b
Vimでもりもり編集でも良いのだけど、.poエディタを使うと、

  • 原文→訳出 の対応を確認しながら作業し易い(.poでも上下に並んではいるんだけど)
  • メッセージ(訳出を考える単位ブロック)ごとにさくさくぽんと移動し易い
  • 状態(未訳とか、更新等により曖昧な可能性があるなど)がメッセージごとにアイコンで可視化される
  • 現在15翻訳済み、合計81ブロック、などの情報が表示されているので、進める毎にモチベーションが上がるなり維持できるなりし易い

とかってメリットがあるかなーと思うよ。Vimでも.poの編集はできるけどね@w@;