po4a-updatepo や po4a-translate から po4a + po4a.cfg に移行その2

2024年12月15日

po4a-updatepo や po4a-translate から po4a + po4a.cfg に移行 にて hoge.txt → hoge.txt.po のように、 .po 追加 となる方式で使って見たところ、 make との相性は大変悪かった。

なので、 hoge.txt → hoge.po のように、 単純に拡張子を付け替えるだけで使えるようにしてみた。

フォルダ構成

「git 付属ドキュメント翻訳」は以下フォルダ構成になっている。

project
+
+- Documentation         「原文フォルダ」
+- Documentation-sedout  「sed 用作業フォルダ」
+- Documentation-po      「翻訳作業用フォルダ」 po, po4a.cfg
+   +- pot               「POTフォルダ」
+
+- Documentation-ja      「翻訳済フォルダ」

プログラムの文書は割と「原文フォルダ」内に文書生成用の Makefile が配置してあって、 文書生成用Makefileは親フォルダ内のファイルを参照することしばしば(たとえば、 親フォルダ内のプログラム・ソース・ファイル内のコメント部分を参照するなど)であるので、 「原文フォルダ」と同じレベルに「翻訳済フォルダ」を配置し、 翻訳しないファイル達や Makefile を 「翻訳済フォルダ」 にコピーするだけで使えるようにしてある。

make で扱いやすいように po と po4a.cfg ファイルを一緒に置くようにした。

po4a.cfg例

「翻訳作業用フォルダ」 の Makefile にて 自動生成する。

以下は原文 Documentation/git-am.txt に対する po4a.cfg で、

ファイル名

機能

Documentation/git-am.txt

原文ファイル

Documentation-sedout/git-am.txt

sed 処理済ファイル

Documentation-po/git-am.po

翻訳用ファイル

Documentation-po/git-am.po4cfg

po4a.cfg ファイル

Documentation-po/pot/git-am.pot

翻訳用POTファイル

Documentation-ja/git-am.txt

翻訳済ファイル

# generate by ./mk-po4a-cfg.sh 2024年 12月 15日 日曜日 12:49:38 JST
[po4a_langs] ja
[type: asciidoc] ../Documentation-sedout/git-am.txt $lang:../Documentation-ja/git-am.txt
[po4a_paths] pot/git-am.pot ja:git-am.po
  • "[po4a_langs]" 和訳のみのため ja 固定。 他言語もある場合は追記。

  • "[type: asciidoc]" ASCIIDOCの文書だから。

  • "[type: asciidoc] 「マスター文書ファイル・パス名」 $lang:「翻訳済ファイル・パス名」"

  • "[po4a_paths] 「POTファイル・パス名(拡張子 pot)」 ja:「翻訳作業用ファイル・パス名(拡張子 po)」

パスは make ( po4a ) を実行するフォルダ(ここでは Documentation-po ) からの相対指定である。

$master

po4a.cfg の $master は マスターファイルの basename に置換される。つまり上記では git-am.txt である。 git-am ではないので注意。

これはどういうことになるかというと、 $master 使っちゃうと pot ファイルや po ファイルは git-am.txt.pot や git-am.txt.po となる。 git-am.pot や git-am.po じゃないんである。

make では *.c → *.o とかするので make とは相性悪いので、 $master を使わずにファイル名を指定するようにした。

mk-po4a-cfg.sh

po4a-updatepo や po4a-translate から po4a + po4a.cfg に移行 とは中身違うので注意。 Documentation-po フォルダ内で実行する。

  • ../Documentation 原文フォルダ

  • ../Documentation-ja 翻訳済フォルダ

#!/usr/bin/sh
# mk-po4a-cfg.sh <<src-pathfile(relative)>>
SRC_FILE=$1
BASE_FILE=${SRC_FILE#../Documentation-sedout/}
DST_FILE=../Documentation-ja/${BASE_FILE}
BASE_BODY=${BASE_FILE%.txt}
echo "# generate by $0" `date`
echo "[po4a_langs] ja"
echo "[type: asciidoc] ${SRC_FILE} \$lang:${DST_FILE}"
echo "[po4a_paths] pot/${BASE_BODY}.pot ja:${BASE_BODY}.po"