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 ここでは、新しいバージョンの LDP man-pages が po4a で正常に行えることの
34 LDP man-pages のバージョン番号を更新する。
36 .. code-block:: console
44 (必要に応じてダウンロード用の URL を調整)
45 man-pages-$(V).tar.xz:
46 wget https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/$@
48 配布されている LDP man-pages の原文に対して
49 ローカルの workaround を適用するファイル ``workaround.patch`` を削除しておく。
50 最新版の LDP man-pages には不要であったり、適用できない可能性があるため。
52 .. code-block:: console
54 $ rm -f workaround.patch
56 以下のコマンドを実行すると、指定された LDP man-pages がダウンロードされ、
57 po4a による POT/PO ファイルへの変換の準備が行われる。
58 ``build/C`` 以下に用意されたファイルが po4a による変換で使用される。
60 .. code-block:: console
64 以下のコマンドで、削除されたページの反映を行う。
65 削除されたページがある場合は、 ``po4a/*/*.cfg`` の該当ページに対応する
67 コメントアウトされたエントリーは不要なので、手動で削除する。
69 .. code-block:: console
71 $ make disable-removed
73 以下のコマンドを実行し、追加されたページを確認する。
75 .. code-block:: console
77 $ make print-new-files
79 追加されたページがあれば、標準出力に ``po4a/*/*.cfg`` に追加する内容が
80 表示される。ページの内容を確認し、関連が深い po4a cfg ファイルに追加する。
81 明確な基準はないが、 追加ページの SEE ALSO などを見て、関連性を判断する。
83 以下のコマンドを実行し、po4a による変換が行えるかを確認する。
85 .. code-block:: console
89 po4a が対応している書式が含まれていてエラーが表示される場合がある。
90 その場合は :ref:`po4a-error` を参考にして対処する。
92 上記の作業が一通り終わったら、再度最初に戻して動作確認を行う。
94 .. code-block:: console
98 $ make print-new-files
99 $ make disable-removed
103 更新があるはずなので、ここで一度コミットしておくとよい。
105 .. code-block:: console
114 ---------------------------------
116 po4a が対応している書式が含まれていてエラーが表示される場合がある。
117 その場合は po4a のマニュアル (``man po4a``) や ``Locale::Po4a::Man``
118 (``perldoc Locale::Po4a::Man``) を見て対処方法を検討する。
120 例えば、 LDP man-pages 5.10 の tzfile.5 では以下のようなエラーが出たので、
121 ``Locale::Po4a::Man`` を参考にして ``po4a/time/time.cfg`` の ``tzfile.5``
122 のエントリーに ``opt`` 設定を追加した。
124 .. code-block:: console
128 po4a -k 100 --variable langs='' --previous --srcdir . --destdir . po4a/time/time.cfg
129 build/C/man5/tzfile.5:10: (po4a::man)
130 This page uses conditionals with '.ie'. Since po4a is not a real groff parser, this is not supported.
132 build/C/man5/tzfile.5:34: (po4a::man)
133 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.
136 :caption: po4a/time/time.cfg
139 [type: man] build/C/man5/tzfile.5 \
140 $lang:build/$lang/man5/tzfile.5 \
141 opt:"-o groff_code=verbatim -o inline=UR,UE,q" \
142 add_$lang:?@po4a/add_$lang/lists/local-pre.list \
144 po4a のオプションでは対応できず、翻訳上も必要な場合は、
145 原文の roff ファイルを変更する手もある。
146 その場合は ``build/C/manN/xxxx.N`` を直接変更し、変更後の内容を確認する。
147 変更内容は ``workaround.patch`` に反映する
148 (``diff -u man-pages/manN/xxxx.N build/C/manN/xxxx.N`` の出力)。
150 なお、 ``.\`` で始まる行がある場合は以下のようなメッセージが表示されるが、
151 JM ではコメント行は翻訳していないので、無視してよい。
153 .. code-block:: console
155 This file contains the line '.\" autogenerated headers with the name "__NR__llseek" (i.e., "_llseek").'. You should translate the source file, but continuing anyway.
160 ``manual/LDP_man-pages`` で以下のコマンドを実行する。
162 .. code-block:: console
170 * 最新版の man-pages の tarball がダウンロードされる。
171 * tarball が ``man-pages`` ディレクトリに展開される。
172 * po4a 作業用の source lang が ``build/C`` として用意される。
174 * 実際にコンテンツがあるファイルが ``build/C/man?`` 以下に
175 ``man-pages`` 以下からコピーされる。
176 * ``workaround.patch`` がある場合には ``build/C/`` 以下のファイルに
178 * リンクファイルは ``build/C/link`` に一覧が作成される。
180 2. 新しい原文を ``original`` 以下にコピーする。
182 3. ``original`` 以下を git で stage する。
186 git のバージョンによっては ``git2upd`` が期待通り動作しない場合があるため、
187 以下の 4. 以降は現在 Makefile でコメントアウトしている。
188 :doc:`upstream_update` の ``git2upd`` に関する注意を考慮した上で、
191 4. ``translation_list`` の更新
193 LDP man-pages の翻訳は、翻訳が完了していない状態でも英語混じりで公開する
194 ことにしていて、かつ翻訳の進捗状況は ``untrans.html`` で確認できるので、
195 ``translation_list`` では翻訳ステータスの更新はせず、バージョン番号を
196 更新するだけになっている。バージョン番号はページ公開時に参照されるので
197 更新が必要。この点は他のマニュアルと異なるので注意。
201 ``po4a/<category>/po/`` 以下の ``<category>.pot`` (POT ファイル) と
208 この段階のコミットにより、とりあえず原文更新直後の状態が
213 git add translation_list
214 git commit -m "LDP: Update original to LDP N.MM"
215 git add po4a/ stats/ untrans.html
216 git commit -m "LDP: Update POT and ja.po to LDP N.MM"
218 上記の処理が ``make upgrade`` の中で行われる。
221 ======================
223 COLOPHON が更新されているので、fuzzy が少なくとも一つできる。
224 ja.po で fuzzy を探してバージョンを更新する。
226 COLOPHON 以外でも、翻訳に直接関係ないマイナーな更新があれば、
228 量が多ければ個々の翻訳更新作業の中で行えばよい。
230 以下では、 PO ファイル更新後に、ドラフトページの生成と翻訳統計を
231 更新している。内容を確認後、コミットを行う。分かりやすさとファイルの量を
232 考慮し、ドラフトページとそれ以外を分けてコミットしている。
234 .. code-block:: console
237 $ git add -u po4a/ stats/ untrans.html
238 $ git commit -m "LDP: Update the version to N.MM in PO files"
241 $ git commit -m "LDP: Update draft pages based on LDP N.MM release"
243 公開用のリリースページも一気に更新してしまう場合は以下も実行する。
245 .. code-block:: console
249 $ git add -u translation_list
250 $ git commit -m "LDP: Update release pages based on LDP N.MM release"
258 perkamon の Makefile の内容は manual/LDP_man-pages/Makefile に統合されました。
260 perkamon は LDP man-pages の po4a への変換を支援するスクリプトです。
262 po4a で翻訳する際に、オプション、変換ルール、対象となるファイルなどを
263 po4a の cfg (`具体例 <https://osdn.net/projects/linuxjm/scm/git/jm/blobs/master/manual/LDP_man-pages/po4a/aio/aio.cfg>`__)
264 として書いておいて、以下のような形で一括で変換することができます。
266 .. code-block:: console
268 $ po4a -k 80 --variable langs='ja' --previous --srcdir . --destdir . po4a/wchar/wchar.cfg
270 perkamon がやっていることは、以下の通り。
272 * この po4a cfg ファイル群を提供
273 po4a cfg を使った翻訳生成用の Makefile の提供
274 (make translate や make translate-aio などで翻訳できるようにする)
275 * LDP man-pages から po ファイルへの変換の前作業
277 * LDP man-pages 更新時の po4a cfg 更新の helper script の提供
278 (make disable-removed や make print-new-files)
279 * po4a cfg の中で、翻訳時に追加する header や footer の定義なども含まれている。
280 (JM では昔の copyright や翻訳履歴を生成した man に入れるのに使っている)
282 JM の LDP_man-pages レポジトリの Makefile は perkamon の wrapper になっている。
283 perkamon のフォルダーで直接作業するのは LDP man-pages のバージョンを更新する
286 perkamon という別ディレクトリになっているのは、 LDP man-pages の po4a での管理を
287 始めた当初、フランス語の翻訳チームがかなり積極的に新しい LDP man-pages に追従
288 しており、po4a cfg の更新とかもいつの間にか行われていて、JM 側はそれを利用する
291 ツール群が perkamon という別ディレクトリになっているため、
292 LDP_man-pages/Makefile では symlink を作成するなど手順が煩雑になっている点は
293 あります。 perkamon ディレクトリも含めて、JM のレポジトリに取り込んだ現在では、
294 もう少し単純化できるかもしれませんが、そこはみなさんの判断にお任せします。