プラグインを国際化した後は、文字列リソースを抽出し、翻訳するために送信できます。重要なのは、ローカライズのプロセスを後から行うことができるということです。ローカライズ バージョンを使用できない場合、プラグインはデフォルトのリソース値を使用して実行を続行します。
ユーティリティ スクリプト pluginResourceUtil を使用して、プラグインのすべての登録リソースのマスタ リストを生成します。
ユーティリティを実行するには、プラグインの名前と生成する出力ファイルの名前を指定します。リソース抽出プロセスを実行するには、プラグインをロードする必要があります。まだロードしていない場合は、ユーティリティがプラグインをロードします。抽出プロセスは、デフォルト言語(英語)で Maya を実行中に行う必要があります。Maya の言語設定をオーバーライドする方法については、Maya のマニュアルを参照してください。
pluginResourceUtil("closestPointOnCurve", "c:/extracted/closestPointOnCurve.pres.mel");
リソース抽出プロセスによって出力されるのは、リソースに新しい値を設定するためのコマンドのリストを含むファイルです。このマスタ ファイルは、プラグインが使用するわけではありません。(このファイルに含まれているデフォルトのリソース値は、マスタ ファイルなしでもプラグインで使用できます)。このファイルは、翻訳が必要な文字列のマスタ バージョンとして使用します。プラグインにはファイルの翻訳バージョンだけが提供されます。
完全な出力ファイル closestPointOnCurve.pres.mel は、 サンプル コードを参照してください。ファイルの一部を以下に示します。
// File closestPointOnCurve.pres.mel
// Resources for Plug-in: closestPointOnCurve
//
// ----------------------------
// Registered string resources:
// ----------------------------
setPluginResource( "closestPointOnCurve", "kAETitle", "Closest Point On Curve Attributes");
setPluginResource( "closestPointOnCurve", "kInputCurve", "Input Curve");
setPluginResource( "closestPointOnCurve", "kInvalidType", "Object ^1s has invalid type. Only a curve or its transform can be specified.");
setPluginResource( "closestPointOnCurve", "kNoQueryFlag", "You must specify AT LEAST ONE queryable flag in query mode. Use the `help` command to list all available flags.");
setPluginResource( "closestPointOnCurve", "kNoValidObject", "A curve or its transform node must be specified as a command argument, or using your current selection.");
setPluginResource( "closestPointOnCurve", "kResults", "Results");
生成されたファイルには、プラグインが登録する各文字列リソースの項目を含みます(C++ リソースと MEL リソース両方)。さらに、プラグインがノードを登録している場合、標準化されたノードの項目と Maya で使用するアトリビュート UI 表示文字列リソースが自動的に生成されます(ノードを正しく登録する以外に、これらのリソースで追加登録は必要ありません)。
翻訳リソース ファイルは、実行時にロードされるように、言語固有の適切な場所にインストールする必要があります。翻訳した各言語のリソース ファイルは、すべて同じ名前にします。保存するディレクトリによって、関連づけられる言語が決まります。リソース ファイル名は、文字列初期化スクリプト内の loadPluginLanguageResources に渡されます。以下の例では、リソース ファイル名は closestPointOnCurve.pres.mel です。
// Load any localized resources
loadPluginLanguageResources("closestPointOnCurve", "closestPointOnCurve.pres.mel");
loadPluginLanguageResources ルーチンは、MAYA_PLUG_IN_RESOURCES_PATH に沿ってリソース ファイルを検索します。
一般的に、プラグインはモジュールとしてインストールし、プラグインのファイルは MAYA_MODULE_PATH に沿って標準化されたディレクトリ構造内にインストールします。MAYA_PLUG_IN_RESOURCES_PATH は、各モジュールの言語固有のリソース ディレクトリ項目を含めるために初期化されます。
プラグイン モジュールのサンプル ディレクトリ階層を以下に示します。リソースには、使用可能なローカリゼーションごとにサブディレクトリが含まれています。日本語のリソースは、resources/ja_JP サブディレクトリにインストールします。日本語で Maya を実行している場合、このディレクトリは MAYA_PLUG_IN_RESOURCES_PATH に追加されます。
リソース ファイルが見つからない場合でも、loadPluginLanguageResources は実行時にエラーを生成しません。プラグインは、単にデフォルトのリソース値を使用して動作を続けます。
closestPointOnCurve プラグインのサンプル モジュール階層と日本語リソースの場所を以下の例に示します。
/SampleModule
/SampleModule/data
/SampleModule/docs
/SampleModule/icons
/SampleModule//modules
/SampleModule/plug-ins
/SampleModule/python
/SampleModule/resources
/SampleModule/resources/ja_JP
/SampleModule/resources/ja_JP/closestPointOnCurve.pres.mel
/SampleModule/scripts
文字列 リソース内のプラグインを修正した場合は、ローカライズ バージョンがマスタ バージョンに同期化された状態を保つために、リソース ファイルの抽出、翻訳、インストールの手順を繰り返す必要があります。