### 6.27.2.1 `NullTranslations` クラス

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

`__init__`( | [fp])

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

`_parse`( | fp)

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

`add_fallback`( | fallback)

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

`gettext`( | message)

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

`ugettext`( | message)

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

`ngettext`( | singular, plural, n)

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

`ungettext`( | singular, plural, n)

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

`info`( | )

  ``保護されている'' `_info` 変数を返します。

`charset`( | )

  ``保護されている'' `_charset` 変数を返します。

`install`( | [unicode])

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

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

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

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

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