po4a-runtime

Autres langues

Langue: es

Version: 2010-08-07 (ubuntu - 25/10/10)

Section: 7 (Divers)

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.

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 tiempo de ejecución puede usar otros directorios aparte de po/, es más fácil 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 idioma, a menos que use extensiones de fichero para 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 hagas esto:
  XGETTEXT_OPTIONS = -L Perl -L Shell --from-code=iso-8859-1
 
 

considere renombrar (o proporcionar symlink(s)) para todos los ficheros de uno de los lenguajes implicados, y omita las opciones de -L explicitas. La extensión del fichero solo tiene que existir mientras se procese /POTFILES.in

La opción «--keywords» también puede ser de utilidad. Consulte la documentacion 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 al igual que en 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 la 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 ajústelo a sus necesidades.
Makevars-shell.example
Si sus scripts son de intérprete de órdenes, cope este fichero de ejemplo como po/Makevars y ajústelo a sus necesidades.
po4a-build.make
Copie este fichero de ejemplo como po/Makefile. No tendría porqué editarlo, pero puede que quiera crear un symlink con /usr/share/doc/po4a/examples/po4a-build.make, ya que puede precisar actualización en futuras publicaciones de po4a, a medida que cambia el elemento subyacente de apoyo intltool. (El fichero en si mismo se generó en 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 tarball de fuentes, puede que también necesite listar los nuevos ficheros po en el fichero MANIFEST o añadir el/los script(s) que preparan el tarball (esto también afecta a po4a-build).

Puede borrar todo fichero *.mo o *.gmo del directorio «po/».

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 remitirse a 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>