Skip to content

Python ​

Seletor para aplicações Python. A extração, os catálogos e os formatos de chamada estão em Aplicações Python. O passo a passo para uma aplicação existente de localidade única está em Adicionar i18n a uma aplicação Python, com um prompt do i18n.py e um prompt do Django / gettext.

Streamlit, FastAPI, Flask, Pyramid, Tkinter, PyQt, PySide e PyWebView chamam o auxiliar i18n.py gerado (Python 3.10 ou mais recente). O Django mantém o gettext do Django. Quatro cópias executáveis são fornecidas no repositório: examples/python-streamlit, examples/python-flask, examples/python-fastapi e examples/python-gettext. Pyramid, Django, Tkinter, Qt e PyWebView não possuem um diretório de exemplo separado.

Qual modelo ​

FrameworkTemplate de inicializaçãoCatálogoExemplo
Streamlitui-pythonJSON plano indexado pela string de origempython-streamlit
FastAPIui-pythonJSON plano indexado pela string de origempython-fastapi
Flask + Jinja, JSON planoui-pythonJSON plano indexado pela string de origempython-flask
Flask / Jinja gettextui-python-flask.po / .mo em translations/Use as notas do Flask abaixo
Pyramidui-python ou ui-python-flaskO mesmo que o FlaskA mesma configuração do Flask
Djangoui-python-djangolocale/<lang>/LC_MESSAGES/django.poSem diretório de exemplo
GNU gettext existenteui-python-gettextJSON simples e .po / .mo, ou apenas gettextpython-gettext
Tkinterui-pythonJSON plano indexado pela string de origemNenhum diretório de exemplo
PyQt / PySideui-python ou um modelo gettextJSON simples e/ou .poSem diretório de exemplo
PyWebView / PyWebKitUm modelo Python para o shellCatálogos de shell, além de marcadores HTML ou um arquivo HTML por localidadeSem diretório de exemplo

ui-python, ui-python-gettext e ui-python-flask gravam i18n.py quando esse arquivo não existe. ui-python-django não. Adicione --with-readme para traduzir também o README do repositório: Adicionar i18n ao seu README e aos seus documentos Markdown.

Notas sobre os frameworks ​

Streamlit ​

streamlit_language_selector() grava a localidade no estado da sessão e na string de consulta. Dê a cada widget uma key fixa. Detalhes: Locale — Streamlit.

FastAPI ​

Leia ?lang= ou Accept-Language no middleware, chame set_locale e reset_locale em finally para que solicitações simultâneas mantenham sua própria localidade. Detalhes: Locale — FastAPI.

Flask e Pyramid ​

O exemplo python-flask usa JSON simples. init -t ui-python-flask é o layout gettext em translations/ para um aplicativo que já usa catálogos no estilo Flask-Babel. De qualquer forma, defina a localidade a partir da requisição e injete _, t, current_locale, ui_languages e direction no contexto do template. O Pyramid usa o mesmo padrão de escopo de requisição. Detalhes: Locale — Flask and Pyramid.

Django ​

Mantenha gettext, ngettext e {% blocktrans %}. init -t ui-python-django corresponde ao diretório locale/ do Django e ao domínio django, e mantém o runtime do Django no lugar. Detalhes: Locale — Django.

gettext existente ​

Deixe _(), gettext() e ngettext() no lugar. Aponte ui.gettext para a árvore de catálogo atual e execute extract, depois translate-ui. O exemplo python-gettext é apenas gettext (flatOutput: false). init -t ui-python-gettext também grava JSON simples. Detalhes: Locale — Existing gettext.

Tkinter, Qt e PyWebView ​

Chame t() ou _() ao criar cada widget Tkinter, depois reconstrua o texto visível após set_locale. As chamadas self.tr("...") do PyQt e PySide são extraídas, e os arquivos .ui do Qt contribuem com elementos <string>, a menos que notr="true". Para PyWebView ou PyWebKit, extraia o shell Python com um template acima e extraia a página HTML com marcadores data-i18n ou com um documento HTML por localidade. Detalhes: Locale — Tkinter, PyQt / PySide e PyWebView.

Lançado sob a Licença MIT.