po4a-runtime

Autres langues

Langue: ja

Version: 2010-08-07 (ubuntu - 25/10/10)

Section: 7 (Divers)

名前

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.indoc/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>