Skip to content

Python ​

Selector para aplicaciones Python. La extracción, los catálogos y las formas de llamada residen en aplicaciones Python. El paso a paso para una aplicación existente de una sola configuración regional es Añadir i18n a una aplicación Python, con un prompt de i18n.py y un prompt de Django / gettext.

Streamlit, FastAPI, Flask, Pyramid, Tkinter, PyQt, PySide y PyWebView llaman al asistente i18n.py generado (Python 3.10 o superior). Django mantiene el gettext de Django. Se incluyen cuatro copias ejecutables en el repositorio: examples/python-streamlit, examples/python-flask, examples/python-fastapi y examples/python-gettext. Pyramid, Django, Tkinter, Qt y PyWebView no tienen un directorio de ejemplos independiente.

Qué plantilla elegir ​

FrameworkPlantilla de inicializaciónCatálogoEjemplo
Streamlitui-pythonJSON plano indexado por la cadena de origenpython-streamlit
FastAPIui-pythonJSON plano indexado por la cadena de origenpython-fastapi
Flask + Jinja, JSON planoui-pythonJSON plano indexado por la cadena de origenpython-flask
Flask / Jinja gettextui-python-flask.po / .mo bajo translations/Utilice las notas de Flask a continuación
Pyramidui-python o ui-python-flaskIgual que FlaskMisma configuración que Flask
Djangoui-python-djangolocale/<lang>/LC_MESSAGES/django.poSin directorio de ejemplos
GNU gettext existenteui-python-gettextJSON plano y .po / .mo, o solo gettextpython-gettext
Tkinterui-pythonJSON plano indexado por la cadena de origenSin directorio de ejemplo
PyQt / PySideui-python o una plantilla gettextJSON plano y/o .poSin directorio de ejemplos
PyWebView / PyWebKitUna plantilla Python para el shellCatálogos de shell, además de marcadores HTML o un archivo HTML por idiomaSin directorio de ejemplos

ui-python, ui-python-gettext y ui-python-flask escriben i18n.py cuando falta ese archivo. ui-python-django no lo hace. Añada --with-readme para traducir también el README del repositorio: Añada i18n a su README y documentos Markdown.

Notas sobre los frameworks ​

Streamlit ​

streamlit_language_selector() escribe el idioma en el estado de la sesión y en la cadena de consulta. Asigne a cada widget una key fija. Detalles: Locale — Streamlit.

FastAPI ​

Lea ?lang= o Accept-Language en el middleware, llame a set_locale y reset_locale en finally para que las solicitudes concurrentes mantengan su propio idioma. Detalles: Locale — FastAPI.

Flask y Pyramid ​

El ejemplo de python-flask utiliza JSON plano. init -t ui-python-flask es el diseño de gettext bajo translations/ para una aplicación que ya utiliza catálogos al estilo Flask-Babel. En cualquier caso, establezca la configuración regional (locale) desde la solicitud e inyecte _, t, current_locale, ui_languages y direction en el contexto de la plantilla. Pyramid utiliza el mismo patrón con ámbito de solicitud. Detalles: Locale — Flask and Pyramid.

Django ​

Mantenga gettext, ngettext y {% blocktrans %}. init -t ui-python-django coincide con el directorio locale/ de Django y el dominio django, y deja el tiempo de ejecución de Django intacto. Detalles: Locale — Django.

gettext existente ​

Deje _(), gettext() y ngettext() en su lugar. Apunte ui.gettext al árbol de catálogos actual y ejecute extract, y luego translate-ui. El ejemplo de python-gettext es solo para gettext (flatOutput: false). init -t ui-python-gettext también escribe JSON plano. Detalles: Locale — Existing gettext.

Tkinter, Qt y PyWebView ​

Llame a t() o _() al crear cada widget de Tkinter, luego reconstruya el texto visible después de set_locale. Las llamadas a self.tr("...") de PyQt y PySide se extraen, y los archivos .ui de Qt aportan elementos <string> a menos que notr="true". Para PyWebView o PyWebKit, extraiga el shell de Python con una plantilla arriba y extraiga la página HTML con marcadores data-i18n o con un documento HTML por configuración regional. Detalles: Locale — Tkinter, PyQt / PySide y PyWebView.

Publicado bajo la licencia MIT.