Traducción de “Templates” de KOHA

J. Martín Longo

El documento se entrega bajo licencia GNU-GPL

This document is related to Koha and is licensed to you under the GNU General Public License version 2 or later (http://www.gnu.org/licenses/gpl.html).

Koha-related documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies.

You may create a derivative work and distribute it provided that you:

  1. License the derivative work with this same license, or the Linux Documentation Project License (http://www.tldp.org/COPYRIGHT.html). Include a copyright notice and at least a pointer to the license used.

  2. Give due credit to previous authors and major contributors.

Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.

No liability for the contents of this document can be accepted. Use the concepts, examples and information at your own risk. There may be errors and inaccuracies, that could be damaging to your system. Proceed with caution, and although this is highly unlikely, the author(s) do not take any responsibility.

All copyrights are held by their by their respective owners, unless specifically noted otherwise. Use of a term in this document should not be regarded as affecting the validity of any trademark or service mark. Naming of particular products or brands should not be seen as endorsements.

2005-06-22

Revision History
Revision 2.2.22005-06-22

Initial XML markup.


1. Introducción
2. Usando tmpl_process3.pl para generar archivos '.po'
3. Usando KBabel para traducir un archivo '.po'
3.1. Ejemplos
4. Usando tmpl_process3.pl para generar “templates” traducidos
5. Consultas, quejas y propuestas

1. Introducción

Note

Nota aclaratoria: Se supone, en todos los ejemplos, que se ha descargado el archivo koha-2.1.1.tar.gz y se lo ha desempaquetado en el directorio 'home' del usuario 'usuario'. Por lo tanto, se debería contar con un directorio koha-2.1.1 en el directorio /home/usuario/

En cada sistema, se deberán adecuar los nombres de directorios y de usuarios como corresponda.

La internacionalización de KOHA puede lograrse mediante la traducción de los textos contenidos en los archivos '.tmpl' (que viene de Template) contenidos en /home/usuario/koha-2.1.1/intranet-html/intranet-tmpl/default/en

En ocasiones anteriores, el procedimiento de traducción que se ha seguido ha sido el de copiar todo el contenido del directorio mencionado al directorio /home/usuario/koha-2.1.1/intranet-html/intranet-tmpl/default/es y, posteriormente, configurar KOHA para que utilice el idioma español.

Este procedimiento, si bien ha dado resultados aceptables, es bastante lento y trabajoso, ya que se deben buscar una por una las cadenas de texto a traducir dentro de cada archivo '.tmpl', al tiempo que quien realiza el trabajo se debe cuidar de no modificar ninguna etiqueta o marca, ya que eso produce errores en la visualización.

Por este motivo, se ha optado por la utilización del script tmpl_process3.pl (provisto en la distribución de KOHA). Este script toma como entrada el archivo o un directorio que contenga los archivos que se quiera traducir y genera como salida un único archivo con formato específico y extensión '.po' (que viene de Portable Object) conteniendo todas las cadenas de texto que pueden ser traducidas. Este tipo de archivos es un estándar en el trabajo de internacionalización de software en el mundo del Software Libre y, por lo tanto, hay herramientas desarrolladas para su tratamiento.

El presente tutorial pretende mostrar el uso del script tmpl_process3.pl y, posteriormente, sentar las bases para la utilización de una herramienta para el tratamiento del archivo '.po' generado por el mismo (en este caso, la herramienta Kbabel).

2. Usando tmpl_process3.pl para generar archivos '.po'

El script tmpl_process3.pl se encuentra ubicado en /home/usuario/koha-2.1.1/scripts/misc/translator/ y depende algunos módulos ubicados en ese mismo directorio. Por lo tanto, para poder ejecutarlo, se deberá estar ubicado en el directorio /home/usuario/koha-2.1.1/scripts/misc/translator/

Example 1. Ejemplo:

usuario@host: cd /home/usuario/koha-2.1.1/scripts/misc/translator/

usuario@host: ./tmpl_process3.pl --help

Los comandos mostrados en el ejemplo producirán como salida el listado de las opciones y el modo de uso del script, como se muestra a continuación:

Usage: ./tmpl_process3.pl create [OPTION]
  or:  ./tmpl_process3.pl update [OPTION]
  or:  ./tmpl_process3.pl install [OPTION]
  or:  ./tmpl_process3.pl --help
Create or update PO files from templates, or install translated templates.

  -i, --input=SOURCE          Get or update strings from SOURCE file.
                              SOURCE is a directory if -r is also specified.
  -o, --outputdir=DIRECTORY   Install translation(s) to specified DIRECTORY
      --pedantic-warnings     Issue warnings even for detected problems
                              which are likely to be harmless
  -r, --recursive             SOURCE in the -i option is a directory
  -s, --str-file=FILE         Specify FILE as the translation (po) file
                              for input (install) or output (create, update)
  -x, --exclude=REGEXP        Exclude files matching the given REGEXP
      --help                  Display this help and exit

The -o option is ignored for the "create" and "update" actions.
Try `perldoc ./tmpl_process3.pl' for perhaps more information.

Para crear un archivo 'circ_es.po' que contenga los textos de todos los templates contenidos en el directorio 'circ' de la intranet de KOHA que están en inglés, el procedimiento sería el siguiente:

usuario@host: cd /home/usuario/koha-2.1.1/scripts/misc/translator/

usuario@host: ./tmpl_process3.pl create -r -i /home/usuario/koha-2.1.1/intranet-html/intranet-tmpl/default/en/circ/ -s /home/usuario/traduccion/circ_es.po

En el ejemplo anterior:

  • 'create' indica que se debe generar un archivo '.po'.

  • -r indica que el proceso se realizará sobre un directorio.

  • -i indica el directorio en el que se encuentran los archivos de los que se extraerán las cadenas de texto.

  • -s indica el directorio y el nombre del archivo '.po' a crear.

Al ejecutar el comando anterior es posible que se generen algunas advertencias o 'warnings' por cuestiones de sintaxis.

Al ejecutar el ejemplo sugerido, se produjo la siguiente salida en el equipo de prueba:

Warning: Can't determine original templates' charset, defaulting to ISO-8859-1
Removing empty file /home/jmlongo/tmp/temp.po
xgettext.pl: Warning (negligible): selectbranchprinter.tmpl: line 15: Suggest ESCAPE=HTML for TMPL_VAR in attribute "value": "<!-- TMPL_VAR NAME="value" -->"
xgettext.pl: Warning (negligible): selectbranchprinter.tmpl: Further similar negligible warnings will not be reported, use --pedantic for details
xgettext.pl: Warning: returns.tmpl: line 17: Strange attribute syntax: /cgi-bin/koha/moremember.pl?bornum=<!-- TMPL_VAR NAME="bornum" -->", "Member"); return false;"
xgettext.pl: Warning: branchtransfers.tmpl: line 20: Probably missing whitespace before or missing quotation mark near: Member", 480, 640); return false;"
xgettext.pl: Warning: branchtransfers.tmpl: line 22: Probably missing whitespace before or missing quotation mark near: Member", 480, 640); return false;"
xgettext.pl: Warning: branchtransfers.tmpl: line 98: Probably missing whitespace before or missing quotation mark near: Member", 480, 640); return false;"
xgettext.pl: Warning: branchtransfers.tmpl: line 128: Probably missing whitespace before or missing quotation mark near: Item", 480, 640); return false;"
The create seems to be successful.

A pesar de estas advertencias, la última línea (The create seems to be successful.) indica que el proceso ha tenido éxito y que se cuenta con el archivo '.po' en el lugar y con el nombre seleccionados. Este archivo deberá ser abierto usando KBabel para iniciar el proceso de traducción.

3. Usando KBabel para traducir un archivo '.po'

La aplicación KBabel presenta cuatro áreas, dentro de la ventana principal, cada una de ellas orientada a una utilidad en especial. Con esta aplicación se trabaja traduciendo una a una las cadenas de texto que están contenidas en el archivo '.po' generado anteriormente.

Para lograr esto de manera eficiente, KBabel pone a disposición distintas herramientas, como se muestra en la siguiente captura de pantalla:

Figure 1. Screenshot 1

Screenshot 1
  • El área marcada en la figura como Texto Original es de sólo lectura y presenta la cadena de texto que se está traduciendo.

  • El área marcada en la figura como Texto Traducido es el lugar donde se escribe la traducción de lo que aparece en el cuadro Texto Original.

  • El área marcada en la figura como Comentarios y Nombres de Archivos es el lugar donde aparecen los comentarios que los desarrolladores dejaron al momento de crear el template que se está traduciendo, con el objetivo de hacer alguna aclaración. Además, aparece el nombre del o los archivos en los cuales está contenida la cadena de texto que se está traduciendo.

  • El área marcada en la figura como Contexto es el lugar en el que aparecen las cadenas de texto anteriores y posteriores a la que se está traduciendo, como una ayuda para saber en qué contexto se encuentra la frase que se está traduciendo.

3.1. Ejemplos

Algunos delimitadores y etiquetas no deben ser modificados en la traducción

Figure 2. Screenshot 2

Screenshot 2

Cuando la traducción implique el uso de acentos y caracteres especiales, los mismos deberán ser reemplazados por las entidades correspondientes, para evitar problemas a la hora de la visualización.

Figure 3. Screenshot 3

Screenshot 3

Para navegar entre las cadenas de texto y realizar algunas funciones útiles, se pueden utilizar los íconos de la barra de herramientas o atajos de teclado.

FunciónTeclado
Ver el la cadena de texto anteriorRePág
Ver el la cadena de texto siguienteAvPág
Ver el la cadena de texto anterior no traducidaAlt+RePág
Ver el la cadena de texto siguiente no traducidaAlt+AvPág
Copiar la cadena de texto que está en la ventana de Texto Original a la ventana de traducciónCtrl+Espacio

4. Usando tmpl_process3.pl para generar “templates” traducidos

Siguiendo los ejemplos anteriores, hemos creado, en primer lugar, un archivo '.po' con nombre circ_es.po conteniendo todas las cadenas de texto extraídas de todos los 'templates' que están en el directorio /home/usuario/koha-2.1.1/intranet-html/intranet-tmpl/default/en/circ.

Por otro lado, ya hemos utilizado KBABEL para realizar la traducción de todas esas cadenas de texto.

Finalmente, sólo resta la generación de los nuevos 'templates' traducidos en un directorio a elección, siempre y cuando tenga una copia de los 'templates' originales. A los efectos de este ejemplo, crearemos los templates traducidos en el directorio /home/usuario/koha-2.1.1/intranet-html/intranet-tmpl/default/es/circ.

Para lograr esto, utilizaremos nuevamente el script tmpl_process3.pl pero con parámetros ligeramente distintos:

usuario@host: cd /home/usuario/koha-2.1.1/scripts/misc/translator/ 

usuario@host: ./tmpl_process3.pl install -s /home/usuario/traduccion/ circ_es.po -r -i /home/usuario/koha-2.1.1/intranet-html/intranet-tmpl/default/en/circ/ -o /home/usuario/koha-2.1.1/intranet-html/intranet-tmpl/default/es/circ/

En el ejemplo anterior:

  • 'install' indica que se generarán 'templates' a partir de un archivo '.po'.

  • -r indica que el proceso se realizará sobre un directorio.

  • -i indica el directorio en el que se encuentran los 'templates' originales de los cuales se extrajeron las cadenas de texto.

  • -s indica el directorio en el que se crearán los 'templates' traducidos.

Al igual que durante la creación del archivo '.po', al ejecutar el comando sugerido, pueden producirse advertencias. La siguiente es la salida obtenido en el equipo de prueba:

Warning: Can't determine original templates' charset, defaulting to ISO-8859-1
Creating /home/jmlongo/documentos/koha/koha-2.1.1/intranet-html/intranet-tmpl/default/pl/circ//selectbranchprinter.tmpl...
tmpl_process3.pl: Warning (negligible): selectbranchprinter.tmpl: line 15: Suggest ESCAPE=HTML for TMPL_VAR in attribute "value": "<!-- TMPL_VAR NAME="value" -->"
tmpl_process3.pl: Warning (negligible): selectbranchprinter.tmpl: Further similar negligible warnings will not be reported, use --pedantic for details
Creating /home/jmlongo/documentos/koha/koha-2.1.1/intranet-html/intranet-tmpl/default/pl/circ//returns.tmpl...
tmpl_process3.pl: Warning: returns.tmpl: line 17: Strange attribute syntax: /cgi-bin/koha/moremember.pl?bornum=<!-- TMPL_VAR NAME="bornum" -->", "Member"); return false;"
Creating /home/jmlongo/documentos/koha/koha-2.1.1/intranet-html/intranet-tmpl/default/pl/circ//circulation.tmpl...
Creating /home/jmlongo/documentos/koha/koha-2.1.1/intranet-html/intranet-tmpl/default/pl/circ//branchtransfers.tmpl...
tmpl_process3.pl: Warning: branchtransfers.tmpl: line 20: Probably missing whitespace before or missing quotation mark near: Member", 480, 640); return false;"
tmpl_process3.pl: Warning: branchtransfers.tmpl: line 22: Probably missing whitespace before or missing quotation mark near: Member", 480, 640); return false;"
tmpl_process3.pl: Warning: branchtransfers.tmpl: line 98: Probably missing whitespace before or missing quotation mark near: Member", 480, 640); return false;"
tmpl_process3.pl: Warning: branchtransfers.tmpl: line 128: Probably missing whitespace before or missing quotation mark near: Item", 480, 640); return false;"
The install seems to be successful.

A pesar de estas advertencias, la última línea (The install seems to be successful.) indica que el proceso ha tenido éxito y que se cuenta con un juego de 'templates' traducidos en /home/usuario/koha-2.1.1/intranet-html/intranet-tmpl/default/es/circ.

Para comprobar el éxito de este proceso, basta con abrir cualquiera de los 'templates' contenidos en el directorio mencionado con el editor de texto prefereido.

5. Consultas, quejas y propuestas

Si tiene alguna consulta acerca del proceso descrito en este documento, o quiere realizar alguna propuesta (o plantear una queja, ¿por qué no?) que sirva para mejorarlo, puede contactarse con Martín Longo ()