Akihiro MOTOKI
amoto****@gmail*****
2013年 4月 8日 (月) 07:29:29 JST
元木です。 2013年4月5日 22:04 Jiro Matsuzawa <jmats****@gnome*****>: > 松澤です。 > お世話になっております。 > > GNU_sedのmanpageを翻訳する中で、いくつか気づいた点があります。 > po4aベースの管理方法についての提案になります。 > > あくまで、こういうやり方はどうでしょうか、という程度の意図で > 管理者様の作業的負担を強いる意図は全くありません。 > > JMでの経緯をちゃんと把握できておりませんし、po4aについても先日試したばかりなので、 > 新参者の意見として耳を貸していただければ幸いです。 > 松澤さん、ありがとうございます。 po4a のやり方はまだまだ試行錯誤中の状態です。 roff と PO が 1:1 の方が翻訳がしやすいという声もあり、 松澤さん提案の方法は現実的だと思っています。 これをベースに GNU_sed の Makefile を変更してみました。 http://sourceforge.jp/projects/linuxjm/scm/git/jm/commits/391b6c18ffff206f4d2a738c1f03fad0c8685131 > 提案 > ==== > > 1. potをVCSで管理しない > pot(PO Template)はマスタードキュメント(原文ドキュメント)から機械的に抽出されるものです。 > マスタードキュメントをリポジトリで管理するのであれば、potは不要だと思います。 > make pot などの方法でpotを生成できるようにし、(Makefileのサンプルは後述します) > .gitignoreにpotを追加するとよいのではないでしょうか。 > はい。 pot ファイル自体の管理は本質的には不要だと思います。 誰も参照していないと思いますので、削除してみました。 pot ファイルを登録しているのに大きな理由はなく、作業の歴史的経緯という要素が大きいです。 一つは、Transifex などにアップロードすることも視野に入れていたので、アップロードしたバージョンを はっきりさせるために、管理対象にしてみたという点です。ただ、man の翻訳では Transifex は使いにくいかな という印象を持っているので、必要性はありません。 もう一つは、2. の po4a コマンドと関係していますが、POT ファイルが更新される場合があるので、 変更があったかどうかを分かりやすくするために登録していました。 また、上記の意味では、翻訳ドキュメント自体も、 > マスタードキュメントとpoファイルから機械的に生成される限りにおいて、 > リポジトリ管理対象から外すという手もありだと思います。 > draft 以下の翻訳ドキュメントも基本的には不要だと思います。 現状の意味としては、翻訳中のドキュメントでの差分を確認できることだけでしょうか。 とりあえずまだ残っています。 release 以下は最終版を確定させる意味であった方がよいと思っています。 あと、sourceforge.jp の shell サーバでは、新規コマンドはインストールしにくいので、 その意味でも release 以下は残そうと思っています。 > 2. 翻訳ドキュメント生成時に、po4aコマンドを使わない > 私の理解している限りで、po4aコマンドは翻訳ドキュメント作成時に、poの内容を更新することがあります。 > 自分はこの場面をあまり経験したことがありません。 逆に po4a コマンドでは PO の内容が翻訳ファイルに反映されない現象はときどき経験しています。 po4a コマンドがタイムスタンプを基準に変換を行なっているのが原因のようですが、原因を特定できていません。 > この副作用はバージョン管理上好ましくないので、po4aコマンドの代わりにpo4a-translateコマンドを使うのはいかがでしょうか? > po4a-translateは、po4aと異なり、翻訳ドキュメント生成時にpoファイルを更新しません。 > また、これにともない、原文ドキュメントのアップデートに合わせてpoを更新する > make update-po などを用意するとよいかと思います。 > po4a-translate や po4a-updatepo などの個別のコマンドを使うほうが良さそうなので、その方向で考えようと思います、。 > > 3. ja.poは--no-wrap --no-locationする > これは私なりの、poのVCS管理上のTIPSなのですが、 > poは、論理的に意味のない行折り返しがあったり、抽出元ソースの行番号などが含められています。 > これは、poに実質的な更新がないにも関わらず、折り返し位置が変わったり、 > あるいは抽出元ソースの位置が変わったりした場合に、 > VCS上の変更差分となるので、管理上好ましくありません。 > これらの不要な情報は、msgmerge --no-wrap --no-locationで落とすことができます。 > no-wrap に関しては追加するのをすっかり忘れていました。ありがとうございます。 no-location は、原文のファイルと PO ファイルを 1:1 にするのであれば、抽出元を確認する必要がないので、 指定するとよいと思います。複数のソースファイルと一つの PO を対応付ける場合には、元ファイルとの対応付けが できるので、あった方がいいかなと思っています。 基本的には、原文のファイルと PO ファイルを 1:1 にした方がいいと思い始めていますので、 松澤さんの案がいいのかなと思っています。 > Makefileサンプル > =============== > > 以下のとおり、GNU_sed用のMakefileにたいして上記の提案を簡単に実装してみました。 > 変更箇所がわかるようにdiff形式にしております。 > * make (translate) でpo4a-translateを利用して翻訳ドキュメントを生成する > * make pot でpotを生成する > * make update-po でpoを更新する (さらに--no-wrap --no-locationしている) > これを参考にして、Makefile を変更してみました。 make updatepo で、PO ファイルが存在しない場合は po4a-gettextize をするようにしてみました。 po4a-gettextize 直後は--no-wrap が行われていない状態になっていたので、 msgmerge をもう一度呼び出して --no-wrap を行うようにしています。 -- Akihiro MOTOKI <amoto****@gmail*****> -------------- next part -------------- HTMLの添付ファイルを保管しました... 下载