当创建地理处理模块时,可对模块进行自定义以使其支持 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 文件。 gp/messages 子目录中包含 Python 工具箱和 Python 脚本工具中使用的可本地化字符串的 .xml 文件,而 gp/toolboxes 子目录用于覆盖二进制工具箱(包含模型和脚本工具的自定义工具箱)的可本地化标注。 可以使用 arcpy.gp.createtoolboxsupportfiles(<path to .tbx or .pyt>) 函数生成这些文件。
gp
├ SamplePythonToolbox_toolbox.xml
├ SampleTool_SamplePythonToolbox.xml
├──messages
└──toolboxes
└ SamplePythonToolbox.xml
创建特定于语言的子目录的最简单方法是首先为英语 gp 目录创建文件夹结构。 通过 Python 模块扩展地理处理后,通过在 esri/help/gp 下创建 .xml 文件对工具箱和工具的属性进行本地化后,需要一个附加 .xml 文件用于存储脚本工具或 Python 工具箱中使用的本地化消息。 在 esri/help/messages 目录中,创建 messages.xml 文件。
以下是用于创建 messages.xml 的示例代码:
<Messages>
<Message><ID>unique_id</ID><Description>%1, welcome to the sample tool</Description></Message>
</Messages>
要反映此更改,需要对 SamplePythonToolbox.pyt 文件中的 execute 方法进行编辑,以便使用 AddIDMessage 方法而非 AddMessage 方法。 新 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 方法提供了对 esri/help/messages 目录的 messages.xml 文件中所存储的外部消息的有效访问方法。 在本例中,它将使用具有 unique_id ID 标记的消息。 该消息可以为任意字符串。 消息 ID 可以是整数或字符串;整数引用 Esri 消息,而字符串应由第三方开发人员或用户使用。 由于确保字符串的唯一性更为容易,所以建议使用公司名称作为消息 ID 的前缀。
完成上述更改后,新的分发目录结构应为如下所示:
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 中支持的所有语言进行分发,而无需为每种语言创建工具箱和工具。 完成对工具箱的国际化后,地理处理模块已准备就绪,可供分发。