[Linux] Una pregunta sobre traduccions ...
Albert Astals Cid
aacid a kde.org
diu set 21 12:29:43 CEST 2014
El Divendres, 19 de setembre de 2014, a les 11:44:22, Oscar Castell Marcos va
escriure:
> Buenas,
>
> tinc un noi de treball de recerca de 2n de BAT que està fent una
> aplicació en PyQt però no utilitza l'entorn de programació Qt ja que
> utilitza una sèrie de mòduls externs (opencv) que no en són compatibles.
>
> El cas és que estem a la fase de localització i internacionalització i
> fem les traduccions amb el gettext. Tot funciona correctament:
>
> 1.- El llenguatge s'escull en carregar l'aplicació segons les variables
> d'entorn.
> 2.- S'ha ficat un argument opcional al executar el programa per escollir
> la llengua.
>
> Això tot va bé.
>
> Ara m'ha plantejat de poder canviar la llengua directament dins de la
> interfície d'usuari. Hem ficat una comboBox amb les opcions de llengua i
> carreguem, sense cap problema, les opcions de llengua segons l'item
> selecionat. Ara bé, la UI no es tradueix. Hem provat d'actualitzar la UI
> amb repaint, update i altres opcions però la UI no es refresca i queda
> amb la traducció ...
No és refresca, perque tu has fer setText( gettext("Hi") ); a un QLabel, la
funció gettext et farà la traducció de "Hi" a "Hola" i cridarà a setText, si
vols que et faci la traducció un altre cop de "Hi" a "Bon jour" has de tornar
a cridar a la funció setText( gettext("Hi") );
La idea que hi ha al mon Qt, es que un cop canviis l'idioma enviis un
QEvent::LanguageChange
a la teva appplicació i retraduxeixis l'ui.
Una mica així com s'explica a http://stackoverflow.com/questions/10224101/how-to-translate-language-in-qt-on-the-fly
Salut,
Albert
>
> Hi ha algú que tingui experiència en aquestes traduccions amb gettext,
> pyqt ... on-the-fly ... si és aixi i ens proposa una solució estarem
> molt agraïts.
>
> records,
>
> O. Castell
>
> PD: adjunto la part de codi que invoca el canvi d'idioma amb gettext i
> l'update del UI.
>
> def change_combo_idioma(self,llengua):
> #
> # Internacionalització: llenguatge per defecte es_CA (Català)
> #
> self.language=str(llengua.toUtf8()).decode("utf-8")
> if self.language == 'Castellà'.decode("utf-8"):
> lang0 = gettext.translation('movmind', 'idiomes',
> languages=['es_ES'], fallback=True)
> elif self.language == 'Anglés'.decode("utf-8"):
> lang0 = gettext.translation('movmind', 'idiomes',
> languages=['en_EN'], fallback=True)
> elif self.language == 'Francés'.decode("utf-8"):
> lang0 = gettext.translation('movmind', 'idiomes',
> languages=['fr_EN'], fallback=True)
> elif self.language == 'Alemany'.decode("utf-8"):
> lang0 = gettext.translation('movmind', 'idiomes',
> languages=['de_DE'], fallback=True)
> elif self.language == 'Català'.decode("utf-8"):
> lang0 = gettext.translation('movmind', 'idiomes',
> languages=['ca_ES'], fallback=True)
> else:
> lang0 = gettext.translation('movmind', 'idiomes',
> languages=['ca_ES'], fallback=True)
> lang0.install()
> print "Language", self.language
> self.update()
> return
>
> _______________________________________________
> Linux mailing list
> Linux a llistes.softcatala.org
> http://llistes.softcatala.org/mailman/listinfo/linux
Més informació sobre la llista de correu Linux