wiki:DocumentacionUsuario1.1.0/TraduccionGettext

Version 3 (modified by ramon, 8 years ago) (diff)

Notas para usar gettext en scripts BASH

TOC(heading=Índice)?

Traducción de mensajes usando GNU gettext

GNU gettext es un conjunto de herramientas que permite una fácil traducción a varios idiomas los mensajes que se muestran al usuario. Se recomienda empezar a utilizar GNU gettext para estandarizar el proceso de internacionalización de OpenGnsys, el cual deberá estar instalado tanto en el servidor principal como en la máquina que vaya a utilizarse para el desarrollo del proyecto.

Aunque GNU gettext está diseñado inicialmente para que los mensajes originales se redacten en inglés, permite usar cualquier otro idioma como base, por lo tanto OpenGnsys utilizará el castellano como idioma original para los mensajes de texto.

Configuración

La siguiente table muestra los parámetros básicos de configuración de GNU gettext.

Componente Programado en Dominio Directorio
Browser del clienteC++browser/opt/opengnsys/lib/locale (cliente)
Scripts del servidorBASHserver/opt/opengnsys/lib/locale (servidor)

Para localizar el fichero de traducción, cada componente debe incluir en la configuración de gettext el dominio de texto y el directorio de idiomas. El camino completo del fichero será: DirectorioIdiomas/xx/LC_MESSAGES/Dominio.mo, siendo xx las siglas del idioma (ca para catalán, en para inglés o es para castellano).

Preparar el código fuente

Los programas deben modificarse para que gettext pueda localizar las cadenas que debe traducir, según el lenguaje de programación utilizado.

C o C++

Modificaciones a incluir en un programa C/C++:

  • Zona de inclusión de código:
    #include <libintl.h>
    
  • Inicio de la función principal main:
    setlocale (LC_ALL, "");
    bindtextdomain ("Dominio", "DirectorioIdiomas");
    textdomain ("Dominio");
    
  • Indicar las cadenas que van a ser traducidas, sustituyendo Cadena por gettext(Cadena), teniendo en cuenta que cada cadena debe estar bien formateada (como se usa en la función printf).
  • Pueden tratarse simultáneamente frases en singular y en plural, indicando 2 parámetros en la llamada a la función gettext, siendo el 1º de ellos la frase en singular y el 2º en plural. Por ejemplo: gettext("%d fichero", "%d ficheros")

BASH

Es recomendable incluir un fichero auxiliar con la configuración de GNU gettext y que sea llamado desde cada script usando el comando source.

Script de configuración de Gettext:

  • Definir las variables:
    TEXTDOMAIN="Dominio"
    TEXTDOMAINDIR=DirectorioIdiomas
    
  • Definir una función __ con la llamada a gettext, incluyendo:
    STRING=$1; shift
    printf "$(gettext "$TEXTDOMAIN" "$STRING")" $@
    

Modificaciones a incluir en un script BASH:

  • Incluir la función de configuración (se recomienda usar el fichero locale.sh en el directorio de librerías):
    source CaminoScriptConfiguraciónGettext
    
  • Indicar las cadenas que van a ser traducidas, sustituyendo Cadena por la función de traducción $(__ "Cadena" Parámetros), teniendo en cuenta que la cadena y los parámetros deben estar bien formateados (como se usan en el comando printf).

Crear fichero de cadenas

Traducción

Generar el fichero final