Internationalisation des modules Python

Lors de la distribution de boîtes à outils avec des modules Python, il est possible de personnaliser les modules de manière à prendre en charge toutes les langues gérées par ArcGIS. Les fichiers d'aide et de prise en charge pour ces langues sont stockés dans le répertoire help. Voici une illustration de la structure du répertoire help, s'il est créé pour les 10 langues, la valeur par défaut étant l'anglais :

Un autre texte est requis

Le paramètre régional du système d'exploitation permet de déterminer dans quel répertoire la recherche est effectuée au départ. Le répertoire gp de niveau supérieur est utilisé pour l'anglais ; c'est le répertoire par défaut si le fichier recherché est introuvable dans l'un des répertoires spécifiques aux langues. Le répertoire messages contient le fichier .xml de chaînes localisables utilisé au sein de la boîtes à outils Python et des outils de script Python, tandis que le répertoire toolboxes est utilisé pour remplacer les étiquettes localisables des boîtes à outils binaires (les boîtes à outils personnalisées contenant le modèle et les outils de script).

Le répertoire gp stocke les fichiers .xml pour l'aide du panneau latéral dans la boîte à outils et l'outil. Ces fichiers .xml sont générés à partir des métadonnées de la boîte à outils modifiées dans le menu contextuel Description de l'élément grâce à la fonction createtoolboxsupportfiles ci-après. La commande fonctionne dans n'importe quelle boîte à outils.

RemarqueRemarque :

Vérifiez qu'un alias est défini dans la boîte à outils avant d'exécuter la commande. L'alias est nécessaire pour générer les fichiers d'aide du panneau latéral.

arcpy.gp.createtoolboxsupportfiles(<chemin d'accès au fichier .tbx ou .pyt>)

Cette commande génère tous les fichiers de prise en charge de la boîte à outils dans la structure de dossier esri décrite ci-dessus. Le répertoire esri est créé dans le même emplacement que celui sur lequel la boîte à outils pointait dans le chemin d'accès en entrée de la commande. La structure du répertoire esri qui vient d'être créé doit être la suivante :

Un autre texte est requis

Les fichiers d'aide du panneau latéral sont placés dans le répertoire esri/help/gp, le fichier d'étiquettes localisable est placé dans le répertoire esri/help/gp/toolboxes et le wrapper ArcPy pour la boîte à outils est créé dans le répertoire esri/arcpy. En outre, le répertoire messages doit être créé dans le répertoire esri/help/gp pour rendre les messages d'erreur utilisés dans les outils de script ou les boîtes à outils Python localisables et, au cas où cela n'a pas encore été fait, le répertoire toolboxes qui stocke la boîte à outils et les scripts Python de prise en charge doivent être copiés dans la structure de distribution existante. Une fois le répertoire messages créé et le répertoire toolboxes copié dans le répertoire esri, la structure doit être la suivante

Un autre texte est requis

Une fois les propriétés localisées des boîtes à outils et des outils en place grâce à la création de fichiers .xml spécifiques aux langues sous esri/help/gp et esri/help/gp/toolboxes, un fichier .xml supplémentaire est nécessaire pour stocker les messages d'erreur localisés utilisés dans les outils de script ou les boîtes à outils Python. Dans le répertoire esri/help/messages, créez un fichier .xml nommé messages.xml.

messages.xml

Exemple de code destiné à créer messages.xml :

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

Afin de refléter ce changement, vous devez modifier la méthode execute de SamplePythonToolbox.pyt présenté dans la rubrique Extension du géotraitement par le biais des modules Python afin d'utiliser la méthode AddIDMessage au lieu de AddMessage. La nouvelle méthode execute doit être

Exemple de code destiné à modifier la méthode execute dans le fichier SamplePythonToolbox.pyt :

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

La méthode AddIDMessage est un moyen efficace d'accéder aux messages externes stockés dans le fichier messages.xml contenu dans le répertoire esri/help/messages. Dans ce cas, il utilise le message marqué par l'ID unique_string. Le message peut être n'importe quelle chaîne. Les messages d'ID Python prennent soit un nombre entier soit une chaîne ; les nombres entiers référencent les messages Esri et les chaînes doivent être utilisées par les développeurs ou les utilisateurs tiers. Puisqu'il est plus facile de rendre les chaînes uniques, il est recommandé de définir l'ID de message avec un nom de société.

Une fois ces changements mis en œuvre, la nouvelle structure du répertoire de distribution doit être la suivante

Un autre texte est requis

Pour refléter ces changements, setup.py doit être modifié. Le nouveau fichier setup.py pour la localisation doit être le suivant

nouveau fichier setup.py pour la localisation

Exemple de code pour que setup.py inclue les répertoires de localisation :

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/*.*']},
    )

Les fichiers .xml peuvent maintenant être modifiés dans toutes les langues pour la prise en charge de la boîte à outils et du module et copiés dans le répertoire de leur langue respective, comme indiqué ci-dessus. Si les fichiers de langue sont distribués pour l'espagnol ainsi que pour l'anglais, la structure du répertoire doit être la suivante

Un autre texte est requis

Pour que les changements apportés à la distribution localisée en espagnol soient mis en œuvre, vous devez modifier le fichier setup.py. Le nouveau fichier setup.py pour inclure la version localisée en espagnol doit être le suivant

nouveau fichier setup.py pour la localisation en espagnol

Exemple de code pour que setup.py inclue les répertoires de localisation en espagnol :

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/*.*']},
    )

A la suite de ce processus, il est possible de créer et de distribuer un seul paquetage à installer prenant en charge plusieurs langues et répondant au paramètre régional du système d'exploitation par une approche simple, basée sur un fichier .xml. En étendant le géotraitement via des modules Python, vous pouvez distribuer les 10 langues prises en charge dans ArcGIS sans avoir à créer des boîtes à outils et des outils pour chaque langue.

Thèmes connexes

5/10/2014