そんな状況では .res.melが読み込まれていないことになってしまうので、メインのMELを source しても uiRes コマンドの部分でエラー停止してしまいます。
.res.melも source するようにすれば良いのですが、カタギさんには酷なはなしでしょう。
そんなシチュエーションを回避するためにも、メインスクリプト内に.res.melを読み込むコードを入れておくと良いかもしれません。
この記事のスクリプトのパスを調べるスクリプトを参考に、サンプルコードを書いてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | 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ファイルの中身はこんな感じ。
1 2 3 4 | 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 件のコメント:
コメントを投稿