it:programmiersprache:python:qt:translation:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
it:programmiersprache:python:qt:translation:start [23.08.2025 08:36] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1it:programmiersprache:python:qt:translation:start [23.08.2025 08:36] (aktuell) – ↷ Seite von it:python:qt:translation:start nach it:programmiersprache:python:qt:translation:start verschoben marsch
Zeile 1: Zeile 1:
 +====== Qt - Translation ======
 +
 +
 +===== Installation =====
 +
 +Erforderliche Tools auf dem Rechner
 +
 +<tabbox Ubuntu PySide2>
 +
 +<code shell>
 +sudo apt install pyside2-tools
 +</code>
 +
 +<tabbox Ubuntu PySide6>
 +
 +<code shell>
 +sudo apt install pyside6-tools pyqt6-dev-tools qt6-l10n-tools assistant-qt6
 +</code>
 +
 +  * ''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.
 +
 +<wrap em>Aktueller Fehler</wrap>\\ ''pyside6-lupdate'' -> ''/usr/lib/qt6/libexec/lprodump: not found''
 +
 +<WRAP center round info 60%>
 +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. :-)
 +
 +<cite>https://github.com/trialuser02/qt6ct</cite>
 +</WRAP>
 +
 +</tabbox>
 +
 +<WRAP center round tip 60%>
 +**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/]]
 +</WRAP>
 +
 +
 +
 +===== lupdate =====
 +
 +==== Voraussetzungen ====
 +
 +Eine Übersetzung wird in der Anwendung mit
 +<code python>
 +self.tr("Your String")
 +</code>
 +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
 +<code python>
 +self.setWindowTitle("Hauptfenster")
 +</code>
 +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:
 +<code python>
 +self.setWindowTitle(self.tr("Hauptfenster"))
 +</code>
 +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.
 +
 +<WRAP important round center 60%>
 +**Achtung!**
 +
 +Wenn der Inhalt einer String-Variablen übersetzt werden soll, schlägt der Mechanismus fehl.
 +<code python>
 +string_variable = "Hauptfenster"
 +
 +self.setWindowTitle(self.tr(string_variable))
 +</code>
 +wird nicht als zu übersetzender String erkannt und landet damit auch nicht in der ''.ts''-Datei.
 +
 +</WRAP>
 +
 +
 +
 +==== Projekt-Datei erstellen ====
 +
 +Man kann zwar sehr lange Kommandozeilen zusammen stellen, aber so eine Projekt-Datei ist einfacher zu handhaben.
 +
 +<file text 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
 +</file>
 +
 +
 +==== Update durchführen ====
 +
 +Das eigentliche Update (oder deren Erstellung) wird durch die Kommandozeile
 +<code shell>
 +pyside2-lupdate -verbose project.pro
 +</code>
 +durchgeführt.
 +
 +<blockquote>
 +<cite>https://wiki.qt.io/PySide_Internationalization</cite>
 +</blockquote>
 +
 +
 +===== 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. :-)
 +<code shell>
 +cd Projekte/PyPianoCoach
 +
 +pyside6-linguist lang/de_DE.ts
 +</code>
 +
 +Nach Abschluss aller Übersetzungen, Datei speichern und ''pyside6-linguist'' verlassen.
 +
 +<blockquote>
 +<cite>https://doc.qt.io/archives/qt-5.15/linguist-translators.html</cite>
 +</blockquote>
 +
 +
 +===== lrelease =====
 +
 +Mit
 +<code shell>
 +pyside6-lrelease lang/de_DE.ts
 +</code>
 +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 ======
 +
 +<WRAP todo round center 60%>
 +Check ''pygettext3''
 +</WRAP>