Skip to content

Python ​

适用于 Python 应用程序的选择器。提取、目录和调用形式位于 Python 应用程序 中。为现有单区域设置应用添加 i18n 的分步指南是 为 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,扁平 JSONui-python以源字符串为键的扁平 JSONpython-flask
Flask / Jinja gettextui-python-flasktranslations/ 下的 .po / .mo使用下方的 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 风格目录的应用程序。无论哪种方式,请从请求中设置区域设置,并将 _、t、current_locale、ui_languages 和 direction 注入到模板上下文中。Pyramid 使用相同的请求作用域模式。详情:区域设置 — Flask 和 Pyramid。

Django ​

保留 gettext、ngettext 和 {% blocktrans %}。init -t ui-python-django 与 Django 的 locale/ 目录和 django 域匹配,并保持 Django 的运行时原样。详情:区域设置 — Django。

现有的 gettext ​

保留 _()、gettext() 和 ngettext()。将 ui.gettext 指向当前的目录树并运行 extract,然后运行 translate-ui。python-gettext 示例仅限 gettext (flatOutput: false)。init -t ui-python-gettext 也写入扁平 JSON。详情:区域设置 — 现有 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 页面。详情:区域设置 — Tkinter、PyQt / PySide 和 PyWebView。

基于 MIT 许可证发布。