Lokalisierung von Python-Anwendungen

7. August 2018

Lang: cs en de es

Das Ergebnis der Programmimplementierung ist nicht nur der Code und der visuelle Teil des Programms, sondern auch der textliche Inhalt, der lokalisiert werden muss. Vor allem eine Python-Anwendung erforderte eine Lokalisierung, also versuchte ich herauszufinden, wie man eine in Python geschriebene Anwendung lokalisieren kann.

Ich entwickle auch Anwendungen in Python und es gibt eine bestimmte Anwendung, die eine Lokalisierung in verschiedene Sprachen. Also habe ich mich nach einem standardisierten Lokalisierungsverfahren umgesehen, welche Ressourcen in UNIX-Betriebssystemen (vor allem Linux) vorhanden sind. Und das alles für Anwendungen, die in Python geschrieben sind.

Standardzustand

Ich habe die Anwendung in Python geschrieben und es war eine komplexe Anwendung, die im Hintergrund parallel Daten verarbeitete und Daten von verschiedenen Eingängen erhielt. Sie hatte eine grafische Oberfläche im QT-Toolkit, die interaktiv die aktuelle Situation anzeigte und mit der der Benutzer auch Einstellungen ändern konnte.

Translate Tools

Es gibt mehrere Werkzeuge zur Implementierung der Lokalisierung in einem Programm. Das Basis- und Standardwerkzeug ist Gettext.

Allerdings hat direkt QT ein Werkzeug in sich, für das ich mich entschieden habe, es zu benutzen. Um diese Ressourcen nutzen zu können, müssen wir qttools installieren, das Konvertierungswerkzeuge und das Grafikprogramm linguist enthält, das zur bequemen Übersetzung von Text verwendet werden kann.
In Mageia 6 sind diese Pakete: qt4-linguist, qttools5-dev-tool.

Programmcode

Der Text im Programmcode muss so geschrieben sein, dass es möglich ist, die Mittel zur bequemen Lokalisierung der Anwendung nachträglich zu verwenden:
...........
self.gpsOff.setText(_translate("MainWindow", "NO SIGNAL", None))
self.camera1.setText(_translate("HauptFenster", "Kamera 1 kein Signal", None))
self.voipRX.setText(_translate("HauptFenster", "voipRX", None))
.............
Binden Sie die Lokalisierung in das Programm ein und verwenden Sie sie:
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(kontext, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributFehler:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)
..............


if __name__ == "__main__":
    translator = QtCore.QTranslator()
    translator.load("ts.qm")
    app.installTranslator(translator)

Texte exportieren und konvertieren

Das Programm pylupdate4 dient dazu, Texte aus dem Programm zu exportieren.
Verwendung des Programms pylupdate4:

pylupdate4 main.py -ts translate/zh_TW.ts
Anschließend müssen Sie die einzelnen Textstrings in Lingust übersetzen.
Die resultierende Datei muss dann in eine binäre Form umgewandelt werden, die von unserem Programm gelesen werden kann. Das Programm lrelease führt die Umwandlung in das qm-Binärformat für das QT-Toolkit durch:
lrelease translate/zh_TW.ts

Ressourcen

https://pymotw.com/2/gettext/

https://wiki.python.org/moin/PyQt/Using eine Übersetzung von Qt

https://kuanyui.github.io/2014/09/03/pyqt-i18n/

Artikel zu einem ähnlichen Thema

Programmiersprache Go
Python-Programm zur Steuerung von Docker über die API
Wie man MailCatcher zum Testen von E-Mails verwendet
Python OpenAI API
Erstellen einer WebSocket-Webanwendung und Einrichten eines Proxys
Projektmanagement: agile Softwareentwicklung
Wie man alte PHP-Anwendungen ausführt
Was ein guter Programmierer wissen sollte
Programmiersprache Rust
NodeJS: Entwicklung, Serverkonfiguration
Nette Sicherheitslücke CVE-2020-15227
REST API: Plattform-API
Kundenspezifisches Web- und E-Mail-Hosting mit ISP Config-Software
Programmierung in SQL: PostgreSQL, MySQL/MariaDB
HTTPS: sicheres Web
NoSQL-Datenbank Mongo DB
Herstellen einer Verbindung zu Microsoft SQL Server unter Linux
Was ist die Stellenbeschreibung eines Programmierers?
Welches Mail- und Webhosting Sie wählen sollten
Digispark - Atmel ATtiny Mikrocontroller mit Arduino IDE programmieren
Entwicklung für ARM-Prozessoren mit Arduino IDE
Wie programmiere ich den ESP8266 WiFi-Prozessor?
Offenes Smartphone mit Linux - Openmoko Neo FreeRunner

Newsletter

Wenn Sie daran interessiert sind, gelegentlich Neuigkeiten per E-Mail zu erhalten.
Sie können sich registrieren, indem Sie Ihre E-Mail-Adresse eingeben News-Abonnement.


+