在Windows上开发Win32图形程序最佳为WTL,包括迅雷,金山卫士等众多软件在内项目都是使用WTL或者基于WTL框架扩展框架开发的。 WTL目前是开源的 托管在 SourceForge http://sourceforge.net/projects/wtl/ 任何人都可以免费使用,并且WTL项目支持VCExpress版本的VisualStudio 所以无需任何花费就可以合法的使用WTL进行Windows图形化应用程序开发,有基本对话框的 有SDI的 有MDI的 说句实话,WTL模版并不是很好,在于:第一,仅仅提供了英文版本,第二,资源都比较老旧,在阅读WTL模版的同时,我有了汉化的动机,尝试一下,发现能够行得通。这里,特将WTL模版汉化的过程公之于众。
这里先将汉化后的模版给各位看一下啊,没汉化之前的可以自己下载安装测试下,查看区别。
1.模版选择
现在就开始讲如何汉化项目模版
第一.汉化过程不能使WTL在其他语言下无法使用本地语言或者默认语言(英语),因此,第一步先写了一个批处理,获取区域位置,比如中国大陆的是CHS,简体中文,区域ID为2052,美国英语 美国的区域ID为1033
在Windows注册表中有
HKCU\Control Panel\International该键有sLanguage,如果系统是简体中文,为CHS,我们查表 http://msdn.microsoft.com/en-us/goglobal/bb964664.aspx 简体中文为2052,这样我们可以预先翻译好模版文件到2052文件夹中,根据系统语言环境来采取不同的语言模版。为了方便查询LCID,我写了批处理文件,其中:
for /f "tokens=3" %%i in (' reg query "HKCU\Control Panel\International" /v "sLanguage" ' ) do ( set LocalEvar=%%i )%LocalEvar%的值CHS,对应易知是2052
@echo off title Auto Install New WTL Library ^&^& Template ::Copyright (C) 2012 Microsoft Corporation & WTL Team :: :: This file is a part of the Windows Template Library. :: The use and distribution terms for this software are covered by the :: Common Public License 1.0 (http://opensource.org/licenses/cpl1.0.php) :: which can be found in the file CPL.TXT at the root of this distribution. :: By using this software in any fashion, you are agreeing to be bound by :: the terms of this license. You must not remove this notice, or :: any other, from this software. :: END :: END :: NewWTL is Huxizero Base On Old Mode WTL develop Library :: NewWTL Copyright (C) 2013 ::Add Chinese 2052 support :: BatchGotAdmin :------------------------------------- REM --> Check for permissions >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" REM --> If error flag set, we do not have admin. if '%errorlevel%' NEQ '0' ( echo Requesting administrative privileges... goto UACPrompt ) else ( goto gotAdmin ) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~s0", "%1 %2", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" exit /B :gotAdmin if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) pushd "%CD%" CD /D "%~dp0" ::Administartor Batch Code rem Get LCID Copy visdirfile to Setting dir :GetLocalInfo for /f "tokens=3" %%i in (' reg query "HKCU\Control Panel\International" /v "sLanguage" ' ) do ( set LocalEvar=%%i ) ::echo %%i ::) ::echo %LocalEvar% ::echo %1 %2 Set VCVER=%1 if "%2"=="x" Set Exp=%2 ::echo %Exp% ::pause ::exit goto SetLocalID ::GetLocalInfo Win32 API Get Local Infomation ::GetSystemDefaultLCID GetUserDefaultLCID :: Example--> ::@ECHO OFF ::SET __COMPAT_LAYER=#ApplicationLocale ::SET ApplocaleID=0404 ::start notepad.exe :SetLocalID if /i "%LocalEvar%"=="CHS" goto LCID_CHS if /i "%LocalEvar%"=="CHT" goto LCID_CHT if /i "%LocalEvar%"=="ENU" goto LCID_ENU goto Not_FOND_LCID :Not_FOND_LCID SET ErrorMsg="Not Fond LCID" goto ErrorInstall ::SET LCID NUM :LCID_CHS SET DIR_NUM=2052 goto OPFILE :LCID_CHT SET DIR_NUM=1028 goto OPFILE :LCID_ENU SET DIR_NUM=1033 goto OPFILE :DefaultLocal SET DIR_NUM=1033 if not exist %~dp0Wizards\AppWiz\Files\%DIR_NUM% goto NOTDefaultNum ::goto OPFILE goto MD_FILE :OPFILE if not exist %~dp0Wizards\AppWiz\Files\%DIR_NUM% goto DefaultLocal goto MD_FILE :NOTDefaultNum SET ErrorMsg=Not_Fond_Default_LCID;%ErrorMsg% goto ErrorInstall exit :MD_FILE copy %~dp0Wizards\AppWiz\Files\%DIR_NUM%\WTLAppWiz.vsdir %~dp0Wizards\AppWiz\Files >nul copy %~dp0Wizards\AppWiz\Files\%DIR_NUM%\WTLAppWiz.vsz %~dp0Wizards\AppWiz\Files >nul ::pause ::exit goto STARTINSTALL :STARTINSTALL if not exist %~dp0Wizards\AppWzi\setup%VCVER%^0%Exp%.js goto NoInstallJsFile WScript %~dp0Wizards\AppWzi\setup%VCVER%0%Exp%.js /elevated ::if not "%ERRORLEVEL%" =="0" goto ErrorInstall goto ENDProcess :ENDProcess echo return code is %ERRORLEVEL% echo LCID is %LocalEvar% echo %ErrorMsg% . echo Local NUM is %DIR_NUM% echo. echo Your Installed WTL Success! echo Welcome to use WTL exit :NoInstallJsFile SET ErrorMsg="Input Version is not install version steup%VCVER%0%Exp%.js not fond!"%ErrorMsg% :ErrorInstall echo %ErrorMsg% ping -n 3 127.0.0.1>nul pause exit我这里还写了将2052文件copy到项目模版目录。
在AppWiz目录下HTML\(LCUD)下是项目向导的UI,上面后三个图便有那三个HTM文件控制分别为default.htm AppType.htm UIFeatures.htm 在2052目录中预先放好汉化的HTM。
在AppWiz\Scripts\2052 目录下预先放好汉化的default.js
在AppWiz\Template\2052目录下汉化项目模版。
最后,一切设置完毕后。将AppWiz上级目录根据你的Vs版本用Wscript打开js文件,一切安装完毕,那么WTL的汉化也就完成。
汉化后的WTL模版需要的可以找我。