[pyar] Traducciones con PyQT4

Diego Sarmentero diego.sarmentero en gmail.com
Mar Feb 25 08:43:25 ART 2014


El día 25 de febrero de 2014, 4:22, Leandro Brunner
<leandrobrunner en yahoo.com.ar> escribió:
> La verdad nunca trabajé con traducciones en PyQt, pero fíjate si te sirve la
> clase QTranslator.
>
> Te dejo el link a la documentación:
> http://pyqt.sourceforge.net/Docs/PyQt4/qtranslator.html
>
> Saludos.
> Leandro Brunner
>
>
> El día martes, 25 de febrero de 2014 2:54, Federico Manuel Echeverri Choux
> <echeverrifm en gmail.com> escribió:
> Creo que estoy ahi
> Saludos y muchas gracias
>
> Este correo ha sido enviado desde un dispositivo móvil, disculpa las faltas
> de ortografía y errores de dedo
> ----------------------------------
> Federico Manuel Echeverri Choux
> mobile: (+521) 444-1-400683
> Tel: (+52) 444-8185539
> skype: echeverrifm
> twitter: @echeverrifm
> On Feb 24, 2014 11:52 PM, "Gabriel Davini"
> <gabrielfranciscodavini en gmail.com> wrote:
>
> Viste la lista de openerp-argentina [0]? Ahi la ayuda es más específica y
> muy buena, por cierto.
>
> [0] openerp-argentina en googlegroups.com
>
>
> 2014-02-25 2:49 GMT-03:00 Federico Manuel Echeverri Choux
> <echeverrifm en gmail.com>:
>
> Hola Gabriel
> Lo leo y te comento.
> De hecho es para algo de openerp.
> Muchas gracias
> Este correo ha sido enviado desde un dispositivo móvil, disculpa las faltas
> de ortografía y errores de dedo
> ----------------------------------
>
> Federico Manuel Echeverri Choux
> mobile: (+521) 444-1-400683
> Tel: (+52) 444-8185539
> skype: echeverrifm
> twitter: @echeverrifm
> On Feb 24, 2014 11:46 PM, "Gabriel Davini"
> <gabrielfranciscodavini en gmail.com> wrote:
>
> Por ahi te sirva de ayuda leer esto [0] y esto [1]. Acá [2] te paso como se
> implementa en openerp, que lee las traducciones de una base de datos, por
> ahi capaz q a vos te conviene leer directamente de un PO. Espero que sirva.
>
> Saludos.
>
> [0]
> https://docs.djangoproject.com/en/dev/topics/i18n/translation/#standard-translation
> [1]
> http://stackoverflow.com/questions/3967231/whats-the-meaning-of-in-python
> [2]
> http://bazaar.launchpad.net/~openerp/openobject-server/7.0/view/head:/openerp/tools/translate.py#L159
>
>
> 2014-02-25 0:25 GMT-03:00 Federico Manuel Echeverri Choux
> <echeverrifm en gmail.com>:
>
> Hola Gente, Buenas noches
>
> Tengo una pregunta que no encuentro como pasarle en google, y lo que me tiro
> no es lo que busco.
> Ando queriendo que una aplicacion en PyQT tenga la posibilidad de que se
> pueda traducir. mmm no se con un archivo PO
>
> Revisando el codigo de aplicaciones usan un guion bajo antes del texto a
> traducir.
>
> Algo como
>
> QMessageBox.question(parent, _('Remote Help'), message, _("Proceed"),
> _("Cancel") )
>
> Podrian darme una idea de por donde busco para usar esto?
>
> Saludos y desde ya muchas gracias
>
> Federico Manuel Echeverri Choux
> mobile: (+521) 444-1-400683
> Tel: (+52) 444-8185539
> skype: echeverrifm
> twitter: @echeverrifm
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
>
>
>
> --
> GD.-
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
>
>
>
> --
> GD.-
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar


Podes mirar como hacemos las traducciones en NINJA-IDE
(https://github.com/ninja-ide/ninja-ide).

En tu codigo fuente, dentro de clases que extiendan de algo de qt,
podes poner tus strings como:
self.tr("mi string a traducir")
o sino en cualquier lado podes hacerlo con:
QObject.tr("mi string a traducir")

Despues creas un archivo que en Qt seria el famoso .PRO (aunque la
extension no es muy significativa en este caso), que contenga la lista
de tus archivos que tienen strings que necesitan ser traducidos y cual
va a ser el archivo que se va a generar como resultado al parsear eso,
como este:

https://github.com/ninja-ide/ninja-ide/blob/master/ninja_translate

En nuestro caso fijate que SOURCES tiene un solo archivo, soliamos
tener una lista grande de archivos, pero como las traducciones Qt te
las trata de hacer en el contexto de cada archivo donde este el
string, no podias reutilizar traducciones, si por ejemplo tenias el
string: "Cancel Button" en 2 archivos distintos, en ese caso tenias
que traducirlo 2 veces, en cambio si pones todos tus strings a
traducir en un solo archivo y desde tu codigo importas eso y usas esos
strings, probablemente evites traducciones repetidas.
Para ponerlas en un solo archivo nosotros lo hicimos asi:
https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/translations.py

Y en ese archivo .PRO que te mencionaba (en nuestro caso llamado:
ninja_translate), el resultado generado te lo da la linea:

TRANSLATIONS = ninja.ts

Una vez que tenes tus strings puestos en el codigo fuente con la forma
que Qt los reconoce para traduccion, y tenes el archivo que lista
cuales son los archivos que contienen strings a traducir, corres el
siguiente comando (para nuestro caso):

pylupdate4 ninja_translate ninja.ts

Eso te genera un archivo .ts que es basicamente un XML, que podes
abrilo con el programa Qt Linguistic, aca esta explicado:
https://github.com/ninja-ide/ninja-ide-translations/blob/master/readme.md

Haces todas tus traducciones y despues podes guardar los cambios en
ese mismo qml, o elegir desde la ui del programa: Menu File ->
Release, y te genera el archivo .qm que contiene la traduccion que
podes levantar desde tu programa para traducir toda la UI.

Para ver como hacer que tu codigo levante el archivo de traducciones,
podes mirar aca, de la linea 98 a 112:
https://github.com/ninja-ide/ninja-ide/blob/master/ninja_ide/gui/__init__.py#L98

Saludos



-- 
Diego Sarmentero

Website: http://diegosarmentero.org
Twitter: http://twitter.com/diegosarmentero


More information about the pyar mailing list