21. Internacionalización

21.1. Traducciones

gvSIG cuenta con su gestor de traducciones. Para hacer uso de él necesitaremos que nuestro script haga una serie de pasos.

21.2. Ficheros de traducción

Estas traducciones son una serie de cadenas con su equivalente en diferentes idiomas. Por lo general dentro del plugin se creará una carpeta /i18n/ y en ella se crearán ficheros del estilo:

  • text.properties

  • text_en.properties

El valor por defecto sin el identificativo del idima corresponderá al Español. Podemos crear diferentes para diferentes idiomas. El contenido de cada uno será similar el siguiente:

text.properties

Contenido:

_Analysis=Analisis
_Count_Duplicates_Table=Tabla conteo duplicados
_Count_features_with_duplicates_field=Contar entidades con campos duplicados

text_en.properties

Contenido:

_Analysis=Analysis
_Count_Duplicates_Table=Count duplicates table
_Count_features_with_duplicates_field=Count features with duplicates

21.3. Registro

En el autorun o en la ejecución del script se deberán de agregar las traducciones creadas anteriormente. Se indicará la carpeta donde se encuentran localizadas y se ejecutaran las siguientes líneas de código:

from org.gvsig.tools import ToolsLocator
from java.io import File

def main(*args):
    selfRegister()

def selfRegister(*args):
    i18nManager = ToolsLocator.getI18nManager()
    i18nManager.addResourceFamily("text",File(gvsig.getResource(__file__,"i18n")))

Este código agregará los ficheros encontrados en la carpeta /i18n/ que comiencen por «text» al gestor de traducciones.

21.4. Utilización

Para hacer uso de las traducciones desde un script se necesitará acceder al manager de traducciones. Una vez hemos accedido al manager, se le podrá preguntar por la traducción de una cadena de caracteres específica. El manager devolverá el texto asociado a esa cadena en el idioma que esté gvSIG utilizando en ese momento:

from org.gvsig.tools import ToolsLocator

def main(*args):

  i18nManager = ToolsLocator.getI18nManager()
  print i18nManager.getTranslation("_Count_features_with_duplicates_field")
  print i18nManager.getTranslation("_Analysis")

21.5. Otros usos

También podemos utilizar el módulo de traducción para abrir otro tipo de ficheros según el idioma de gvSIG. En el siguiente ejemplo buscamos un archivo de ayuda para un geoproceso. En este caso, se le pregunta a gvSIG por el idioma y por los idiomas alternativos a este (idiomas parecidos) en el caso de que no existiera el primer fichero de traducción en el idioma determinado.

Existiría un script con una carpeta al lado denominada /help/ con dos ficheros xml. - countduplicates_es.xml - countduplicates_en.xml

Ejemplo:

def getHelpFile(self):
    name = "countduplicates"
    extension = ".xml"
    locale = PluginsLocator.getLocaleManager().getCurrentLocale()
    tag = locale.getLanguage()
    #extension = ".properties"

    helpPath = gvsig.getResource(__file__, "help", name + "_" + tag + extension)
    if os.path.exists(helpPath):
        return File(helpPath)
    #Alternatives
    alternatives = PluginsLocator.getLocaleManager().getLocaleAlternatives(locale)
    for alt in alternatives:
        helpPath = gvsig.getResource(__file__, "help", name + "_" + alt.toLanguageTag() + extension )
        if os.path.exists(helpPath):
            return File(helpPath)
    # More Alternatives
    helpPath = gvsig.getResource(__file__, "help", name + extension)
    if os.path.exists(helpPath):
        return File(helpPath)
    return None