Интернационализация модулей геообработки

При создании модулей геообработки эти модули можно настраивать для поддержки всех языков, доступных в ArcGIS Pro. Файлы справки и поддержки для этих поддерживаемых языков хранятся в папке esri/help. Ниже показан поднабор в структуре папок help с первыми пятью языками (в алфавитном порядке после английского языка, который является языком по умолчанию), которые поддерживаются в ArcGIS Pro:

help
├──gp (English - Default)
│   ├──messages
│   └──toolboxes
├──ar (Arabic)
│   └──gp
│       ├──messages
│       └──toolboxes
├──cs (Czech)
│   └──gp
│       ├──messages
│       └──toolboxes
├──de (German)
│   └──gp
│       ├──messages
│       └──toolboxes
└──es (Spanish)
    └──gp
        ├──messages
        └──toolboxes

Полное имя языка в скобках не является частью имени папки и должно быть опущено. Дополнительные языки: fi (финский), fr (французский), he (иврит), it (итальянский), ja (японский), ko (корейский), pl (польский), pt-BR (португальский - Бразилия), ru (русский), sv (шведский), tr (турецкий), zh-CN (китайский упрощенный) и zh-TW (китайский традиционный).

Чтобы задать, с какой папки будет начинаться выполнение поиска, используется языковая настройка ArcGIS Pro. Папка верхнего уровня gp используется для английского языка и является папкой по умолчанию, если файл, в котором выполняется поиск, не найден в одной из языковых папок. Каждая папка gp из языковых папок содержит файлы метаданных .xml, относящиеся к определенному языку, которые используются в справке ScreenTip на боковой панели этого инструмента. В подпапках gp/messages находятся файлы .xml локализуемых строк, используемых в наборе инструментов Python и инструментах-скриптах Python, а подпапка gp/toolboxes используется для замещения локализуемых надписей бинарных наборов инструментов (пользовательских наборов инструментов, содержащих модели и инструменты-скрипты). Эти файлы создаются с помощью функции arcpy.gp.createtoolboxsupportfiles(<path to .tbx or .pyt>).

gp
 ├  SamplePythonToolbox_toolbox.xml
 ├  SampleTool_SamplePythonToolbox.xml
 ├──messages 
 └──toolboxes
     └  SamplePythonToolbox.xml

Самый простой способ создания языковых подпапок - сначала создать структуру папок для каталога английского gp языка. При наличии локализованных свойств инструментов и наборов инструментов путем создания .xml-файлов в esri/help/gp с последующим расширением геообработки с помощью модулей Python требуется один дополнительный .xml-файл для хранения локализованных сообщений, используемых в инструментах-скриптах или наборах инструментов Python. В папке esri/help/messages создайте файл messages.xml.

messages.xml

Пример кода для создания messages.xml.

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

Чтобы отразить это изменение, выполните редактирование метода execute из файла SamplePythonToolbox.pyt, чтобы использовался метод AddIDMessage вместо AddMessage. Новый метод execute должен быть следующий:

Метод набора инструментов Python execute

Пример кода метода SamplePythonToolbox.pyt execute для использования метода AddIDMessage:

def execute(self, parameters, messages):
        """The source code of the tool."""
        result = foo.bar.hello()
        messages.AddIDMessage("INFORMATIVE", "unique_id", result)
        parameters[0].value = result

Метод AddIDMessage позволяет получить рациональный способ доступа к внешним сообщениям, хранящимся в файле messages.xml в папке esri/help/messages. В данном случае он использует сообщение, помеченное ID unique_id. Сообщение может быть любой строкой. Идентификатор сообщения может быть целым числом или строкой; целые числа ссылаются на сообщения Esri, а строки должны использоваться сторонними разработчиками или пользователями. Поскольку будет проще, если сделать строки уникальными, одним из вариантов является добавление перед идентификатором сообщения названия компании.

С учетом данных изменений новая структура директорий распределения должна быть:

Src
└──foo
    ├  __init__.py 
    ├  bar.py
    └──esri
        ├──arcpy
        │   └  SamplePythonToolbox.py
        ├──help
        │   └──gp
        │       ├  SamplePythonToolbox_toolbox.xml
        │       ├  SampleTool_SamplePythonToolbox.xml
        │       ├──messages
        │       │   └  messages.xml
        │       └──toolboxes
        │           └  SamplePythonToolbox.xml
        └──toolboxes
            ├  SamplePythonToolbox.pyt
            ├  SamplePythonToolbox.pyt.xml
            └  SamplePythonToolbox.SampleTool.pyt.xml

Теперь папку gp можно скопировать в соответствующий языковой каталог, а файлы .xml могут быть переведены на любой из поддерживаемых языков. Так, например, если языковые файлы распространяются для испанского языка вместе с английским, структура каталогов должна быть следующей:

Src
└──foo
    ├  __init__.py 
    ├  bar.py
    └──esri
        ├──arcpy
        │   └  SamplePythonToolbox.py
        ├──help
        │   ├──es
        │   │   └──gp
        │   │       ├  SamplePythonToolbox_toolbox.xml
        │   │       ├  SampleTool_SamplePythonToolbox.xml
        │   │       ├──messages
        │   │       │   └  messages.xml
        │   │       └──toolboxes
        │   │           └  SamplePythonToolbox.xml
        │   └──gp
        │       ├  SamplePythonToolbox_toolbox.xml
        │       ├  SampleTool_SamplePythonToolbox.xml
        │       ├──messages
        │       │   └  messages.xml
        │       └──toolboxes
        │           └  SamplePythonToolbox.xml
        └──toolboxes
            ├  SamplePythonToolbox.pyt
            ├  SamplePythonToolbox.pyt.xml
            └  SamplePythonToolbox.SampleTool.pyt.xml

В результате этого процесса может быть создан и распространен один установочный пакет на основе XML, который будет поддерживать несколько языков и соответствовать региональным настройкам операционной системы. Расширяя геообработку с помощью модулей Python, все поддерживаемые в ArcGIS Pro языки можно распространять, не создавая для каждого языка отдельные инструменты или их наборы. После завершения интернационализации набора инструментов модуль геообработки будет готов к выпуску.

Связанные разделы