21.1.2.1 NullTranslations クラス

翻訳クラスは、元のソースファイル中のメッセージ文字列から 翻訳されたメッセージ文字列への変換を実際に実装しているクラスです。 全ての翻訳クラスが基底クラスとして用いるクラスが NullTranslations です; このクラスでは独自の特殊な翻訳 クラスを実装するために使うことができる基本的なインタフェースを 以下に NullTranslations のメソッドを示します:

__init__( [fp])
オプションのファイルオブジェクト fp を取ります。この引数 は基底クラスでは無視されます。このメソッドは ``保護された (protected)'' インスタンス変数 _info および _charset を初期化します。これらの変数の値は導出クラスで設定 することができます。同様に _fallback も初期化しますが、 この値は add_fallback で設定されます。その後、 fpNone でない場合 self._parse(fp) を 呼び出します。

_parse( fp)
基底クラスでは何もしない (no-op) ようになっています。このメソッド の役割はファイルオブジェクト fp を引数に取り、ファイルからデータを 読み出し、メッセージカタログを初期化することです。サポートされていない メッセージカタログ形式を使っている場合、その形式を解釈するためには このメソッドを上書きしなくてはなりません。

add_fallback( fallback)
fallback を現在の翻訳オブジェクトの代替オブジェクトとして追加 します。翻訳オブジェクトが与えられたメッセージに対して翻訳メッセージ を提供できない場合、この代替オブジェクトに問い合わせることになります。

gettext( message)
代替オブジェクトが設定されている場合、gettext() を代替オブジェクト に転送します。そうでない場合、翻訳されたメッセージを返します。 導出クラスで上書きするメソッドです。

lgettext( message)
代替オブジェクトが設定されている場合、lgettext() を代替オブジェクト に転送します。そうでない場合、翻訳されたメッセージを返します。 導出クラスで上書きするメソッドです。 バージョン 2.4 で 新たに追加 された仕様です。

ugettext( message)
代替オブジェクトが設定されている場合、gettext() を代替オブジェクト に転送します。そうでない場合、翻訳されたメッセージを Unicode 文字列 で返します。導出クラスで上書きするメソッドです。

ngettext( singular, plural, n)
代替オブジェクトが設定されている場合、ngettext() を代替オブジェクト に転送します。そうでない場合、翻訳されたメッセージを返します。 導出クラスで上書きするメソッドです。 バージョン 2.3 で 新たに追加 された仕様です。

lngettext( singular, plural, n)
代替オブジェクトが設定されている場合、lngettext() を代替オブジェクト に転送します。そうでない場合、翻訳されたメッセージを返します。 導出クラスで上書きするメソッドです。 バージョン 2.4 で 新たに追加 された仕様です。

ungettext( singular, plural, n)
代替オブジェクトが設定されている場合、ungettext() を代替オブジェクト に転送します。そうでない場合、翻訳されたメッセージを Unicode 文字列 で返します。導出クラスで上書きするメソッドです。 バージョン 2.3 で 新たに追加 された仕様です。

info( )
``protected'' の_info 変数を返します。

charset( )
``protected'' の_charset 変数を返します。

output_charset( )
翻訳メッセージとして返す文字列のエンコードを決める、 ``protected'' の_output_charset 変数を返します。

バージョン 2.4 で 新たに追加 された仕様です。

set_output_charset( charset)
翻訳メッセージとして返す文字列のエンコードを決める、 ``protected'' の変数 _output_charset を変更します。

バージョン 2.4 で 新たに追加 された仕様です。

install( [unicode [, names]])
unicode フラグが偽の場合、このメソッドは self.gettext() を組み込み名前空間に組み入れ、"_" と結び付けます。 unicode が真の場合、self.gettext() の代わりに self.ugettext() を結び付けます。 標準では unicode は偽です。

names パラメタには、_() 以外に組み込みの名前空間に インストールしたい関数名のシーケンスを指定します。サポートしている名前は 'gettext' (unicode フラグの設定に応じて self.gettext() あるいは self.ugettext() のいずれかに対応します)、 'ngettext' (unicode フラグの設定に応じて self.ngettext() あるいは self.ungettext() のいずれかに対応します)、 'lgettext' および 'lngettext' です。

この方法はアプリケーションで _ 関数を利用できるようにする ための最も便利な方法ですが、唯一の手段でもあるので注意してください。 この関数はアプリケーション全体、とりわけ組み込み名前空間に影響する ので、地域化されたモジュールで _ を組み入れることが できないのです。その代わりに、以下のコード:

import gettext
t = gettext.translation('mymodule', ...)
_ = t.gettext

を使って _ を使えるようにしなければなりません。

この操作は _ をモジュール内だけのグローバル名前空間に 組み入れるので、モジュール内の _ の呼び出しだけに影響 します。

バージョン 2.5 で 変更 された仕様: names パラメタを追加しました

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。