[JM:03257] po4a コンフィグファイル自動生成スクリプト

Back to archive index
matsuand michi****@gmail*****
2022年 2月 26日 (土) 19:02:03 JST


matsuand です。

jm.git/support/genmancfg.sh なるものを追加しました。
po4a コンフィグファイル (拡張子 cfg) を自動生成する
スクリプトです。

コンフィグファイルは po4a 処理を行う「かなめ」のファイルであり、
これと合わせて Makefile も自動生成するので、
このスクリプトを初回実行するだけで、たいていは確実に
po4a 翻訳が即座に進められます。

数点列記:
・po4a 翻訳を支援する目的です。
・po4a の細かな設定などを知らなくても po4a 翻訳ができます。
 ただしいったんエラーなどが発生すると、復旧の手立てが見い
 出せず右往左往するかもしれません。極力サポートします。
 同時にドキュメントも整備することを考えます。
・現行において jm.git/admin/po4a/gencfg.py が存在し
 これと目的がかぶりますが、本スクリプトはかなり世話焼き
 な面があり、数多くのケースで支障なく処理できるはずです。
・ただし po4a 処理は万能ではないため、本スクリプトも
 発見的に修正を加えていく必要があると思っています。

どうぞ参考にしてください。

以下、本スクリプトの冒頭コメントを引用

# 概要
#   本スクリプトは po4a の cfg ファイルと対応する Makefile を自動生成します。
#   これに伴って関連ファイルも自動生成します。処理にあたっては original ディ
#   レクトリ配下に original/man[0-9n]/* という、翻訳対象のオリジナル man ページ
#   が配置済みであることが必要です。
#
#   生成ファイル
#     po4a{,/man[0-9n]}/<package name>.cfg:
#               po4a の cfg ファイル (上書き生成)
#     Makefile: cfg ファイルを処理する Makefile (上書き生成)
#     translation_list.tmp:
#               translation_list 相当の初期テンプレートファイル
#               (上書き生成)
#     po4a/add_ja/copyright/man[0-9n]/<manpage name>.[0-9n].txt:
#               いわゆる"copyright"ファイル (上書きはしない)
#     def.mk: パッケージ情報を提供するためのファイル
#               非存在時にはエラー終了しテンプレートを生成する。
#               テンプレート内容を適切に書き換えて再実行する。
#
# 使用方法
#   翻訳パッケージディレクトリ (jm.git/manual/<package name>) にて実行。
#   (manual ディレクトリと同列の support ディレクトリに本スクリプトを配置
#    しており、相対パスで本スクリプトを実行することを前提とする)
#
#   $ cd jm.git/manual/<package name>
#   $ ../../support/genmancfg.sh [options]
#
#   オプションは genmancfg.sh -h の出力を参照してください。
#   ほとんどのオプションは、処理に必要となる名称等を指定するものです。
#   その中で重要なものが -m または -o であり、これは処理タイプを指定します。
#   以下に説明。
#
# 本スクリプトにおける処理タイプ
#   処理にあたっては二種類の po4a 処理タイプに対応します。
#   デフォルト(-m, -o の未指定時) は -m (multi) です。
#   常時これにしておいて (オプション未指定で) 問題はありません。
#
#   これを用いる必要があるケースとして upstream がたった一つの po ファイルを
#   提供していることがあり、それと同調して(upstream への提供も考慮して)
#   たった一つの po ファイルとしたい場合に -o (one) を指定します。
#
# TYPE=one:
#   1つめは処理タイプ one (オプション -o 指定時) です。
#   original ディレクトリ配下の man ページソースに対応づく ja.po を1つだけ作るタイプです。
#
#   (top) --+--original--+--man1
#           |            +--man3
#           |            +--man5
#           +--po4a--+--<package name>.cfg
#                    +--<package name>.pot
#                    +--ja.po
#
# TYPE=multi:
#   2つめは処理タイプ multi (オプション -m 指定時; オプション未指定時の
#   デフォルト) です。
#   original ディレクトリ配下のサブディレクトリ構造 (man1, man3 など) に合わせて
#   そのサブディレクトリごとに man1/ja.po, man3/ja.po などを分割して作るタイプです。
#
#   (top) --+--original--+--man1
#           |            +--man3
#           |            +--man5
#           +--po4a--+--man1--+--<package name>-man1.cfg
#                    |        +--<package name>-man1.pot
#                    |        +--ja.po
#                    +--man3--+--<package name>-man3.cfg
#                    |        +--<package name>-man3.pot
#                    |        +--ja.po
#                    +--man5--+--<package name>-man5.cfg
#                             +--<package name>-man5.pot
#                             +--ja.po
#
# ----------


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