Internacionalización con PyQt4

En realidad debería decir traducción, porque la internacionalización incluye además convertir los formatos de fechas, monedas y todo eso, pero bueno, estos son los pasos necesarios para hacer traducciones de distintas partes de un programa usando PyQt4 (la octava maravilla moderna) y Qt Linguist (una herramienta que ya viene incluida cuando se instala PyQt). Yo usé la versión 2.6.4 de Python y la 4.5.1 de PyQt (la 4.7 no me anduvo en Windows 7, a pesar de mis esfuerzos).
 

  1. Marcar los strings a traducir en la aplicación de la siguiente manera:

    1. self.tr() en las clases que heredan de QMainWindow, QDialog o cualquier QObject (pero se suele hacer sobre la ventana)
    2. app.translate(<translation_string>, <translation>)
      
  2.  

  3. Crear un traductor y agregarlo a la aplicación (se pueden crear y agregar tantos como se quiera):

     
    from PyQt4.QtCore import Qlocale, QTranslator
    
    locale = QLocale.system().name()
    app_translator = QTranslator()
    path = "<app_name>_" + locale + ".qm"
     
    if app_translator.load(path):
        app.installTranslator(app_translator)
    

    Si el archivo de traducción va a estar embebido en el archivo de recursos:

     
    import resources #Para que funcione va a haber que llevar a cabo los pasos siguientes:
    
    path = "<app_name>_" + locale
     
    if app_translator.load(path, ":/"):
        app.installTranslator(app_translator)
    
  4.  

  5. Crear un archivo de recursos (ej. resources.qrc) que incluya el o los archivos de traducción:

     
    <!DOCTYPE RCC>
    <RCC version="1.0">
        <qresource>
            <file>staristics_es_AR.qm</file>
            <file><app_name>_<locale>.qm</file>
        </qresource>
    </RCC>
    
  6.  

  7. Crear un archivo pro (ej. .pro) con el siguiente formato:

     
    SOURCES = <main>.py <ventana>.pyw <…>
    TRANSLATIONS = <app_locale>.ts
    
  8.  

  9. Ejecutar el archivo pro desde la línea de comandos:

    directorio_del_proyecto>pylupdate4 -verbose .pro

  10.  

  11. Traducir los strings marcados usando Qt Linguist
  12.  

  13. Compilar el archivo de traducción (File > Release)
  14.  

  15. Compilar el archivo de recursos usando pyrcc4 desde la línea de comandos:

    directorio_del_proyecto>pyrcc4 resources.qrc -o resources.py

 
Actualización de las Traducciones

Cuando se agreguen strings nuevos para traducir en la aplicación, se repiten los pasos del 5 al 8 (modificando el archivo .pro antes de hacerlo si se agregaron archivos .py nuevos que contienen strings para traducir).

Anuncios

2 responses to this post.

  1. Posted by Sputnik on mayo 12, 2010 at 8:57 pm

    Aquí algo de información para eventualidades en cuanto a compatibilidad con Windows 7: http://bit.ly/c9dGTa

    Responder

  2. Posted by Rêveur on mayo 12, 2010 at 9:55 pm

    ¡Gracias por el link!
    Igual creo que en este caso particular el problema lo tiene que resolver la gente de Riverbank, porque la versión 4.5 de PyQt funciona sin problemas en Windows 7.

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: