Lokalizace aplikací v jazyce Python
7. srpna 2018Výsledkem realizace programu není jen samotný kód a vizuální část programu, ale i textový obsah, který je potřeba lokalizovat. Právě jedna aplikace v jazyce Python vyžadovala lokalizaci a tak jsem zjišťoval jak aplikaci napsanou v jazyce Python lokalizovat.
                 
            
Vyvíjím i aplikace v jazyce Python a je právě jedna aplikace vyžadovala i lokalizaci do různých jazyků. Zjišťoval jsem tedy jak na standardizovaný postup lokalizace, jaké jsou prostředky v operačních systémech UNIX (primárně Linux). To vše pro aplikace napsané v jazyce Python.
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 implementaci lokalizace do 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žno 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.tsNá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/
Články na podobné téma
        
            Jak zrychlit web
                            
            
        
            Rector: upgrade PHP aplikace
                            
            
        
            Programovací jazyk Go
                            
            
        
            Analýza zadání a nacenění vývoje softwarového projektu
                            
            
        
            Python program na ovládání Dockeru pomocí API
                            
            
        
            Jak použít aplikaci MailCatcher pro testování emailů
                            
            
        
            Návod: Python OpenAI API
                            
            
        
            Vytvoření WebSocket webové aplikace a nastavení proxy
                            
            
        
            Řízení projektů: Agilní vývoj softwaru
                            
            
        
            Jak provozovat staré PHP aplikace
                            
            
        
            Co by měl umět dobrý programátor
                            
            
        
            Programovací jazyk Rust
                            
            
        
            NodeJS: vývoj, konfigurace serveru
                            
            
        
            Nette security bug CVE-2020-15227
                            
            
        
            Jak porovnat dvě stejné databáze?
                            
            
        
            REST API: API platform
                            
            
        
            Vlastní web a mail hosting se softwarem ISP Config
                            
            
        
            Programovní v SQL: PostgreSQL, MySQL/MariaDB
                            
            
        
            HTTPS: zabezpečený web
                            
            
        
            NoSQL databáze Mongo DB
                            
            
        
            Připojení k Microsoft SQL Serveru z Linuxu
                            
            
        
            Co je pracovní náplň programátora
                            
            
        
            Jaký mail a web hosting vybrat
                            
            
        
            How to make wireless low power Arduino
                            
            
        
            Digispark -  Programujte mikrokontrolér Atmel ATtiny pomocí Arduino IDE
                            
            
        
            Program Roulette
                            
            
        
            Vývoj pro procesory ARM s Arduino IDE
                            
            
        
            Wireless low power Arduino
                            
            
        
            Pyradio - Python program for receive Internet radio with text user inteface
                            
            
        
            UPS monitor pro Android
                            
            
        
            Bezdrátový bateriově napájený WiFi teploměr
                            
            
        
            Jak programovat WiFi procesor ESP8266
                            
            
        
            Comparison IQRF vs Wireless Arduino
                            
            
        
            Jakou platformu zvolit pro eshop? Například Prestashop
                            
            
        
            Development kits and gateways for wireless platform IQRF
                                    
                     
                            
            
        
            OpenStreetMap a GPS trasy v mapě na webu
                            
            
        
            Quickplay
                            
            
        
            Java program pro přehledné monitorování záložních zdrojů
                            
            
        
            Čipové kontaktní a bezkontaktní karty Java Card OpenPlatform
                            
            
        
            Otevřený chytrý telefon s Linuxem - Openmoko Neo FreeRunner
                            
            
        
            Vývoj pro bezdrátové moduly s procesorem PIC pod GNU/Linux  -  IQRF
                            
            
        
             Grafický program pro embeded/mobilní zařízení na vyhledávání dopravního spoje.
                            
            
        
            O programování a ruzné programy v jazyce Java, Python a dalších
                            
            
        
            Java program a applet Kalkulačka
                            
            
        
            Java program na výpočet kvadratické rovnice
                            
            
            
Odběr novinek
    Pokud máte zájem dostávat příležitostně na email novinky.
    
    Můžete se vyplněním emailu registrovat k 
        odběru novinek.
+
 
             
             
             
             
          