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.

https://wiki.qt.io/PySide_Internationalization

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