手順は以下の通り。
-1. perkamon の更新
+1. po4a 環境の更新
2. 原文の更新作業
3. 単純な fuzzy の更新
$ make clean-setup
$ git status
-1. perkamon の更新
+1. po4a 環境の更新
------------------
このセクションの操作はすべて ``perkamon`` ディレクトリーで行う。
(必要に応じてダウンロード用の URL を調整)
man-pages-$(V).tar.xz:
- wget https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/Archive/$@
+ wget https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/$@
配布されている LDP man-pages の原文に対して
-ローカルの workaround を適用するファイル ``po4a-fixes.patch`` を削除しておく。
+ローカルの workaround を適用するファイル ``workaround.patch`` を削除しておく。
+最新版の LDP man-pages には不要であったり、適用できない可能性があるため。
.. code-block:: console
- $ rm -f po4a-fixes.patch
+ $ rm -f workaround.patch
+
+以下のコマンドを実行すると、指定された LDP man-pages がダウンロードされ、
+po4a による POT/PO ファイルへの変換の準備が行われる。
+``build/C`` 以下に用意されたファイルが po4a による変換で使用される。
+
+.. code-block:: console
+
+ $ make setup
+
+以下のコマンドで、削除されたページの反映を行う。
+削除されたページがある場合は、 ``po4a/*/*.cfg`` の該当ページに対応する
+エントリーがコメントアウトされる。
+コメントアウトされたエントリーは不要なので、手動で削除する。
+
+.. code-block:: console
+
+ $ make disable-removed
+
+以下のコマンドを実行し、追加されたページを確認する。
+
+.. code-block:: console
+
+ $ make print-new-files
+
+追加されたページがあれば、標準出力に ``po4a/*/*.cfg`` に追加する内容が
+表示される。ページの内容を確認し、関連が深い po4a cfg ファイルに追加する。
+明確な基準はないが、 追加ページの SEE ALSO などを見て、関連性を判断する。
+
+以下のコマンドを実行し、po4a による変換が行えるかを確認する。
+
+.. code-block:: console
+
+ $ make translate
+
+po4a が対応している書式が含まれていてエラーが表示される場合がある。
+その場合は po4a のマニュアル (``man po4a``) や ``Locale::Po4a::Man``
+(``perldoc Locale::Po4a::Man``) を見て対処方法を検討する。
+
+例えば、 LDP man-pages 5.10 の tzfile.5 では以下のようなエラーが出たので、
+``Locale::Po4a::Man`` を参考にして ``po4a/time/time.cfg`` の ``tzfile.5``
+のエントリーに ``opt`` 設定を追加した。
.. code-block:: console
+ $ make
+ ...
+ po4a -k 100 --variable langs='' --previous --srcdir . --destdir . po4a/time/time.cfg
+ build/C/man5/tzfile.5:10: (po4a::man)
+ This page uses conditionals with '.ie'. Since po4a is not a real groff parser, this is not supported.
+
+ build/C/man5/tzfile.5:34: (po4a::man)
+ Unknown macro '.q "TZif"'. Remove it from the document, or refer to the Locale::Po4a::Man manpage to see how po4a can handle new macros.
+
+.. code-block:: ini
+ :name: po4a/time/time.cfg
+ :caption: po4a/time/time.cfg
+ :emphasize-lines: 3
+
+ [type: man] build/C/man5/tzfile.5 \
+ $lang:build/$lang/man5/tzfile.5 \
+ opt:"-o groff_code=verbatim -o inline=UR,UE,q" \
+ add_$lang:?@po4a/add_$lang/lists/local-pre.list \
+
+po4a のオプションでは対応できず、翻訳上も必要な場合は、
+原文の roff ファイルを変更する手もある。
+その場合は ``build/C/manN/xxxx.N`` を直接変更し、変更後の内容を確認する。
+変更内容は ``workaround.diff`` に反映する
+(``diff -u man-pages/manN/xxxx.N build/C/manN/xxxx.N`` の出力)。
+
+なお、 ``.\`` で始まる行がある場合は以下のようなメッセージが表示されるが、
+JM ではコメント行は翻訳していないので、無視してよい。
+
+.. code-block:: console
+
+ This file contains the line '.\" autogenerated headers with the name "__NR__llseek" (i.e., "_llseek").'. You should translate the source file, but continuing anyway.
+
+上記の作業が一通り終わったら、再度最初に戻して動作確認を行う。
+
+.. code-block:: console
+
+ $ make clean
$ make setup
- (build 以下が更新される)
$ make print-new-files
- (何か表示されたら、po4a/*/*.cfg に追加)
$ make disable-removed
- (何かないか確認)
+ $ make translate
+
+これで po4a 環境の更新は終了です。
+更新があるはずなので、ここで一度コミットしておくとよい。
+
+.. code-block:: console
+
$ git status
- (更新があるはずなので、ここで一度 commit を作成しておくとよい)
$ git add ....
$ git commit
$ cd ..
2. 原文の更新作業
-----------------
-perkamon 作業ディレクトリに最新版に対応した展開する
+``manual/LDP_man-pages`` で以下のコマンドを実行する。
.. code-block:: console
- (manual/LDP_man-pages 以下で実行)
$ make upgrade
このコマンドでは、以下の作業が行われる。
1. [make jm-setup]
- * 最新版の man-pages の tarball が perkamon/ 直下にダウンロードされる。
- * tarball が perkamon/man-pages ディレクトリに展開される。
- * po4a 作業用の source lang が build/C として用意される。
+ * 最新版の man-pages の tarball が ``perkamon/`` 直下にダウンロードされる。
+ * tarball が ``perkamon/man-pages`` ディレクトリに展開される。
+ * po4a 作業用の source lang が ``build/C`` として用意される。
- * 実際にコンテンツがあるファイルが build/C/man? 以下に man-pages 以下から
- コピーされる。
- * po4a-fixes.patch がある場合には、build/C/ 以下のファイルに適用される。
- * リンクファイルは build/C/link に一覧が作成される。
+ * 実際にコンテンツがあるファイルが ``build/C/man?`` 以下に
+ ``man-pages`` 以下からコピーされる。
+ * ``workaround.patch`` がある場合には ``build/C/`` 以下のファイルに
+ 適用される。
+ * リンクファイルは ``build/C/link`` に一覧が作成される。
-2. original 以下にコピーする
+2. 新しい原文を ``original`` 以下にコピーする。
-3. COLOPHON 以下を削除する。
+3. ``original`` 以下の原文から COLOPHON 以下を削除する。
``translation_list`` を更新する際に、変更点のみを抽出するために行う。
COLOPHON 部分はリリース毎にバージョン番号が更新されてしまうので、
- original に登録する際には、この節を削除しておく。
+ ``original`` に登録する際には、この節を削除しておく。
-4. original 以下を git で stage する。
+4. ``original`` 以下を git で stage する。
5. ``translation_list`` の更新
-6. POT の更新
+
+ LDP man-pages の翻訳は、翻訳が完了していない状態でも英語混じりで公開する
+ ことにしていて、かつ翻訳の進捗状況は ``untrans.html`` で確認できるので、
+ ``translation_list`` では翻訳ステータスの更新はせず、バージョン番号を
+ 更新するだけになっている。バージョン番号はページ公開時に参照されるので
+ 更新が必要。この点は他のマニュアルと異なるので注意。
+
+6. POT/PO の更新
+
+ ``po4a/<category>/po/`` 以下の ``<category>.pot`` (POT ファイル) と
+ ``ja.po`` が更新される。
+
7. 翻訳統計情報の更新
8. Git commit
git add po4a/ stats/ untrans.html
git commit -m "LDP: Update POT and ja.po to LDP v3.XX"
+上記の処理が ``make upgrade`` の中で行われる。
+
3. 単純な fuzzy の更新
-----------------------
+======================
COLOPHON が更新されているので、fuzzy が少なくとも一つできる。
ja.po で fuzzy を探してバージョンを更新する。