* How to Translate LDP man-pages では、翻訳に po4a を利用しています。 roff ファイルと po4a ファイルの変換には、LDP man-pages のフランス語翻訳チームが 公開している perkamon を利用しています。 perkamon を git submodule として利用しているため、手順が少し複雑になっています。 ** 前準備 git repository の top directory で以下のコマンドを実行します。 #+BEGIN_EXAMPLE cd $JM_REPO_TOP git submodule update --init #+END_EXAMPLE po4a 環境を用意します。 #+BEGIN_EXAMPLE cd manual/LDP_man-pages make jm-setup #+END_EXAMPLE これで po4a で作業して draft に反映する準備が整いました。 ** 翻訳と draft への変換 *** ja.po と man page の関係 一つの po ファイルは、 LDP\_man-pages の複数の man page に対応しています。 man page に対応する po ファイルを特定するには、以下のコマンドを実行します。 #+BEGIN_EXAMPLE $ ./tools/identify-po.sh strptime.3 strptime.3 -> po4a/time/po/ja.po #+END_EXAMPLE 上記の場合、strptime.3 が含まれる po ファイル (ja.po) は time 以下にあります。 po4a/time/po/ja.po を翻訳することになります。 *** 翻訳 上記で特定した ja.po を翻訳します。 エディタは po ファイルに対応しているものが便利です。 - Emacs を使っていれば Emacs の po-mode が便利です。 - gedit も PO ファイルをきれいに色付けしてくれるので、作業しやすいと思います。 *** draft page の生成 ja.po から draft を生成するには以下のいずれかを実行します (どちらも同じです)。 更新を行った PO ファイルのみが変換されます。 #+BEGIN_EXAMPLE make make translate #+END_EXAMPLE 初めて実行する際には、全ての ja.po が変換対象になるので、時間がかかります。 どのファイルが更新されたかは git status で確認して下さい。 #+BEGIN_EXAMPLE git status . #+END_EXAMPLE デフォルトでは、翻訳率 80% 以上のページが生成されます。 80% にしている理由は、ある程度日本語混じりの draft page を見ながら翻訳する方が 全体の文脈をつかみやすいためです。全部翻訳できたかは、下記の「翻訳状況の確認」 の方法で確認できるので、翻訳率 100% を閾値にする必要はないと考えています。 *** 翻訳状況の確認 - *ページ毎の翻訳状況* : 上記の draft page の生成の際に、翻訳状況のページ untrans.html が更新されます。 このページを表示すると、ページ毎の翻訳状況が確認できます。 #+BEGIN_EXAMPLE w3m untrans.html #+END_EXAMPLE - *PO ファイル単位の翻訳状況* : PO ファイル毎の翻訳状況も表示できます。 #+BEGIN_EXAMPLE make postats #+END_EXAMPLE 未翻訳項目がある PO ファイルのみを表示することもできます。 #+BEGIN_EXAMPLE make untrans-postats #+END_EXAMPLE ** レビュー JM ML に翻訳を投稿する場合は、以下のファイルを投稿して下さい。 - ja.po から生成された draft page - 翻訳した ja.po ファイルの git diff (または ja.po ファイルそのもの) ja.po の diff は以下のコマンドで取得できます。 time の ja.po を翻訳した場合。 #+BEGIN_EXAMPLE git diff po4a/time/po/ja.po #+END_EXAMPLE ** リリース まとめてリリースを行う場合の手順です。 通常は JM ML でレビューを行います。 make release を実行すると、以下を行います。 - draft page を release フォルダにコピー - translation_list を更新し、 PO ファイルで翻訳率が 100% になっているページのステータスを「☆」 リリース済に変更します。 更新後は通常のリリース手順と同じです。 * release ファイルを git add -u → git commit * (必要に応じて) www/index.m4, www/news/index.m4 を更新 * How to update original Git Repo 以下はきれいな状態にした状態で始めること。 1. perkamon を更新する #+BEGIN_EXAMPLE cd perkamon git remote add upstream git://gitorious.org/perkamon/man-pages.git git remote update git checkout master git merge upstream/master git push origin cd - #+END_EXAMPLE 現状 JM 用の perkamon は amotoki が管理する GitHub Repository https://github.com/amotoki/perkamon.git にあります。 Commit 権が必要であれば Collaborator に登録しますので、連絡下さい。 オリジナルが更新されていない場合は自分で更新する #+BEGIN_EXAMPLE cd perkamon vi Makefile (Update the version number at the top) rm -f stamp-* make setup (build 以下が更新される) make print-new-files (何か表示されたら、po4a/*/*.cfg に追加) make disable-removed (何かないか確認) git status (更新があれば git commit & git push origin) #+END_EXAMPLE 2. perkamon 作業ディレクトリに最新版に対応した展開する #+BEGIN_EXAMPLE make upgrade #+END_EXAMPLE 以下の作業が行われる。 [make jm-setup] - 最新版の 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 に一覧が作成される。 original 以下にコピーする COLOPHON 以下を削除する。 translation\_list を更新する際に、変更点のみを抽出するために行う。 COLOPHON 部分はリリース毎にバージョン番号が更新されてしまうので、 original に登録する際には、この節を削除しておく。 original 以下を git で stage する。 translation\_list の更新 POT の更新 翻訳統計情報の更新 Git commit git add translation_list git commit -m "LDP: Update original to LDP v3.XX" git add po4a/ stats/ untrans.html git commit -m "LDP: Update POT and ja.po to LDP v3.XX" 3. 単純な fuzzy の更新 COLOPHON が更新されているので、fuzzy が少なくとも一つできる。 ja.po で fuzzy を探してバージョンを更新する。 #+BEGIN_EXAMPLE make git add -u po4a/ stats/ untrans.html git commit -m "LDP: Update the version to 3.XX in PO files" git add draft/ git commit -m "LDP: Update draft pages based on LDP 3.XX release" make release git add release/ git add -u translation_list git commit -m "LDP: Update release pages based on LDP 3.XX release" #+END_EXAMPLE