.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" ======================================================================== .\" .IX Title "PO4A-RUNTIME 7" .TH PO4A-RUNTIME 7 "2013-08-21" "Po4a Tools" "Po4a Tools" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "名前" .IX Header "名前" po4a\-runtime \- po4a と Autotools を使用しないランタイム gettext 翻訳 .SH "概要" .IX Header "概要" \&\fIpo4a\-build\fR, \fIpo4a\fR では、gettext を用いたランタイム出力メッセージの翻訳もサポートしていますが、Autotools や 典型的な \fI./configure\fR プロセスを採用したパッケージでは必要ありません。 .PP サンプルの \fIMakefile\fR スニペットを用いると、最小限の労力でパッケージに \fIintltool\fR を組み込めます。 .SH "レイアウト" .IX Header "レイアウト" ドキュメントの翻訳は、ランタイム翻訳と同じ \fIpo/\fR ディレクトリを使用するべきではありません。ランタイム翻訳は \fIpo/\fR と異なるディレクトリを使用できますが、通常この規約を用いるのが一番簡単です。 .SH "複数の言語" .IX Header "複数の言語" これは、複数のプログラム言語のスクリプトを用いたパッケージという意味です。一般的なミックスは Perl とシェルです。注意: ファイルの拡張子がほとんど問題のないものである場合を除き、gettext は混乱してしまい、どちらかの言語を取り除いてしまうでしょう。 .PP 複数の言語を使用する際、POT ファイルに必要な文字列がすべて取得できるまで、\fIpo/Makevars\fR で各種設定を実験してください。 .PP 具体的には、\fIpo/Makevars\fR に複数の言語を指定すると、問題があります。以下の代わりにしてください。 .PP .Vb 2 \& # このようにしてはいけません \& XGETTEXT_OPTIONS = \-L Perl \-L Shell \-\-from\-code=iso\-8859\-1 .Ve .PP ひとつの言語に関係する名前の変更 (やシンボリックリンクの作成) や、\-L オプションでの明示の省略だと考えてください。\fIpo/POTFILES.in\fR を処理する際に、ファイルの拡張子が必要なだけです。 .PP \&\-\-keywords オプションも便利です \- xgettext のドキュメントをご覧ください。 .SH "po/ への移行" .IX Header "po/ への移行" つまり、トップレベルの \fIpo/\fR ディレクトリを作成し、\fI/usr/share/doc/po4a/examples/\fR にあるサンプルファイルを、移動してください。 .IP "\s-1LINGUAS\s0" 4 .IX Item "LINGUAS" 空だったとしても存在しなければなりません。翻訳のリストでできており、'#' で始まらない各行は、存在する \s-1PO\s0 ファイルに一致しなければなりません。例えば、\fI\s-1LINGUAS\s0\fR に 'fr' とだけ書かれていれば、\fIfr.po\fR ファイルが \fI\s-1LINGUAS\s0\fR ファイルと同じディレクトリになければなりません。 .Sp .Vb 5 \& $ cat po/LINGUAS \& cs \& de \& fr \& $ .Ve .Sp 規約では \fI\s-1LINGUAS\s0\fR ファイルはアルファベット順にソートされますが、手作業です。 .IP "\s-1POTFILES\s0.in" 4 .IX Item "POTFILES.in" ランタイム (つまりスクリプト内) で翻訳される必要があるメッセージを持つファイルリストです。トップレベル \fIpo/\fR ディレクトリを使用する場合、パスは \fIpo/\fR ディレクトリそのものではなく、トップレベルディレクトリからの相対パスにしてください。 .Sp .Vb 11 \& $ ls \-l \& myscript.pl \& another.pl \& foo/support.pl \& po/ \& po/POTFILES.in \& $ cat po/POTFILES.in \& myscript.pl \& another.pl \& foo/support.pl \& $ .Ve .Sp ランタイムの翻訳とドキュメントの翻訳の両方を含むスクリプト (例: ランタイムに gettext を使用し、ドキュメントに埋め込み \s-1POD\s0 内容を含む) は、明らかにサポートされるということに注意してください。そのため、\fIpo/POTFILES.in\fR と \fIdoc/po4a\-build.conf\fR に、同じファイルがリストされていても問題ありません。 .IP "Makevars\-perl.example" 4 .IX Item "Makevars-perl.example" スクリプトが Perl の場合、このサンプルファイルを \fIpo/Makevars\fR としてコピーし、適合するように編集してください。 .IP "Makevars\-shell.example" 4 .IX Item "Makevars-shell.example" スクリプトが シェル の場合、このサンプルファイルを \fIpo/Makevars\fR としてコピーし、適合するように編集してください。 .IP "po4a\-build.make" 4 .IX Item "po4a-build.make" このサンプルファイルを \fIpo/Makefile\fR としてコピーしてください。編集する必要はないはずですが、po4a のリリースにより、根本的に intltool のサポートが変更される可能性があるため、\fI/usr/share/doc/po4a/examples/po4a\-build.make\fR を更新したくなるかもしれません (このファイル自体は Autotools や intltool を用いた別プロジェクトで生成されます)。 .SH "構築" .IX Header "構築" 以下のスニペットを、最上位の Makefile や、配付用にソースを準備する手段ならどこでも追加する必要があります。 .PP .Vb 2 \& clean: \& $(MAKE) \-C po/ clean \& \& install: \& $(MAKE) \-C po/ install DESTDIR=$(DESTDIR) \& \& dist: \& $(MAKE) \-C po/ pot .Ve .PP (Autotools プロジェクトでは、\fIMakefile.am\fR の \f(CW\*(C`SUBDIRS\*(C'\fR に \fIpo\fR を追加するだけで、自動的にこうなります) .SH "保守" .IX Header "保守" 新しい翻訳を加える際には、\fIpo/LINGUAS\fR の編集が必要なので、ランタイムの翻訳は \fIpo4a\-build\fR とまったく同じように簡単とは言えません。しかしそれは別にしても、翻訳の更新は \s-1PO\s0 ファイルを新しいバージョンに置き換えるだけに過ぎません。 .PP ソースコード tarball の用意のしかたによりますが、\fI\s-1MANIFEST\s0\fR ファイルに新しい \s-1PO\s0 ファイルをリストしたり、tarball を用意するスクリプトに追加したりといったことも、必要になるでしょう (これは \fIpo4a\-build\fR にも適用します)。 .PP \&\fIpo/\fR にある \fI*.mo\fR や \fI*.gmo\fR はすべて削除されます。 .SH "著作権" .IX Header "著作権" サンプルファイルは po4a プロジェクトの一部ですが、Automake 自体のような他の構築ツールと同様に、著作権表示で po4a を参照したり、po4a チームを列挙したりせずに、あなたのプロジェクトで自由に使用、変更、頒布できます。po4a に言及してくださるなら、それもまたすばらしいと思います。 .SH "著者" .IX Header "著者" .Vb 1 \& Neil Williams .Ve .SH "訳者" .IX Header "訳者" .Vb 2 \& 倉澤 望 \& Debian JP Documentation ML .Ve