Portál AbcLinuxu, 24. května 2024 22:04


Dotaz: Python lokalizace programu

8.8.2023 23:44 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Python lokalizace programu
Přečteno: 489×
Odpovědět | Admin
Ahoj všem.

Během vytváření prográmku v Pythonu jsem dostal nápad udělat ho přeložitelný. Protože to má rozhraní Qt, tak překlady dělá funkce tr.

Soubory pro překlad vytvářím pomocí pylupdate5. Hlavní třída, která je založená na QMainWindow se zpracuje správně, ale v tom hlavním souboru importuju další své soubory, a třídy v nich nejsou na QMainWindow založené.

Pokud QMainWindow naimportuju, a pro překlad v těchto souborech použiju např. QMainWindow.tr( "ffff" ), tak program se spustí, ale tvůrce jazykových souborů
pylupdate5 main.py second.py third.py -ts main_cs.ts
zahrne do *ts souboru jen main.py.

Dělám něco špatně, ale nejsem schopen zjistit co .... Poradí mi někdo ?

Děkuji

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.8.2023 00:08 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: Python lokalizace programu
Odpovědět | | Sbalit | Link | Blokovat | Admin
A tak omyl ... nespustí se ... Takto mám inicializovanou QMainWindow v tom druhém souboru :

from PySide2.QtCore import QFile, QFileInfo
from PySide2.QtWidgets import QMainWindow

class stashpages:
    def __init__(self, stashPath, logger, database):
        QMainWindow.__init__(self)
        self.stashPath = stashPath
        self.logger = logger

Jsem to včera smazal, a v paměti jsem měl, že se mi ten kód spouštěl ... a ejhle, chybička ... omlouvám se
Řešení 1× (Milan Uhrák (tazatel))
9.8.2023 13:17 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: Python lokalizace programu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Hm .. nikdy jsem nelokalizoval, a tudíž jsem k problému přistupoval ... laicky.

Řešením bylo :

Třída, ( tedy spíše soubor, jehož třídy ) nejsou potomky QMainWindow musí importovat
from PySide2.QtWidgets import QApplication
a pak je dobré na úrovni souboru vytvořit funkci tr() ( nejlépe i v souboru s třídami, které jsou potomky QMainWindow ),
def tr(text):
    QApplication.translate("mypages", text)
kterou pak v třídách volám prostě print(tr( "toto je zpráva") )

S takto ošetřeným překládanými texty nemá problém ani python, ani pylupdate. Malé hurá.

Jako dotaz byl puštěn do světa dřív, než jsem se pořádně zamyslel a položil vyhledáváčům správně. Pak i odpovědi googlu a GPT3 byly síce pro mně zpočátku zmatečné, ale postupně jsem se dobral k cíli.

Asi možno dotaz uzavřít. Děkuji

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.