i18n: translation

obd_diag.i18n

.. py:module:: obd_diag.i18n

Übersetzung der Texte für Oberfläche, Kommandozeile und Bericht (Deutsch/Englisch).

Die Texte im Code sind deutsch und werden mit tr("…") ausgegeben; ist Englisch eingestellt, kommt die Übersetzung aus locale/en.po (Format von GNU gettext, die deutschen Texte sind die msgid). Platzhalter stehen in geschweiften Klammern und werden nach dem Übersetzen gefüllt: tr("Verbinde mit {port} …").format(port=port). Texte, die schon beim Import feststehen (Tabellen, Konstanten), markiert N_; sie werden erst bei der Ausgabe mit tr übersetzt. So bleiben gespeicherte Sitzungen sprachneutral: sie enthalten die deutschen Texte, angezeigt wird die eingestellte Sprache. QML nimmt qsTr und denselben Katalog (ui/window.py).

Neue Texte trägt uv run python tools/translations.py in en.po ein; tests/unit/test_i18n.py schlägt fehl, solange eine Übersetzung fehlt oder ein deutscher Text ohne tr ausgegeben wird.

Dieses Modul gehört zu keiner Schicht und importiert nichts aus dem Paket; jede Schicht darf es benutzen.

.. py:function:: set_language(language) :module: obd_diag.i18n

Sprache für alle folgenden Ausgaben; ValueError bei unbekannter Sprache.

.. py:function:: system_language() :module: obd_diag.i18n

Sprache aus der Umgebung wie bei gettext (LANGUAGE, LC_ALL, LC_MESSAGES, LANG): Deutsch, wenn dort Deutsch steht, sonst Englisch.

.. py:function:: parse_po(text) :module: obd_diag.i18n

msgid → Übersetzung aus einer PO-Datei; leere und unvollständige Einträge fehlen. Kommentare und #, fuzzy werden ignoriert (fuzzy zählt als übersetzt nur, wenn msgstr gefüllt ist).

.. py:function:: tr(text) :module: obd_diag.i18n

text (deutsch) in der eingestellten Sprache; ohne Übersetzung unverändert.

.. py:function:: trn(singular, plural, n) :module: obd_diag.i18n

Einzahl oder Mehrzahl nach n (Deutsch und Englisch: Einzahl nur bei 1).

.. py:function:: N_(text) :module: obd_diag.i18n

Markiert text zum Übersetzen, ohne es schon zu übersetzen.

.. py:function:: decimal(value, digits=1) :module: obd_diag.i18n

Zahl mit digits Nachkommastellen und dem Dezimalzeichen der Sprache.

.. py:function:: csv_delimiter() :module: obd_diag.i18n

Trennzeichen für CSV wie in der Tabellenkalkulation der Sprache: Deutsch ; (das Komma ist Dezimalzeichen), Englisch ,.