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。Pyramid、Django、Tkinter、Qt 與 PyWebView 沒有獨立的範例目錄。

選擇模板 ​

框架初始化範本目錄範例
Streamlitui-python以來源字串為鍵的扁平 JSONpython-streamlit
FastAPIui-python以來源字串為鍵的扁平 JSONpython-fastapi
Flask + Jinja, flat JSONui-python以來源字串為鍵的扁平 JSONpython-flask
Flask / Jinja gettextui-python-flask.po / .mo 位於 translations/ 下請參閱下方的 Flask 說明
Pyramidui-python 或 ui-python-flask同 Flask與 Flask 的連接方式相同
Djangoui-python-djangolocale/<lang>/LC_MESSAGES/django.po無範例目錄
現有 GNU gettextui-python-gettext平面 JSON 與 .po / .mo,或僅使用 gettextpython-gettext
Tkinterui-python以來源字串為鍵的扁平 JSON沒有範例目錄
PyQt / PySideui-python 或 gettext 模板平面 JSON 與/或 .po無範例目錄
PyWebView / PyWebKit用於 Shell 的 Python 模板Shell 目錄,外加 HTML 標記或每個語言環境一個 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 是 translations/ 下的 gettext 配置,適用於已經使用 Flask-Babel 風格目錄的應用程式。無論哪種方式,請從請求中設定地區設定 (locale),並將 _、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("...") 呼叫會被提取,且除非設定了 notr="true",否則 Qt .ui 檔案會提供 <string> 元素。對於 PyWebView 或 PyWebKit,請使用上方的模板提取 Python shell,並使用 data-i18n 標記或每個地區設定一個 HTML 文件的方式來提取 HTML 頁面。詳細資訊:Locale — Tkinter、PyQt / PySide 以及 PyWebView。

採用 MIT 授權條款釋出。