Več

Urejanje uporabniškega vmesnika - lokalizacija funkcije Python Init s QTranslatorjem?

Urejanje uporabniškega vmesnika - lokalizacija funkcije Python Init s QTranslatorjem?


Imam interakcijo s plastjo, ki jo definirajo uporabniški vmesniki po meri. V lastnostih plasti naslednje nastavitve: Urejanje uporabniškega vmesnika - customline.ui in funkcija Python Init: customline_set.py.

#coding: utf8 iz PyQt4.QtCore uvoz * iz PyQt4.QtGui uvoz * nameField = Brez myDialog = Brez def formOpen (dialog, layerid, featureid): globalno myDialog myDialog = dialog globalno imeField translator = QTranslator () loc = QSettings (). value ('locale/userLocale') [0: 2] print loc ime datoteke = " i18n  customline_ % s.qm" % loc ime datoteke za tiskanje translator.load (ime datoteke) QCoreApplication.installTranslator (prevajalec) print QCoreApplication.translate ( 'editForm', "Generals") # vrne prevedeni niz ok

Koda deluje brez napak, uporabniški vmesnik pa ni prikazan v izbranem jeziku.

Mi lahko kdo pokaže smer napake?


Ne vidim napake pri pogledu, morda pa to pomaga:

V nekaterih sistemih uporabniška nastavitev ni na voljo in vaša loc-premenljiva bo NULL, potem bo vaša koda odkrila napako.

V svojih vtičnikih uporabljam naslednjo kodo:

locale = QtCore.QSettings (). value ("locale/userLocale"), če ne locale: locale == 'sl' else: locale = locale [0: 2] localePath = os.path.join (os.path.dirname (os. __file__), 'i18n', 'geopunt4qgis _ {}. qm'.format (locale)), če os.path.exists (localePath): self.translator = QtCore.QTranslator () self.translator.load (localePath), če je QtCore. qVersion ()> '4.3.3': QtCore.QCoreApplication.installTranslator (samoprevajalec)

Malo pozno, vendar bi lahko pomagalo drugim. Imel sem isto težavo (vtičnik python za QGIS,QCoreApplication.translate ()daje pravilen rezultat, vendar v samem QGIS -u ni prikazanega prevoda).

Na koncu sem vzel primer iz vtičnika Table Manager. Ustvaril sem aMyPlugin.prodatoteka, ki opredeljuje vse datoteke, ki vsebujejo besedilo, ki ga je treba prevesti (v mojem primeru,.uiin.pydatoteke).

Nato sem uporabil ukazpylupdate4 MyPlugin.pro, ki ustvari (ali posodobi) vašo.tsdatoteke..tsdatoteke lahko nato ročno uredite, da dodate prevode (v obliki, podobni XML); možno jih je tudi urejati z uporabo QT 4 Linguist, ki ponuja grafični vmesnik za pravilno obdelavo prevodov QT 4.

Po tem ne pozabite uporabitisprostite MyPlugin_locale.tsustvariti ustrezno.qmdatoteko, ki je dejansko uporabljena.

Upoštevajte, da delam na Ubuntu 12.04. Ukazpylupdate4v drugih sistemih se lahko razlikujejo.

Ustrezna povezava, ki mi je pomagala: https://stackoverflow.com/questions/18921213/translation-file-still-working-after-modifying-the-source


Poglej si posnetek: Method and Constructor Overloading in Python. Lesson 39. Python. Learning Monkey