[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