Inhaltsverzeichnis
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
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.
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.
Check pygettext3
- Qt Linguist Manual gibt einen guten Einstieg mit den Tools und dem weiteren Vorgehen.