Localización de aplicaciones Python

7 de agosto de 2018

Lang: cs en de es

El resultado de la implementación del programa no es sólo el código y la parte visual del programa, sino también el contenido textual que necesita ser localizado. Una aplicación Python en particular requería localización, así que estuve intentando averiguar cómo localizar una aplicación escrita en Python.

También desarrollo aplicaciones en Python y hay una aplicación en concreto que requería localización a diferentes idiomas. Así que estaba buscando un procedimiento estandarizado de localización, cuáles son los recursos en los sistemas operativos UNIX (principalmente Linux). Todo esto para aplicaciones escritas en Python.

Estado por defecto

Escribí la aplicación en Python y era una aplicación compleja que procesaba datos en segundo plano en paralelo, recibiendo datos de diferentes entradas. Disponía de una interfaz gráfica en el kit de herramientas QT que mostraba de forma interactiva la situación actual, y el usuario también podía utilizarla para modificar configuraciones.

Herramientas de traducción

Existen varias herramientas para implementar la localización en un programa. La básica y estándar es Gettext.

Sin embargo, directamente QT incorpora una herramienta que he decidido utilizar. Para poder utilizar estos recursos, necesitamos instalar qttools, que contiene herramientas de conversión y el programa de gráficos linguist, que se puede utilizar para traducir textos cómodamente.

En Mageia 6, estos paquetes son: qt4-linguist, qttools5-dev-tool.

Código del programa

El texto del código del programa debe escribirse de forma que sea posible utilizar posteriormente los medios para una localización conveniente de la aplicación:
...........
self.gpsOff.setText(_translate("MainWindow", "SIN SEÑAL", None))
self.camera1.setText(_translate("MainWindow", "Camera 1 no signal", None))
self.voipRX.setText(_translate("MainWindow", "voipRX", None))
.............
Incorporar y utilizar la localización en el programa:
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s

try:
    _encoding = QtGui.QApplication.UnicodeUTF8
    def _translate(contexto, texto, desambig):
        return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
    def _translate(context, text, disambig):
        return QtGui.QApplication.translate(context, text, disambig)
..............


if __name__ == "__main__":
    translator = QtCore.QTranslator()
    translator.load("ts.qm")
    app.installTranslator(translator)

Exportar y convertir textos

El programa pylupdate4 se utiliza para exportar cadenas de texto desde el programa.
Uso del programa pylupdate4:

pylupdate4 main.py -ts translate/zh_TW.ts
Luego hay que traducir las cadenas de texto individuales en Lingust.
A continuación hay que convertir el fichero resultante a una forma binaria que pueda ser leída por nuestro programa. El programa lrelease realiza la conversión al formato binario qm para el kit de herramientas QT:
lrelease translate/zh_TW.ts

Recursos

https://pymotw.com/2/gettext/

https://wiki.python.org/moin/PyQt/Using una traducción de Qt

https://kuanyui.github.io/2014/09/03/pyqt-i18n/

Artículos sobre un tema similar

Análisis de la asignación y fijación de precios del desarrollo de proyectos de software
Programa Python para controlar Docker mediante la API
Cómo utilizar MailCatcher para probar correos electrónicos
API OpenAI de Python
Creación de una aplicación web WebSocket y configuración de un proxy
Gestión de proyectos: desarrollo ágil de software
Cómo ejecutar aplicaciones PHP antiguas
Lo que debe saber un buen programador
Lenguaje de programación Rust
NodeJS: desarrollo, configuración del servidor
Fallo de seguridad de Nette CVE-2020-15227
API REST: API de plataforma
Alojamiento web y de correo personalizado con el software ISP Config
Programación en SQL: PostgreSQL, MySQL/MariaDB
HTTPS: web segura
Base de datos NoSQL Mongo DB
Connecting to Microsoft SQL Server from Linux
¿Cuál es la descripción del trabajo de un programador?
Qué correo y alojamiento web elegir
Digispark - Programar microcontrolador Atmel ATtiny con Arduino IDE
Desarrollo para procesadores ARM con Arduino IDE
Cómo programar el procesador WiFi ESP8266
Smartphone abierto con Linux - Openmoko Neo FreeRunner

Boletin informativo

Si está interesado en recibir noticias puntuales por correo electrónico.
Puedes registrarte rellenando tu email suscripción de noticias.


+