po4a-runtime - po4a と Autotools
を使用しないランタイム
gettext 翻訳
po4a-build,
po4a では、gettext
を用いたランタイム出力メッセージの翻訳もサポートしていますが、Autotools
や 典型的な
./configure
プロセスを採用したパッケージでは必要ありません。
サンプルの
Makefile
スニペットを用いると、最小限の労力でパッケージに
intltool
を組み込めます。
レイアウト¶
ドキュメントの翻訳は、ランタイム翻訳と同じ
po/
ディレクトリを使用するべきではありません。ランタイム翻訳は
po/
と異なるディレクトリを使用できますが、通常この規約を用いるのが一番簡単です。
複数の言語¶
これは、複数のプログラム言語のスクリプトを用いたパッケージという意味です。一般的なミックスは
Perl とシェルです。注意:
ファイルの拡張子がほとんど問題のないものである場合を除き、gettext
は混乱してしまい、どちらかの言語を取り除いてしまうでしょう。
複数の言語を使用する際、POT
ファイルに必要な文字列がすべて取得できるまで、
po/Makevars
で各種設定を実験してください。
具体的には、
po/Makevars
に複数の言語を指定すると、問題があります。以下の代わりにしてください。
# このようにしてはいけません
XGETTEXT_OPTIONS = -L Perl -L Shell --from-code=iso-8859-1
ひとつの言語に関係する名前の変更
(やシンボリックリンクの作成)
や、-L
オプションでの明示の省略だと考えてください。
po/POTFILES.in
を処理する際に、ファイルの拡張子が必要なだけです。
--keywords
オプションも便利です
- xgettext
のドキュメントをご覧ください。
po/ への移行¶
つまり、トップレベルの
po/
ディレクトリを作成し、
/usr/share/doc/po4a/examples/
にあるサンプルファイルを、移動してください。
- LINGUAS
- 空だったとしても存在しなければなりません。翻訳のリストでできており、'#'
で始まらない各行は、存在する
PO
ファイルに一致しなければなりません。例えば、
LINGUAS に 'fr'
とだけ書かれていれば、
fr.po ファイルが LINGUAS
ファイルと同じディレクトリになければなりません。
$ cat po/LINGUAS
cs
de
fr
$
規約では LINGUAS
ファイルはアルファベット順にソートされますが、手作業です。
- POTFILES.in
- ランタイム
(つまりスクリプト内)
で翻訳される必要があるメッセージを持つファイルリストです。トップレベル
po/
ディレクトリを使用する場合、パスは
po/
ディレクトリそのものではなく、トップレベルディレクトリからの相対パスにしてください。
$ ls -l
myscript.pl
another.pl
foo/support.pl
po/
po/POTFILES.in
$ cat po/POTFILES.in
myscript.pl
another.pl
foo/support.pl
$
ランタイムの翻訳とドキュメントの翻訳の両方を含むスクリプト
(例: ランタイムに gettext
を使用し、ドキュメントに埋め込み
POD 内容を含む)
は、明らかにサポートされるということに注意してください。そのため、
po/POTFILES.in と doc/po4a-build.conf
に、同じファイルがリストされていても問題ありません。
- Makevars-perl.example
- スクリプトが Perl
の場合、このサンプルファイルを
po/Makevars
としてコピーし、適合するように編集してください。
- Makevars-shell.example
- スクリプトが シェル
の場合、このサンプルファイルを
po/Makevars
としてコピーし、適合するように編集してください。
- po4a-build.make
- このサンプルファイルを
po/Makefile
としてコピーしてください。編集する必要はないはずですが、po4a
のリリースにより、根本的に
intltool
のサポートが変更される可能性があるため、
/usr/share/doc/po4a/examples/po4a-build.make
を更新したくなるかもしれません
(このファイル自体は
Autotools や intltool
を用いた別プロジェクトで生成されます)。
以下のスニペットを、最上位の
Makefile
や、配付用にソースを準備する手段ならどこでも追加する必要があります。
clean:
$(MAKE) -C po/ clean
install:
$(MAKE) -C po/ install DESTDIR=$(DESTDIR)
dist:
$(MAKE) -C po/ pot
(Autotools
プロジェクトでは、
Makefile.am の "SUBDIRS" に
po
を追加するだけで、自動的にこうなります)
新しい翻訳を加える際には、
po/LINGUAS
の編集が必要なので、ランタイムの翻訳は
po4a-build
とまったく同じように簡単とは言えません。しかしそれは別にしても、翻訳の更新は
PO
ファイルを新しいバージョンに置き換えるだけに過ぎません。
ソースコード tarball
の用意のしかたによりますが、
MANIFEST
ファイルに新しい PO
ファイルをリストしたり、tarball
を用意するスクリプトに追加したりといったことも、必要になるでしょう
(これは
po4a-build
にも適用します)。
po/ にある
*.mo や
*.gmo
はすべて削除されます。
著作権¶
サンプルファイルは po4a
プロジェクトの一部ですが、Automake
自体のような他の構築ツールと同様に、著作権表示で
po4a を参照したり、po4a
チームを列挙したりせずに、あなたのプロジェクトで自由に使用、変更、頒布できます。po4a
に言及してくださるなら、それもまたすばらしいと思います。
Neil Williams <linux@codehelp.co.uk>
倉澤 望 <nabetaro@debian.or.jp>
Debian JP Documentation ML <debian-doc@debian.or.jp>