及川です。
昨日に続き、MUI の話をします。
リソース DLL の配置
Windows Vista では真のシングルバイナリが実現され、実行形式ファイルや DLL などはリソース(Resource String)を含まず、リソースはそれだけが分離されリソース DLL として用意されていると説明しました。
例として、%windir%\system32 に置かれる実行ファイルや DLL を取り上げました。この例では、%windir%\system32\ja-JP に日本語のリソース DLL が <実行ファイル名>.mui の名前で置かれます。同じように、%windir% に置かれているファイルの場合は、%windir%\ja-JP に日本語のリソース DLL が置かれます。また、%windir%\system32\drivers にあるドライバの場合には、%windir%\system32\drivers\ja-JP に xxxx.sys.mui という形式で置かれているのが日本語のリソース DLL となります。
リソース DLL は UI 言語を追加することで、追加されます。たとえば、日本語版の Windows Vista に英語を UI 言語として追加した場合は、ja-JP の下のリソース DLL に加えて、en-US というフォルダの下にリソース DLL がコピーされます。ただし、%windir%\system32 の下のロケール名のフォルダ(ja-JP や en-US という命名規則で作成されているフォルダ)を探してみるとわかりますが、UI 言語を追加していなくても、フォルダはすでに作成しており、それぞれの下にいくつかのリソース DLL がすでに置かれていることに気づくと思います。たとえば、ベータ2の場合だと、%windir%\system32\zh-TW というフォルダには次のファイルが既定の状態で置かれています。
- comctl32.dll.mui
- comdlg32.dll.mui
- mlang.dll.mui
- msimsg.dll.mui
これらは多言語に対応するアプリケーションが利用する可能性のあるファイルです。OS 側が MUI として利用されなかったとしても、アプリケーションだけでも MUI として利用したいというニーズに応えるために、このようないくつかのファイルは既定の状態ですでにリソース DLL が配置されています。
実行ファイル以外のファイルの MUI 化
Windows の UI は実行ファイル以外でも構成されています。
たとえば、ユーザーの方がお使いになるヘルプファイル。これも MUI に対応する必要があります。したがって、Windows Vista ではヘルプファイルも UI 言語ごとにフォルダを持ち、そこに置かれています。たとえば、日本語版の Windows Vista ではヘルプファイルは CHM の場合には、%windir%\Help\mui\0411 に(0411 は日本語の識別子です)、Windows Vista から導入された新しいフォーマットのヘルプの場合には、%windir%\Help\Windows\ja-JP に置かれています。
マイクロソフト
及川卓也