Skip to content

Python ​

Pythonアプリケーションの選択ガイドです。抽出、カタログ、呼び出し形式についてはPythonアプリケーションで説明しています。既存の単一ロケールアプリへの導入手順はPythonアプリにi18nを追加するにあり、i18n.pyプロンプトとDjango / gettextプロンプトが含まれています。

Streamlit、FastAPI、Flask、Pyramid、Tkinter、PyQt、PySide、および PyWebView は、生成された i18n.py ヘルパー(Python 3.10 以降)を呼び出します。Django は Django 標準の gettext を使用します。リポジトリには、examples/python-streamlit、examples/python-flask、examples/python-fastapi、および examples/python-gettext の 4 つの実行可能なコピーが同梱されています。Pyramid、Django、Tkinter、Qt、および PyWebView には個別のサンプルディレクトリはありません。

テンプレートの選択 ​

フレームワーク初期化テンプレートカタログ例
Streamlitui-pythonソース文字列をキーとするフラットなJSONpython-streamlit
FastAPIui-pythonソース文字列をキーとするフラットなJSONpython-fastapi
Flask + Jinja, flat JSONui-pythonソース文字列をキーとするフラットなJSONpython-flask
Flask / Jinja gettextui-python-flasktranslations/ 配下の .po / .mo以下の Flask に関する注記を参照
Pyramidui-python または ui-python-flaskFlask と同じFlask と同じ配線
Djangoui-python-djangolocale/<lang>/LC_MESSAGES/django.poサンプルディレクトリなし
既存の GNU gettextui-python-gettextフラットな JSON および .po / .mo、または gettext のみpython-gettext
Tkinterui-pythonソース文字列をキーとするフラットなJSONサンプルディレクトリなし
PyQt / PySideui-python または gettext テンプレートフラットな JSON および/または .poサンプルディレクトリなし
PyWebView / PyWebKitシェル用 Python テンプレートシェルカタログ、および HTML マーカーまたはロケールごとに 1 つの HTML ファイルサンプルディレクトリなし

ui-python、ui-python-gettext、およびui-python-flaskは、i18n.pyファイルが存在しない場合にそのファイルを作成します。ui-python-djangoは作成しません。--with-readmeを追加すると、リポジトリのREADMEも翻訳できます。READMEとMarkdownドキュメントにi18nを追加する

フレームワークに関する注記 ​

Streamlit ​

streamlit_language_selector() はロケールをセッション状態とクエリ文字列に書き込みます。すべてのウィジェットに固定の key を指定してください。詳細は Locale — Streamlit を参照してください。

FastAPI ​

ミドルウェアで ?lang= または Accept-Language を読み取り、set_locale を呼び出し、finally 内で reset_locale を実行することで、同時リクエストがそれぞれのロケールを保持できるようにします。詳細は Locale — FastAPI を参照してください。

Flask と Pyramid ​

python-flask の例ではフラットな JSON を使用します。init -t ui-python-flask は、すでに Flask-Babel 形式のカタログを使用しているアプリケーション向けの translations/ 配下の gettext レイアウトです。いずれの場合も、リクエストからロケールを設定し、_、t、current_locale、ui_languages、および direction をテンプレートコンテキストに注入してください。Pyramid も同様のリクエストスコープのパターンを使用します。詳細: Locale — Flask and Pyramid。

Django ​

gettext、ngettext、および {% blocktrans %} はそのまま維持してください。init -t ui-python-django は Django の locale/ ディレクトリおよび django ドメインと一致し、Django のランタイムをそのまま利用します。詳細: Locale — Django。

既存の gettext ​

_()、gettext()、および ngettext() はそのまま維持してください。ui.gettext を現在のカタログツリーに向け、extract を実行してから translate-ui を実行します。python-gettext の例は gettext 専用 (flatOutput: false) です。init -t ui-python-gettext もフラットな JSON を書き出します。詳細: Locale — Existing gettext。

Tkinter、Qt、PyWebView ​

各 Tkinter ウィジェットを作成する際に t() または _() を呼び出し、set_locale の後に表示テキストを再構築してください。PyQt および PySide の self.tr("...") 呼び出しは抽出され、Qt の .ui ファイルは notr="true" でない限り <string> 要素を提供します。PyWebView または PyWebKit の場合は、上記のテンプレートを使用して Python シェルを抽出し、data-i18n マーカーを使用するか、ロケールごとに 1 つの HTML ドキュメントを作成して HTML ページを抽出してください。詳細: Locale — Tkinter、PyQt / PySide、および PyWebView。

MITライセンスの下で公開されています。