[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