Internationalisierung von Python-Modulen

Beim Verteilen von Geoverarbeitungs-Toolboxes mit Python-Modulen können die Module angepasst werden, um alle von ArcGIS unterstützten Sprachen zu unterstützen. Die Hilfe- und Unterstützungsdateien für diese unterstützten Sprachen werden im help-Verzeichnis gespeichert. Nachfolgend finden Sie die help-Verzeichnisstruktur, wenn sie für alle 10 Sprachen mit Englisch als Standardsprache erstellt wird:

Alternativtext ist erforderlich

Die Gebietsschemaeinstellung des Betriebssystems wird verwendet, um festzulegen, welches Verzeichnis zuerst durchsucht werden soll. Das oberste gp-Verzeichnis wird für die englische Sprache verwendet und ist das Standardverzeichnis, wenn die durchsuchte Datei in keinem der sprachspezifischen Verzeichnisse gefunden wird. Das messages-Verzeichnis enthält die XML-Datei der lokalisierbaren Zeichenfolgen, die in der Python-Toolbox und den Python-Skriptwerkzeugen verwendet werden, während im toolboxes-Verzeichnis die lokalisierbaren Beschriftungen für binäre Toolboxes (benutzerdefinierte Toolboxes mit Modell- und Skriptwerkzeugen) überschrieben werden.

Im gp-Verzeichnis werden die XML-Dateien für die Hilfe im Seitenbereich der Toolbox und des Werkzeugs gespeichert. Diese XML-Dateien werden aus den Metadaten der Toolbox generiert, die im Kontextmenü der Elementbeschreibung mithilfe der nachfolgenden Funktion createtoolboxsupportfiles bearbeitet werden. Der Befehl kann für jede Toolbox verwendet werden.

HinweisHinweis:

Stellen Sie sicher, dass ein Alias für die Toolbox festgelegt wird, bevor der Befehl ausgeführt wird. Der Alias wird zum Generieren der Hilfedateien im Seitenbereich benötigt.

arcpy.gp.createtoolboxsupportfiles(<Pfad zu .tbx oder .pyt>)

Dieser Befehl generiert alle Unterstützungsdateien der Toolbox, die sich innerhalb der oben beschriebenen esri Ordnerstruktur befinden. Das esri Verzeichnis wird im selben Verzeichnis wie die Toolbox erstellt, auf die im Eingabepfad für den Befehl verwiesen wird. Die neu generierte Verzeichnisstruktur esri sollte folgendermaßen aussehen:

Alternativtext ist erforderlich

Die Hilfedateien des Seitenbereichs werden in das esri/help/gp-Verzeichnis eingefügt, die Datei mit den lokalisierten Beschriftungen wird in das esri/help/gp/toolboxes-Verzeichnis eingefügt und der ArcPy Wrapper für die Toolbox wird im esri/arcpy-Verzeichnis erstellt. Außerdem muss das messages-Verzeichnis im esri/help/gp-Verzeichnis erstellt werden, damit die in den Skriptwerkzeugen oder Python-Toolboxes verwendeten Fehlermeldungen lokalisiert werden können. Falls dies noch nicht erfolgt ist, muss das toolboxes-Verzeichnis, in dem die Toolbox und unterstützende Python-Skripte gespeichert sind, in die vorhandene Verteilungsstruktur kopiert werden. Wenn das messages-Verzeichnis erstellt und das toolboxes-Verzeichnis in das esri-Verzeichnis kopiert wurde, sollte die Struktur folgendermaßen aussehen:

Alternativtext ist erforderlich

Wenn die lokalisierten Eigenschaften der Toolboxes und Werkzeuge durch die Erstellung der sprachspezifischen XML-Datei unter esri/help/gp und esri/help/gp/toolboxes vorhanden sind, wird eine zusätzliche XML-Datei benötigt, um die lokalisierten Fehlermeldungen zu speichern, die in den Skriptwerkzeugen bzw. Python-Toolboxes verwendet werden. Erstellen Sie im esri/help/messages-Verzeichnis eine neue XML-Datei mit dem Namen "messages.xml".

messages.xml

Beispielcode zum Erstellen der Datei "messages.xml":

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

Um diese Änderung zu übernehmen, muss die execute-Methode aus der SamplePythonToolbox.pyt aus Erweitern der Geoverarbeitung durch Python-Module bearbeitet werden, um die AddIDMessage-Methode anstelle von AddMessage zu verwenden. Die neue execute-Methode sollte folgendermaßen aussehen:

Beispielcode zum Bearbeiten der execute-Methode in der SamplePythonToolbox.pyt:

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

Die AddIDMessage-Methode ist eine effiziente Möglichkeit, auf die externen Meldungen zuzugreifen, die in der messages.xml-Datei im esri/help/messages-Verzeichnis gespeichert sind. In diesem Fall wird die Meldung verwendet, die mit der unique_string-ID gekennzeichnet ist. Die Meldung kann eine beliebige Zeichenfolge sein. Die Python-ID-Meldungen verwenden eine Ganzzahl oder eine Zeichenfolge; die Ganzzahlen referenzieren Esri Meldungen und die Zeichenfolgen sollten von Entwicklern oder Benutzern von Drittanbietern verwendet werden. Da es einfacher ist, Zeichenfolgen eine eindeutige ID zuzuweisen, kann die Meldungs-ID beispielsweise mit dem Namen eines Unternehmens festgelegt werden.

Wenn diese Änderungen vorgenommen wurden, sollte die Struktur des Verteilungsverzeichnisses folgendermaßen aussehen:

Alternativtext ist erforderlich

Um diese Änderungen zu übernehmen, muss die Datei "setup.py" bearbeitet werden. Die neue setup.py-Datei zur Lokalisierung sollte folgendermaßen aussehen:

neue setup.py-Datei zur Lokalisierung

Beispielcode für setup.py mit einzubeziehenden Lokalisierungsverzeichnissen:

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

Die XML-Dateien können nun zur Toolbox- und Modulunterstützung in jeder Sprache bearbeitet und in das entsprechende Sprachverzeichnis wie oben beschrieben kopiert werden. Wenn die Sprachdateien für Spanisch und Englisch verteilt werden, sollte die Verzeichnisstruktur folgendermaßen aussehen:

Alternativtext ist erforderlich

Um die Änderungen der Verteilung der spanischen Lokalisierung zu implementieren, muss die setup.py-Datei bearbeitet werden. Die neue setup.py-Datei für die Einbeziehung der spanischen Lokalisierung sollte folgendermaßen aussehen:

neue setup.py-Datei für die spanische Lokalisierung

Beispielcode für setup.py mit einzubeziehenden spanischen Lokalisierungsverzeichnissen:

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

Nach diesem Prozess ist es möglich, ein einzelnes installierbares Paket zu erstellen und zu verteilen, das mehrere Sprachen unterstützt und auf die Gebietsschemaeinstellung des Betriebssystems mit einem einfachen XML-basierten Ansatz reagiert. Indem die Geoverarbeitung durch Python-Module erweitert wird, können alle 10 Sprachen, die in ArcGIS unterstützt werden, verteilt werden, ohne Toolboxes und Werkzeuge für jede Sprache erstellen zu müssen.

Verwandte Themen

5/9/2014