明けましておめでとうございます。本年もよろしくお願いします m(__)m
昨年末ころから、Perlのドキュメント日本語訳関係で動きがあったので、前から作ろうと思ったものをちょっと、作り始めてみた。
翻訳作業において、オリジナルがバージョンアップすると、オリジナルのバージョン間のdiffをみつつ、翻訳のバージョンアップをするっていう作業が必要なんですが、以外と邪魔くさい。
というのは、自分で、オリジナルのバージョン管理までやんないといけないハメになっちゃうから(もちろん、モジュール作者がリポジトリを持っている場合はあるけど、各モジュールで違うってのはめんどくさいし)。
なので,古いバージョンから新しいバージョンへのアップデートは一から訳すよりは楽なはずなのに、ちょっとめんどくさい。
svk を使った方法は以前試したものの、それでもめんどくさいので、やはりそれように何かほしい。
というわけで、ちょっと作った。tran というコマンド。
http://github.com/ktat/tran/
まだ、途中もいいところなので、コンセプトの紹介。
設定ファイルはこんな感じ
--- # 通知に関する設定 notify: perldocjp: class: Email from: 'from@example.com' to: 'to@example.com' template_directory: /home/ktat/.tran/template/perldocjp/ # 上のディレクトリ以下にコマンドの名前と同じファイル(startとか)を作る(以下みたいなの、空行までがヘッダ情報) # Subject: [RFC]%n %v 翻訳開始しました # charset: jis # # 加藤です。 # # %n %v の翻訳を開始しました。 # 置き場所に関する設定 repository: # オリジナルの文書を管理する場所(バージョンごとにディレクトリ掘って突っ込むだけ) original: directory: /home/ktat/.tran/original/ # 翻訳作業をする場所に関する情報 translation: jprp-modules: directory: /home/ktat/cvs/perldocjp/docs/modules/ # 通知に上で書いた perldocjpの設定を使う notify: perldocjp jpa: directory: /home/ktat/git/github/jpa-translation/ # 翻訳するリソース resources: CPAN: # CPANに対するデフォルトの翻訳場所設定 translation: jprp-modules metafile: /home/ktat/.cpan/Metadata target_only: - '*.pm' - '*.pod' - README - Changes targets: # モジュールごとの個別の設定 Moose: # 翻訳リポジトリにjpaを使う translation: jpa MooseX::Getopt: translation: jpa
以下のように,コマンドをたたく。
% tran start CPAN Module::Install
すると、
- CPANからModule::Installのtar.gzをとってくる
- 取得及び展開の実装は、Tran::Resources::CPAN の get メソッド
- ここで .pm -> .pod に変換している
- ~/.tran/original/Module-Install/バージョン/ に展開
- original 以下に保存されたファイルを翻訳場所へコピー
- 必要ならバージョン情報の更新。JPAなら、META.ymlの更新。
- notify の設定がされていれば、コマンドに応じて通知が動く
て、感じで動く(つもり)。
なお、これを使う場合、オリジナルの文書を残していないと、マージがうまくいきません。
ので、JPAの翻訳文書ではおかしなことになると思います(mergeの実装を変えればいいかもしれないけど)。
JPAは別の環境の一例として実装してみただけです。
と、書いてたんですが、mergeの実装を変えたら(というか、直したら)、まともになりました。それなりに使えるかも。
現状、startしかまともなコマンドがありません。finishも作って、翻訳で使われているバージョンコントロールシステムと連動するとかすると良いんだろうけどなぁ、とか思いつつ、やるかは謎です。少なくとも、start 時点で、既存の翻訳リポジトリの update はしたほうが良いよなぁとか、思いますが。
CVSとかGitとかを簡単に扱うモジュールあるのかな?
後は、各翻訳リポジトリに応じてサブクラスを作るので、JPRPのメタXMLを作ったりできるように、フック箇所を作ったりすればいいかな。