.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" 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" '' . ds C` . ds C' '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 >0, 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. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .if !\nF .nr F 0 .if \nF>0 \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} .\} .\" ======================================================================== .\" .IX Title "PO4A-RUNTIME 7" .TH PO4A-RUNTIME 7 "2018-06-02" "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 プロセスを採用する場合には po4a\-build パッケージは必要ありません。 .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 オプションも便利です \- \fBxgettext\fR(1) のドキュメントをご覧ください。 .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" Copy this example file as \fIpo/Makefile\fR \- it shouldn't need editing but you may want to keep it updated against \&\fI/usr/share/doc/po4a/examples/po4a\-build.make\fR as it may need to be updated within po4a releases as the underlying intltool support changes (the file itself was generated from another project using Autotools and 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 ソースアーカイブを準備する方法に応じて、\fI\s-1MANIFEST\s0\fR ファイルに新しい \s-1PO\s0 ファイルをリストしたり、アーカイブを準備するスクリプトに追加したりする必要があるでしょう。(これは \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