Pythonアプリケーションを国際化して翻訳する必要があります。ランタイムを切り替えてPythonコード内でスムーズに使用できる追加のリソースファイルに辞書コレクションが存在することを楽しみにしています。
私はstackoverflow.comで同様のツールを検索しましたが、プラットフォーム固有のライブラリ(pylon、djangoなど)しか見つかりませんでした。
すぐに使える一般的なライブラリはありますか?
Pythonアプリケーションを国際化して翻訳する必要があります。ランタイムを切り替えてPythonコード内でスムーズに使用できる追加のリソースファイルに辞書コレクションが存在することを楽しみにしています。
私はstackoverflow.comで同様のツールを検索しましたが、プラットフォーム固有のライブラリ(pylon、djangoなど)しか見つかりませんでした。
すぐに使える一般的なライブラリはありますか?
Pythonの標準gettext
モジュールがこれを提供します。こちらのPythonドキュメントを参照してください。
gettextモジュールは、Pythonモジュールおよびアプリケーションに国際化(I18N)およびローカリゼーション(L10N)サービスを提供します。これは、GNU gettextメッセージカタログAPIと、Pythonファイルにより適している可能性のある高レベルのクラスベースAPIの両方をサポートします。以下で説明するインターフェースを使用すると、モジュールとアプリケーションのメッセージを1つの自然言語で記述し、さまざまな自然言語で実行するための翻訳されたメッセージのカタログを提供できます。
簡単な例:
import gettext
gettext.bindtextdomain('myapplication', '/path/to/my/language/directory')
gettext.textdomain('myapplication')
_ = gettext.gettext
# ...
print _('This is a translatable string.')
Babelはそのようなツールを提供します:
Pythonアプリケーションを国際化するためのツールのコレクション
Babelは2つの主要な部分で構成されています。
- gettextメッセージカタログを作成して操作するためのツール
- CLDR(Common Locale Data Repository)へのPythonインターフェース。さまざまなロケール表示名、ローカライズされた番号と日付のフォーマットなどへのアクセスを提供します。
したがって、文字列を翻訳し、現在のロケールに基づいてローカライズされたフロート、通貨、日付、およびその他の情報を提供するのに役立ちます。
>>> locale = Locale('es')
>>> month_names = locale.months['format']['wide'].items()
>>> month_names.sort()
>>> for idx, name in month_names:
... print name
enero
febrero
marzo
abril
mayo
junio
julio
agosto
septiembre
octubre
noviembre
diciembre
>>> format_decimal(1.2345, locale='en_US')
u'1.234'
>>> format_decimal(1.2345, locale='sv_SE')
u'1,234'
>>> format_decimal(12345, locale='de_DE')
u'12.345'
デフォルトのライブラリの上に構築されgettext
て翻訳を行い、さまざまなソースファイル(Python、テンプレートなど)からメッセージを抽出するツールを提供します。これには、追加のエクストラクタを提供する他のパッケージのプラグインシステムが含まれます。