(Python) .ts-, .pro-Dateien, QTranslator und Qt Linguist richtig verwenden?
Leider konnte mir nicht einmal ChatGPT helfen, da dieser Bot nur noch für Verwirrung gesorgt hat. Mal brauchte man eine gewisse Datei, mal nicht. Dann musste diese Datei mal dort und mal dort liegen. Auch das Recherchieren hat nicht viel gebracht.
Also, folgendes Problem:Ich möchte QTranslator verwenden, um in meiner GUI-Anwendung, die ich mit dem Qt Designer gestalte, die ganzen Texte zu übersetzen.
Alle Texte von den ganzen beschrifteten Elementen usw. sollen in Deutsch und Englisch übersetzt werden können. Mit "lupdate -ts ..." habe ich die Quelldatei MainWindow.py analysieren lassen, um mir daraus passende .ts-Dateien erstellen zu lassen. Die MainWindow.py-Datei ist die konvertierte MainWindow.ui-Datei.
Das Ding ist nur, dass dann nicht weiter als
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="SPRACHE">
</TS>
in den .ts-Datein steht - ich weiß aber nicht, ob das falsch ist. Wenn ich aber diese Datei in Qt Linguist öffnen möchte, sagt der mir Die Übersetzungsdatei /lang/de_DE.ts ist leer und wird daher nicht geladen.
Hier ist der Baum meines Projektes, damit man mir außerdem besser weiterhelfen kann, welche Datei ich für die Übersetzung wo hinlegen soll:
In dieser de_DE.pro-Datei steht einfach nur
TEMPLATE = app
QT += core gui linguist
SOURCES += ../gui/MainWindow.py
TRANSLATIONS += translations/de_DE.ts translations/en_US.ts
drin und ich weiß immer noch nicht, ob die wirklich gebraucht wird.
Vielen Dank!
1 Antwort
Die pro-Datei ist für C++-Projekte. Sie gibt zum Beispiel an, welche Qt-Module eingebunden werden sollen oder welche Quelldateien zum Projekt gehören. Daher kann man die pro-Datei auch an lupdate übergeben, um die in ihr referenzierten Dateien zu prüfen.
Deine ts-Datei beinhaltet aktuell eine Grundstruktur ohne Einträge.
Übergib neben den eigenen py- Dateien auch die ui-Dateien an lupdate.
Beispiel:
lupdate main.py MainWindow.ui -ts example_de.ts
Ja, bei Programmänderung brauchst du ein Update (via lupdate). Das Programm aktualisiert die Datei dann aber nur und generiert sie nicht komplett neu.
Muss ich die .ts-Datei immer wieder neu erstellen, wenn Elemente (Buttons, Labels etc.) dazukommen oder gelöscht werden? Weil da steht Folgendes sehr oft:
Da ist ja eine Zeilenangabe (hier: line="120"). Würde das nicht heißen, dass man dann alles immer wieder neu übersetzen muss oder verstehe ich das gerade falsch? 🤔🙃