it:programmiersprache:python:qt:translation:start

Qt - Translation

Erforderliche Tools auf dem Rechner

sudo apt install pyside2-tools
sudo apt install pyside6-tools pyqt6-dev-tools qt6-l10n-tools assistant-qt6
  • pyside6-tools
    Enthält pyside6-lupdate.
  • pyqt6-dev-tools
    Enthält Interface-Compiler pyuic6 und translation String Finder pylupdate6.
  • qt6-l10n-tools
    Werkzeuge um translation Dateien zu erzeugen.
    Enthält /usr/lib/qt6/libexec/lupdate-pro für pyside6-lupdate.
  • assistant-qt6
    Enthält /usr/lib/qt6/bin/assistant für die Anzeige der Hilfedateien.

Aktueller Fehler
pyside6-lupdate/usr/lib/qt6/libexec/lprodump: not found

Info:

Beim starten von pyside6-linguist zeigte sich mir eine sehr dunkle Oberfläche in diesem Werkzeug. Dunkelgrauer Hintergrund mit einer nur wenig helleren Schrift. Der Kontrast war sehr gering und die Anzeige nur sehr schwer zu lesen. Auch andere Werkzeuge wie pyside6-designer zeigten sich mit der selben Farbauswahl. :-(

  • qt6ct
    Erlaubt das Konfigurieren von Qt Einstellungen wie Theme, Font, Icons, etc.

Bei dem Werkzeug qt6ct (gleiche Oberfläche wie beschrieben) war schwach eine Fehlermeldung zu erkennen, dass die Umgebungsvariable QT_QPA_PLATFORMTHEME nicht gesetzt war. Eine Suche im Internet gab den Hinweis die Variable auf gtk3 oder gtk2 zu setzen.

Ein erneuter Start von qt6ct (zeigte sich immer noch in der gleichen Farbauswahl) lieferte nun eine andere Fehlermeldung, das die Variable auf qt6ct oder qt5ct zu setzen sei. :-/

Nachdem ich QT_QPA_PLATFORMTHEME=qt6ct gesetzt habe, erscheinen nun alle Werkzeuge in heller Farbe mit dunkler Schrift. :-)

https://github.com/trialuser02/qt6ct

Tip

Bei der Suche nach Paketen, die bestimmte Dateien auf das System installieren könnte das Werkzeug Synaptic-Paketverwaltung (Paket synaptic) ganz gut Hilfe leisten.

Oder die Web-Site: https://packages.ubuntu.com/

Eine Übersetzung wird in der Anwendung mit

self.tr("Your String")

durchgeführt.

Das Programm pyside2-lupdate sucht in den Quelldateien nach den Einträgen self.tr(…) und schreibt diese in die .ts Datei. D.h. wenn zum Beispiel mit

self.setWindowTitle("Hauptfenster")

ein Fenstertitel gesetzt werden soll, dann wird dieser Eintrag nicht gefunden, da für den String „Hauptfenster“ das umschließende self.tr(…) fehlt. Es muss also heißen:

self.setWindowTitle(self.tr("Hauptfenster"))

Auf diese Weise werden Strings für die Übersetzung von anderen Strings unterschieden, die zum Beispiel für einen Index verwendet werden oder anderweitig nicht verändert werden dürfen.

Achtung!

Wenn der Inhalt einer String-Variablen übersetzt werden soll, schlägt der Mechanismus fehl.

string_variable = "Hauptfenster"
 
self.setWindowTitle(self.tr(string_variable))

wird nicht als zu übersetzender String erkannt und landet damit auch nicht in der .ts-Datei.

Man kann zwar sehr lange Kommandozeilen zusammen stellen, aber so eine Projekt-Datei ist einfacher zu handhaben.

project.pro
CODECFORTR = UTF-8
 
SOURCES = src/pianocoach.py \
    src/notereading/main.py \
    src/notereading/gametypes.py \
    src/notereading/dlg_nstat.py \
    src/notereading/dlg_nstat_lst.py \
    src/notereading/dlg_nstat_hist.py \
    src/notereading/dlg_nstat_chart.py \
    src/notereading/dlg_setup.py
 
TRANSLATIONS = lang/de_DE.ts

Das eigentliche Update (oder deren Erstellung) wird durch die Kommandozeile

pyside2-lupdate -verbose project.pro

durchgeführt.

https://wiki.qt.io/PySide_Internationalization

Die eigentliche Übersetzung wird durch Qt Linguist durchgeführt.

Bei mir aktuell ist leider nur pyside6-linguist verfügbar. Eine PySide2 Equivalent ist leider nicht zu finden. Aber Übersetzungen lassen sich damit machen. :-)

cd Projekte/PyPianoCoach
 
pyside6-linguist lang/de_DE.ts

Nach Abschluss aller Übersetzungen, Datei speichern und pyside6-linguist verlassen.

https://doc.qt.io/archives/qt-5.15/linguist-translators.html

Mit

pyside6-lrelease lang/de_DE.ts

wird die .ts-Datei im eine .qm-Datei übersetzt, welche dann von der Anwendung geladen werden kann.

Andere Möglichkeiten

Check pygettext3

  • it/programmiersprache/python/qt/translation/start.txt
  • Zuletzt geändert: 23.08.2025 08:36
  • (Externe Bearbeitung)