[Linux] Una pregunta sobre traduccions ...

Oscar Castell Marcos ocastell a mac.com
div set 19 11:44:22 CEST 2014


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ó ...

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



Més informació sobre la llista de correu Linux