====== Qt - Translation ====== ===== Installation ===== 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/]] ===== 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. 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 [[https://doc.qt.io/archives/qt-5.15/linguist-translators.html|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. * [[https://doc.qt.io/qt-6/qtlinguist-index.html|Qt Linguist Manual]] gibt einen guten Einstieg mit den Tools und dem weiteren Vorgehen. ====== Andere Möglichkeiten ====== Check ''pygettext3''