[JM:00863] po4aベースの管理方法についての提案

Back to archive index

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...
下載 



linuxjm-discuss メーリングリストの案内
Back to archive index