Python モジュールのローカライゼーション
Python モジュールを使用してジオプロセシング ツールボックスを配布する場合、ArcGIS がサポートするすべての言語に対応するようにモジュールをカスタマイズできます。サポートされている各言語用のヘルプ ファイルとサポート ファイルは、help ディレクトリに格納されています。英語をデフォルトとし、10 種類の言語すべてに対して作成した場合の help ディレクトリの構造を、以下に示します。
最初に検索されるディレクトリは、オペレーティング システムのロケール設定を使用して決定されます。英語の場合は、最上位の gp ディレクトリが使用されます。このディレクトリは、特定の言語のディレクトリ内に検索対象のファイルが見つからない場合に、デフォルトで使用されます。messages ディレクトリには、Python ツールボックスおよび Python スクリプト ツール内で使用されるローカライズ可能な文字列の *.xml ファイルが格納されます。toolboxes ディレクトリは、バイナリ ツールボックス(モデルとスクリプト ツールを含むカスタム ツールボックス)のローカライズ可能なラベルをオーバーライドするために使用されます。
gp ディレクトリには、ツールボックスおよびツール内のサイドパネルのヘルプの *.xml ファイルが格納されます。これらの *.xml ファイルは、下の createtoolboxsupportfiles 関数を使用して、[アイテム説明] ショートカット メニューで編集されるツールボックスのメタデータから生成されます。このコマンドは、どのツールボックスに対しても有効です。
このコマンドを実行する前に、必ずツールボックスのエイリアスを設定してください。サイドパネルのヘルプ ファイルを生成するには、エイリアスが必要です。
arcpy.gp.createtoolboxsupportfiles(<*.tbx または *.pyt のパス>)
このコマンドを実行すると、ツールボックスのすべてのサポート ファイルが、上で説明した esri フォルダ構造内に生成されます。コマンドに入力したパスが指すツールボックスと同じ場所に、esri ディレクトリが作成されます。新しく生成された esri ディレクトリの構造は、以下のようになります。
サイドパネルのヘルプ ファイルは、esri/help/gp ディレクトリに配置されます。ローカライズ可能なラベルのファイルは、esri/help/gp/toolboxes ディレクトリに配置されます。ツールボックス用の ArcPy ラッパーは、esri/arcpy ディレクトリ内に作成されます。また、スクリプト ツールまたは Python ツールボックスで使用されるエラー メッセージをローカライズ可能にするために、messages ディレクトリを esri/help/gp ディレクトリ内に作成する必要があります(まだ作成されていない場合)。ツールボックスとサポート用の Python スクリプトが格納された toolboxes ディレクトリを、既存の配布用ディレクトリ構造にコピーする必要があります。messages ディレクトリを作成し、toolboxes ディレクトリを esri ディレクトリにコピーすると、ディレクトリ構造は以下のようになります。
esri/help/gp および esri/help/gp/toolboxes の下に言語固有の *.xml ファイルを作成して、ツールボックスとツールのローカライズ済みプロパティを所定の場所に配置するとともに、スクリプト ツールまたは Python ツールボックスで使用されるローカライズ済みエラー メッセージを格納するために、*.xml ファイルを 1 つ追加する必要があります。messages.xml という名前の新しい *.xml ファイルを、esri/help/messages ディレクトリ内に作成します。
messages.xml を作成するためのサンプル コードを次に示します。
<Messages>
<Message><ID>unique_string</ID><Description>%1 welcome to the sample tool</Description></Message>
</Messages>
この変更を反映するには、「Python モジュールによるジオプロセシングの拡張」の SamplePythonToolbox.pyt の execute メソッドを編集して、AddMessage メソッドの代わりに AddIDMessage メソッドを使用する必要があります。新しい execute メソッドは、次のようになります。
SamplePythonToolbox.pyt 内の execute メソッドを編集するためのサンプル コード
def execute(self, parameters, messages):
"""The source code of the tool."""
messages.AddIDMessage('informative', 'unique_string', os.getenv('username') )
foo.hello()
return
AddIDMessage メソッドは、esri/help/messages ディレクトリ内の messages.xml ファイルに格納された外部メッセージにアクセスするための効果的な方法を提供します。この例では、unique_string ID のマークが付けられたメッセージが使用されます。メッセージには、任意の文字列を使用できます。Python ID のメッセージでは、整数または文字列を使用できます。整数は Esri メッセージを参照し、文字列は、サードパーティの開発者またはユーザが使用します。文字列を一意にする方が簡単であるため、会社名を使用してメッセージ ID を設定することをお勧めします。
これらの変更を適切に行うと、新しい配布用ディレクトリ構造は以下のようになります。
これらの変更を反映するには、setup.py を編集する必要があります。次に、ローカライズ用の新しい setup.py を示します。
ローカライズ用のディレクトリを含む setup.py のサンプル コードを次に示します。
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/*.*']},
)
ここで、*.xml ファイルを、ツールボックスとモジュールがサポートする言語になるように編集し、上で示した各言語のディレクトリにコピーできます。英語の他にスペイン語用の言語ファイルを配布する場合、ディレクトリ構造は以下のようになります。
スペイン語化ローカライズを配布するように変更するには、setup.py を編集する必要があります。次に、スペイン語化ローカライズを含む新しい setup.py を示します。
スペイン語化ローカライズ用のディレクトリを含む setup.py のサンプル コードを次に示します。
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/*.*']},
)
このプロセスを行った後に、単独でインストール可能なパッケージの構築と配布が可能になります。このパッケージは、簡単な XML ベースの方法で複数の言語をサポートし、オペレーティング システムのロケール設定に対応します。Python モジュールによってジオプロセシングを拡張することで、言語ごとにツールボックスとツールを作成しなくても、ArcGIS がサポートする 10 種類の言語すべてを配布できます。