ref : http://hi.baidu.com/harbinzju/blog/item/e67c1018514026bc4aedbccd.html
MUI技术对一种简单方便的多语言解决方案。依照下列步骤,可以简单的对工程添加MUI支持。 1. 准备编译环境必要:Windows Vista SDK Vista SDK RC Compiler 加入了MUI制作的相关功能. 2. 修改原始工程项目,使之支持MUI 1)程序代码不需要做任何修改。 2)编辑资源文件,删除多语言的资源,只保留一种(推荐 英语-美国)。注意:所有资源务必保持语言类型一致。 3)为工程添加资源配置文件(保存为MUI.rcconfig). 以XML格式如下:
typeNameId表示需要本地化的资源类型: CURSOR(1) BITMAP(2) ICON(3) MENU(4) DIALOG(5) STRING(6) FONTDIR(7) FONT(8) ACCELERATORS(9) RCDATA(10) MESSAGETABLE(11) GROUP_CURSOR(12) GROUP_ICON(14) VERSION(16) HTML(23) 生成配置文件后将其加入到工程中。 4)修改工程属性:右键 [Properties]-[Configration Properties]-[Resource]-[Command Line], 加入(例,其中命名、和mui.rcconfig路径请自定义) /r /fm "$(IntDir)/Thp3dv.muires" /q ./mui.rcconfig 注:/fm option: New option of Resource Compiler for MUI support. It is picked up pure resource information from RES file. /q option: use RC Config file for building .mui file. 至此已经完成对原始工程的修改。 3. 制作MUI工程 1)新建工程选择VC++ MFC DLL类型,其它选择默认即可。工程名推荐使用MUI语言名,例如en-US, ja-JP等。 2)删除工程自动生成的所有文件,只保留Header, Resource两个空文件夹。 3) 拷贝原始工程的Resource.h, .RC文件到MUI工程目录, 添加到工程里。 4) 删除上Resource.h文件中非本地化的资源ID。 编辑.RC文件,改为当前MUI语言类型,替换本地化的资源。 5) 修改工程属性: a. [Properties]-[Configration Properties]-[General]: Configration Type: Static Library(.lib) Use of MFC: Use Standard Windows Libraries Character Set: Use Unicode Character Set b. [Properties]-[Configration Properties]-[Librarian]: 删除Output file内容,避免生成无用文件。 c. [Properties]-[Configration Properties]-[Resource]-[General]: Resource File Name 改为Thp3dv_JP.res(例),方便编辑。此项为可选。 d. [Properties]-[Configration Properties]-[Resource]-[Command Line]: /r /fm "$(IntDir)/Thp3dv_JP.muires" /q ../mui.rcconfig 注:mui.rcconfig与原始工程为同一个文件。 c. [Properties]-[Configration Properties]-[Build Events]-[Post Build Event]: link.exe /OUT:"$(IntDir)/Thp3dv.exe.mui" /DLL /NOENTRY /MACHINE:X86 "$(IntDir)/Thp3dv_JP.muires" 注:Build DLL module from MUIRES file and change the filename to “LN file name”.mui. This example is “Thp3dv.exe.mui” if not exist "$(SolutionDir)/$(ConfigurationName)/$(ProjectName)" md "$(SolutionDir)/$(ConfigurationName)/$(ProjectName)" copy "$(IntDir)/Thp3dv.exe.mui" "$(SolutionDir)/$(ConfigurationName)/$(ProjectName)/Thp3dv.exe.mui" muirct -c "$(SolutionDir)$(ConfigurationName)/$(PlatformName)/Thp3dv.exe" -e "$(SolutionDir)$(ConfigurationName)/$(ProjectName)/Thp3dv.exe.mui" 注:Use MUIRCT tool, add checksum of LN file (Ex.Thp3dv.exe) to .MUI file. This is optional. We don’t need to do it. Because if LN file has some problem and fix it and no impact cor resources, we have to change all .mui files if .mui file has checksum.We can confirm .mui file is completed by this option. So we need to use this for testing. 注:文件名和目录结构请自行调整。 4. MUI文件的安装 Vista下(例): X:///BakerDelta.dll X:///en-GB/BakerDelta.dll.mui X:///en-US/BakerDelta.dll.mui XP下(例): X:///BakerDelta.dll X:///MUI/0809/BakerDelta.dll.mui X:///MUI/0409/BakerDelta.dll.mui 语言名请参考:http://msdn.microsoft.com/en-us/library/dd318693(VS.85).aspx 5. 关于MUI测试为了简化测试,可以在程序初始化时加入以下代码实现改变系统[控制面版][区域和语言选项][格式]即可改变程序界面语言。注: 些代码仅对Vista有效,使用前请先判断OS版本,在XP下使用会引起错误。编译时注意WINVER的定义,要大于等于0x0600,否则编译无法通过。 BOOL CThp3dvApp::InitGlobalConfig(void) { BOOL bResult = FALSE; WCHAR LocalName[MAX_LOCALE_NAME_LENGTH]; LCID wdLangID = GetUserDefaultLCID(); LCIDToLocaleName(wdLangID, LocalName, MAX_LOCALE_NAME_LENGTH, 0); ULONG ulNumOfLangs = 1; bResult = SetThreadPreferredUILanguages(0, NULL, &ulNumOfLangs); bResult = SetThreadPreferredUILanguages(MUI_LANGUAGE_NAME, LocalName, &ulNumOfLangs); SetThreadLocale (wdLangID); return bResult; }
本文介绍了一种基于MUI技术的多语言解决方案,详细阐述了如何为项目添加MUI支持,包括修改原始工程项目、创建MUI工程及安装MUI文件等步骤。
3601

被折叠的 条评论
为什么被折叠?



