OSDN Git Service

bzip2 1.0.8: Update sources.
[linuxjm/jm.git] / guide / LDP_man-pages.rst
index a0b8a7c..2d19fa4 100644 (file)
@@ -2,53 +2,72 @@
 LDP man-pages 翻訳ガイド
 ========================
 
+LDP man-pages では、翻訳に po4a を利用しています。
+そのため、手順が他の翻訳方法と少し異なっています。
+
 .. _ldp_preparation:
 
 準備
 ====
 
-LDP man-pages のマニュアルのレポジトリは git の submodule になっています。
-作業時は以下のように submodule を展開します。
+po4a を利用しているので、インストールしておきます。
+以下は Debian/Ubuntu の場合。
+他のディストリビューションの場合も po4a をインストールすれば大丈夫だと思います。
 
 .. code-block:: console
 
-   git://scm.osdn.jp/gitroot/linuxjm/jm.git
-   cd jm
-   git submodule update --init --recursive
+   $ apt-get install po4a
 
-また、po4a を利用しているので、インストールしておきます。
+.. note::
 
-.. code-block:: console
+   po4a のバージョンにより roff マクロの認識や文字列抽出方法に違いがあることを
+   確認しています。以下の環境で動作を確認しています (2021年3月時点)。
 
-   apt-get install po4a
+   * po4a 0.57 (Ubuntu 20.04 focal)
+   * po4a 0.55 (Debian 10 buster)
+   * po4a 0.52 (Ubuntu 18.04 focal)
 
-翻訳æ\96¹æ³\95
-========
+翻訳æ\9b´æ\96°ã\81®å\8b\95ä½\9c確èª\8dã\82\92è¡\8cã\81£ã\81¦ã\81\8aã\81\8dã\81¾ã\81\99ã\80\82
+全ファイルを処理するので多少時間がかかります (2〜3分くらい)。
 
-LDP man-pages では、翻訳に po4a を利用しています。
+.. code-block:: console
 
-roff ファイルと po4a ファイルの変換には、LDP man-pages のフランス語翻訳チームが
-公開している perkamon を利用しています。
-perkamon を git submodule として利用しているため、手順が少し複雑になっています。
+   $ cd manual/LDP_man-pages
+   $ make setup
+   $ make
+   $ git status
 
-前準備
-------
+全部のコマンドがエラーなく終了すること、
+最後の ``git status`` コマンドで更新されているファイルがないこと、
+を確認してください。
+``git status`` の出力で更新されているファイルがある場合は、
+そのまま翻訳作業を進めると、意図しないファイルも更新してしまうことがあるので、
+メーリングリストで相談するなどして対応を検討しましょう。
+作業漏れ以外の可能性もあり、たとえば、 po4a のバージョンが変わって
+PO ファイルへの抜き出し方法が変わることもあります。
 
-git repository の top directory で以下のコマンドを実行します。
+翻訳方法
+========
 
-.. code-block:: console
+LDP man-pages では、翻訳に po4a を利用しています。
 
-   cd $JM_REPO_TOP
-   git submodule update --init
+roff ファイルと PO ファイルの変換には、 roff ファイルと PO ファイルが 1:1
+になっているわけではなく、 po4a ファイルはカテゴリー毎に用意され、
+ひとつの po4a ファイルには複数の roff ファイルが含まれています。
 
-po4a 環境を用意します。
+おおまかな流れは以下のようになります。
 
-.. code-block:: console
+1. 翻訳したい man page に対応する PO ファイルを特定する
+2. PO ファイルで翻訳を行う
+3. draft の man page を生成する
 
-   cd manual/LDP_man-pages
-   make jm-setup
-
-これで po4a で作業して draft に反映する準備が整いました。
+ファイルの対応付けがこのようになっているのは、
+似た roff ファイルには似た文が含まれていてカテゴリー単位の方が翻訳が
+効率化されること、逆に全 roff ファイルを一つの PO ファイルにまとめて
+しまうと本来違う意味で解釈すべき文が同じエントリーになってしまう可能性
+があり、それを回避するため、という点からです。
+この対応付けは、もともと LDP man-pages のフランス語翻訳チームが
+公開していた perkamon をベースにしています。
 
 翻訳と draft への変換
 ---------------------
@@ -85,21 +104,32 @@ ja.po から draft を生成するには以下のいずれかを実行します
 
 .. code-block:: console
 
-   make
-   make translate
+   $ make
+
+または
+
+.. code-block:: console
+
+   $ make translate
 
-初めて実行する際には、全ての ja.po が変換対象になるので、時間がかかります。
 どのファイルが更新されたかは git status で確認して下さい。
 
 .. code-block:: console
 
-   git status .
+   git status .
 
 デフォルトでは、翻訳率 80% 以上のページが生成されます。
 80% にしている理由は、ある程度日本語混じりの draft page を見ながら翻訳する方が
 全体の文脈をつかみやすいためです。全部翻訳できたかは、下記の「翻訳状況の確認」
 の方法で確認できるので、翻訳率 100% を閾値にする必要はないと考えています。
 
+生成された draft page を man コマンドで整形して、内容を確認します。
+修正を行う際は、 ja.po を更新 -> draft page の生成 -> 内容の確認、を繰り返します。
+
+.. code-block:: console
+
+   $ man -l draft/man3/strptime.3
+
 翻訳状況の確認
 --------------
 
@@ -143,6 +173,11 @@ ja.po の diff は以下のコマンドで取得できます。 time の ja.po 
 
    git diff po4a/time/po/ja.po
 
+.. note::
+
+   レビュー方法は改善の余地がいろいろあると思います。
+   たとえば、プルリクエストを使うなど。
+
 リリース
 --------
 
@@ -157,5 +192,5 @@ ja.po の diff は以下のコマンドで取得できます。 time の ja.po 
 
 更新後は通常のリリース手順と同じです。
 
-* release ファイルを git add -u → git commit
+* release ファイルを git add → git commit
 * (必要に応じて) www/index.m4, www/news/index.m4 を更新