Next: , Previous: , Up: Manipulating   [Contents][Index]


9.4 msgfilterプログラムの呼び出し

msgfilter [option] filter [filter-option]

msgfilterは、翻訳カタログ内の翻訳にフィルターを適用するためのプログラムです。

filter呼び出しの間、環境変数MSGFILTER_MSGIDがそのメッセージのmsgid、環境変数MSGFILTER_LOCATIONがそのメッセージのPOファイル内での位置にバインドされます。そのメッセージがコンテキストをもつ場合、環境変数MSGFILTER_MSGCTXTにそのメッセージのmsgctxtがバインドされます(それ以外はバインドされません)。そのメッセージがplural formをもつ場合、環境変数MSGFILTER_MSGID_PLURALにそのメッセージのmsgid_plural、MSGFILTER_PLURAL_FORMには実際に処理sqあれたpluralの順番(0から開始)がバインドされます(それ以外では両方ともバインドされません)。そのメッセージが(msgmergeにより追加された)以前のmsgidをもつ場合、環境変数MSGFILTER_PREV_MSGCTXTにそのメッセージの以前のmsgctxt、MSGFILTER_PREV_MSGIDに以前のmsgid、MSGFILTER_PREV_MSGID_PLURALに以前のmsgid_pluralがバインドされます。

9.4.1 入力ファイルの位置

-i inputfile
--input=inputfile

入力となるPOファイルです。

-D directory
--directory=directory

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

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

9.4.2 出力ファイルの位置

-o file
--output-file=file

指定されたファイルに出力を書き込みます。

出力ファイルが指定されていない、または‘-’が指定された場合、結果は標準出力に出力されます。

9.4.3 フィルター

filterは、標準入力から翻訳を読み込み、それに変更を加えて標準出力に書き込むプログラムです。フィルターとして頻繁に使用されるプログラムとしては‘sed’があります。その他にも認識できるビルトインフィルターがいくつか存在します。

--newline

各入力行の最後に改行を追加するとともに、出力行の最後の改行を取り除きます。

注意: ビルトインではないフィルターの場合には、エンコーディングに注意する必要があります。filterが、入力となる翻訳カタログのエンコードに対処できるようにするのは、あなたの責任となります。filterが入力として特定のエンコーディングを期待する場合には、‘msgfilter’を呼び出す前に、最初のステップとして‘msgconv’で翻訳カタログをそのエンコーディングに変換できます。filterが入力としてlocaleのエンコーディングを期待しているけれど、あなたはlocaleのエンコーディングを無視したいときには、最初に‘msgconv’で翻訳カタログをUTF-8に変換してから、環境変数LC_ALLにUTF-8 localeを指定して、‘msgfilter’を使うことができます。

注意: 翻訳カタログ内のほとんどの翻訳は改行で終端されていません。そのため、--newlineが使用されていない場合は、入力の最終行が改行で終端されていなくても、filterがそれを認識すること、そして最終行に余分な改行を付加しないことが重要になります。いくつかのプラットフォームにおいて‘sed’が、改行で終端されていない最終行を無視することが知られています。代用として、このような制限を持たないGNU ‘sed’を使うことができます。

9.4.4 filterが‘sed’のときの便利なfilter-option

-e script
--expression=script

実行するコマンドにscriptを追加します。

-f scriptfile
--file=scriptfile

実行するコマンドに、scriptfileの内容を追加します。

-n
--quiet
--silent

パターンの空白の出力を自動的に抑制します。

9.4.5 ビルトインのfilter

recode-sr-latin’はビルトインのフィルターとして認識されます。‘recode-sr-latin’は、Cyrillic文字で記述されたSerbianのテキストを、Latin文字に変換するコマンドです。‘msgfilter recode-sr-latin’コマンドにより、POファイルの翻訳にたいしてこの変換を適用できます。これを使えばsr.poファイルを、sr@latin.poファイルに変換できます。

フィルター‘quot’は、ビルトインフィルターとして認識されます。コマンド‘msgfilter quot’は、対になった‘"’、および‘'’と‘`’で囲まれた引用を変換します。

フィルター‘boldquot’は、ビルトインフィルターとして認識されます。コマンド‘msgfilter boldquot’は、対になった‘"’、‘'’と‘`’で囲まれた引用を変換するとともに、そのテキストがboldとして装飾されるように、VT100エスケープシーケンスを追加します。

ビルトインのフィルターは、現在のロケールのエンコーディングとは無関係です。またビルトインのフィルターを使う場合、‘msgfilter’はメッセージカタログのエンコーディングを自動的にUTF-8に変換することができます。

9.4.6 入力ファイルの構文

-P
--properties-input

入力ファイルがPOファイルの構文ではなく、Javaの.propertiesの構文にのっとったJava ResourceBundleファイルだとみなします。

--stringtable-input

入力ファイルがPOファイルの構文ではなく、NeXTstep/GNUstepのlocalized resourceの.stringsの構文にのっとったファイルだとみなします。

9.4.7 出力の詳細

--color
--color=when

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

--style=style_file

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

--force-po

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

--indent

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

--keep-header

ヘッダーのエントリーを保持します(例: ‘msgid ""’にフィルターを適用しないで未変更にします)。デフォルトでは、ヘッダーのエントリーにたいしても、他のメッセージと同様にフィルタリングの対象になります。

--no-location

#: filename:line’という行を書き込みません。

-n
--add-location=type

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

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

--strict

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

-p
--properties-output

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

--stringtable-output

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

-w number
--width=number

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

--no-wrap

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

-s
--sort-output

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

-F
--sort-by-file

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

9.4.8 情報的な出力

-h
--help

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

-V
--version

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

9.4.9 例

Germanの翻訳を、Swissの正書法に変換する場合(UTF-8 locale):

msgconv -t UTF-8 de.po | msgfilter sed -e 's/ß/ss/g'

Cyrillic文字の Serbianの翻訳を、Latin文字に変換する場合:

msgfilter recode-sr-latin < sr.po

Next: , Previous: , Up: Manipulating   [Contents][Index]