Next: msguniq Invocation, Previous: msggrep Invocation, Up: Manipulating [Contents][Index]
msgfilter
プログラムの呼び出しmsgfilter [option] filter [filter-option]
msgfilter
は、翻訳カタログ内の翻訳にフィルターを適用するためのプログラムです。
それぞれのfilter呼び出しにおいて、環境変数のMSGFILTER_MSGID
とMSGFILTER_LOCATION
に、メッセージのmsgidとメッセージを含むPOファイルの場所がバインドされます。メッセージがコンテキストを保有する場合は、環境変数MSGFILTER_MSGCTXT
がメッセージのコンテキストにバインドされます(コンテキストを保有していない場合にはバインドされません)。
入力となるPOファイルです。
ディレクトリーのリストにdirectoryを追加します。このディレクトリーのリストよりソースファイルを検索します。しかし.poファイルが出力されるのは、カレントディレクトリーです。
inputfileが指定されていないか、‘-’が指定された場合は、標準入力から読み込みます。
指定されたファイルに出力を書き込みます。
出力ファイルが指定されていない、または‘-’が指定された場合、結果は標準出力に出力されます。
filterは、標準入力から翻訳を読み込み、それに変更を加えて標準出力に書き込むプログラムです。フィルターとして頻繁に使用されるプログラムとしては‘sed’があります。その他にも認識できるビルトインフィルターがいくつか存在します。
注意:
ビルトインではないフィルターの場合には、エンコーディングに注意する必要があります。filterが、入力となる翻訳カタログのエンコードに対処できるようにするのは、あなたの責任となります。filterが入力として特定のエンコーディングを期待する場合には、‘msgfilter’を呼び出す前に、最初のステップとして‘msgconv’で翻訳カタログをそのエンコーディングに変換できます。filterが入力としてlocaleのエンコーディングを期待しているけれど、あなたはlocaleのエンコーディングを無視したいときには、最初に‘msgconv’で翻訳カタログをUTF-8に変換してから、環境変数LC_ALL
にUTF-8
localeを指定して、‘msgfilter’を使うことができます。
注意: 翻訳カタログ内のほとんどの翻訳は改行で終端されていません。そのため、入力の最終行が改行で終端されていなくても、filterがそれを認識すること、そして最終行に余分な改行を付加しないことが重要になります。いくつかのプラットフォームにおいて‘sed’が、改行で終端されていない最終行を無視することが知られています。代用として、このような制限を持たないGNU ‘sed’を使うことができます。
実行するコマンドにscriptを追加します。
実行するコマンドに、scriptfileの内容を追加します。
パターンの空白の出力を自動的に抑制します。
‘recode-sr-latin’はビルトインのフィルターとして認識されます。‘recode-sr-latin’は、Cyrillic文字で記述されたSerbianのテキストを、Latin文字に変換するコマンドです。‘msgfilter recode-sr-latin’コマンドにより、POファイルの翻訳にたいしてこの変換を適用できます。これを使えばsr.poファイルを、sr@latin.poファイルに変換できます。
ビルトインのフィルターは、現在のロケールのエンコーディングとは無関係です。またビルトインのフィルターを使う場合、‘msgfilter’はメッセージカタログのエンコーディングを自動的にUTF-8に変換することができます。
入力ファイルがPOファイルの構文ではなく、Javaの.properties
の構文にのっとったJava
ResourceBundleファイルだとみなします。
入力ファイルがPOファイルの構文ではなく、NeXTstep/GNUstepのlocalized
resourceの.strings
の構文にのっとったファイルだとみなします。
色や色以外のテキスト属性を使うか、いつ使うかを指定します。詳細はThe --color optionを参照してください。
--color
にたいしてCSS style ruleファイルを使うかを指定します。詳細はThe --style optionを参照してください。
メッセージが何も含まれていない場合でも、常に出力ファイルに書き込みます。
インデントされた形式で.poファイルを書き込みます。
ヘッダーのエントリーを保持します(例: ‘msgid ""’にフィルターを適用しないで未変更にします)。デフォルトでは、ヘッダーのエントリーにたいしても、他のメッセージと同様にフィルタリングの対象になります。
‘#: filename:line’という行を書き込みません。
‘#: filename:line’という行を生成します(デフォルト)。
Uniforumに厳密に準拠したPOファイルを出力します。このUniforum形式はGNUの拡張をサポートしないため避けたほうがよいでしょう。
Javaの.properties
の書式で、Java ResourceBundleを出力します。このファイル形式はplural
formをサポートせず、陳腐化したメッセージを暗黙で除去することに注意してください。
.strings
の書式で、NeXTstep/GNUstepのローカライズされたリソースファイルを出力します。このファイル形式はplural
formをサポートしないことに注意してください。
出力ページの幅をセットします。これにより出力ファイル中の長い文字列が指定した幅(例:スクリーンの列数)に収まるように、各行の長さがnumber以下のような複数の行に分割されます。
長いメッセージ行を分割しません。出力ページの幅を超えるようなメッセージ行も、複数行に分割されません。出力ページの幅を超えるファイル参照行だけが分割されます。
ソートされた出力を生成します。このオプションを使用することにより翻訳者が、メッセージがどのようなコンテキストで使用されるかを理解するのが、困難になることに注意してください。
ファイルの場所により出力をソートします。
このヘルプを表示して終了します。
バージョン情報を表示して終了します。
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: msguniq Invocation, Previous: msggrep Invocation, Up: Manipulating [Contents][Index]