Show page source of pod翻訳ガイド #120457

'''このページは https://linuxjm.osdn.jp/guide/translation_pod.html の改善案を作成しようとしている作りかけのページです。'''
= 準備作業 =
== 前提条件 ==
1. 作業環境が Linux であること
 作業用環境は Linux を想定しています。ディストリビューションは特に問いません。使用するコマンド類がインストールされていれば大丈夫です。
2. アカウントがあること
 すでに osdn にアカウントがあり、jm プロジェクトに参加しているものとします。
== 本説明における環境等 ==
1.  アカウント名 foobar

2.  ホームディレクトリ /home/foobar

3.  作業ディレクトリ /home/foobar/linuxjm  なお、コマンドプロンプトは % とします。
== 初期設定 ==
1. 作業用ディレクトリの準備
 任意の場所に作業用ディレクトリを作成します。たとえば '''~/linuxjm''' とします。
2. コマンド類の導入
  GNU Make と po4a が必要です。インストールしてください。多くのディストリビューションではすでにパッケージ化されていますので、リポジトリからのインストールコマンドを実行するだけでインストール出来ると思います。
  なお、po4a のバージョンにより roff マクロの認識や文字列抽出方法に違いがあることを 確認しています。以下の環境で動作を確認しています (2021年3月時点)。
   * po4a 0.57 (Ubuntu 20.04 focal)
   * po4a 0.55 (Debian 10 buster)
   * po4a 0.52 (Ubuntu 18.04 focal/openSUSE 15.3)
3. リポジトリのクローンを取得
  リポジトリは git.osdn.net:/gitroot/linuxjm/jm.git です。以下のコマンドを使用してリポジトリのクローンを取得してください。[[BR]]
  カレントディレクトリが /home/foobar/linuxjm として、[[BR]][[BR]]
  % git clone foobar@git.osdn.net:/gitroot/linuxjm/jm.git
== 動作確認 ==
翻訳更新の動作確認を行っておきます。 全ファイルを処理するので多少時間がかかります (2〜3分くらい)。
{{{
カレントディレクトリが、 /home/foobar/linuxjm/jm として
% cd manual/LDP_man-pages
% make setup
% make
% git status
}}}
全部のコマンドがエラーなく終了すること、 最後の '''git status''' コマンドで更新されているファイルがないこと、 を確認してください。 '''git status''' の出力で更新されているファイルがある場合は、 そのまま翻訳作業を進めると、意図しないファイルも更新してしまうことがあるので、 メーリングリストで相談するなどして対応を検討しましょう。 作業漏れ以外の可能性もあり、たとえば、 po4a のバージョンが変わって PO ファイルへの抜き出し方法が変わることもあります。
= jm リポジトリの構成 =
jm リポジトリは以下のような構成になっています。
 https://linuxjm.osdn.jp/guide/git_repository.html
= 翻訳前処理 =
== 翻訳対象の選定 ==
翻訳を開始するにあたっては、まず翻訳対象を決めます。以下では、zebedee を翻訳対象として説明していきます。
== 作業用ディレクトリの作成(新規の場合) ==
作業用ディレクトリは、先ほど取得したリポジトリの中に作ります。

今までに翻訳されていない新規のプログラムの翻訳を始める場合、そのプログラムに対する作業用ディレクトリを以下のように作成します。
{{{
カレントディレクトリが、/home/foobar/linuxjm/jm であったとして、
mkdir pod/zebedee
mkdir pod/zebedee/original
}}}
== ソースのコピー ==
オリジナルソースを格納するディレクトリへ、オリジナルソースのうち、pod ファイルをコピーします。それ以外のファイルは不要です。
{{{
オリジナルソースが $SRC にあり、カレントディレクトリが、/home/foobar/linuxjm/jm であったとして、
cp $SRC/*.pod  pod/zebedee/original
}}}
=== Makefileの作成 ===
po4a による翻訳作業を支援するためのMakefileを作ります。ひな形は以下のようなものです。このファイルを、zebedee の翻訳データがある場所(今回の例では /home/foobar/linuxjm/jm/pod/zebedee) に格納します。
{{{
PACKAGE_NAME = zebedee

THRESH = 0
EXTFLAGS =
PO4AFLAGS += -k $(THRESH) $(EXTFLAGS)
PO4ACFG = po4a/$(PACKAGE_NAME).cfg
POFILE  = po4a/ja.po

all: translate

translate:
        po4a $(PO4AFLAGS) $(PO4ACFG)

stat:
        @msgfmt -v --statistics -o /dev/null $(POFILE)

page-stat:
        @echo $(POFILE):
        @po4a --force --no-update -k 0 $(PO4ACFG)

.PHONY: translate stat page-stat
}}}
他のプログラムの翻訳を行う場合は、変数 PACKAGE_NAME の部分を書き換えれば使えるはずです。
=== po4a処理用のcfgファイル作成 ===
po4a で処理する際に、po4a の動作を決める cfg ファイルを作ります。ひな形は以下のようなものです。このファイルを、zebedee の翻訳データがある場所(今回の例では /home/foobar/linuxjm/jm/pod/zebedee/po4a) に格納します。[[BR]]
cfgファイル内には、処理するファイル名をすべて記述します。zebedee の場合は、  ftpgw.tcl.pod, zebedee.pod だけですが、他のプログラムの場合は、![type: pod] の行を pod ファイル文だけ記述していきます。
{{{
[po4a_langs] ja
[po4a_paths] po4a/zebedee.pot $lang:po4a/$lang.po
[po4a_alias: pod] pod opt:"-v --previous" opt_ja:"-M UTF-8"

[type: pod] original/ftpgw.tcl.pod $lang:tmp/ftpgw.tcl.pod

[type: pod] original/zebedee.pod $lang:tmp/zebedee.pod
}}}
=== make の実行 ===
Makefile と zebedee.cfg のファイルが準備できたら、カレントディレクトリを /home/foobar/linuxjm/jm/pod/zebedee に移動し、make を実行します。実行が終わると、カレントディレクトリ直下の po4a サブディレクトリに ja.po ファイルが出来ているはずです。
= 翻訳作業 =
== 翻訳予約宣言 ==
翻訳作業は、他の方とかち合わないようにしないと、後の調整が大変になります。そのため、以下の作業を行います。
 1. linuxjm-discuss にどのソフトウェアを翻訳するかを宣言
  linuxjm-discuss メーリングリストに、翻訳対象のソフトウエアが何であるかを宣言します。宣言の書式はこちらをご覧下さい。
 2.  translation_list を編集
  git リポジトリの当該パッケージディレクトリ直下(今回の例では /home/foobar/linuxjm/jm/pod/zebedee) にある、translation_list に、て校正依頼することを示す記号や名前等を書き加えてコミットします。編集方法はこちらをご覧下さい。