1 .. _ldp_original_update:
3 ========================
5 ========================
18 :ref:`ldp_preparation` を参照してください。
20 Git レポジトリの LDP_man-pages 以下はきれいな状態にした状態で始めること。
22 .. code-block:: console
24 $ cd manual/LDP_man-pages
31 このセクションの操作はすべて ``perkamon`` ディレクトリーで行う。
32 ここでは、新しいバージョンの LDP man-pages が po4a で正常に行えることの
35 .. code-block:: console
39 LDP man-pages のバージョン番号を更新する。
41 .. code-block:: console
49 (必要に応じてダウンロード用の URL を調整)
50 man-pages-$(V).tar.xz:
51 wget https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/$@
53 配布されている LDP man-pages の原文に対して
54 ローカルの workaround を適用するファイル ``workaround.patch`` を削除しておく。
55 最新版の LDP man-pages には不要であったり、適用できない可能性があるため。
57 .. code-block:: console
59 $ rm -f workaround.patch
61 以下のコマンドを実行すると、指定された LDP man-pages がダウンロードされ、
62 po4a による POT/PO ファイルへの変換の準備が行われる。
63 ``build/C`` 以下に用意されたファイルが po4a による変換で使用される。
65 .. code-block:: console
69 以下のコマンドで、削除されたページの反映を行う。
70 削除されたページがある場合は、 ``po4a/*/*.cfg`` の該当ページに対応する
72 コメントアウトされたエントリーは不要なので、手動で削除する。
74 .. code-block:: console
76 $ make disable-removed
78 以下のコマンドを実行し、追加されたページを確認する。
80 .. code-block:: console
82 $ make print-new-files
84 追加されたページがあれば、標準出力に ``po4a/*/*.cfg`` に追加する内容が
85 表示される。ページの内容を確認し、関連が深い po4a cfg ファイルに追加する。
86 明確な基準はないが、 追加ページの SEE ALSO などを見て、関連性を判断する。
88 以下のコマンドを実行し、po4a による変換が行えるかを確認する。
90 .. code-block:: console
94 po4a が対応している書式が含まれていてエラーが表示される場合がある。
95 その場合は :ref:`po4a-error` を参考にして対処する。
97 上記の作業が一通り終わったら、再度最初に戻して動作確認を行う。
99 .. code-block:: console
103 $ make print-new-files
104 $ make disable-removed
108 更新があるはずなので、ここで一度コミットしておくとよい。
110 .. code-block:: console
120 ---------------------------------
122 po4a が対応している書式が含まれていてエラーが表示される場合がある。
123 その場合は po4a のマニュアル (``man po4a``) や ``Locale::Po4a::Man``
124 (``perldoc Locale::Po4a::Man``) を見て対処方法を検討する。
126 例えば、 LDP man-pages 5.10 の tzfile.5 では以下のようなエラーが出たので、
127 ``Locale::Po4a::Man`` を参考にして ``po4a/time/time.cfg`` の ``tzfile.5``
128 のエントリーに ``opt`` 設定を追加した。
130 .. code-block:: console
134 po4a -k 100 --variable langs='' --previous --srcdir . --destdir . po4a/time/time.cfg
135 build/C/man5/tzfile.5:10: (po4a::man)
136 This page uses conditionals with '.ie'. Since po4a is not a real groff parser, this is not supported.
138 build/C/man5/tzfile.5:34: (po4a::man)
139 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.
142 :caption: po4a/time/time.cfg
145 [type: man] build/C/man5/tzfile.5 \
146 $lang:build/$lang/man5/tzfile.5 \
147 opt:"-o groff_code=verbatim -o inline=UR,UE,q" \
148 add_$lang:?@po4a/add_$lang/lists/local-pre.list \
150 po4a のオプションでは対応できず、翻訳上も必要な場合は、
151 原文の roff ファイルを変更する手もある。
152 その場合は ``build/C/manN/xxxx.N`` を直接変更し、変更後の内容を確認する。
153 変更内容は ``workaround.diff`` に反映する
154 (``diff -u man-pages/manN/xxxx.N build/C/manN/xxxx.N`` の出力)。
156 なお、 ``.\`` で始まる行がある場合は以下のようなメッセージが表示されるが、
157 JM ではコメント行は翻訳していないので、無視してよい。
159 .. code-block:: console
161 This file contains the line '.\" autogenerated headers with the name "__NR__llseek" (i.e., "_llseek").'. You should translate the source file, but continuing anyway.
166 ``manual/LDP_man-pages`` で以下のコマンドを実行する。
168 .. code-block:: console
176 * 最新版の man-pages の tarball が ``perkamon/`` 直下にダウンロードされる。
177 * tarball が ``perkamon/man-pages`` ディレクトリに展開される。
178 * po4a 作業用の source lang が ``build/C`` として用意される。
180 * 実際にコンテンツがあるファイルが ``build/C/man?`` 以下に
181 ``man-pages`` 以下からコピーされる。
182 * ``workaround.patch`` がある場合には ``build/C/`` 以下のファイルに
184 * リンクファイルは ``build/C/link`` に一覧が作成される。
186 2. 新しい原文を ``original`` 以下にコピーする。
188 3. ``original`` 以下の原文から COLOPHON 以下を削除する。
190 ``translation_list`` を更新する際に、変更点のみを抽出するために行う。
191 COLOPHON 部分はリリース毎にバージョン番号が更新されてしまうので、
192 ``original`` に登録する際には、この節を削除しておく。
194 4. ``original`` 以下を git で stage する。
195 5. ``translation_list`` の更新
197 LDP man-pages の翻訳は、翻訳が完了していない状態でも英語混じりで公開する
198 ことにしていて、かつ翻訳の進捗状況は ``untrans.html`` で確認できるので、
199 ``translation_list`` では翻訳ステータスの更新はせず、バージョン番号を
200 更新するだけになっている。バージョン番号はページ公開時に参照されるので
201 更新が必要。この点は他のマニュアルと異なるので注意。
205 ``po4a/<category>/po/`` 以下の ``<category>.pot`` (POT ファイル) と
212 この段階のコミットにより、とりあえず原文更新直後の状態が
217 git add translation_list
218 git commit -m "LDP: Update original to LDP N.MM"
219 git add po4a/ stats/ untrans.html
220 git commit -m "LDP: Update POT and ja.po to LDP N.MM"
222 上記の処理が ``make upgrade`` の中で行われる。
225 ======================
227 COLOPHON が更新されているので、fuzzy が少なくとも一つできる。
228 ja.po で fuzzy を探してバージョンを更新する。
230 COLOPHON 以外でも、翻訳に直接関係ないマイナーな更新があれば、
232 量が多ければ個々の翻訳更新作業の中で行えばよい。
234 以下では、 PO ファイル更新後に、ドラフトページの生成と翻訳統計を
235 更新している。内容を確認後、コミットを行う。分かりやすさとファイルの量を
236 考慮し、ドラフトページとそれ以外を分けてコミットしている。
238 .. code-block:: console
241 $ git add -u po4a/ stats/ untrans.html
242 $ git commit -m "LDP: Update the version to N.MM in PO files"
245 $ git commit -m "LDP: Update draft pages based on LDP N.MM release"
247 公開用のリリースページも一気に更新してしまう場合は以下も実行する。
249 .. code-block:: console
253 $ git add -u translation_list
254 $ git commit -m "LDP: Update release pages based on LDP N.MM release"
259 perkamon は LDP man-pages の po4a への変換を支援するスクリプトです。
261 po4a で翻訳する際に、オプション、変換ルール、対象となるファイルなどを
262 po4a の cfg (`具体例 <https://osdn.net/users/amotoki/pf/jm/scm/blobs/master/manual/LDP_man-pages/perkamon/po4a/aio/aio.cfg>`__)
263 として書いておいて、以下のような形で一括で変換することができます。
265 .. code-block:: console
267 $ po4a -k 80 --variable langs='ja' --previous --srcdir . --destdir . po4a/wchar/wchar.cfg
269 perkamon がやっていることは、以下の通り。
271 * この po4a cfg ファイル群を提供
272 po4a cfg を使った翻訳生成用の Makefile の提供
273 (make translate や make translate-aio などで翻訳できるようにする)
274 * LDP man-pages から po ファイルへの変換の前作業
276 * LDP man-pages 更新時の po4a cfg 更新の helper script の提供
277 (make disable-removed や make print-new-files)
278 * po4a cfg の中で、翻訳時に追加する header や footer の定義なども含まれている。
279 (JM では昔の copyright や翻訳履歴を生成した man に入れるのに使っている)
281 JM の LDP_man-pages レポジトリの Makefile は perkamon の wrapper になっている。
282 perkamon のフォルダーで直接作業するのは LDP man-pages のバージョンを更新する
285 perkamon という別ディレクトリになっているのは、 LDP man-pages の po4a での管理を
286 始めた当初、フランス語の翻訳チームがかなり積極的に新しい LDP man-pages に追従
287 しており、po4a cfg の更新とかもいつの間にか行われていて、JM 側はそれを利用する
290 ツール群が perkamon という別ディレクトリになっているため、
291 LDP_man-pages/Makefile では symlink を作成するなど手順が煩雑になっている点は
292 あります。 perkamon ディレクトリも含めて、JM のレポジトリに取り込んだ現在では、
293 もう少し単純化できるかもしれませんが、そこはみなさんの判断にお任せします。