そんな状況では .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 件のコメント:
コメントを投稿