gettext モジュールでは、以下の GNU gettext API に 非常に良く似た API を提供しています。この API を使う場合、 メッセージ翻訳の影響はアプリケーション全体に及ぼすことになります。 アプリケーションが単一の言語しか扱わず、各言語に依存する部分を ユーザのロケール情報によって選ぶのなら、ほとんどの場合この方法で やりたいことを実現できます。Python モジュールを地域化していたり、 アプリケーションの実行中に言語を切り替えたい場合、おそらくクラス に基づいた API を使いたくなるでしょう。
domain[, localedir]) |
localedir が省略されるか None
の場合、現在 domain
に結び付けられている内容が返されます。6.2
domain[, codeset]) |
バージョン 2.4 で 新たに追加 された仕様です。
[domain]) |
None
の場合、現在のグローバルドメインが返され
ます。それ以外の場合にはグローバルドメインは domain に設定され、
設定されたグローバルドメインを返します。
message) |
message) |
バージョン 2.4 で 新たに追加 された仕様です。
domain, message) |
message) |
バージョン 2.4 で 新たに追加 された仕様です。
singular, plural, n) |
gettext() と同様ですが、複数形の場合を考慮しています。 翻訳文字列が見つかった場合、n の様式を適用し、 その結果得られたメッセージを返します (言語によっては二つ以上の 複数形があります)。 翻訳文字列が見つからなかった場合、 n が 1 なら singular を返します; そうでない場合 plural を返します。
複数形の様式はカタログのヘッダから取り出されます。様式は C または Python の式で、自由な変数 n を持ちます; 式の評価値はカタログ中の 複数形のインデクスとなります。.po ファイルで用いられる 詳細な文法と、様々な言語における様式については、GNU gettext ドキュメントを参照してください。
バージョン 2.3 で 新たに追加 された仕様です。
message) |
バージョン 2.4 で 新たに追加 された仕様です。
domain, singular, plural, n) |
バージョン 2.3 で 新たに追加 された仕様です。
message) |
バージョン 2.4 で 新たに追加 された仕様です。
GNU gettext では dcgettext() も定義していますが、 このメソッドはあまり有用ではないと思われるので、現在のところ 実装されていません。
以下にこの API の典型的な使用法を示します:
import gettext gettext.bindtextdomain('myapplication', '/path/to/my/language/directory') gettext.textdomain('myapplication') _ = gettext.gettext # ... print _('This is a translatable string.')
sys.prefix
/share/locale を標準の
設定とします。この理由から、常にアプリケーションの開始時に
絶対パスで明示的に指定して bindtextdomain() を呼び出す
のが最良のやり方ということになります。