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

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…