Seite 1 von 1

QTranslator - english in deutsch

Verfasst: Dienstag 1. November 2022, 20:00
von Nobuddy
Hallo zusammen,
ich möchte text von englisch auf deutsch übersetzen, dazu habe ich hier dies:

Code: Alles auswählen

import sys
from PyQt5.QtCore import QLocale, QTranslator, QLibraryInfo
from PyQt5.QtWidgets import QApplication

App = QApplication(sys.argv)

translator = QTranslator(App)
translator.load('qt_' + QLocale.system().name(),
    QLibraryInfo.location(QLibraryInfo.TranslationsPath))
App.installTranslator(translator)
print(App.tr('yes'))
Leider erhalte ich 'yes' statt 'ja'.
Kann mir jemand erklären, an ws die liegt?

Grüße Nobuddy

Re: QTranslator - english in deutsch

Verfasst: Dienstag 1. November 2022, 20:07
von sparrow
Was steht denn in der Datei, die du lädst?
Also: wie hast du die .qm Datei erstellt?

Re: QTranslator - english in deutsch

Verfasst: Dienstag 1. November 2022, 20:42
von __blackjack__
Ist der `load()`-Aufruf denn überhaupt erfolgreich? `load()` hat ja einen Rückgabewert. Und dann wäre interessant wo tatsächlich gesucht wird und nach welchem Dateinamen und ob dort dann auch so eine Datei zu finden ist.

Re: QTranslator - english in deutsch

Verfasst: Mittwoch 2. November 2022, 11:02
von Nobuddy
Hallo und Danke, für Eure Rückmeldung!

Dachte, dass im obigen Fall, man automatisch das Ergebnis der Übersetzung erhält.
Ist wohl ein fataler Irrglaube meinerseits.

.qm Datei ?
Ist nicht erstellt, dazu bräuchte ich mehr Infos, wie der Inhalt der Datei aussehen muss und wo diese abgespeichert werden muss.

Wenn ich obigen Code ablaufen lasse, erhalte ich keine Fehlermeldung, nur die Printausgabe.
Die Ausgabe zu load():

Code: Alles auswählen

print('qt_' + QLocale.system().name())
> qt_de_DE

print(QLibraryInfo.location(QLibraryInfo.TranslationsPath))
> /usr/share/qt5/translations

print(translator.load('qt_' + QLocale.system().name(),
    QLibraryInfo.location(QLibraryInfo.TranslationsPath)))
> True
Hoffe, Ihr könnt mir da helfen, was vorab notwendig ist.
Möchte gerne die Zusammenhänge verstehen, um die Übersetzung nutzen zu können.

Re: QTranslator - english in deutsch

Verfasst: Mittwoch 2. November 2022, 11:07
von Nobuddy
Die Dateien unter dem Pfad '/usr/share/qt5/translations', sind z.B. assistant_de.qm, assistant_en.qm usw..
Nachtrag: Es gibt unter diesem Pfad, viele unterschiedliche Dateinamen.
qt_de.qm, qt_en.qm ... linguist_de.qm, linguist_en.qm um ein paar zu nennen.
Aber eine Datei mit der Bezeichnung 'qt_de_DE' ist nicht dabei.

Re: QTranslator - english in deutsch

Verfasst: Mittwoch 2. November 2022, 11:20
von __deets__
Der Prozess ist hier dokumentiert: https://www.riverbankcomputing.com/stat ... /i18n.html

Die Grundidee: in deiner Anwendung sind Strings in der UI durch tr oder translate quasi "markiert", koennen extrahiert, und dann mit dem QLinguist uebersetzt werden. Die Uebersetzungen sind dann in speziellen Dateien, die im Grunde eine Art Woerterbuch von Programmtext auf uebersetzten Text darstellen.

Einfach nur "ich will jetzt deutsch sein" anzugeben reicht nicht.

Re: QTranslator - english in deutsch

Verfasst: Mittwoch 2. November 2022, 11:47
von Nobuddy
Zu dieser Einsicht bin jetzt auch gekommen, dass ... gib mir die Übersetzung von ... so nicht funktioniert.
Auf den Link, habe ich schon zuvor entdeckt.
Habe ihn mit dem Google-Übersetzer übersetzen lassen, jedoch bin ich dadurch nicht wirklich weiter gekommen. Werde diesen nochmals intensiv durcharbeiten, vielleicht erhalte ich dann die Lösung.

Eigentlich möchte ich nur, die englischen Bezeichnungen von Buttons usw. in die jeweilige Sprache des Nutzers übersetzen.
Ein eigenes Wörterbuch erstellen, wo z.B. englische Begriffe ins deutsche übersetzt werden, wäre wohl in meinem Fall die einfachste Lösung.

Re: QTranslator - english in deutsch

Verfasst: Mittwoch 2. November 2022, 12:12
von __deets__
Nimm deepl, das geht vielleicht besser.Alternativ zu Qt's Mechanismus kann man auch noch gettext benutzen, das ist in Python auch schon dabei. Das Prinzip ist aber am Ende sehr aehnlich: durch gut erkennbare Auszeichnung (in dem Fall _("Der Text")) erkennt ein externes Tool zu uebersetzende Strings, und extrahiert die.

Das Rad selbst zu erfinden ist nicht so eine gute Idee, denn diese Tools unterstuetzen zB auch fuzzy matching, wenn du aus Gruenden der Klarheit einen Text in der Quelle leicht umgeschrieben hast, und dann ploetzlich ohne Uebersetzung da stehen wuerdest. Das hat schon alles seine Berechtigung, so ein Tooling.

Re: QTranslator - english in deutsch

Verfasst: Mittwoch 2. November 2022, 13:26
von Nobuddy
Danke für den Tipp mit deepl, werde ich mir anschauen!
Das Rad neu erfinden, will ich nicht wirklich ... da entfernt man sich allzuschnell vom eigentlichen Ziel :wink: