domingo, octubre 17, 2010

Cómo obtener los archivos .POT para traducir un proyecto en múltiples idiomas?

Según las herramientas de la GNU, podemos usar "xgettext", y usando unos simples comandos, no me voy a referir a todos, pero ya sacando los textos del programa, ya podremos traducir en diferentes idiomas, para hacer esto, debemos marcar nuestro código, por ejemplo:


catch (...) {
cerr << _("Exception thrown during parseCommandLine") << endl;
return EXIT_FAILURE;
}


Como podrán notar, existe un _( después del "cerr", esto es la marca, ahora para extraer el texto de ese documento simplemente hacemos un

xgettext --keyword=_ archivo


Eso creará un archivo nuevo, que se llamará messages.po, a menos que le indiques otro nombre, lucirá como:

# ESpanol message translation template for GNU Gnash
# Copyright (C) 2007 Free Software Foundation, Inc.
# John Gilmore , 2007
#
msgid ""
msgstr ""
"Project-Id-Version: gnash cvs20070405\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-02-12 11:37+0100\n"
"PO-Revision-Date: 2010-10-01 00:25-0300\n"
"Last-Translator: Maximiliano Castañón Araneda \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"

#: libbase/sharedlib.cpp:76
#, c-format
msgid "Couldn't initialize ltdl: %s"
msgstr "No se puede inicializar ltdl: %s"


donde aparecerá:

#: libbase/sharedlib.cpp:76
msgid "Couldn't initialize ltdl: %s"
msgstr "No se puede inicializar ltdl: %s"


la primera línea indica el archivo y la línea.
la segunda línea el msgid por cada línea que se puede traducir, esa indica el idioma del que proviene
la tercera, la traducción a nuestro lenguaje.

Además de obtener esos datos, quizás queramos introducir más archivos a nuestro archivo, en ese caso usaremos:

xgettext --keyword=_ -j archivo

donde -j, --join-existing une los mensajes con un fichero existente


Existen más alternativas, por ejemplo actualizamos nuestro archivo.POT, y luego queremos unir este archivo actualizado con nuestra traducción actual, ahí tenemos a msgmerge:

msgmerge [OPCIÓN] def.po ref.pot
msgmerge -U def.po ref.pot

Además de esto, supongo que querrán compilar el archivo para usarlo, en este caso usaremos pocompile:

pocompile -


Cuando compilo el archivo de traducción de GNASH, uso:

pocompile /home/maximi89/Escritorio/es.po /home/maximi89/Escritorio/es.mo


Y para hacer la traducción y luego mover el archivo uso:

pocompile /home/maximi89/Escritorio/es.po /home/maximi89/Escritorio/es.mo && sudo cp /home/maximi89/Escritorio/es.mo /usr/local/share/locale/es/LC_MESSAGES/gnash.mo

Si se dieron cuenta, el compilador de PO o POT, convierte el archivo de PO a MO (machine object), lenguaje entendido por la PC.

Espero que esta guía rápida algo sirva para orientar hacia que deben usar, yo encontré demasiada información que llega a confundir...

No hay comentarios.: