[D言語][Regnessem] AddIn/StrRsc/GetLocalStrサービス
さっきのuiモジュールと同様にしてstrrscモジュールも作ってみた。
これで
strrsc.GetLocalStr(MODULENAME, "UI", "Switch", r"On/Offの切り替え", buf.length, (LPBYTE)buf);
みたいなかんじでロケール文字列を取得できる。調子に乗って多言語ファイルも作ってみた。
昨日のUIサービスを追加するコードを書き直すとこんな感じ。
(略) import strrsc; extern (Windows) int Munokun_OnOff(WPARAM wParam, LPARAM lParam) { PNsmUIServiceInfo pUI = (PNsmUIServiceInfo)lParam; if( pUI.nInfoKey == NMUI_GETCAPTION ) { char[64] buf; strrsc.GetLocalStr(MODULENAME, "UI", "Switch", r"On/Offの切り替え", buf.length, (LPBYTE)buf); lstrcpyW( (LPCWSTR)pUI.lpInfo.lpBuffer, toWCSz(buf) ); } if( pUI.nInfoKey == NMUI_ONCLICK ) { char[64] buf1, buf2; if ( !isMunokunOn ) { isMunokunOn = true; strrsc.GetLocalStr(MODULENAME, "UI", "On", r"Onにしました", buf1.length, (LPBYTE)buf1); } else { isMunokunOn = false; strrsc.GetLocalStr(MODULENAME, "UI", "Off", r"Offにしました", buf1.length, (LPBYTE)buf1); } strrsc.GetLocalStr(MODULENAME, "General", "Caption", r"NSMSGS", buf2.length, (LPBYTE)buf2); ui.MessageBox(null, toWCSz(buf1), toWCSz(buf2), MB_OK); } return 0; } (以下略)
追記:起動中に言語を切り替えても機能メニューの文字列はそのまんまなのね。Raoさんがa17で直すかもっておっしゃってるので期待age。 よく読み返すとそうはおっしゃってないですね。すいません。
それにしても、D言語のモジュールっていうのはいいね。
#includeのときみたいに堂々巡りにならないし、名前空間を使って
クラスみたいな書き方も出来るしね。
Javaはよく知らないんだけど、そこから受け継いだのかな。。。