Skip to content

Python ​

Auswahlhilfe für Python-Anwendungen. Extraktion, Kataloge und Aufrufmuster finden sich in Python-Anwendungen. Die Schritt-für-Schritt-Anleitung für eine bestehende Single-Locale-Anwendung ist i18n zu einer Python-Anwendung hinzufügen, mit einer i18n.py-Eingabeaufforderung und einer Django-/gettext-Eingabeaufforderung.

Streamlit, FastAPI, Flask, Pyramid, Tkinter, PyQt, PySide und PyWebView rufen den generierten i18n.py-Helfer auf (Python 3.10 oder neuer). Django verwendet das gettext von Django. Vier ausführbare Kopien sind im Repository enthalten: examples/python-streamlit, examples/python-flask, examples/python-fastapi und examples/python-gettext. Pyramid, Django, Tkinter, Qt und PyWebView verfügen über kein separates Beispielverzeichnis.

Welche Vorlage ​

FrameworkInit-VorlageKatalogBeispiel
Streamlitui-pythonFlaches JSON, das nach dem Quellstring geschlüsselt istpython-streamlit
FastAPIui-pythonFlaches JSON, das nach dem Quellstring geschlüsselt istpython-fastapi
Flask + Jinja, flaches JSONui-pythonFlaches JSON, das nach dem Quellstring geschlüsselt istpython-flask
Flask / Jinja gettextui-python-flask.po / .mo unter translations/Siehe die Flask-Hinweise unten
Pyramidui-python oder ui-python-flaskWie bei FlaskGleiche Einbindung wie bei Flask
Djangoui-python-djangolocale/<lang>/LC_MESSAGES/django.poKein Beispielverzeichnis
Bestehendes GNU gettextui-python-gettextFlaches JSON und .po / .mo oder nur gettextpython-gettext
Tkinterui-pythonFlaches JSON, das nach dem Quellstring geschlüsselt istKein Beispielverzeichnis
PyQt / PySideui-python oder eine gettext-VorlageFlaches JSON und/oder .poKein Beispielverzeichnis
PyWebView / PyWebKitEine Python-Vorlage für die ShellShell-Kataloge sowie HTML-Marker oder eine HTML-Datei pro SpracheKein Beispielverzeichnis

ui-python, ui-python-gettext und ui-python-flask schreiben i18n.py, wenn diese Datei fehlt. ui-python-django tut dies nicht. Fügen Sie --with-readme hinzu, um auch die README-Datei des Repositorys zu übersetzen: i18n zu Ihrer README-Datei und Markdown-Dokumentation hinzufügen.

Framework-Hinweise ​

Streamlit ​

streamlit_language_selector() schreibt das Gebietsschema in den Session-State und den Query-String. Geben Sie jedem Widget einen festen key. Details: Locale — Streamlit.

FastAPI ​

Lesen Sie ?lang= oder Accept-Language in der Middleware, rufen Sie set_locale auf und verwenden Sie reset_locale in finally, damit gleichzeitige Anfragen ihr eigenes Gebietsschema beibehalten. Details: Locale — FastAPI.

Flask und Pyramid ​

Das python-flask-Beispiel verwendet flaches JSON. init -t ui-python-flask ist das gettext-Layout unter translations/ für eine Anwendung, die bereits Kataloge im Flask-Babel-Stil verwendet. Legen Sie in jedem Fall das Locale aus der Anfrage fest und fügen Sie _, t, current_locale, ui_languages und direction in den Template-Kontext ein. Pyramid verwendet dasselbe anfragebasierte Muster. Details: Locale — Flask and Pyramid.

Django ​

Behalten Sie gettext, ngettext und {% blocktrans %} bei. init -t ui-python-django entspricht dem locale/-Verzeichnis von Django sowie der django-Domain und belässt die Django-Laufzeitumgebung unverändert. Details: Locale — Django.

Bestehendes gettext ​

Belassen Sie _(), gettext() und ngettext() an ihrem Platz. Verweisen Sie ui.gettext auf den aktuellen Katalogbaum und führen Sie extract sowie anschließend translate-ui aus. Das python-gettext-Beispiel ist rein gettext-basiert (flatOutput: false). init -t ui-python-gettext schreibt ebenfalls flaches JSON. Details: Locale — Existing gettext.

Tkinter, Qt und PyWebView ​

Rufen Sie t() oder _() beim Erstellen jedes Tkinter-Widgets auf und bauen Sie den sichtbaren Text nach set_locale neu auf. PyQt- und PySide-self.tr("...")-Aufrufe werden extrahiert, und Qt-.ui-Dateien tragen <string>-Elemente bei, sofern nicht notr="true" festgelegt ist. Für PyWebView oder PyWebKit extrahieren Sie die Python-Shell mit einem Template wie oben und extrahieren die HTML-Seite mit data-i18n-Markierungen oder mit einem HTML-Dokument pro Locale. Details: Locale — Tkinter, PyQt / PySide und PyWebView.

Veröffentlicht unter der MIT-Lizenz.