gvSIG cuenta con su gestor de traducciones. Para hacer uso de él necesitaremos que nuestro script haga una serie de pasos.
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:
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
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.
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")
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