MENU

Lokalizace aplikací v jazyce Python

7. Srpna 2018

Výsledkem realizace programu není jen samotný kód a vizuální část programu, ale i textový obsah, který je potřeba lokalizovat. Vyvíjím i aplikace v Jazyce Python. A právě jedna taková aplikace vyžadovala i lokalizaci a tak jsem zjišťoval jaký je standardizovaný postup obecně, jaké jsou prostředky v operačních systémech UNIX (hlavně Linux) a hlavně pro aplikace napsané v jazyce Python.

python translation

Výchozí stav

Aplikaci jsem psal v jazyce Python a jednalo se o složitou aplikaci, která na pozadí paralelně zpracovávala data, která přijímala z různých vstupů. Měla grafický interface v toolkitu QT, který interaktivně ukazoval aktuální situaci a zároveň pomocí ní mohl uživatel upravovat nastavení.

Translate tools

Nástrojů pro zavedení lokalizace programu je několik. Základ a standard je Gettext.

Přímo QT má však v sobě nástroj, který jsem se rozhodl použít. Aby jsme tyto prostředky mohli používat, je potřeba nainstalovat qttools, který obsahuje nástroje pro konvertování a grafický program linguist, ve kterém je možno pohodlně překládat texty.
V systému Mageia 6 se jedná o balíčky: qt4-linguist, qttools5-dev-tool .

Kód programu

V kódu programu musí být text zapsán tak, aby bylo možnou následně použít prostředky pro pohodlnou lokalizaci aplikace:
...........
self.gpsOff.setText(_translate("MainWindow", "NO SIGNAL", None))
self.camera1.setText(_translate("MainWindow", "Camera 1 no signal", None))
self.voipRX.setText(_translate("MainWindow", "voipRX", None))
.............
Začlenění a použití lokalizace v programu:
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    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)

Export a konvertování textů

K exportu textových řetězců z programu slouží program pylupdate4.
Použití programu pylupdate4:

pylupdate4 main.py -ts translate/zh_TW.ts
Následně je potřeba v programu Lingust přeložit jednotlivé textové řetězce.
Výsledný soubor se pak musí zkonvertovat do binární podoby, kterou je možno načíst naším programem. Programem lrelease provádí konvertování do binárniho formátu qm pro toolkit QT:
lrelease translate/zh_TW.ts

Zdroje

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

https://wiki.python.org/moin/PyQt/Using a translation of Qt

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

Další články o programování:

Digispark - Programujete mikrokontrolér Atmel ATtiny pomocí Arduino IDE
Jak programovat ARM procesory pomocí Arduino IDE
Wireless low power Arduino
How to make wireless low power Arduino
Zobrazení map na webové stránce
Vývoj bezdrátových zařízení s IQRF
Prestashop - programování eshopů
Programovaní pro mobilní telefon
Comparison IQRF vs Wireless Arduino
ESP8266 IoT přichází
WiFi čidlo teploty
Roulette
Jak vybrat web hosting

Kontakt

Pozdrav, dotaz nebo žádost o konzultaci pošlete na můj email:mail@josefjebavy.cz




Flattr this



Ověřit CSS!