.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) .\" .\" 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 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. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Locale::Po4a::Po 3pm" .TH Locale::Po4a::Po 3pm "2016-01-05" "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 "名前" Locale::Po4a::Po \- \s-1PO\s0 file 操作モジュール .SH "書式" .IX Header "書式" .Vb 2 \& use Locale::Po4a::Po; \& my $pofile=Locale::Po4a::Po\->new(); \& \& # Read PO file \& $pofile\->read(\*(Aqfile.po\*(Aq); \& \& # Add an entry \& $pofile\->push(\*(Aqmsgid\*(Aq => \*(AqHello\*(Aq, \*(Aqmsgstr\*(Aq => \*(Aqbonjour\*(Aq, \& \*(Aqflags\*(Aq => "wrap", \*(Aqreference\*(Aq=>\*(Aqfile.c:46\*(Aq); \& \& # Extract a translation \& $pofile\->gettext("Hello"); # returns \*(Aqbonjour\*(Aq \& \& # Write back to a file \& $pofile\->write(\*(Aqotherfile.po\*(Aq); .Ve .SH "説明" .IX Header "説明" Locale::Po4a::Po はメッセージカタログを操作できるようにするモジュールです。ファイル (通常 \fIpo\fR と言う拡張子) を読み書きし、新しいエントリをその場で作成したり、文字列の翻訳要求があったときに作成できます。 .PP For a more complete description of message catalogs in the \s-1PO\s0 format and their use, please refer to the info documentation of the gettext program (node \*(L"`\s-1PO\s0 Files\*(R"'). .PP このモジュールは po4a プロジェクトの一部です。このプロジェクトは (元々プログラムのメッセージを簡単に訳せるように設計された) \s-1PO\s0 ファイルを用い、すべてを翻訳するのを目標にしています。すべてというのは、(man ページ、info マニュアルといった) ドキュメント、パッケージの説明、debconf テンプレート、そしてこの恩恵を受けられるだろうすべてものです。 .SH "このモジュールで使用できるオプション" .IX Header "このモジュールで使用できるオプション" .IP "\fB\-\-porefs\fR \fItype\fR[,\fBwrap\fR|\fBnowrap\fR]" 4 .IX Item "--porefs type[,wrap|nowrap]" リファレンスフォーマットを指定します。引数 \fItype\fR には、いずれのリファレンスも提供しない \fBnone\fR、行番号を明示しない \&\fBnoline\fR (正確に言うと行番号は 1 に置換されます)、行番号をカウントアップする \fBcounter\fR、完全なリファレンスを含む \&\fBfull\fR のどれか一つを指定できます。 .Sp 引数にはコンマで続けて、\fBwrap\fR か \fBnowrap\fR というキーワードを後に付けられます。デフォルトでは、リファレンスを 1 行で書き出します。\fBwrap\fR オプションは、\fBgettext\fR ツール (\fBxgettext\fR や \fBmsgmerge\fR) のように、リファレンスを複数行に折り返します。このオプションは、より気が利いているため、将来のリリースでデフォルトとなります。元の挙動のままにしておきたいユーザは、\fBnowrap\fR オプションを使用できます。 .IP "\fB\-\-msgid\-bugs\-address\fR \fIemail@address\fR" 4 .IX Item "--msgid-bugs-address email@address" msgid のバグレポートを送るアドレスをセットします。デフォルトでは、生成した \s-1POT\s0 ファイルに Report-Msgid-Bugs-To フィールドはありません。 .IP "\fB\-\-copyright\-holder\fR \fIstring\fR" 4 .IX Item "--copyright-holder string" \&\s-1POT\s0 ヘッダの著作権者 (copyright holder) をセットします。デフォルト値は \*(L"Free Software Foundation, Inc.\*(R" です。 .IP "\fB\-\-package\-name\fR \fIstring\fR" 4 .IX Item "--package-name string" \&\s-1POT\s0 ヘッダのパッケージ名をセットします。デフォルト値は \*(L"\s-1PACKAGE\*(R"\s0 です。 .IP "\fB\-\-package\-version\fR \fIstring\fR" 4 .IX Item "--package-version string" \&\s-1POT\s0 ヘッダのパッケージバージョンをセットします。デフォルト値は \*(L"\s-1VERSION\*(R"\s0 です。 .SH "Functions concerning entire message catalogs" .IX Header "Functions concerning entire message catalogs" .IP "\fInew()\fR" 4 .IX Item "new()" 新規メッセージカタログを作成します。引数を指定した場合、読み込む \s-1PO\s0 ファイルの名前として扱います。 .IP "read($)" 4 .IX Item "read($)" (引数で与えた) \s-1PO\s0 ファイルを読み込みます。すでに読み込んだ既存エントリは削除しません。新しいものはカタログの最後に追加します。 .IP "write($)" 4 .IX Item "write($)" 与えられたファイルに現在のカタログを書き込みます。 .IP "write_if_needed($$)" 4 .IX Item "write_if_needed($$)" write と同様ですが、PO ファイルや \s-1POT\s0 ファイルがすでに存在している場合、オブジェクトを一時ファイルに書き出し、既存のファイルを比較して更新が必要かどうかチェックします (これにより、行参照や POT-Creation-Date フィールドの更新しかない更新を防ぎます)。 .IP "gettextize($$)" 4 .IX Item "gettextize($$)" この関数は、オリジナルと翻訳済みの二つのカタログから、一つの翻訳済みメッセージカタログを生成します。この処理は、\fIpo4a\fR\|(7) の \&\fIgettext 化: どのように動作しますか?\fR セクションで解説します。 .IP "filter($)" 4 .IX Item "filter($)" この関数は、既存のものからカタログを抽出します。与えたファイルへの参照があるエントリのみが、結果のカタログに抽出されます。 .Sp この関数は、引数をパースし、Perl の関数定義に変換し、この定義を評価し、この関数が true を返すフィールドのみをフィルタします。 .Sp 私は Perl が大好きです ;) .IP "\fIto_utf8()\fR" 4 .IX Item "to_utf8()" \&\s-1PO\s0 の msgstr を \s-1UTF\-8\s0 に再コード化します。PO ファイルで文字セットが指定されていない場合 (\*(L"\s-1CHARSET\*(R"\s0 の値) や、すでに \&\s-1UTF\-8\s0 か \s-1ASCII\s0 の場合は何もしません。 .SH "翻訳にメッセージカタログを使用する関数" .IX Header "翻訳にメッセージカタログを使用する関数" .IP "gettext($%)" 4 .IX Item "gettext($%)" 現在のカタログから、引数で与えた文字列の翻訳を取得します。文字列が見つからなかった場合、この関数はオリジナル (未翻訳) の文字列を返します。 .Sp 翻訳する文字列の後に、追加引数のハッシュを渡せます。以下のエントリが有効です。 .RS 4 .IP "\fBwrap\fR" 4 .IX Item "wrap" 文字列中の空白が、重要でないとして扱うかどうかを示す真偽値です。重要でない場合、この関数は、翻訳を探す前の文字列を納め、結果を折り返します。 .IP "\fBwrapcol\fR" 4 .IX Item "wrapcol" 改行を行う幅です (デフォルト: 76)。 .RE .RS 4 .RE .IP "\fIstats_get()\fR" 4 .IX Item "stats_get()" 前回 \fIstats_clear()\fR が呼ばれたときからの gettext のヒット率統計を返します。msgfmt \-\-statistic が表示する統計とは、異なることにご注意ください。msgfmt はファイルの状態をレポートしますが、ここでは \s-1PO\s0 ファイルの最近の利用についての統計です。以下に使い方の例を示します。 .Sp .Vb 1 \& [翻訳する際の PO ファイルの使用例] \& \& ($percent,$hit,$queries) = $pofile\->stats_get(); \& print "So far, we found translations for $percent\e% ($hit of $queries) of strings.\en"; .Ve .IP "\fIstats_clear()\fR" 4 .IX Item "stats_clear()" gettext のヒットに関する統計をクリアします。 .SH "メッセージカタログを生成する関数" .IX Header "メッセージカタログを生成する関数" .IP "push(%)" 4 .IX Item "push(%)" 現在のカタログの最後に、新しいエントリを push します。引数は、ハッシュテーブルの形である必要があります。有効なキーは以下の通りです。 .RS 4 .IP "\fBmsgid\fR" 4 .IX Item "msgid" オリジナル言語の文字列。 .IP "\fBmsgstr\fR" 4 .IX Item "msgstr" 翻訳。 .IP "\fBreference\fR" 4 .IX Item "reference" この文字列がどこにあったかを示します。例えば、file.c:46 ('file.c' の 46 行目) といった具合です。複数ある場合は、空白区切りのリストとなります。 .IP "\fBcomment\fR" 4 .IX Item "comment" 手で (翻訳者が) 追加したコメントです。フォーマットは自由です。 .IP "\fBautomatic\fR" 4 .IX Item "automatic" 文字列抽出プログラムが自動的に追加したコメントです。詳細は、\fBxgettext\fR プログラムの \fB\-\-add\-comments\fR オプションをご覧ください。 .IP "\fBflags\fR" 4 .IX Item "flags" このエントリで定義するフラグのスペース区切りリストです。 .Sp 有効なフラグは、\fBc\-text\fR, \fBpython-text\fR, \fBlisp-text\fR, \fBelisp-text\fR, \&\fBlibrep-text\fR, \fBsmalltalk-text\fR, \fBjava-text\fR, \fBawk-text\fR, \&\fBobject-pascal-text\fR, \fBycp-text\fR, \fBtcl-text\fR, \fBwrap\fR, \fBno-wrap\fR, \&\fBfuzzy\fR です。 .Sp それぞれの意味については gettext のドキュメントをご覧ください。 .IP "\fBtype\fR" 4 .IX Item "type" これはほとんど内部引数で、ドキュメントを gettext 化する際に使用します。ここでの考え方は、オリジナルと翻訳の両方を \s-1PO\s0 オブジェクトに入れるためパースし、片方の msgid を msgid に、もう片方の msgid を msgstr としてマージする、というものです。これが確実に完了するように、PO オブジェクトの各 msgid は、その構造 (DocBook では \*(L"chapt\*(R", \&\*(L"sect1\*(R", \*(L"p\*(R" など) から type を与えられます。文字列の type が一致しない場合、双方のファイルが同じ構造を共有していないことになり、プロセスはエラーを通知します。 .Sp この情報は、文字列を翻訳する際に文脈情報を翻訳者に与えるため、PO ファイルの自動コメントに書き込まれます。 .IP "\fBwrap\fR" 4 .IX Item "wrap" 見栄えに関する再整形を行い、空白をごちゃごちゃにしてもいいかどうかの真偽値です。使用してよい場合、使用する前の文字列を納めます。 .Sp この情報は、PO ファイルに \fBwrap\fR フラグや \fBno-wrap\fR フラグを用いて書き込まれます。 .IP "\fBwrapcol\fR" 4 .IX Item "wrapcol" 改行を行う幅です (デフォルト: 76)。 .Sp この情報は \s-1PO\s0 ファイルに書き込まれません。 .RE .RS 4 .RE .SH "その他の関数" .IX Header "その他の関数" .IP "\fIcount_entries()\fR" 4 .IX Item "count_entries()" カタログ内のエントリ数 (ヘッダ含まず) を返します。 .IP "\fIcount_entries_doc()\fR" 4 .IX Item "count_entries_doc()" ドキュメント内のエントリ数を返します。文字列がドキュメント内に複数回現れる場合、複数回カウントします。 .IP "msgid($)" 4 .IX Item "msgid($)" 与えた数の msgid が返ります。 .IP "msgid_doc($)" 4 .IX Item "msgid_doc($)" ドキュメント内の、与えられた位置の msgid を返します。 .IP "\fIget_charset()\fR" 4 .IX Item "get_charset()" \&\s-1PO\s0 ヘッダで指定した 文字セットを返します。設定されていない場合、 \*(L"\s-1CHARSET\*(R"\s0 を返します。 .IP "set_charset($)" 4 .IX Item "set_charset($)" POヘッダの文字セットに、第一引数に指定した値を設定します。この関数が呼ばれない場合 (かつ文字セットを指定したファイルが読み込まれない場合)、デフォルト値は \*(L"\s-1CHARSET\*(R"\s0 のままになります。この値は、このモジュールの振る舞いを変更せず、ヘッダのそのフィールドに設定するためだけに使用し、\fIget_charset()\fR にその値を返します。 .SH "著者" .IX Header "著者" .Vb 2 \& Denis Barbier \& Martin Quinson (mquinson#debian.org) .Ve .SH "訳者" .IX Header "訳者" .Vb 2 \& 倉澤 望 \& Debian JP Documentation ML .Ve