Previous: , Up: Template   [Contents][Index]


5.1 xgettextプログラムの呼び出し

xgettext [option] [inputfile] …

xgettextプログラムは、与えられた入力ファイルから、翻訳可能な文字列を抽出します。

5.1.1 入力ファイルの位置

inputfile

入力ファイルを指定します。

-f file
--files-from=file

入力ファイルの名前を、コマンドラインからではなく、fileから読み込みます。

-D directory
--directory=directory

ディレクトリーのリストにdirectoryを追加します。このディレクトリーのリストからソースファイルを検索します。しかし.poファイルが出力されるのは、カレントディレクトリーです。

inputfileに‘-’が指定された場合は、標準入力から読み込みます。

5.1.2 出力ファイルの位置

-d name
--default-domain=name

出力ファイルとして、(messages.poのかわりに)name.poを使用します。

-o file
--output=file

(name.pomessages.poではなく)指定されたファイルに出力を書き込みます。

-p dir
--output-dir=dir

ファイルはdirに出力されます。

出力のfileに‘-’または‘/dev/stdout’が指定された場合、出力は標準出力に書き込まれます。

5.1.3 入力ファイルの言語の選択

-L name
--language=name

Specifies the language of the input files. The supported languages are CC++ObjectiveCPOShellPythonLispEmacsLisplibrepSchemeSmalltalkJavaJavaPropertiesC#awkYCPTclPerlPHPGCC-sourceNXStringTableRSTGladeLuaJavaScriptValaGSettingsDesktop.

-C
--c++

--language=C++の省略指定です。

デフォルトでは、入力ファイルの言語は拡張子により推測されます。

5.1.4 入力ファイルの解釈

--from-code=name

入力ファイルのエンコーディングを指定します。このオプションはメッセージ文字列や、それらのコメントに非ASCII文字が含まれている場合のみ必要です。TclとGladeの入力ファイルは、このオプションの指定に関わらず、UTF-8が想定されることに注意してください。

デフォルトでは、入力ファイルのエンコーディングはASCIIであると仮定されます。

5.1.5 オペレーションモード

-j
--join-existing

既存のファイルのメッセージを結合します。

-x file
--exclude-file=file

fileのエントリーは抽出されません。fileには、POファイルかPOTファイルを指定します。

-c[tag]
--add-comments[=tag]

tagで始まるコメントブロックを、出力ファイル中のキーワード行の前に配置します。このオプションでtagを指定しない場合には、出力ファイル中のすべてのキーワード行の前にコメントブロックが配置されます。

コメントブロックと想定されるブロックが抽出されるために、ブロックはキーワード行により調整されなければならないことに注意してください。 たとえば以下のCソースコードでは:

/* This is the first comment.  */
gettext ("foo");

/* This is the second comment: not extracted  */
gettext (
  "bar");

gettext (
  /* This is the third comment.  */
  "baz");

2番目のコメント行は抽出されないでしょう。なぜならコメント行とキーワードの間にブランク行が1つあるからです。

--check[=CHECK]

msgidおよびmsgid_pluralにたいして構文チェックを行います。サポートされているチェックは:

ellipsis-unicode

ASCIIの...より、Unicodeのellipsis文字を優先します。

space-ellipsis

ellipsis文字の前の空白文字を抑制します。

quote-unicode

ASCIIの"'`より、Unicodeのクォーテーションマークを優先します。

bullet-unicode

ASCIIの*または-より、Unicodeのbullet文字を優先します。

オプションはすべての入力ファイルに効果をもちます。特定の文字列にたいするチェックを有効、または無効にするために、ソースファイル中で特別なコメントxgettext:でマークすることができます。たとえば、--check=space-ellipsisを指定して、なおかつ特定の文字列にたいしてチェックを行いたくない場合には、以下のコメントを追加します:

/* xgettext: no-space-ellipsis-check */
gettext ("We really want a space before ellipsis here ...");

xgettext:コメントの後に、カンマで区切られたフラグを記述できます。利用可能なフラグは、‘[no-]name-check’という形式で、nameは有効な構文チェックです。フラグのプレフィクスがno-の場合は、否定を意味します。

文字列全体ではなく、msgid内の各センテンスへのチェックに適用されるテストがいくつかあります。xgettextはパターンマッチを行うことによりセンテンスの終わりを検出し、通常は特定の個数のスペースを後にともなうピリオドを探します。この数は--sentence-endオプションで指定されます。

--sentence-end[=TYPE]

サポートされる値は:

single-space

ピリオドの後に少なくとも1つの空白文字を要求します。

double-space

ピリオドの後に少なくとも2つの空白文字を要求します。

5.1.6 言語特有のオプション

-a
--extract-all

すべての文字列を抽出します。

このオプションはほとんどの言語、すなわち、C、C++、Objective-C、Shell、Python、Lisp、EmacsLisp、librep、Java、C#、awk、Tcl、Perl、PHP、GCC-source、Glade、Lua、JavaScript、Vala、GSettingsに影響を与えます。

-k[keywordspec]
--keyword[=keywordspec]

検索する追加のキーワードをkeywordspecに指定します。keywordspecを指定しない場合には、デフォルトのキーワードを使用しないことを意味します。

keywordspecとして指定されたidがCのものだった場合、xgettextは関数(またはマクロ)idの各呼び出しの最初の引数から文字列を検索します。keywordspecが‘id:argnum’という形式で指定された場合、xgettextは呼び出しのargnum番目の引数を探します。keywordspecが‘id:argnum1,argnum2’の形式で指定された場合、xgettextは呼び出しのargnum1番目とargnum2番目の引数から文字列を探して、複数形として処理すべきメッセージのsingular(単数形)とplural(複数形)として扱います。同様に、keywordspecが‘id:contextargnumc,argnum’や‘id:argnum,contextargnumc’という形式で指定された場合、xgettextcontextargnum番目の引数の文字列をコンテキスト指定子(context specifier)として扱います。そして GNOME のための特別なサポートとして、keywordspecが‘id:argnumg’という形式で指定された場合、xgettextはargnum番目の引数がcontextを伴う文字列と認識して、GNOME glibの‘"msgctxt|msgid"’という構文を使用します。そしてGNOMEのための特別なサポートとして、keywordspecが‘id:argnumg’という形式で指定された場合、xgettextargnum番目の引数がcontextを伴う文字列と認識して、GNOME glibの‘"msgctxt|msgid"’という構文を使用します。
またkeywordspecが‘id:…,totalnumargst’という形式で指定された場合、xgettextは実際の引数の数がtotalnumargsと等しい場合のみ、この引数指定を処理します。これはC++でのオーバーロードされた関数の呼び出しなどで便利です。
最後に、もしkeywordspecが‘id:argnum...,"xcomment"’という形式で指定された場合、xgettextは指定された引数から文字列を抽出するときに、追加のコメントとしてxcommentをメッセージに追加します。通常のシェルのコマンドラインから使用する場合は、xcommentを括るダブルクォーテーションはエスケープする必要があることに注意してください。

このオプションはほとんどの言語、すなわち、C、C++、Objective-C、Shell、Python、Lisp、EmacsLisp、librep、Java、C#、awk、Tcl、Perl、PHP、GCC-source、Glade、Lua、JavaScript、Vala、GSettings、Desktopに影響を与えます。

明示的に無効化されていない限り、常に検索されるデフォルトキーワードの指定は、言語に依存します:

デフォルトキーワードの指定は、‘-k’オプション、‘--keyword’を指定するか、keywordspecを指定せずに‘--keyword=’として無効にすることができます。

--flag=word:arg:flag

関数wordの、arg番目の引数の一部となるような文字列のための、追加のフラグを指定します。‘c-format’や、それの反対の‘no-c-format’のような、利用可能な書式文字列を示すフラグを利用でき、‘pass-’を前置して指定することもできます。
--flag=function:arg:lang-formatは、言語langの関数functionarg番目の引数を書式文字列とみなすという意味です(GCC関数の属性に慣れている人は、--flag=function:arg:c-formatが、Cソース中の関数 functionに付記される‘__attribute__ ((__format__ (__printf__, arg, ...)))’宣言と同様だと思えばよいでしょう)。たとえばGNU libcから、関数‘error’を使用する場合、それの振る舞いについて--flag=error:3:c-formatのように指定することができます。この指定によりxgettextは、すべてのgettext呼び出しのfunctionarg番目の引数に出現する文字列を、書式指定文字列としてマークします。これは書式指定子が含まれていないような文字列にたいして‘msgfmt -c’によりチェックを行う場合に便利です。これにより翻訳者が実行時のクラッシュを引き起こすような書式指定子を意図せずに使ってしまうことを防ぐことができます。
--flag=function:arg:pass-lang-formatは、言語langにおいて、書式文字列が出現しなければいけない位置にfunction呼び出しがある場合、その関数のarg番目の引数には、同じタイプの書式文字列となければならないという意味です。(GCC関数の属性を知っている人は、--flag=function:arg:pass-c-formatが、Cソース中の関数functionに付記される‘__attribute__ ((__format_arg__ (arg)))’宣言と同様だと思えばよいでしょう)。たとえばgettext関数の略記である‘_’を使用している場合は、--flag=_:1:pass-c-formatを使う必要があります。この指定によりxgettextは、_("string")呼び出しの最初の引数"string"には書式指定文字列が必要だと伝えるために、その文字列を書式指定文字列としてマークします。これは書式指定子が含まれていないような文字列にたいして‘msgfmt -c’によりチェックを行う場合に便利です。これにより翻訳者が実行時のクラッシュを引き起こすような書式指定子を意図せずに使ってしまうことを防ぐことができます。
このオプションは、C、C++、ObjectiveC、Shell、Python、Lisp、EmacsLisp、librep、Scheme、Java、C#、awk、YCP、Tcl、Perl、PHP、GCC-source、Lua、JavaScript、Vala(つまり、ほとんどの言語)に影響を与えます。

-T
--trigraphs

入力におけるANSI Cの三連表記(trigraph)を理解します。
このオプションは言語がC、C++、ObjectiveCの場合のみ効果があります。

--qt

Qtの書式指定文字列を認識します。
このオプションは言語がC++の場合のみ効果があります。

--kde

KDE 4の書式指定文字列を認識します。
このオプションは言語がC++の場合のみ効果があります。

--boost

Boostの書式指定文字列を認識します。
このオプションは言語がC++の場合のみ効果があります。

--debug

メッセージ中の書式指定文字列を、c-formatpossible-c-formatフラグでマークすることにより、誰がマークしたかを表示します。後者の形式は、xgettextが決定したときに使用され、前者の書式はプログラマーが決定したときに使用されます。

デフォルトではc-format形式だけが使用されます。翻訳者はそれらの詳細について気にする必要はありません。

このxgettextの実装は、プリプロセッサーのマクロの中の文字列や、ANSIによる隣接した文字列の結合、エスケープ文字による行の継続等の厄介なケースを処理することができます。

5.1.7 出力の詳細

--color
--color=when

色や色以外のテキスト属性を使うか、いつ使うかを指定します。詳細はThe --color optionを参照してください。

--style=style_file

--colorにたいしてCSS style ruleファイルを使うかを指定します。詳細はThe --style optionを参照してください。

--force-po

何もメッセージが定義されていない場合でも、常に出力ファイルに書き込みます。

-i
--indent

インデントされた形式で.poファイルを書き込みます。

--no-location

#: filename:line’のような行を書き込みません。このオプションを使用することにより、熟練した翻訳者が、どのようなコンテキストでメッセージが使用されるのかを理解するのが困難になることに注意してください。

-n
--add-location=type

#: filename:line’という行を生成します(デフォルト)。

typeはオプションで、‘full’、‘file’、または‘never’を指定できます。オプションが指定されない、または‘full’の場合は、ファイル名と行番号のの両方が生成されます。‘file’の場合、行番号は省略されます。‘never’の場合は、完全にこの行を抑制します(--no-locationと同じです)。

--strict

Uniforumに厳密に準拠したPOファイルを出力します。このUniforum形式はGNUの拡張をサポートしないため避けたほうがよいでしょう。

--properties-output

Javaの.propertiesの書式で、Java ResourceBundleを出力します。このファイル形式はplural formをサポートせず、廃止されたメッセージを暗黙で除去することに注意してください。

--stringtable-output

.stringsの書式で、NeXTstep/GNUstepのローカライズされたリソースファイルを出力します。このファイル形式はplural formをサポートしないことに注意してください。

--its=file

fileで定義されたITSルールを使用します。これはXMLファイルデだけ効果があることに注意してください。

--itstool

itstool(http://itstool.org)で認識されるコメントを書き出します。これはXMLファイルデだけ効果があることに注意してください。

-w number
--width=number

出力ページの幅をセットします。これにより出力ファイル中の長い文字列が指定した幅(例:スクリーンの列数)に収まるように、各行の長さがnumber以下のような複数の行に分割されます。

--no-wrap

長いメッセージ行を分割しません。出力ページの幅を超えるようなメッセージ行も、複数行に分割されません。出力ページの幅を超えるファイル参照行だけが分割されます。

-s
--sort-output

ソートされた出力を生成します。このオプションを使用することにより翻訳者が、メッセージがどのようなコンテキストで使用されるかを理解するのが、困難になることに注意してください。

-F
--sort-by-file

ファイルの場所により出力をソートします。

--omit-header

msgid ""’というエントリーにたいして、ヘッダーを書き込みません。

これはソースファイルの変更をテストする等の目的で、.gmoファイルを生成するときに便利です。--omit-headerを使用すると、同じファイルにたいして、同じオプションでxgettextを実行すれば、実行した時が異なっていても同じ結果を得ることができます。

このオプションをASCII以外の文字が含まれたファイルにたいして使用した場合、エラーとなることに注意してください。

--copyright-holder=string

出力に著作権所有者(copyright holder)をセットします。stringにはパッケージの著作権所有者を指定する必要があります(パッケージのソースから抽出されたmsgstr文字列の著作権は、パッケージの著作権所有者に帰属することに注意してください)。翻訳者は、翻訳物の著作権を譲渡、もしくは放棄することが望まれます。これによりパッケージのメンテナーは法的なリスクなしでそれらを配布できるのです。stringが空の場合、出力ファイルはパブリックドメインに属するとマークされます。この場合も翻訳者は著作権を譲渡、もしくは放棄することが望まれます。繰り返しになりますが、そうすることによりパッケージのメンテナーは法的なリスクなしでそれらを配布できるのです。

stringのデフォルト値はFree Software Foundation, Inc.です。これは単にxgettextが最初に使用されたのが GNU プロジェクトであることが理由です。

--foreign-user

出力からFSFの著作権を省略します。これは‘--copyright-holder=''’とするのと同じです。これはGNUプロジェクト以外で、翻訳物をパブリックドメインにしたいときに便利です。

--package-name=package

出力のヘッダーに、パッケージ名をセットします。

--package-version=version

出力のヘッダーにパッケージのバージョンをセットします。このオプションは、同時に‘--package-name’を指定したときだけ効果があります。

--msgid-bugs-address=email@address

msgidに関するバグの報告先アドレスをセットします。このアドレスは、翻訳者が未翻訳文字列のバグを報告するための電子メールのアドレス、またはURLです。

このアドレスは、あなたのメールアドレスでも構いませんし、翻訳者が登録しなくても投稿できるメーリングリストのアドレスや、翻訳者があなたに連絡をとることができるウェブページのアドレスにすることもできます。

デフォルトは空文字列が設定されており、これは翻訳者にはこれらの情報が分からないことを意味します! このオプションを指定するのを忘れないでください。

-m[string]
--msgstr-prefix[=string]

msgstrの値に前置する文字列としてstring(指定されていない場合は"")を使用します。

-M[string]
--msgstr-suffix[=string]

msgstrの値に後置する文字列としてstring(指定されていない場合は"")を使用します。

5.1.8 情報的な出力

-h
--help

このヘルプを表示して終了します。

-V
--version

バージョン情報を表示して終了します。


Previous: , Up: Template   [Contents][Index]