OSDN Git Service

Add JM project guide
authorAkihiro Motoki <amotoki@gmail.com>
Tue, 16 Feb 2016 21:04:02 +0000 (06:04 +0900)
committerAkihiro Motoki <amotoki@gmail.com>
Tue, 16 Feb 2016 21:04:02 +0000 (06:04 +0900)
The guide is written by sphinx.

19 files changed:
guide/GNU_coreutils.rst [new file with mode: 0644]
guide/GNU_coreutils_update.rst [new file with mode: 0644]
guide/LDP_man-pages.rst [new file with mode: 0644]
guide/LDP_man-pages_update.rst [new file with mode: 0644]
guide/Makefile [new file with mode: 0644]
guide/_static/.placeholder [new file with mode: 0644]
guide/_templates/.placeholder [new file with mode: 0644]
guide/conf.py [new file with mode: 0644]
guide/document_help.rst [new file with mode: 0644]
guide/git_repository.rst [new file with mode: 0644]
guide/index.rst [new file with mode: 0644]
guide/jmpost_import.rst [new file with mode: 0644]
guide/mail_format.rst [new file with mode: 0644]
guide/translation_guideline.rst [new file with mode: 0644]
guide/translation_list.rst [new file with mode: 0644]
guide/translation_pod.rst [new file with mode: 0644]
guide/translation_procedure.rst [new file with mode: 0644]
guide/translation_update.rst [new file with mode: 0644]
guide/upstream_update.rst [new file with mode: 0644]

diff --git a/guide/GNU_coreutils.rst b/guide/GNU_coreutils.rst
new file mode 100644 (file)
index 0000000..45f1810
--- /dev/null
@@ -0,0 +1,52 @@
+========================
+GNU coreutils 翻訳ガイド
+========================
+
+.. _coreutils_preparation:
+
+準備
+====
+
+GNU coreutils のマニュアルのレポジトリは git の submodule になっている。
+作業時は以下のように submodule を展開する。
+
+.. code-block:: console
+
+   git://scm.osdn.jp/gitroot/linuxjm/jm.git
+   cd jm
+   git submodule update --init --recursive
+
+``help2man`` と ``help2man`` のメッセージカタログをインストールしておく必要がある。
+Debian/Ubuntu の場合は ``help2man`` と ``language-pack-ja`` をインストールする。
+
+``GNU_coreutils`` のコンパイルも行うので、
+基本的な開発ツールもインストールしておく。
+
+.. code-block:: console
+
+   apt-get install build-essential
+
+翻訳の流れ
+==========
+
+``help2man.ja`` 以下の ``*.x`` を訳す。
+原文は roff の場合と同じく ``.\"O`` で始めるものとする。
+
+* トップディレクトリで ``make all`` を実行すると ``help2man`` が実行され、
+  ``help2man.ja/`` 以下に ``*.1`` が生成される。
+
+  * 最初は ``coreutils-*.tar.xz`` を取得して、プログラムの生成も行うので、時間がかかる。
+  * ``make clean`` で ``help2man.ja/*.1`` を削除できる。
+
+* トップディレクトリで ``make install`` を実行すると、
+  ``help2man.ja/*.1`` が ``draft/man1`` にコピーされる。
+
+翻訳校正 (暫定ルール)
+------------------------
+
+* ``*.x`` を投稿する。
+  original の翻訳者が manpage も投稿してもよい。
+
+* JM git repo に登録時に manpage を committer が生成する。
+  mandiff.py などで HTML を生成して、original と翻訳の比較ができるようにする。
+  Makefile のルールを追加しておきたい。
diff --git a/guide/GNU_coreutils_update.rst b/guide/GNU_coreutils_update.rst
new file mode 100644 (file)
index 0000000..2c89e75
--- /dev/null
@@ -0,0 +1,56 @@
+========================
+GNU coreutils 管理ガイド
+========================
+
+.. _coreutils_original_update:
+
+準備
+====
+
+:ref:`coreutils_preparation` を参照してください。
+
+
+原文の更新
+==========
+
+(1) Makefile のバージョン更新
+------------------------------
+
+* Makefile の V = <version> を更新するバージョンに変更する
+* make clean-setup
+* make source
+
+(2) ファイルのコピー
+--------------------
+
+.. code-block:: console
+
+   rm -f original/man1/* help2man.orig/*
+   cp -p source/man/*.1 original/man1/
+   cp -p source/man/*.x help2man.orig/
+
+(3) translation_list の更新
+---------------------------
+
+git で add/remove を行う。
+
+
+.. code-block:: console
+
+   git status | ../../admin/git2upd > upd.txt
+
+   (edit upd.txt)
+
+   ../../admin/upd_tl.perl translation_list upd.txt VERSION
+
+(4) help2man.ja の更新
+----------------------
+
+help2man.orig 側でのファイルの add/update/remove を反映する。
+
+``original/man1/*.1`` が更新されるのは、以下の二つのケースがある。
+
+* ``*.x`` が更新された場合
+* help message が更新された場合
+
+  * ``SOURCE/po/ja.po`` を修正して Translation Project へ。
diff --git a/guide/LDP_man-pages.rst b/guide/LDP_man-pages.rst
new file mode 100644 (file)
index 0000000..370bfb5
--- /dev/null
@@ -0,0 +1,161 @@
+========================
+LDP man-pages 翻訳ガイド
+========================
+
+.. _ldp_preparation:
+
+準備
+====
+
+LDP man-pages のマニュアルのレポジトリは git の submodule になっています。
+作業時は以下のように submodule を展開します。
+
+.. code-block:: console
+
+   git://scm.osdn.jp/gitroot/linuxjm/jm.git
+   cd jm
+   git submodule update --init --recursive
+
+また、po4a を利用しているので、インストールしておきます。
+
+.. code-block:: console
+
+   apt-get install po4a
+
+翻訳方法
+========
+
+LDP man-pages では、翻訳に po4a を利用しています。
+
+roff ファイルと po4a ファイルの変換には、LDP man-pages のフランス語翻訳チームが
+公開している perkamon を利用しています。
+perkamon を git submodule として利用しているため、手順が少し複雑になっています。
+
+前準備
+------
+
+git repository の top directory で以下のコマンドを実行します。
+
+.. code-block:: console
+
+   cd $JM_REPO_TOP
+   git submodule update --init
+
+po4a 環境を用意します。
+
+.. code-block:: console
+
+   cd manual/LDP_man-pages
+   make jm-setup
+
+これで po4a で作業して draft に反映する準備が整いました。
+
+翻訳と draft への変換
+---------------------
+
+ja.po と man page の関係
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+一つの po ファイルは、 LDP\_man-pages の複数の man page に対応しています。
+man page に対応する po ファイルを特定するには、以下のコマンドを実行します。
+
+.. code-block:: console
+
+   $ ./tools/identify-po.sh strptime.3
+   strptime.3 -> po4a/time/po/ja.po
+
+上記の場合、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 ファイルのみが変換されます。
+
+.. code-block:: console
+
+   make
+   make translate
+
+初めて実行する際には、全ての ja.po が変換対象になるので、時間がかかります。
+どのファイルが更新されたかは git status で確認して下さい。
+
+.. code-block:: console
+
+   git status .
+
+デフォルトでは、翻訳率 80% 以上のページが生成されます。
+80% にしている理由は、ある程度日本語混じりの draft page を見ながら翻訳する方が
+全体の文脈をつかみやすいためです。全部翻訳できたかは、下記の「翻訳状況の確認」
+の方法で確認できるので、翻訳率 100% を閾値にする必要はないと考えています。
+
+翻訳状況の確認
+--------------
+
+ページ毎の翻訳状況
+~~~~~~~~~~~~~~~~~~
+
+上記の draft page の生成の際に、翻訳状況のページ untrans.html が更新されます。
+このページを表示すると、ページ毎の翻訳状況が確認できます。
+
+.. code-block:: console
+
+   w3m untrans.html
+
+PO ファイル単位の翻訳状況
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+PO ファイル毎の翻訳状況も表示できます。
+
+.. code-block:: console
+
+   make postats
+
+未翻訳項目がある PO ファイルのみを表示することもできます。
+
+.. code-block:: console
+
+   make untrans-postats
+
+レビュー
+--------
+
+JM ML に翻訳を投稿する場合は、以下のファイルを投稿して下さい。
+
+* ja.po から生成された draft page
+* 翻訳した ja.po ファイルの git diff
+  (または ja.po ファイルそのもの)
+
+ja.po の diff は以下のコマンドで取得できます。 time の ja.po を翻訳した場合。
+
+.. code-block:: console
+
+   git diff po4a/time/po/ja.po
+
+リリース
+--------
+
+まとめてリリースを行う場合の手順です。
+通常は JM ML でレビューを行います。
+
+``make release`` を実行すると、以下を行います。
+
+* draft page を release フォルダにコピー
+* translation_list を更新し、 PO ファイルで翻訳率が 100% になっているページのステータスを「☆」
+  リリース済に変更します。
+
+更新後は通常のリリース手順と同じです。
+
+ * release ファイルを git add -u → git commit
+ * (必要に応じて) www/index.m4, www/news/index.m4 を更新
diff --git a/guide/LDP_man-pages_update.rst b/guide/LDP_man-pages_update.rst
new file mode 100644 (file)
index 0000000..b3aab2f
--- /dev/null
@@ -0,0 +1,119 @@
+.. _ldp_original_update:
+
+========================
+LDP man-pages 管理ガイド
+========================
+
+準備
+====
+
+:ref:`ldp_preparation` を参照してください。
+
+原文の更新方法
+==============
+
+Git Repo 以下はきれいな状態にした状態で始めること。
+
+作業手順は以下の通り。
+
+1. perkamon の更新
+2. 原文の更新作業
+3. 単純な fuzzy の更新
+
+1. perkamon の更新
+------------------
+
+.. code-block:: console
+
+   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 -
+
+現状 JM 用の perkamon は amotoki が管理する GitHub Repository
+https://github.com/amotoki/perkamon.git にあります。
+Commit 権が必要であれば Collaborator に登録しますので、連絡下さい。
+
+オリジナルが更新されていない場合は自分で更新する
+
+.. code-block:: console
+
+   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)
+
+2. 原文の更新作業
+-----------------
+
+perkamon 作業ディレクトリに最新版に対応した展開する
+
+.. code-block:: console
+
+   make upgrade
+
+以下の作業が行われる。
+
+* [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
+
+   .. code-block:: none
+
+      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 を探してバージョンを更新する。
+
+.. code-block:: console
+
+   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"
diff --git a/guide/Makefile b/guide/Makefile
new file mode 100644 (file)
index 0000000..0c4526a
--- /dev/null
@@ -0,0 +1,216 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+
+# User-friendly check for sphinx-build
+ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
+$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
+endif
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help
+help:
+       @echo "Please use \`make <target>' where <target> is one of"
+       @echo "  html       to make standalone HTML files"
+       @echo "  dirhtml    to make HTML files named index.html in directories"
+       @echo "  singlehtml to make a single large HTML file"
+       @echo "  pickle     to make pickle files"
+       @echo "  json       to make JSON files"
+       @echo "  htmlhelp   to make HTML files and a HTML help project"
+       @echo "  qthelp     to make HTML files and a qthelp project"
+       @echo "  applehelp  to make an Apple Help Book"
+       @echo "  devhelp    to make HTML files and a Devhelp project"
+       @echo "  epub       to make an epub"
+       @echo "  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+       @echo "  latexpdf   to make LaTeX files and run them through pdflatex"
+       @echo "  latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
+       @echo "  text       to make text files"
+       @echo "  man        to make manual pages"
+       @echo "  texinfo    to make Texinfo files"
+       @echo "  info       to make Texinfo files and run them through makeinfo"
+       @echo "  gettext    to make PO message catalogs"
+       @echo "  changes    to make an overview of all changed/added/deprecated items"
+       @echo "  xml        to make Docutils-native XML files"
+       @echo "  pseudoxml  to make pseudoxml-XML files for display purposes"
+       @echo "  linkcheck  to check all external links for integrity"
+       @echo "  doctest    to run all doctests embedded in the documentation (if enabled)"
+       @echo "  coverage   to run coverage check of the documentation (if enabled)"
+
+.PHONY: clean
+clean:
+       rm -rf $(BUILDDIR)/*
+
+.PHONY: html
+html:
+       $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+       @echo
+       @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+.PHONY: dirhtml
+dirhtml:
+       $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+       @echo
+       @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+.PHONY: singlehtml
+singlehtml:
+       $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+       @echo
+       @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+.PHONY: pickle
+pickle:
+       $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+       @echo
+       @echo "Build finished; now you can process the pickle files."
+
+.PHONY: json
+json:
+       $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+       @echo
+       @echo "Build finished; now you can process the JSON files."
+
+.PHONY: htmlhelp
+htmlhelp:
+       $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+       @echo
+       @echo "Build finished; now you can run HTML Help Workshop with the" \
+             ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+.PHONY: qthelp
+qthelp:
+       $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+       @echo
+       @echo "Build finished; now you can run "qcollectiongenerator" with the" \
+             ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+       @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/JMLinuxJapanesemanualproject.qhcp"
+       @echo "To view the help file:"
+       @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/JMLinuxJapanesemanualproject.qhc"
+
+.PHONY: applehelp
+applehelp:
+       $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
+       @echo
+       @echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
+       @echo "N.B. You won't be able to view it unless you put it in" \
+             "~/Library/Documentation/Help or install it in your application" \
+             "bundle."
+
+.PHONY: devhelp
+devhelp:
+       $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+       @echo
+       @echo "Build finished."
+       @echo "To view the help file:"
+       @echo "# mkdir -p $$HOME/.local/share/devhelp/JMLinuxJapanesemanualproject"
+       @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/JMLinuxJapanesemanualproject"
+       @echo "# devhelp"
+
+.PHONY: epub
+epub:
+       $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+       @echo
+       @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+.PHONY: latex
+latex:
+       $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+       @echo
+       @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+       @echo "Run \`make' in that directory to run these through (pdf)latex" \
+             "(use \`make latexpdf' here to do that automatically)."
+
+.PHONY: latexpdf
+latexpdf:
+       $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+       @echo "Running LaTeX files through pdflatex..."
+       $(MAKE) -C $(BUILDDIR)/latex all-pdf
+       @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+.PHONY: latexpdfja
+latexpdfja:
+       $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+       @echo "Running LaTeX files through platex and dvipdfmx..."
+       $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
+       @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+.PHONY: text
+text:
+       $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+       @echo
+       @echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+.PHONY: man
+man:
+       $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+       @echo
+       @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+.PHONY: texinfo
+texinfo:
+       $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+       @echo
+       @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
+       @echo "Run \`make' in that directory to run these through makeinfo" \
+             "(use \`make info' here to do that automatically)."
+
+.PHONY: info
+info:
+       $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+       @echo "Running Texinfo files through makeinfo..."
+       make -C $(BUILDDIR)/texinfo info
+       @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+.PHONY: gettext
+gettext:
+       $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+       @echo
+       @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
+.PHONY: changes
+changes:
+       $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+       @echo
+       @echo "The overview file is in $(BUILDDIR)/changes."
+
+.PHONY: linkcheck
+linkcheck:
+       $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+       @echo
+       @echo "Link check complete; look for any errors in the above output " \
+             "or in $(BUILDDIR)/linkcheck/output.txt."
+
+.PHONY: doctest
+doctest:
+       $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+       @echo "Testing of doctests in the sources finished, look at the " \
+             "results in $(BUILDDIR)/doctest/output.txt."
+
+.PHONY: coverage
+coverage:
+       $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
+       @echo "Testing of coverage in the sources finished, look at the " \
+             "results in $(BUILDDIR)/coverage/python.txt."
+
+.PHONY: xml
+xml:
+       $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
+       @echo
+       @echo "Build finished. The XML files are in $(BUILDDIR)/xml."
+
+.PHONY: pseudoxml
+pseudoxml:
+       $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
+       @echo
+       @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
diff --git a/guide/_static/.placeholder b/guide/_static/.placeholder
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/guide/_templates/.placeholder b/guide/_templates/.placeholder
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/guide/conf.py b/guide/conf.py
new file mode 100644 (file)
index 0000000..86876de
--- /dev/null
@@ -0,0 +1,296 @@
+# -*- coding: utf-8 -*-
+#
+# JM (Linux Japanese manual project) documentation build configuration file, created by
+# sphinx-quickstart on Sun Feb 14 22:00:34 2016.
+#
+# This file is execfile()d with the current directory set to its
+# containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys
+import os
+
+import sphinx_bootstrap_theme
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration ------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be
+# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
+# ones.
+extensions = [
+    'sphinx.ext.autodoc',
+]
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix(es) of source filenames.
+# You can specify multiple suffix as a list of string:
+# source_suffix = ['.rst', '.md']
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'Linux JM Guide'
+copyright = u'2016, Linux JM project'
+author = u'Linux JM project'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = u'master'
+# The full version, including alpha/beta/rc tags.
+release = u'master'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#
+# This is also used if you do content translation via gettext catalogs.
+# Usually you set "language" from the command line for these cases.
+language = 'ja'
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all
+# documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+# If true, keep warnings as "system message" paragraphs in the built documents.
+#keep_warnings = False
+
+# If true, `todo` and `todoList` produce output, else they produce nothing.
+todo_include_todos = False
+
+
+# -- Options for HTML output ----------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+# html_theme = 'alabaster'
+html_theme = 'bootstrap'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+html_theme_options = {
+    'bootswatch_theme': 'cosmo',
+    'navbar_links': [
+        (u'JM トップへ', 'http://linuxjm.sourceforge.jp/', 1),
+    ],
+    'navbar_sidebarrel': False,
+}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+html_theme_path = sphinx_bootstrap_theme.get_html_theme_path()
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# Add any extra paths that contain custom files (such as robots.txt or
+# .htaccess) here, relative to this directory. These files are copied
+# directly to the root of the documentation.
+#html_extra_path = []
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_domain_indices = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+#html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Language to be used for generating the HTML full-text search index.
+# Sphinx supports the following languages:
+#   'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
+#   'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr'
+#html_search_language = 'en'
+
+# A dictionary with options for the search language support, empty by default.
+# Now only 'ja' uses this config value
+#html_search_options = {'type': 'default'}
+
+# The name of a javascript file (relative to the configuration directory) that
+# implements a search results scorer. If empty, the default will be used.
+#html_search_scorer = 'scorer.js'
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'JMLinuxJapanesemanualprojectdoc'
+
+# -- Options for LaTeX output ---------------------------------------------
+
+latex_elements = {
+# The paper size ('letterpaper' or 'a4paper').
+#'papersize': 'letterpaper',
+
+# The font size ('10pt', '11pt' or '12pt').
+#'pointsize': '10pt',
+
+# Additional stuff for the LaTeX preamble.
+#'preamble': '',
+
+# Latex figure (float) alignment
+#'figure_align': 'htbp',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title,
+#  author, documentclass [howto, manual, or own class]).
+latex_documents = [
+    (master_doc, 'JMLinuxJapanesemanualproject.tex', u'JM (Linux Japanese manual project) Documentation',
+     u'Linux JM project', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_domain_indices = True
+
+
+# -- Options for manual page output ---------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    (master_doc, 'jmlinuxjapanesemanualproject', u'JM (Linux Japanese manual project) Documentation',
+     [author], 1)
+]
+
+# If true, show URL addresses after external links.
+#man_show_urls = False
+
+
+# -- Options for Texinfo output -------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+    (master_doc, 'JMLinuxJapanesemanualproject', u'JM (Linux Japanese manual project) Documentation',
+     author, 'JMLinuxJapanesemanualproject', 'One line description of project.',
+     'Miscellaneous'),
+]
+
+# Documents to append as an appendix to all manuals.
+#texinfo_appendices = []
+
+# If false, no module index is generated.
+#texinfo_domain_indices = True
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#texinfo_show_urls = 'footnote'
+
+# If true, do not generate a @detailmenu in the "Top" node's menu.
+#texinfo_no_detailmenu = False
diff --git a/guide/document_help.rst b/guide/document_help.rst
new file mode 100644 (file)
index 0000000..f12380e
--- /dev/null
@@ -0,0 +1,27 @@
+====================
+ドキュメント編集メモ
+====================
+
+このドキュメントは Sphyinx を使って作成しています。
+ReST 記法が利用できるので、お手軽、かつ多様な表現が可能です。
+
+ドキュメント build 方法
+=======================
+
+.. code-block:: console
+
+   $ make html
+
+作成されたドキュメントを破棄して作り直すには以下のようにします。
+
+.. code-block:: console
+
+   $ make clean
+   $ make html
+
+参考情報
+========
+
+* `reStructuredText入門 <http://docs.sphinx-users.jp/rest.html#lists-and-quote-like-blocks>`_
+* `インラインマークアップ <http://docs.sphinx-users.jp/markup/inline.html>`_
+* `Sphinxドキュメント <http://docs.sphinx-users.jp/contents.html>`_
diff --git a/guide/git_repository.rst b/guide/git_repository.rst
new file mode 100644 (file)
index 0000000..b985f94
--- /dev/null
@@ -0,0 +1,149 @@
+================
+リポジトリの構成
+================
+
+JM Project では、git によって文書の管理をしています。
+このページでは、 リポジトリ内部の配置について説明します。
+
+各 man ページの作業情報などは、テキストデータベース transalation_list で管理しています。
+このファイルの書式は :doc:`translation_list` を参照してください。
+
+ディレクトリ構成
+================
+
+JM Project の用いている git リポジトリのディレクトリ構成は 以下のようになっています。
+
+.. code-block:: none
+
+   .
+   ├── admin
+   ├── bin
+   ├── dist
+   │   └── script
+   ├── manual
+   │   ├── acl
+   │   │   ├── draft
+   │   │   ├── original
+   │   │   ├── po4a
+   │   │   └── release
+   │   ├── apmd
+   │   │   ├── draft
+   │   │   ├── original
+   │   │   └── release
+   │   ├── GNU_bash
+   │   │   ├── draft
+   │   │   ├── original
+   │   │   ├── po4a
+   │   │   └── release
+   │   ├── GNU_bc
+   │   │   ├── contrib
+   │   │   └── original
+   ├── stamp
+   └── www
+       ├── announcement
+       ├── bin
+       ├── images
+       ├── INDEX
+       ├── man-ja
+       ├── news
+       └── rpm
+
+このうちの manual/ 以下が、本サイトの
+`manual ディレクトリ <http://linuxjm.osdn.jp/manual/>`_
+以下にミラーされています。
+このディレクトリには、 マニュアルの一次ソースとなるアーカイブパッケージ (例えば ``util-linux-2.9v.tar.gz`` など)
+の ``basename`` と同名のサブディレクトリ (``util-linux``) を設けます。
+ただし GNU のパッケージと LDP のパッケージだけには、 便宜上 ``GNU_``, ``LDP_`` という prefix をつけています。
+このサブディレクトリを、以下では 「パッケージディレクトリ」と呼びます。
+
+パッケージディレクトリ内の構造
+==============================
+
+各パッケージディレクトリのサブ構造は以下のようになっています。
+
+現在 JM のマニュアル管理は、 po4a を使用している場合としていない場合が混在しています。
+
+po4a 未使用時
+-------------
+
+.. code-block:: none
+
+   pkg
+   ├── ChangeLog
+   ├── translation_list
+   ├── contrib
+   │   └── man1
+   ├── draft
+   │   ├── man1
+   │   ├── man5
+   │   └── man8
+   ├── obsolete
+   │   ├── man1
+   │   ├── man6
+   │   └── man8
+   ├── original
+   │   ├── man1
+   │   ├── man5
+   │   └── man8
+   └── release
+       ├── man1
+       ├── man5
+       └── man8
+
+* ChangeLog : 変更履歴を記述したファイルでしたが、現在はほとんど使われていません。変更履歴は Git にて管理されています。
+* translation_list は各マニュアルページのバージョンや作業情報、 著作権情報等を含むテキストデータベースファイルです。
+  このファイルの書式については :doc:`translation_list` で説明します。
+* ディレクトリ original/ には、 パッケージに含まれている原文が置かれます。
+* ディレクトリ draft/ には、 「原文のコメントつき」の翻訳版が置かれます。 ここに置かれるページは、ドラフト版・リリース版を問わず、 常に翻訳作業の最新版になります。
+* ディレクトリ release/ には、 「原文を取り去ったリリース版」が置かれます。
+* ディレクトリ contrib/ には、 JM 以外で翻訳されたページの寄贈を受けた場合に、 そのファイルが置かれます。
+
+実作業との対応は :doc:`translation_procedure` を参考にしてください。
+
+po4a 使用時
+-----------
+
+.. code-block:: none
+
+   pkg
+   ├── ChangeLog
+   ├── translation_list
+   ├── Makefile
+   ├── draft
+   │   ├── man1
+   │   └── man8
+   ├── original
+   │   ├── man1
+   │   ├── man3
+   │   └── man8
+   ├── po4a
+   │   ├── add_ja
+   │   │   └── copyright
+   │   ├── man1
+   │   ├── man3
+   │   └── man8
+   └── release
+       └── man8
+
+po4a ディレクトリがある点が大きな違いです。
+
+ * ChangeLog : 変更履歴を記述したファイルでしたが、現在はほとんど使われていません。変更履歴は Git にて管理されています。
+ * translation_list は各マニュアルページのバージョンや作業情報、 著作権情報等を含むテキストデータベースファイルです。
+   このファイルの書式については :doc:`translation_list` で説明します。
+ * ディレクトリ original/ には、 パッケージに含まれている原文が置かれます。
+ * ディレクトリ po4a/ には、
+
+   * man[1-8] 以下には、各マニュアルに対応する PO ファイルが置かれます。PO ファイルが翻訳を管理するのに使用されます。
+     ここに置かれる PO ファイルはドラフト版・リリース版を問わず、常に翻訳作業の最新版になります。
+   * add_ja/copyright ディレクトリには、各マニュアルに対応する著作権ファイルを記載したファイルが置かれます。
+     po4a を用いて、翻訳版マニュアルを生成する際に挿入されます。
+
+ * ディレクトリ draft/ には、po4a を用いて PO ファイルから生成された翻訳版マニュアルが置かれます。
+    po4a を使用している場合には、原文のコメントは含まれません。
+    基本的には、常に po4a/  以下にある PO ファイルの内容と同期されています。
+ * ディレクトリ release/ には、リリース版のマニュアルが置かれます。
+   po4a を使用している場合、リリース時点では、リリース版のページはドラフト版のページと内容は同じになります。
+
+なお、po4a を使用している場合には、contrib ディレクトリは設けられていません。
+JM 以外で翻訳されたページの寄贈を受けたことは、
+``translation_list`` のステータスと ``po4a/add_ja/copyright`` 内のファイルに記録されます。
diff --git a/guide/index.rst b/guide/index.rst
new file mode 100644 (file)
index 0000000..e2853f1
--- /dev/null
@@ -0,0 +1,46 @@
+.. JM (Linux Japanese manual project) documentation master file, created by
+   sphinx-quickstart on Sun Feb 14 22:00:34 2016.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+===========================
+Linux JM プロジェクトガイド
+===========================
+
+翻訳ガイド
+==========
+
+.. toctree::
+   :maxdepth: 1
+
+   translation_guideline.rst
+   translation_procedure.rst
+   translation_update.rst
+   LDP_man-pages.rst
+   GNU_coreutils.rst
+   translation_pod.rst
+   mail_format.rst
+
+管理ガイド
+==========
+
+.. toctree::
+   :maxdepth: 1
+
+   git_repository.rst
+   upstream_update.rst
+   LDP_man-pages_update.rst
+   GNU_coreutils_update.rst
+   translation_list.rst
+   jmpost_import.rst
+
+このドキュメントについて
+========================
+
+.. toctree::
+   :maxdepth: 1
+
+   document_help.rst
+
+
+
diff --git a/guide/jmpost_import.rst b/guide/jmpost_import.rst
new file mode 100644 (file)
index 0000000..f56f594
--- /dev/null
@@ -0,0 +1,82 @@
+=============================================
+投稿された man ページのレポジトリへの登録方法
+=============================================
+
+JM では所定のフォーマット http://linuxjm.sourceforge.jp/guidance/mailformat.html で
+翻訳した man ページを ML に投稿してもらうことになっています。
+
+この形式で投稿された man ページを JM の Git Repository に取り込む方法です。
+
+手順
+====
+
+#. メールを保存します。
+   投稿されたメールは変換せずに保存して下さい。私は Wanderlust で保存しています。
+#. Git Repository 内に移動します。
+   Repository 内であればどこでも構いません
+#. 以下のコマンドを実行します。
+
+   .. code-block:: console
+
+      cat <saved-mail> | nkf -Lu -w | <repo_top>/admin/ml2cvs
+
+#. 変更内容を確認します。
+#. コミットします。
+   コミットメッセージは特に決まりはありませんが、
+   パッケージ名は先頭に付けるようにしています。
+   こんな感じで書いていることが多いです。
+
+   .. code-block:: console
+
+      <パッケージ名>: Draft <ページ名> [JM:nnnnn]
+      <パッケージ名>: Release <ページ名> [JM:nnnnn]
+
+   [例]
+
+   .. code-block:: console
+
+      sudo: Drafts posted in [JM:00631] to [JM:00635].
+      procps: release watch.1 [JM:00428]
+
+#. sourceforge.jp の git repo に push します。ウェブページは cron で更新されます。
+
+実行例
+======
+
+.. code-block:: console
+
+   motoki@gemini:~/.../JM/jm.git (master)$ cat ~/tmp/1086.eml | nkf -Lu -w | admin/ml2cvs
+   UPDATE: admin/../manual/net-tools/translation_list
+   UPDATE: admin/../manual/net-tools/draft/man8/ifconfig.8
+   UPDATE: admin/../manual/net-tools/ChangeLog
+   motoki@gemini:~/.../JM/jm.git (master)$ git status
+   # On branch master
+   # Changes not staged for commit:
+   #   (use "git add <file>..." to update what will be committed)
+   #   (use "git checkout -- <file>..." to discard changes in working directory)
+   #
+   #       modified:   manual/net-tools/ChangeLog
+   #       modified:   manual/net-tools/draft/man8/ifconfig.8
+   #       modified:   manual/net-tools/translation_list
+   #
+   motoki@gemini:~/.../JM/jm.git (master)$ git diff
+   motoki@gemini:~/.../JM/jm.git (master)$ git add -u
+   motoki@gemini:~/.../JM/jm.git (master)$ git commit
+   [master 5981012] net-tools: Draft ifconfig.8 [JM:00811]
+    3 files changed, 7 insertions(+), 2 deletions(-)
+   motoki@gemini:~/.../JM/jm.git (master)$ git push
+   Counting objects: 17, done.
+   Delta compression using up to 2 threads.
+   Compressing objects: 100% (9/9), done.
+   Writing objects: 100% (9/9), 1013 bytes, done.
+   Total 9 (delta 7), reused 0 (delta 0)
+   To ssh://amotoki@git.sourceforge.jp/gitroot/linuxjm/jm.git
+      7616130..5981012  master -> master
+   motoki@gemini:~/.../JM/jm.git (master)$ git push
+   Counting objects: 17, done.
+   Delta compression using up to 2 threads.
+   Compressing objects: 100% (9/9), done.
+   Writing objects: 100% (9/9), 1013 bytes, done.
+   Total 9 (delta 7), reused 0 (delta 0)
+   To ssh://amotoki@git.sourceforge.jp/gitroot/linuxjm/jm.git
+      7616130..5981012  master -> master
diff --git a/guide/mail_format.rst b/guide/mail_format.rst
new file mode 100644 (file)
index 0000000..34edab1
--- /dev/null
@@ -0,0 +1,172 @@
+========================
+作業メールのフォーマット
+========================
+
+.. note::
+
+   現在はメールフォーマットについてはあまり制約はありません。
+   原文がテキストで簡単に取り出せる形式であれば、
+   どのような形態で投稿頂いても構いません。
+
+:doc:`git_repository` にあるように、 JM では翻訳作業対象の man ページを
+git リポジトリとテキストデータベースによって管理しています。
+
+こちらへの登録を省力化・自動化するために、
+ML に翻訳を post する際にはこのページに記述されたような
+フォーマットにすることが推奨されます。
+(sourceforge 移行後は自動登録は行っていませんが、
+登録作業の省略化のため、このフォーマットの使用をお願いします。)
+
+投稿を省力化するために、 bash の使える環境の方は
+`JMpost スクリプト <http://git.sourceforge.jp/view?p=linuxjm/jm.git;a=blob_plain;f=admin/JMpost;hb=HEAD>`_
+を使っていただくといいでしょう。
+また、Wanderlust や Mew のユーザの場合には、JMpost 形式のメールを作成してくれる `JMpost-wl.el <http://git.sourceforge.jp/view?p=linuxjm/jm.git;a=blob_plain;f=admin/JMpost-mew.el;hb=HEAD>`_
+や `JMpost-mew.el <http://git.sourceforge.jp/view?p=linuxjm/jm.git;a=blob_plain;f=admin/JMpost-mew.el;hb=HEAD>`_
+も用意されていますので、お試し下さい。
+
+メールのフォーマット
+====================
+
+送信先
+------
+
+送信先アドレスは linuxjm-discuss@lists.sourceforge.jp としてください。
+
+サブジェクト
+------------
+
+メールヘッダの Subject 行は::
+
+    Subject: [POST:XX] (package 名) (page ファイル名)
+
+のようにしてください。 XX のところには、後述する '''stat''' を書いてください。::
+
+    [POST:TR] LDP man-pages strcmp.3
+
+ヘッダ
+------
+
+メールの本文の先頭に、ページの情報を記述したヘッダを置いてください。
+``<STATUS>`` と ``</STATUS>`` に挟まれた部分がヘッダ情報になります。
+ヘッダ情報は 1 行 1 レコードからなり、 区切りは ": " (コロンとスペース) です。
+必要なレコードは以下の 6 つです。
+
+ * ``stat``: ページのステータスです。 ("TR", "DO", "DP", "PR", "RO", "RR") のどれか一つを 指定します。それぞれの意味は以下のようになります。
+
+   * TR: 翻訳の予約。 (Translation Reservation)
+   * DO: ドラフトの投稿。自分では校正を行わない。 (Draft Only)
+   * DP: ドラフトの投稿。引き続き自分で校正を行う。 (Draft and Proof reservation)
+   * PR: 校正待ち状態のドラフトに対する校正作業の予約。 (Proof Reservation)
+   * RO: リリースの投稿。原文更新時の予約はしない。 (Release Only)
+   * RR: リリースの投稿です。原文更新時の改訂作業を予約する。 (Release and update Reservation)
+ * ``ppkg`` : この man ページが含まれるパッケージの名前
+ * ``page`` : ページのファイル名
+ * ``date`` : translation_list データベースに記録される日付
+ * ``mail`` : 投稿者のメールアドレス
+ * ``name`` : 投稿者の Real Name (ローマ字表記が望ましい)
+
+例えば翻訳作業の予約の場合は、以下のようになります。::
+
+    <STATUS>
+    stat: TR
+    ppkg: GNU sharutils
+    page: shar.1
+    date: 1999/10/04
+    mail: nakano@apm.seikei.ac.jp
+    name: NAKANO Takeo
+    </STATUS>
+
+本文
+----
+
+ヘッダの後、 man ページの本文を置いてください。
+ヘッダ以降に最初に現れた「空行以外の行」から、メールの末尾までが man ページとして登録されます。
+従って signature 等は置かないようにしてください。
+
+man ページ自体の書式や、記述に関する注意などは :doc:`translation_guideline` を参考にしてください。
+
+JMpost コマンド
+===============
+
+以上のフォーマットのメール送信を簡単に行うため、
+bash のシェルスクリプト
+`JMpost <http://git.sourceforge.jp/view?p=linuxjm/jm.git;a=blob_plain;f=admin/JMpost;hb=HEAD>`_
+を用意しました。以下に使い方を説明します。
+
+コマンドライン
+--------------
+
+::
+
+    JMpost [-S stat] [-P pkg] [-F page] [-D date] [-M mail] [-R name] [filename] [-post]
+
+使い方
+------
+
+予約・作業ページの登録ともに用います。 作業したファイルを CVS リポジトリに登録する場合 (-S オプションの DO, DP, RO, RR に対応) は、 そのファイルをコマンドラインに指定します。
+
+オプションは全て省略可能ですが、 必要に応じて質問のプロンプトが出されます。 プロンプトは標準エラー出力に出され、 標準入力から回答を受付けます。
+
+コマンドラインの最後に -post オプションをつけると、 結果は ``/usr/lib/sendmail`` を用いて JM-ML にポストされます。 -post オプションをつけない場合は、 ML に流される内容が標準出力に書き出されます。
+
+オプション
+----------
+
+ * ``-S`` : 文書のステータスを記述します。有効なものは以下のどれかです。
+
+   * TR: 翻訳の予約です。 (Translation Reservation)
+   * DO: ドラフトの投稿です。自分では校正を行わない場合です。 (Draft Only)
+   * DP: ドラフトの投稿です。引き続き自分で校正を行う場合です。 (Draft and Proof reservation)
+   * PR: 校正待ち状態のドラフトに対する校正作業の予約です。 (Proof Reservation)
+   * RO: リリースの投稿です。原文更新時の予約はしない場合です。 (Release Only)
+   * RR: リリースの投稿です。原文更新時の改訂作業の予約を含みます。 (Release and update Reservation)
+
+   メールに翻訳原稿が添付されるのは DO, DP, RO, RR のいずれかの場合になります。 translation_list の書式 も参考にすると良いでしょう。
+
+ * ``-P`` : パッケージの名前です。(例: util-linux, "GNU bash")
+ * ``-F`` : ページの名前です。 (例: mount.8, bash.1)
+ * ``-D`` : 日付です。省略すると date コマンドの結果が用いられます。
+ * ``-M`` : 作業者のメールアドレスです。
+ * ``-R`` : 作業者の Real Name です。
+
+ノート
+------
+
+スクリプトの先頭部分にある name および mail 変数を適宜設定しておくと、 -M オプションや -P オプションの指定を省略できます。
+
+例
+--
+
+LDP man-pages パッケージにある printf.3 に関する例を示します。 -M オプションと -R オプションは省略します。
+
+翻訳を予約する場合
+++++++++++++++++++
+
+.. code-block:: console
+
+   % JMpost -S TR -P "LDP man-pages" -F printf.3 -post
+
+ドラフトを投稿する場合
+++++++++++++++++++++++
+
+翻訳されたファイルは printf.3.draft に記述されているものとします。
+
+.. code-block:: console
+
+
+   % JMpost -S DP -P "LDP man-pages" -F printf.3 printf.3.draft -post
+
+これは引き続き自分で校正を行う場合です。 校正を他の人に任せる場合は -S DO とします。
+
+リリース版を投稿する場合
+++++++++++++++++++++++++
+
+翻訳されたファイルは同じく printf.3.draft に記述されているものとします。
+なお、このとき原文のコメント (.\"O..) を 自分で削除する必要はありません。
+登録システムが自動的に strip します。
+
+.. code-block:: console
+
+   % JMpost -S RO -P "LDP man-pages" -F printf.3 printf.3.draft -post
+
+``-S RR`` で投稿すると、次に printf.3 のオリジナルが update されたとき、投稿者に翻訳予約が自動的に割り当てられます。
diff --git a/guide/translation_guideline.rst b/guide/translation_guideline.rst
new file mode 100644 (file)
index 0000000..ec4a512
--- /dev/null
@@ -0,0 +1,207 @@
+==========
+翻訳の指針
+==========
+
+この文章は JM Project における man page 翻訳作業に関する指針です。 翻訳者のみなさんには余計な手間になるとは思いますが、 より良い日本語マニュアルを作成するためにご協力ください。
+
+マニュアル本文のフォーマットについて
+====================================
+
+本来のフォーマットや著作権を尊重するために、一次配布フォーマットは roff 形式を採用します。
+また roff での作業が困難である場合には、 その旨を JM-ML まで連絡してください。他に roff 化のボランティアを募集します。
+
+全体としての文体の統一のため、 特に理由がなければ常体 (「である」調) を用いてください。 マニュアルページの語尾としては、
+
+.. code-block:: none
+
+   「〜だ。」
+   「〜である。」
+   「〜する。」
+   「〜できる。」
+   「〜となる。」
+
+などを使用してください。
+
+句読点は「、」および「。」を使用してください。ただし、英単語や英文の 部分の区切りには「,」「.」を用いてもかまいません。
+
+原文のコメント化
+================
+
+校正作業や改版作業の便宜を図るため、できれば原文をコメントで残しておいてください。
+ただし「原文に元からあったコメント」と区別するため、「.\"O」という形式のコメントとしてください (O はアルファベット o の大文字)。
+登録システムは、リリース版を作成するときに このコメントを自動的に除去します。
+
+コメント化には以下のような内容の awk スクリプト を用いると良いでしょう。
+
+.. code-block:: none
+
+   #!/usr/bin/awk -f
+   {
+           if ($0 ~ /^\.\\"/) {
+                   print
+           } else {
+                   printf(".\\\"O %s\n", $0)
+           }
+   }
+
+これをオリジナルの roff ファイルに対して
+
+.. code-block:: none
+
+   awk -f commentate.awk ar.1 > ar.1.draft
+
+のように用い、 ``ar.1.draft`` に対して作業をします。
+
+以上の作業では原文はすべてコメントアウトされてしまいますが、 .TH 行や .TP 行のように、
+そのまま翻訳版にも残しておきたい行もあると思います。
+このような行を元に戻す作業には vi を用いるのが楽でしょう。 vim 系なら作業ディレクトリに
+
+.. code-block:: none
+
+   map ^T 5xj
+
+というような内容の .vimrc ファイルを置いておきます (^T は Ctrl-T です)。
+コメント化した roff ファイルを vi で開き、アンコメントしたい行の先頭で Ctrl-T を打てば、次々に取っていけます。
+失敗した場合は u で undo。
+
+著作権表示について
+==================
+
+roff 形式において roff のコメントとして書かれている著作権表示は、英文のまま残してください。
+さらにその後にコメントとして、英文で翻訳者の著作権表示を加えてください。
+翻訳者の権利表示の例を以下に示します。
+
+.. code-block:: none
+
+   .\"
+   .\" Japanese Version Copyright (c) 1996 HANATAKA Shinya
+   .\"         all rights reserved.
+   .\" Translated Wed Nov 20 17:42:39 JST 1996
+   .\"         by HANATAKA Shinya
+
+本文 (man コマンドの整形結果で見える部分) に著作権表示がある場合には、 それも原文のまま残してください。
+
+原文に著作権表示が含まれていない場合には、 個別対応になると思いますので JM-ML で相談してください。
+
+GNU のマニュアルページにはマニュアルページ中に著作権表示のないもの がありますが、その場合、上記の翻訳版著作権に加えて、以下の文をマニュ アルの先頭に付加してください。
+
+.. code-block:: none
+
+   .\"   Copyright (C) 1994-1999 Free Software Foundation, Inc.
+   .\"
+   .\"   Permission is granted to make and distribute verbatim copies of
+   .\"this
+   .\"manual provided the copyright notice and this permission notice are
+   .\"preserved on all copies.
+   .\"
+   .\"   Permission is granted to copy and distribute modified versions of
+   .\"this manual under the conditions for verbatim copying, provided that
+   .\"the entire resulting derived work is distributed under the terms of a
+   .\"permission notice identical to this one.
+   .\"
+   .\"   Permission is granted to copy and distribute translations of this
+   .\"manual into another language, under the above conditions for modified
+   .\"versions, except that this permission notice may be stated in a
+   .\"translation approved by the Foundation.
+   .\"
+
+特殊用語の翻訳について
+======================
+
+特殊用語の翻訳は以下の方針に従ってください。
+
+ * コマンド名、関数名、引き数名などは翻訳せず、 アルファベットのままで記述する。
+ * 英文との相互参照や用語の統一を簡単にするために、 専門用語を翻訳する場合には、 訳語の後ろにかっこつきで原語を併記してください。
+
+   .. code-block:: none
+
+      共有メモリ(shared memory)
+
+ * 専門用語は無理に日本語にせずカタカナ表記を使用する。
+
+   .. code-block:: none
+
+      × 記述子 (descriptor)
+      ○ ディスクリプター (descriptor)
+  
+マニュアル間での訳語の統一を行うために、 できれば専門用語について単語リストを作成してください。 単語リストは、それぞれのマニュアルページの頭に 以下のような roffのコメント形式で埋め込んでください。
+
+.. code-block:: none
+
+   .\"WORD:        effective uid           実効ユーザーID
+   .\"WORD:        out-of-band             帯域外
+   .\"WORD:        physical address        物理アドレス
+   .\"WORD:        signal                  シグナル
+
+音引きについて
+==============
+
+片仮名語の語尾の音引き(ー)には以下の方針を用いてください。
+
+ * 既に日本語になっているものについてはそれを用いる。
+ * できるだけ原語の発音に近い表現を用いる。
+
+   .. code-block:: none
+
+      ×メモリー(memory)
+      ○メモリ(memory)
+
+ * それ以外の場合に語尾の音引きは省略しない。
+
+   .. code-block:: none
+
+      ×コンパイラ(compiler)
+      ○コンパイラー(compiler)
+
+セクション名について
+====================
+
+セクション名については以下のものを使用してください。
+
+.. code-block:: none
+
+   ACKNOWLEDGEMENTS        謝辞
+   ARGUMENTS               引き数
+   AUTHOR                  著者 or 作者
+   AUTHORS                 著者 or 作者
+   BUGS                    バグ
+   CAVEATS                 警告
+   COMMAND LINE OPTIONS    オプション or コマンドラインオプション
+   COMPATIBILITY           互換性
+   CONFORMING TO           準拠
+   CONFORMS TO             準拠
+   COPYING                 著作権
+   COPYRIGHT               著作権
+   DESCRIPTION             説明
+   DIAGNOSTICS             返り値
+   ENVIRONMENT             環境変数
+   ENVIRONMENT VARIABLES   環境変数
+   ERROR                   エラー
+   ERRORS                  エラー
+   EXAMPLE                 例
+   EXAMPLES                例
+   EXIT CODES              返り値
+   EXTENSION               拡張
+   EXTENSIONS              拡張
+   FILES                   ファイル
+   FLAGS                   フラグ
+   HISTORY                 履歴 (or 歴史)
+   KEYWORDS                キーワード
+   LIMITATIONS             制限
+   NAME                    名前
+   NOTE                    注意
+   NOTES                   注意
+   OPTION                  オプション
+   OPTIONS                 オプション
+   PARAMETERS              引き数
+   PORTABILITY             移植性
+   RESTRICTIONS            制限
+   RETURN VALUE            返り値
+   SEE ALSO                関連項目
+   SOLICITATION            要請
+   STANDARDS               標準 (or 準拠)
+   SYNOPSIS                書式
+   SYNTAX                  書式
+   VERSION                 バージョン
+   WARNING                 警告
+   WARNINGS                警告
diff --git a/guide/translation_list.rst b/guide/translation_list.rst
new file mode 100644 (file)
index 0000000..d65ff11
--- /dev/null
@@ -0,0 +1,130 @@
+=======================
+translation_list の書式
+=======================
+
+translation_list はパッケージディレクトリのルートに 一つだけ置かれるテキストデー
+タベースファイルで、 そのディレクトリ以下に含まれる man ページの情報が 一つのペー
+ジにつき一行ずつ書かれています。 フィールドの区切りはコロン (:) です。 以下に例
+を示します。 1行目が 通常のページ の、 2 行目が リンクページ のそれぞれ例になっ
+ています。
+
+.. code-block:: none
+
+   ○:LDP
+   man-pages:1.26:1998/10/03:bind:2:1999/08/02::uv9h-hykw@asahi-net.or.jp:HAYAKAWA Hitoshi:
+   @:LDP man-pages:1.26:1996/04/15:break:2:unimplemented:2:
+
+通常のページ
+============
+
+「通常のページ」とは、「リンクページ」以外のページ、実際に文章が書かれている
+ページを指します。
+
+第 1 フィールド : ステータス
+----------------------------
+
+まず第 1 フィールドの内容を説明します。
+それぞれのマークの説明に書いてある ``r:``, ``d:``, ``o:`` とは、
+そのマークのステータスにおいて、 release/, draft/, original/ 各ディレクトリに
+マニュアルページが存在するかどうかを示したものです。
+:doc:`translation_procedure` と併せてご覧ください。
+
+ * 0: ページ無し
+ * 1: 第一世代
+ * 2: 第二世代
+
+を表します。
+
+ * ?: 不明、要調査
+ * ×: 未着手 (r:0, d:0, o:1)
+ * ▲: 翻訳予約・作業中 (r:0, d:0, o:1)
+ * △: 翻訳終了。校正者募集中 (r:0, d:1, o:1)
+ * ●: 校正中 (r:o, d:1, o:1)
+ * ☆: 原文の改訂版がリリースされた。要改訂 (r:1, d:1, o:2)
+ * ■: 改訂予約・作業中 (r:1, d:1, o:2)
+ * □: 改訂終了。校正者募集 (r:1, d:2, o:2)
+ * ◆: 改訂版校正中 (r:1, d:2, o:2)
+ * ○: 校正終了 (r:1, d:1, o:1 または r:2, d:2, o:2)
+ * ◎: 校正終了。改訂版における更新予約 (o:1, d:1, r:1 または o:2, d:2, r:2)
+
+ステータスの遷移をまとめると以下のようになります。
+
+.. code-block:: none
+
+   未翻訳状態から:
+      × → ▲ →(△)→ ● → ○
+                           → ◎
+   オリジナル改訂後:
+     (○)→ ☆ → ■ →(□) → ◆ → ○
+     (◎)→ → → ↑              →(◎)
+
+なお、JM 以外のプロジェクトから寄贈を受けたページについては、 以下のようなステー
+タスを用います。 なお寄贈もとの URL がわかる場合は、 「備考」のフィールドに書い
+ておいてください (コロン ":" が含まれていても大丈夫です)。
+
+ * C: オリジナルの最新アーカイブの翻訳
+ * c: オリジナルのアーカイブの最新版より古い版の翻訳
+
+それ以降のフィールド
+====================
+
+第二フィールド以下の内容は以下の通りです。
+
+ * パッケージ名。 パッケージディレクトリ名と基本的に同じものになります。
+ * man ページのバージョン。 リリース後にオリジナルが改定された場合や、
+   ドラフト作成作業中にさらにオリジナルの改訂があった場合など、
+   リリース版・ドラフト版・オリジナル版でバージョンが異なってしまった場合には、
+   ``=>`` で区切って記述してください。その際には ``release=>draft=>original`` の順にしてください。
+   バージョンが同じならわざわざ分けて書かなくても OK です。
+   なぜなら、以下の条件を考えれば、 どのバージョンがどの版に対応するかを決定するのは
+   容易でしょうから。
+
+   * 一番右には常にオリジナル版のバージョンが入る
+   * 改訂作業 (☆■□◆) では、 一番左は常にリリース版のバージョンになる。
+   * ドラフト版のバージョンは決してリリース版とは同じにならない。
+
+ * オリジナル man-page の日付。 または原文が cvs に commit された日付になっていることもある。
+ * マニュアルファイルの basename。
+ * マニュアルのセクション番号。
+ * 作業の日付。作業中であることを示すステータス(▲●■◆)では作業をする宣言をした日になり、
+   それ以外のステータス(△○◎☆□)では 翻訳ページの最終更新日にします。
+ * 翻訳・再配布に関する条件。
+   翻訳や配布に関する条件を著作者に確認をとったら、 各著作権に従って以下のステータスを設定します。
+
+   * G: GPL2 (GNU Public License Version 2)
+   * B: BSD (BSD License)
+   * M: Misc.(翻訳、配布とも問題ないが、 著作権に関しては GPL2、BSD のどちらで
+     もなく 原文を参照するなどの必要があるもの)
+
+   * N: Non commercial use only (商用での配布を禁止しているもの)
+   * o: 原著者に確認済 (obsolete)
+   * 確認を取っていないものに関しては、以上のステータスを "()" で囲んでください。
+
+ * 翻訳作業者のメールアドレス。
+ * 翻訳作業者の名前 (ローマ字表記が望ましい)。
+ * 備考など。
+
+リンクページ
+============
+
+「リンクページ」とは、 別のマニュアルページにシンボリックリンクされていたり、
+あるいは ``.so man1/hoge.1``
+のように roff 的にリンクされているページのことです。
+この種のページに対するステータス行の各フィールドは以下のようになります。
+通常の翻訳作業の際には、このステータスはあまり意識しないでも良いでしょう。
+
+なお、オリジナルではシンボリックリンクになっている場合でも、 JM で配布する際に
+は ``.so`` によるリンクに書き換えています。
+
+ * ステータス
+
+   * ``※`` : リンク先が未翻訳・未公開 (ステータスでいうと ×▲△●)
+   * ``@`` : リンク先が翻訳・公開済み (上記以外)
+
+ * パッケージ名(リンク先と同じ)
+ * バージョン(リンク先と同じ)
+ * 日付(リンク先と同じ)
+ * このマニュアル自体の名前
+ * このマニュアル自体のセクション
+ * リンク先の名前
+ * リンク先のセクション
diff --git a/guide/translation_pod.rst b/guide/translation_pod.rst
new file mode 100644 (file)
index 0000000..d1e23af
--- /dev/null
@@ -0,0 +1,175 @@
+==========================
+pod マニュアル翻訳の手引き
+==========================
+
+概要
+====
+
+この手引きの目的
+----------------
+
+このドキュメントは、JM プロジェクトにおいて pod ドキュメントの翻訳作業をする手引きです。
+
+:doc:`translation_procedure` とともに参照してください。
+
+pod とは
+--------
+
+pod とは、 perl スクリプトのドキュメントを記述するためのドキュメント形式です。 以下のような特色を持っています。
+
+* 単体のドキュメント (.podファイル) としても使えるが、 perlスクリプトに埋めこむこともできる。
+* 簡潔で書きやすいフォーマット
+* man 形式, html 形式への変換ツールがある
+
+roff, html, latex などの他のマークアップ言語と比較すると、
+機能は非常に限定されていますが、ソーステキストが読みやすく書きやすいことが特色です。
+通常のマークアップ言語は、生成されたドキュメントを指定のビューアで見た場合は (当然ながら) 読みやすいのですが、
+ソースとなるテキストファイルは読むのが困難です。
+
+pod のソースは、通常のテキストファイルと大きな隔たりがなく、
+ソースのままでもある程度読めることが特色です。
+そのため、書く側への負担が小さく、気軽に書けるフォーマットであると言えます。
+
+同様の目的のフォーマットとして Ruby 言語のスクリプトでよく使われる、 RD というフォーマットもあります。
+
+pod マニュアルをJM向けに翻訳する場合の作業方法
+==============================================
+
+リポジトリ内でのディレクトリ構成
+--------------------------------
+
+JM のリポジトリ内でのディレクトリ構成は以下のようになります。 (zebedeeというプログラムの場合)
+
+.. code-block:: none
+
+   JM -+- pod -+- zebedee -+- ChangeLog
+                         +- translation_list
+                         +- original -+- zebedee.pod
+                         |            +- ftpgw.tcl.pod 
+                         |
+                         +- draft    -+- zebedee.pod
+                         |            +- ftpgw.tcl.pod 
+                         |
+                         +- release  -+- zebedee.pod
+                                      +- ftpgw.tcl.pod
+
+すなわち、通常の roff 形式のマニュアルと次の点が違います。
+
+ * トップディレクトリが ``JM/manual`` でなく ``JM/pod``
+ * ``man1``, ``man3`` のようなセクション別のサブディレクトリがない
+
+``pod`` の下がプログラム名になり、その下が ``original``/``draft``/``release`` になることと、 この 3 つのディレクトリの使用法は roff 形式の場合と同じで、次のとおりです。
+
+ * ``original`` : オリジナルのソース
+ * ``draft`` : 翻訳作業中の日本語ソース(コメントとして原文を含む)
+ * ``release`` : 翻訳が完了した日本語ソース
+
+translation_list の書式
+-----------------------
+
+translation_list は以下のようになります。
+
+.. code-block:: none
+
+   △:zebedee:2.0.0:2000/05/30:zebedee:pod:2000/6/21:(G):tnaka@brain-tokyo.com:NAKAJIMA Taku:::
+   ×:zebedee:2.0.0:2000/05/30:ftpgw.tcl:pod:::::::
+
+すなわち、セクション名 (6 番目のフィールド) が ``pod`` になります。 それ以外は、roff 形式のマニュアルと同じです。
+
+.. _comment_original:
+
+原文のコメント化
+----------------
+
+JM では、draft文書については、 校正者の便宜のために原文をコメントで残すことが推奨されています。
+pod ドキュメントの一般的なコメントの形式は ``=begin``/``=end`` ですが、
+原文をコメント化した部分と通常のコメントを区別するため、
+以下のような ``JM-comment`` というタグ付きのコメントを使用してください。
+
+.. code-block:: none
+
+   =begin JM-comment
+
+   If a key is described as being a boolean then its value must be one of the
+   words B or B.
+
+   =end JM-comment
+
+   キーワードが真偽値 (boolean) と書かれていたら、
+   その値は "B" または "B" でなければならない。
+
+このようにしておくと、htmlやmanに変換した時に原文は削除されます。
+また、 :ref:`remove_original` に述べるように簡単なコマンドでソースから原文を取り除くこともできます。
+
+ポストの方法
+------------
+
+JMでは、JM メーリングリストに特定の形式で投稿することで git リポジトリに commit する方法が用意されていますが、 現状ではpodマニュアルの場合はこの方法は使用できません。
+
+そのため、pod の翻訳作業を投稿するためには、 sourceforge.jp の linuxjm プロジェクトで git commit 権を付与してもらうか、
+git committer に依頼する必要があります。
+
+作業にあたっては、ポストの方法について JM のメーリングリストでご相談下さい。
+
+pod マニュアル翻訳上の注意、TIPS
+================================
+
+翻訳確認の方法
+--------------
+
+作業結果の確認のためには、以下のコマンドを使います。
+
+* html変換してから表示
+
+  .. code-block:: console
+
+     $ pod2html podソース名 > 作業用htmlファイル名
+     $ netscape 作業用htmlファイル名
+
+* man変換してから表示
+
+  .. code-block:: console
+
+     $ mkdir man1
+     $ pod2man  podソース名 > man1/xxxxxx.1
+     $ man -M . xxxxxx
+
+pod はドキュメントフォーマットの細部が確立してないためか、
+pod2html と pod2man で違う結果となる (片方だけでエラーが出る) ことがたまにありますから、
+常に両方の結果を確認した方がいいと思います。
+
+また、どちらのコマンドもparagraph単位(段落)のエラー表示で、
+エラーの行番号が表示されないし、 エラーメッセージもわかりやすいとは言えません。
+そのため、こきざみに変換コマンドを実行した方がいいと思います。
+たくさんの作業を一度にしてからエラーを出すと、原因をつきとめるのが困難です。
+
+段落名の翻訳の注意点
+--------------------
+
+pod2manは、変換元のpodドキュメントが 以下の条件を満たしていることを前提としているようです。
+
+* 最初の段落が``=head1 NAME`` から初まること
+* ``=head1 DESCRIPTION`` という段落が存在すること
+* ``=head1``, ``=head2`` 以外の見出しを使わない
+
+そのため、 ``=head...`` の翻訳には注意を要します。
+
+pod2html には段落への HTMLリンクタグを自動生成する機能があるのですが、
+pod ドキュメントがこれを使用している場合は、
+段落名を翻訳してしまうと、このリンクが正しく張れなくなります。
+
+このため、段落名の翻訳は非常に注意が必要です。
+この問題に対する一般的な対応方法はまだ決定していません。
+現状では、段落名は原文のままにしておいて、
+個別に JM メーリングリストで対応方法を相談してください。
+
+.. _remove_original:
+
+原文の削除
+----------
+
+:ref:`comment_original` で原文を保持している場合、 この原文を削除するには、次のようなコマンドを使用します。
+
+.. code-block:: console
+
+   perl -n -e 'print unless /^=begin\s*JM-comment/../^=end\s*JM-comment/' zebedee.pod > ../release/zebedee.pod
diff --git a/guide/translation_procedure.rst b/guide/translation_procedure.rst
new file mode 100644 (file)
index 0000000..a3f9f73
--- /dev/null
@@ -0,0 +1,51 @@
+==============
+翻訳作業の流れ
+==============
+
+翻訳作業は以下のステップを踏んで行われます。 作業の節目節目では ML に報告を行ってもらいます。
+そのメールのフォーマットと、 定型メールを送信するためのツールについての解説は :doc:`mail_format` を参照してください。
+
+翻訳の予約
+==========
+
+JM Project において作業対象となっているマニュアルは
+`JM インデックス(作業状況) <http://linuxjm.sourceforge.jp/INDEX/progress.html>`_
+のページにまとめられています。
+ここから作業したいページを選び、 :doc:`メールフォーマット <mail_format>` の要領で宣言メールをポストして下さい。
+
+もしインデックスページにないマニュアルを翻訳したい場合は、その旨を ML で発言してください。
+そのマニュアルが含まれているパッケージの一次配布元がわかっている場合は、その情報も併せて連絡して下さい。
+git コミッターが作業してページに反映させますので、確認後改めて予約宣言をしてください。
+
+ドラフト
+========
+
+作業するページが決まったら、 :doc:`translation_guideline` に従ってページを作成してください。
+翻訳作業中に疑問点などが生じた場合は、気軽に ML で尋ねましょう。
+
+作業が完成したら、結果を :doc:`メールフォーマット <mail_format>` に従って ML にポストして下さい。
+校正者・査読者の便宜を考えて、原文を残すかたちでの投稿が推奨されます。
+
+校正
+====
+
+ドラフトが提出されると、ページは校正に入ります。校正作業は翻訳者と同じ人が行ってもかまいませんし、
+あるいは別の人を ML で募ってもかまいません。ただしそれぞれの場合で :doc:`メールフォーマット <mail_format>` が変わりますので注意してください。
+
+もしドラフトを作成した人が、そのページを「校正募集」のステータスにおいた場合は、校正作業を希望する人は予約のメールを ML にポストしてから作業をはじめてください。
+
+校正の際には、ドラフト原稿に対して ML から寄せられた意見を参考にしたり、語句の修正・訳語の統一などを行ってください。
+
+なお ML に流れたメールの整形閲覧用のツールとして、 Emacs Lisp で書かれた
+`JM-man-view.el <http://git.sourceforge.jp/view?p=linuxjm/jm.git;a=blob_plain;f=admin/JM-man-view.el;hb=HEAD>`_
+がありますので環境に応じて利用してください。
+
+リリース
+========
+
+作業が終わったら結果を ML にポストします。
+フォーマットは :doc:`メールフォーマット <mail_format>` を参考にしてください。
+
+このときも原文は残したかたちでポストしましょう。
+オリジナルが更新されたときの追随作業の役にたちますから。
+配布に含まれるページでは原文を除去しますが、その作業はシステム側で自動的に行われます。
diff --git a/guide/translation_update.rst b/guide/translation_update.rst
new file mode 100644 (file)
index 0000000..c4b288a
--- /dev/null
@@ -0,0 +1,89 @@
+============
+翻訳更新方法
+============
+
+JM Repository の構成は :doc:`git_repository` に書かれている通りです。
+
+JM の翻訳の管理方法は
+
+ * roff を直接翻訳
+ * po4a を使って翻訳
+
+の2つの方法が混在しています。
+
+po4a を使用している場合には、各パッケージのディレクトリに po4a というフォルダが存在します。
+存在しない場合は、roff を直接編集して翻訳しています。
+
+roff を直接翻訳
+===============
+
+release 版を編集する場合は、必ず draft を編集してから、 release に反映して下さい。
+draft 側には、原文がコメントとして入っていますが、release には翻訳済みの文章のみが含まれます。
+
+.. note::
+
+   以下の説明は、各パッケージのディレクトリ (manual/fetchmail など) で作業することを前提に説明します。
+
+#. draft を更新します
+#. draft の更新が終わったら、release に反映します。
+   対象ファイルを draft 以下から release 以下にコピーするだけですが、 JM-release.sh コマンドを利用するのが楽です。
+
+   .. code-block:: none
+
+      $ ../../admin/JM-release.sh -f -g draft/man1/fetchmail.1 release
+      draft/man1/fetchmail.1 -> release/man1/fetchmail.1
+
+#. Git でコミットして、sourceforge.jp に push します。
+
+draft 以下の全ファイルを release に反映する場合は、JM-release-all.sh コマンドを実行します。
+draft の全ファイルがリリース済みの場合に release への反映もれがないかを確認する際などに使います。
+
+.. code-block:: none
+
+   $ cd manual/fetchmail
+   $ ../../admin/JM-release-all.sh
+   (git status や git diff で変更内容を確認)
+   (git commit -> git push)
+
+po4a を使って翻訳
+=================
+
+**LDP\_man-pages と GNU\_coreutils は管理方法が少し複雑です。詳細は下の方にありますので参照して下さい。**
+
+翻訳は po4a ディレクトリ以下の ja.po ファイルで管理しています。
+ja.po ファイルは po4a/ja.po の場合と、po4a/<dir>/ja.po にある場合があります。
+
+#. man ページに対応する ja.po がどれかは ``po4a/**/*.cfg`` を見て判断します。
+   更新したいファイルが分かっている場合は以下のように grep して下さい。
+
+   .. code-block:: none
+
+      $ grep iptables-save.8 po4a/**/*.cfg
+
+#. ja.po を編集します。編集にあたっては Emacs の po-mode, poedit などが利用できます。
+#. make または make translate で ja.po の内容を draft 以下に反映します。
+#. (参考 make stat で ja.po の翻訳状況を表示できます)
+#. release に反映する必要がある場合は、「roff を直接翻訳」の場合と同様に JM-release.sh を使用して、release フォルダ以下に反映して下さい。
+#. git commit で更新を登録して、git push で sf.jp に送信して下さい
+
+po4a 移行後の課題
+-----------------
+
+* レビューをどのようにして行うか?
+* ja.po を投稿してもレビューできない。 できあがった draft でレビューする必要がある。
+* translation-list の更新が手動になっている
+* 複数のファイルが一つの ja.po の変更で更新されることがあり、管理が面倒
+
+LDP man-pages
+=============
+
+:doc:`LDP_man-pages` を参照。
+
+GNU_coreutils
+=============
+
+:doc:`GNU_coreutils` を参照。
+
+``help2man`` の出力と、追加ファイル ``*.x`` の翻訳を合わせて、
+日本語マニュアルを生成しています。
+そのため、管理が他のものと異なっています。
diff --git a/guide/upstream_update.rst b/guide/upstream_update.rst
new file mode 100644 (file)
index 0000000..f627300
--- /dev/null
@@ -0,0 +1,47 @@
+==================
+オリジナル更新方法
+==================
+
+JM Repository の構成は :doc:`git_repository` に書かれている通りです。
+
+JM の翻訳の管理方法は
+
+* roff を直接翻訳
+* po4a を使って翻訳
+
+の 2 つの方法が混在しています。
+
+オリジナルの更新方法もどちらの管理方法をとっているかによって異なります。
+
+po4a を使用している場合には、各パッケージのディレクトリに po4a というフォルダが存在します。
+存在しない場合は、roff を直接編集して翻訳しています。
+
+roff を直接翻訳
+===============
+
+後できちんと書きたいと思います。
+
+関連するコマンド群は以下 (だったと思う)
+
+* admin/JM-orig-upd.sh
+* admin/git2upd
+* admin/upd_tl.perl
+
+po4a を使って翻訳
+=================
+
+(to be written)
+
+LDP man-pages
+=============
+
+:ref:`LDP_man-pages <ldp_original_update>` を参照。
+
+GNU coreutils
+=============
+
+:ref:`GNU_coreutils <coreutils_original_update>` を参照。
+
+``help2man`` の出力と、追加ファイル ``*.x`` の翻訳を合わせて、
+日本語マニュアルを生成しています。
+そのため、管理が他のものと異なっています。