[JM:02090] po4a cfg 使いませんか?

アーカイブの一覧に戻る
Akihiro Motoki amoto****@gmail*****
2021年 3月 16日 (火) 14:06:16 JST


元木です。

このところ LDP man-pages の管理方法の議論や JM での po4a の使い方などを見て、
po4a cfg を使った方法を理解の共通点にするといいのかなと思いました。

JM の活動は、今は個人の活動が中心ですが、複数人が関わるプロジェクトであることは
違いないので、最低限以下のような点を考慮する必要があると思います。
(これだけではありませんが単純化のため)

・再現性:誰が実行しても基本的に同じになる。コマンドの編集などはない方がよい。
・簡単さ:これはいろんな面があると思います。
        翻訳時に実行するコマンドの簡単さ、仕組みのわかりやすさ、など

po4a cfg はこれらをある程度緩和してくれると思いますし、
いまの LDP man-pages の管理方法を理解する助けにもなると思います。

util-linux の管理をみて思ったことと po4a cfg を使うとこうなるよ、というのを挙げてみます。
(util-linux を選んだのに他意はありません)

## po4a-translate のコマンドライン

変換時の追加オプションを指定していますが、どのファイルをどのオプションで変換したかは
よくわかりません。README にはたぶん他のファイルにも必要でしょうと書かれているだけ。

po4a cfg だと [1] のようなファイルを用意しておけば、

  po4a po4a/man1/getopt.cfg

を実行するだけで、POT/PO の更新、翻訳ファイルの生成までやってくれます。
オプションが必要であれば、LDP man-pages の例ですが [2] のように書いておくことで
コマンドラインで指定する必要がなくなりますし、他の人が実行するときも迷うことはありません。
(副作用として POT が必ず生成されます)

po4a cfg を用意するメリットはあると思います。

[1] https://github.com/amotoki/jm/blob/84f70e56b580bc751949d3283628fc5a7f04346a/manual/util-linux/po4a/man1/getopt.cfg
[2] https://github.com/amotoki/jm/blob/84f70e56b580bc751949d3283628fc5a7f04346a/manual/LDP_man-pages/perkamon/po4a/time/time.cfg#L232

## もう少しするなら

ここからは util-linux の状況を見て、 もう少し楽になるかなと思った点をコメントしておきます。
patch を使うと、翻訳が少し変化しただけで patch 適用ができなくなってしまうので、
考慮の余地はあると思います。仕方ないときは patch を使えばいいと思います。

(a) addenda の活用

patch ファイルを用意して、copyright や 読者へのご注意 への注意を挿入していますが、
po4a の addenda の機能を使うと、追加のコンテンツを挿入できます。

po4a cfg は [3] のような感じで、 [4] のようなファイルを用意します。
挿入場所は [4] の先頭にある PO4A-HEADER で指定します。
正規表現ベースなのであまり柔軟な指定はできませんが。
詳細は po4a(1) と po4a(7) の add_$(lang) と addenda の説明を見る必要があります。

[3] https://github.com/amotoki/jm/blob/1311a6cfd602ab7a0c97d461b148a2e8122e8f3c/manual/util-linux/po4a/man1/cal.cfg#L7-L8
[4] https://github.com/amotoki/jm/blob/1311a6cfd602ab7a0c97d461b148a2e8122e8f3c/manual/util-linux/po4a/man1/add_ja/cal.1.notice

(b) 訳注の扱い

cal.1 などを見ると、訳注を patch で適用していますが、
簡単な訳注(段落を分ける程度のもの)なら、[5] のように ja.po に含めてしまうと
分かりやすいと思います。(これは po4a cfg とは関係ないですね)

ただし、あまり複雑な訳注はかけません。
getopt-ja.patch の [6] のように長い部分は無理やり[7] のように ja.po に書くことも
できますが、 roff の directive は使えないので、物足りないかもしれません。

[5] https://github.com/amotoki/jm/commit/67dd168292ae573521d57bcd8c241a56ee0cd7a0#diff-3337d638b68f0781216e9411bed04905c7f2125210d67beba7dd6c141441c542
[6] https://github.com/amotoki/jm/blob/84f70e56b580bc751949d3283628fc5a7f04346a/manual/util-linux/po4a/man1/getopt-ja.patch#L81-L102
[7] https://github.com/amotoki/jm/blob/67dd168292ae573521d57bcd8c241a56ee0cd7a0/manual/util-linux/po4a/man1/getopt-ja.po#L410-L432

## おまけ

util-linux のフォルダーで、 draft 以下や original 以下はどのような管理に
なっているかよく分からなかったです。
draft 以下は po4a を使っているときには、無視されている?
original 以下がどうなっているか分からなかったのは、cal-ja.po だとオリジナルが
cal.man になっていて、たぶん別の場所から来ているのだと思いました。

私が試しに cal.1 と getopt.1 に po4a cfg を導入してみた変更内容は
個人レポジトリにおいてあります。[8]
util-linux の事実上の管理者は長南さんなので、長南さんの判断に従いたいと思います。

[8] https://github.com/amotoki/jm/compare/po4a-cfg-util-linux


linuxjm-discuss メーリングリストの案内
アーカイブの一覧に戻る