そんな状況では .res.melが読み込まれていないことになってしまうので、メインのMELを source しても uiRes コマンドの部分でエラー停止してしまいます。
.res.melも source するようにすれば良いのですが、カタギさんには酷なはなしでしょう。
そんなシチュエーションを回避するためにも、メインスクリプト内に.res.melを読み込むコードを入れておくと良いかもしれません。
この記事のスクリプトのパスを調べるスクリプトを参考に、サンプルコードを書いてみます。
proc _loadUiRes( string $script ) ///< スクリプト名 /**************************************************************************//** @protected @brief uiResファイルの読み込み。 ******************************************************************************/ { // 自身のパスを調べる。 string $whatIs=`whatIs $script`; // 不明の場合停止 if("Unknown"==$whatIs) error -n ("Unknown "+$script); // 不要部分の削除 string $path; $path=python("'"+$whatIs+"'.replace('Script found in: ','')"); $path=python("'"+$path+"'.replace('Mel procedure found in: ','')"); $path=("\""+dirname($path) + "/"); //------------------------------------------------------------------------------ // リソースファイルパスの作成 string $dir=$path; // 復元用 string $ext=".res.mel\""; // 拡張子 // 言語の確認 if(`about -uii`) /* 英語以外 */ { string $lang=`about -uil`; $path += ($lang+"/"+$script+$ext); } else $path += ($script+$ext); //------------------------------------------------------------------------------ // 実行 if( catchQuiet(`evalEcho ("source "+$path)`) ) { // もし日本語が無かったら英語を読み込む warning -n (`getLastError`); evalEcho("source "+$dir+$script+$ext); } } global proc uiResTestWindow() { _loadUiRes("uiResTestWindow"); string $window=`window`; columnLayout; floatSliderGrp -f 1 -l (uiRes("m_uiResTestWindow.kFloatFieldGrpLabel1")); floatSliderGrp -f 1 -l (uiRes("m_uiResTestWindow.kFloatFieldGrpLabel2")); floatSliderGrp -f 1 -l (uiRes("m_uiResTestWindow.kFloatFieldGrpLabel3")); floatSliderGrp -f 1 -l (uiRes("m_uiResTestWindow.kFloatFieldGrpLabel4")); showWindow $window; }
.res.melファイルの中身はこんな感じ。
displayString -replace -value "test1" m_uiResTestWindow.kFloatFieldGrpLabel1; displayString -replace -value "test2" m_uiResTestWindow.kFloatFieldGrpLabel2; displayString -replace -value "test3" m_uiResTestWindow.kFloatFieldGrpLabel3; displayString -replace -value "test4" m_uiResTestWindow.kFloatFieldGrpLabel4;
スクリプトはこんな風に配置しています。
スクリプトエディタでは、こんな風に実行します。
{ source "test/uiResTestWindow.mel"; uiResTestWindow; }
すると、こんな感じのウィンドウが表示されます。
もちろん日本語版mayaで実行すれば、
問題なく日本語が表示されます。
言語用のサブフォルダを about -uil で指定しているので、有志の方がローカライズファイルを作成すれば、メインスクリプトを修正しなくても多言語対応が出来るはずです。
たぶん。
0 件のコメント:
コメントを投稿