Internacionalización de los módulos Python

Cuando se distribuyen las cajas de herramientas de geoprocesamiento con los módulos Python, los módulos se pueden personalizar para ofrecer compatibilidad con todos los idiomas admitidos por ArcGIS. Los archivos de ayuda y soporte para estos idiomas compatibles se almacenan en el directorio help. A continuación se muestra la estructura del directorio help, si se crea para los 10 idiomas, siendo el inglés el idioma predeterminado:

Texto alternativo obligatorio

La configuración local del sistema operativo se utiliza para determinar en qué directorio se hará la primera búsqueda. El directorio gp de nivel superior se utiliza para el idioma inglés y es el predeterminado cuando el archivo que se busca no se encuentra en uno de los directorios de idiomas específicos. El directorio messages contiene el archivo .xml de cadenas localizables que se utiliza en la caja de herramientas Python y las herramientas de secuencia de comandos de Python, mientras que el directorio toolboxes se utiliza para sustituir las etiquetas localizables de las cajas de herramientas binarias (cajas de herramientas personalizadas que contienen herramientas de modelos y secuencias de comandos).

El directorio gp almacena los archivos .xml para la ayuda de panel lateral de la caja de herramientas y la herramienta. Estos archivos .xml se generan a partir de los metadatos de la caja de herramientas editados en el menú contextual Descripción del elemento utilizando la función createtoolboxsupportfiles siguiente. El comando funciona en cualquier caja de herramientas.

NotaNota:

Asegúrese de que se haya definido un alias en la caja de herramientas antes de ejecutar el comando. El alias se necesita para generar los archivos de ayuda del panel lateral.

arcpy.gp.createtoolboxsupportfiles(<path to .tbx or .pyt>)

Este comando generará todos los archivos de soporte de la caja de herramientas que se encuentren en la estructura de carpetas esri descrita anteriormente. El directorio esri se crea en la misma ubicación que la caja de herramientas a la que se apunta en la ruta de entrada del comando. La estructura del directorio esri que se acaba de generar debe ser

Texto alternativo obligatorio

Los archivos de ayuda del panel lateral se colocan en el directorio esri/help/gp, el archivo de etiquetas localizables se coloca en el directorio esri/help/gp/toolboxes y el contenedor ArcPy para la caja de herramientas se crea en el directorio esri/arcpy. Además, el directorio messages debe crearse en el directorio esri/help/gp para que los mensajes de error utilizados en las herramientas de secuencia de comandos o en las cajas de herramientas de Python sean localizables y, si aún no se ha hecho, el directorio toolboxes que almacena la caja de herramientas y las secuencias de comandos complementarias de Python debe copiarse a la estructura de distribución existente. Una vez que se haya creado el directorio messages y se haya copiado el directorio toolboxes al directorio esri, la estructura debe ser

Texto alternativo obligatorio

Con la disponibilidad de las propiedades localizadas de las cajas de herramientas y las herramientas mediante la creación de archivos .xml específicos para cada idioma en esri/help/gp y esri/help/gp/toolboxes, se necesita un archivo .xml adicional para almacenar los mensajes de error localizados que se utilizan en las herramientas de secuencia de comandos o en las cajas de herramientas de Python. En el directorio esri/help/messages, cree un archivo .xml llamado messages.xml.

messages.xml

El código de muestra para crear messages.xml:

<Messages>
<Message><ID>unique_string</ID><Description>%1 welcome to the sample tool</Description></Message>
</Messages>

Para reflejar este cambio, el método ejecutar de SamplePythonToolbox.pyt de Ampliar el geoprocesamiento mediante módulos de Python debe editarse para que utilice el método AddIDMessage en lugar de AddMessage. El nuevo método ejecutar debe ser

El código de muestra para editar el método ejecutar en SamplePythonToolbox.pyt:

def execute(self, parameters, messages):
    """The source code of the tool."""
    messages.AddIDMessage('informative', 'unique_string', os.getenv('username') )
    foo.hello()
    return

El método AddIDMessage proporciona una manera eficaz de acceder a los mensajes externos almacenados en el archivo messages.xml del directorio esri/help/messages. En este caso, utiliza el mensaje marcado con el Id. unique_string. El mensaje puede ser cualquier cadena. Los mensajes de Id. de Python pueden contener un entero o una cadena; los enteros hacen referencia a los mensajes de Esri y las cadenas las utilizarán los desarrolladores de otras marcas o los usuarios. Puesto que es más fácil hacer cadenas exclusivas, se sugiere definir un Id. de mensaje con un nombre de empresa.

Con la disponibilidad de estos cambios, la nueva estructura de directorio de distribución debe ser

Texto alternativo obligatorio

Para reflejar estos cambios, debe editarse el archivo setup.py. El nuevo setup.py para localización debe ser

nuevo setup.py para localización

Código de muestra para que setup.py incluya los directorios de localización

from distutils.core import setup
setup(name='foo',
    version='1.0',
    packages=['foo'],
    package_dir={'foo': 'foo'},
    package_data={'foo': ['esri/toolboxes/*.*', 'esri/arcpy/*.*', 'esri/help/gp/*.*', 
        'esri/help/gp/messages/*.*', 'esri/help/gp/toolboxes/*.*']},
    )

Los archivos .xml ya se pueden editar en cualquier idioma para el soporte de la caja de herramientas y módulos, y también se pueden copiar en el directorio de su idioma correspondiente como se ha descrito anteriormente. Si los archivos de idiomas se distribuyen para español e inglés, la estructura de directorio debe ser

Texto alternativo obligatorio

Para que se apliquen los cambios de distribución de localización en español, debe editarse el archivo setup.py. El nuevo setup.py para incluir la localización en español debe ser

nuevo setup.py para la localización en español

Código de muestra para que setup.py incluya los directorios de localización en español:

from distutils.core import setup
setup(name='foo',
    version='1.0',
    packages=['foo'],
    package_dir={'foo': 'foo'},
    package_data={'foo': ['esri/toolboxes/*.*', 'esri/arcpy/*.*',
        'esri/help/gp/*.*', 'esri/help/gp/messages/*.*',
        'esri/help/gp/toolboxes/*.*', 'esri/help/es/gp/*.*',
        'esri/help/es/gp/messages/*.*', 'esri/help/es/gp/toolboxes/*.*']},
    )

Siguiendo este proceso, es posible crear y distribuir un solo paquete instalable que admitirá varios idiomas y responderá a la configuración local del sistema operativo con un enfoque director basado en .xml. Al ampliar el geoprocesamiento mediante los módulos Python, los 10 idiomas que admite ArcGIS pueden distribuirse sin necesidad de crear cajas de herramientas y herramientas para cada idioma.

Temas relacionados

5/9/2014