Jiro Matsuzawa
jmats****@gnome*****
2013年 4月 5日 (金) 22:04:04 JST
松澤です。 お世話になっております。 GNU_sedのmanpageを翻訳する中で、いくつか気づいた点があります。 po4aベースの管理方法についての提案になります。 あくまで、こういうやり方はどうでしょうか、という程度の意図で 管理者様の作業的負担を強いる意図は全くありません。 JMでの経緯をちゃんと把握できておりませんし、po4aについても先日試したばかりなので、 新参者の意見として耳を貸していただければ幸いです。 提案 ==== 1. potをVCSで管理しない pot(PO Template)はマスタードキュメント(原文ドキュメント)から機械的に抽出されるものです。 マスタードキュメントをリポジトリで管理するのであれば、potは不要だと思います。 make pot などの方法でpotを生成できるようにし、(Makefileのサンプルは後述します) .gitignoreにpotを追加するとよいのではないでしょうか。 また、上記の意味では、翻訳ドキュメント自体も、 マスタードキュメントとpoファイルから機械的に生成される限りにおいて、 リポジトリ管理対象から外すという手もありだと思います。 2. 翻訳ドキュメント生成時に、po4aコマンドを使わない 私の理解している限りで、po4aコマンドは翻訳ドキュメント作成時に、poの内容を更新することがあります。 この副作用はバージョン管理上好ましくないので、po4aコマンドの代わりにpo4a-translateコマンドを使うのはいかがでしょうか? po4a-translateは、po4aと異なり、翻訳ドキュメント生成時にpoファイルを更新しません。 また、これにともない、原文ドキュメントのアップデートに合わせてpoを更新する make update-po などを用意するとよいかと思います。 3. ja.poは--no-wrap --no-locationする これは私なりの、poのVCS管理上のTIPSなのですが、 poは、論理的に意味のない行折り返しがあったり、抽出元ソースの行番号などが含められています。 これは、poに実質的な更新がないにも関わらず、折り返し位置が変わったり、 あるいは抽出元ソースの位置が変わったりした場合に、 VCS上の変更差分となるので、管理上好ましくありません。 これらの不要な情報は、msgmerge --no-wrap --no-locationで落とすことができます。 Makefileサンプル =============== 以下のとおり、GNU_sed用のMakefileにたいして上記の提案を簡単に実装してみました。 変更箇所がわかるようにdiff形式にしております。 * make (translate) でpo4a-translateを利用して翻訳ドキュメントを生成する * make pot でpotを生成する * make update-po でpoを更新する (さらに--no-wrap --no-locationしている) なお、`echo $(MASTER_DOCS)|sed -e 's/\([^[:space:]]\{1,\}\)/-m \1/g'` などは、 -mオプションに渡す原文ドキュメントが複数ある場合を考慮して、このようにしました。 ※ サンプル程度なので、ちゃんとやる場合はもっと修正が必要です。 diff --git a/manual/GNU_sed/Makefile b/manual/GNU_sed/Makefile index 575e7a3..fbd8bfd 100644 --- a/manual/GNU_sed/Makefile +++ b/manual/GNU_sed/Makefile @@ -6,13 +6,19 @@ LANGS = ja PACKAGE = sed PO4ACFG = po4a/$(PACKAGE).cfg +MASTER_DOCS = original/man1/$(PACKAGE).1 +LOCALIZED_DOCS = draft/man1/$(PACKAGE).1 +POTFILE = po4a/$(PACKAGE).pot +POFILE = po4a/ja.po + WORK_DIR = . all: translate -translate: - po4a $(PO4AFLAGS) -v --variable langs='$(LANGS)' \ - --previous --srcdir $(WORK_DIR) --destdir $(WORK_DIR) $(PO4ACFG) +translate: $(POFILE) + po4a-translate $(PO4AFLAGS) -f man -p $(POFILE) \ + `echo $(LOCALIZED_DOCS)|sed -e 's/\([^[:space:]]\{1,\}\)/-l \1/g'` \ + `echo $(MASTER_DOCS)|sed -e 's/\([^[:space:]]\{1,\}\)/-m \1/g'` stat: @for l in $(LANGS); do \ @@ -28,3 +34,12 @@ page-stat: -e 's/[()]//g' \ -e 's/^draft\/man[1-9]\///' | \ awk '{printf("%-15s: %7s (%3s/%3s)\n",$$1,$$3,$$5,$$7);}' + +pot: $(POTFILE) +$(POTFILE): $(MASTER_DOCS) + po4a-gettextize -f man -p $@ \ + `echo $(MASTER_DOCS)|sed -e 's/\([^[:space:]]\{1,\}\)/-m \1/g'` + +update-po: + po4a-updatepo -f man -p $(POFILE) --previous --msgmerge-opt='--no-wrap --no-location' \ + `echo $(MASTER_DOCS)|sed -e 's/\([^[:space:]]\{1,\}\)/-m \1/g'` -- Jiro Matsuzawa E-mail: jmats****@gnome***** jmats****@src***** matsu****@gmail***** GPG Key ID: 0xECC442E9 GPG Key Fingerprint: E086 C14A 869F BB0E 3541 19EB E370 B08B ECC4 42E9 -------------- next part -------------- HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B... 下載