このクラスではまた、翻訳カタログ以外に、オプションのメタデータ
を読み込んで解釈します。GNU gettext では、空の文字列に
対する変換先としてメタデータを取り込むことが慣習になっています。
このメタデータは RFC 822 形式の key: value
のペアに
なっており、 Project-Id-Version
キーを含んでいなければ
なりません。キー Content-Type
があった場合、 charset
の特性値 (property) は ``保護された'' _charset インスタンス
変数を初期化するために用いられます。値がない場合には、デフォルトと
して None
が使われます。
エンコードに用いられる文字セットが指定されている場合、カタログから
読み出された全てのメッセージ id とメッセージ文字列は、指定された
エンコードを用いて Unicode に変換されます。ugettext()
は常に Unicode を返し、gettext() はエンコードされた
8 ビット文字列を返します。どちらのメソッドにおける引数 id の
場合も、Unicode 文字列か US-ASCII 文字のみを含む 8 ビット文字列
だけが受理可能です。国際化されたPython プログラムでは、メソッドの
Unicode 版 (すなわち ugettext() や ungettext())
の利用が推奨されています。
key/value ペアの集合全体は辞書型データ中に配置され、``保護された'' _info インスタンス変数に設定されます。
.mo ファイルのマジックナンバーが不正な場合、あるいは その他の問題がファイルの読み出し中に発生した場合、 GNUTranslations クラスのインスタンス化で IOError が送出されることがあります。
以下のメソッドは基底クラスの実装からオーバライドされています:
message) |
message) |
singular, plural, n) |
メッセージ id がカタログ中に見つからず、フォールバックオブジェクト が指定されている場合、メッセージ検索要求はフォールバックオブジェクトの ngettext() メソッドに転送されます。そうでない場合、 n が 1 ならば singular が返され、それ以外に対しては plural が返されます。
バージョン 2.3 で 新たに追加 された仕様です。
singular, plural, n) |
メッセージ id がカタログ中に見つからず、フォールバックオブジェクト が指定されている場合、メッセージ検索要求はフォールバックオブジェクトの ungettext() メソッドに転送されます。そうでない場合、 n が 1 ならば singular が返され、それ以外に対しては plural が返されます。
以下に例を示します。:
n = len(os.listdir('.')) cat = GNUTranslations(somefile) message = cat.ungettext( 'There is %(num)d file in this directory', 'There are %(num)d files in this directory', n) % {'num': n}
バージョン 2.3 で 新たに追加 された仕様です。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。