NOMBRE¶
po4a-runtime - po4a y traducción gettext en tiempo de ejecución
sin Autotools
Introducción¶
Gracias a
po4a-build,
po4a permite también añadir
las traducciones de mensajes de salida de scripts en tiempo de
ejecución usando gettext. Ademas, se hace sin necesidad de integrar
Autotools y el típico proceso
./configure en el paquete.
Usando secciones de ejemplo de
Makefile, los paquetes pueden usar
intltool con el mínimo esfuerzo.
Diseño¶
La documentación de la traducción NO debería usar el mismo
directorio
po/ que las traducciones de mensajes en tiempo de
ejecución. Aunque la traducción de mensajes en tiempo de
ejecución puede usar otros directorios aparte de
po/,
habitualmente es más sencillo seguir el uso convencional.
Varios lenguajes¶
Sólo un apunte acerca de paquetes que usan scripts en varios lenguajes de
programación. Una mezcla común es Perl y el intérprete de
consola. Nota: gettext se equivocará y omitirá cadenas de uno u
otro lenguaje, a menos que use extensiones de fichero pare el lenguaje menos
problemático.
Al usar varios lenguajes, experimente con varias configuraciones en
po/Makevars hasta que obtenga las cadenas necesarias en el fichero POT.
Especificar dos lenguajes en
po/Makevars puede ser problemático.
En lugar de:
# No haga esto:
XGETTEXT_OPTIONS = -L Perl -L Shell --from-code=iso-8859-1
Considere renombrar (o proporcionar uno varios enlaces simbólicos) para
todos los ficheros de uno de los lenguajes implicados, y omita las opciones de
«-L» explicitas. La extensión de fichero solo tiene que
existir mientras se procesa
/POTFILES.in
La opción «--keywords» también puede ser de
utilidad. Consulte la documentación de xgettext.
Llenar «po/»¶
Finalizando, tiene que crear su directorio
po/ de nivel superior y
después usar los ficheros de ejemplo en
/usr/share/doc/po4a/examples/ para llenarlo.
- LINGUAS
- Este campo debe estar presente, incluso vacío. Consiste de una
lista de traducciones, cada línea que no empiece con un debe
coincidir con un fichero PO ya existente. Por ejemplo, si LINGUAS
contiene una sola línea, «fr», debe tener un fichero
fr.po junto con el fichero LINGUAS.
$ cat po/LINGUAS
cs
de
fr
$
Por convención, el fichero LINGUAS está organizado
alfabéticamente, pero este es un proceso manual.
- POTFILES.in
- La lista de ficheros que contienen mensajes que se traducirán en
tiempo de ejecución, por ejemplo, sus scripts. De emplear el
directorio po/ de nivel superior, las rutas tendrán que ser
relativas al directorio de nivel superior, no al mismo directorio
po/.
$ ls -l
mi_script.pl
otro.pl
foo/compatibilidad.pl
po/
po/POTFILES.in
$ cat po/POTFILES.in
mi_script.pl
otro.pl
foo/compatibilidad.pl
$
Observe que se menciona explícitamente que los scripts pueden
contener cadenas para la traducción de mensajes de
documentación y también de mensajes en tiempo de
ejecución. Por ejemplo, usar funciones de gettext para los mensajes
en tiempo de ejecución y el contenido integrado de
documentación POD. Por ello, no es problema si tiene el mismo
fichero listado en po/POTFILES.in y
doc/po4a-build.conf.
- Makevars-perl.example
- Si sus scripts están escritos en Perl, copie este fichero de
ejemplo como po/Makevars y configúrelo según sus
necesidades.
- Makevars-shell.example
- Si sus scripts son de intérprete de órdenes, copie este
fichero de ejemplo como po/Makevars y configúrelo
según sus necesidades.
- po4a-build.make
- Copie este fichero de ejemplo como po/Makefile. No debería
necesitar edición, pero puede que desee mantenerlo actualizado en
relación a /usr/share/doc/po4a/examples/po4a-build.make ya
que puede que se necesite actualizar de una publicación de po4a a
otra a medida que la compatibilidad subyacente con intltools cambia. (El
fichero en sí mismo se generó de otro proyecto usando
Autotools e intltool.)
Construir¶
Necesita añadir estas partes a su «Makefile» de nivel
superior, o a cualquier otro método que use para preparar las fuentes
para su distribución.
clean:
$(MAKE) -C po/ clean
install:
$(MAKE) -C po/ install DESTDIR=$(DESTDIR)
dist:
$(MAKE) -C po/ pot
(En un proyecto con Autotools, esto ocurre automáticamente si
añade
po al valor de <SUBDIRS> en <Makefile.am>.)
Actualización¶
La traducción en tiempo de ejecución no es tan sencilla como con
po4a-build, ya que necesita editar
po/LINGUAS para añadir
una nueva traducción. Pero aparte de esto, actualizar traducciones es
tan fácil como reemplazar el fichero PO relevante con la nueva
versión.
Dependiendo de como prepare su fichero tar de fuentes, puede que también
necesite listar los nuevos ficheros PO en el fichero
MANIFEST o
añadir el o los scripts que preparan el archivo tar (esto
también afecta a
po4a-build).
Puede borrar todo fichero
*.mo o
*.gmo del directorio
po/.
Copyright¶
Aunque los ficheros de ejemplo sean parte del proyecto po4a, es libre de usar,
modificar o distribuir los mismos en sus proyectos sin necesidad de mencionar
po4a o incluir al equipo de po4a en sus notas de derechos de autor, al igual
que con otras herramientas de compilación como el mismo Automake. No
pondremos objeciones si desea mencionar po4a en su proyecto.
AUTORES¶
Neil Williams <linux@codehelp.co.uk>
TRADUCCION¶
Jordi Vilalta <jvprat@gmail.com>
Omar Campagne <ocampagne@gmail.com>