Qt - Translation
Installation
Erforderliche Tools auf dem Rechner
Ubuntu PySide2
sudo apt install pyside2-tools
Ubuntu PySide6
sudo apt install pyside6-tools pyqt6-dev-tools qt6-l10n-tools assistant-qt6
pyside6-tools
Enthältpyside6-lupdate
.pyqt6-dev-tools
Enthält Interface-Compilerpyuic6
und translation String Finderpylupdate6
.qt6-l10n-tools
Werkzeuge um translation Dateien zu erzeugen.
Enthält/usr/lib/qt6/libexec/lupdate-pro
fürpyside6-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.
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/
lupdate
Voraussetzungen
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.
Projekt-Datei erstellen
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
Update durchführen
Das eigentliche Update (oder deren Erstellung) wird durch die Kommandozeile
pyside2-lupdate -verbose project.pro
durchgeführt.
Qt Linguist
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
lrelease
Mit
pyside6-lrelease lang/de_DE.ts
wird die .ts
-Datei im eine .qm
-Datei übersetzt, welche dann von der Anwendung geladen werden kann.
- Qt Linguist Manual gibt einen guten Einstieg mit den Tools und dem weiteren Vorgehen.
Andere Möglichkeiten
Check pygettext3