|
Levo uns días trasteando e mirando como facer as miñas aplicacións multi-idiomas. Actualmente para programar uso Python coas wxpython como entorno gráfico.
A solución parece ser un módulo que ven incorporado no propio python chamado gettext, mais, hai que instalar ferramentas extra para preparar os ficheiros das traducións.
No meu caso guieime a traveso destas páxinas:
- http://wiki.wxpython.org/Internationalization
- http://www.batibit.com/blog/2007/11/13/
traducir-aplicaciones-escritas-en-python/
Aínda lle tiven que dar unhas cantas voltiñas pero ao final non é tan complicado como parece.
Actualización. Despois de mirar e tratar de acadar o obxectivo de facer multilingüe unha aplicación en python(internacionalización), dóuseme por por facer unha guía de como conseguilo en 10 pasos. Así xa non me esquezo. Inicialmente envieina á lista de python, e para que non quedase alí só publicoa tamén aquí. Así que aquí vai.
1. En el fichero principal de la aplicación he puesto
import gettext
import os
os.environ["LANG"] = "gl_ES" #mi caso
gettext.install('miaplicacion', '.\locale')
2. En los ficheros de mi aplicación, he modificado las cadenas que deseo traducir metiéndolas entre paréntesis con un guion bajo antes:
Antes
self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
label=u'Hello world!', name='staticText1', parent=self.panel1,
pos=wx.Point(112, 56), size=wx.Size(160, 13), style=0)
Despues:
self.staticText1 = wx.StaticText(id=wxID_FRAME1STATICTEXT1,
label=_(u'Hello world!'), name='staticText1', parent=self.panel1,
pos=wx.Point(112, 56), size=wx.Size(160, 13), style=0)
3. He descargado y desomprimido en c:\gnu\ los ficheros gettext-runtime-0.13.1.bin.woe32.zip
gettext-tools-0.13.1.bin.woe32.zip
libiconv-1.9.1.bin.woe32.zip
que están en http://wiki.wxpython.org/Internationalization
4. En el raíz de la aplicación a traducir he creado un fichero de texto llamado app.fil con el nombre de cada módulo a traducir (uno por linea)
5. He descargado de http://wiki.wxpython.org/Internationalization el fichero mki18n.py y lo he puesto en el raíz del proyecto a traducir (junto con el app.fil)
6. Desde un terminal (consola...) me he situado en el raiz del proyecto y he ejecutado "c:\python25\python.exe mki18n.py -p" esto me ha creado un fichero llamado messages.pot
7. He renombrado messages.pot a miaplicacion.po y he modificado el fichero completando las traducciones. En mi caso con el notepad++. Para que me funcionase he puesto el formato del fichero en ANSI y en mostrar como UTF-8, para no tener problemas con los acentos.
La cabecera del pot la he sustituido por esta (por lo del utf-8):
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2007-11-13 13:54-0300\n"
"PO-Revision-Date: 2007-11-13 14:03-0300\n"
"Last-Translator: NOMBRE DEL TRADUCTOR \n"
"Language-Team: Spanish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
8. Desde la consola y situándome en el directorio de la aplicación he ejecutado
c:\gnu\bin\msgfmt.exe --output-file=miaplicacion.mo miaplicacion.po
esto genera un fichero llamado miaplicacion.mo
9. El punto 6 me ha generado un fichero miaplicacion.mo,
dentro del directorio de miaplicación creo un fichero llamado locale, dentro de este gl_es y dentro de este LC_MESSAGES dentro de este último guardo el fichero miaplicacion.mo
10. Ahora elejecuto la aplicación y listo! Me aparece traducida.
|