在Windows上开发Win32图形程序最佳为WTL,包括迅雷,金山卫士等众多软件在内项目都是使用WTL或者基于WTL框架扩展框架开发的。 WTL目前是开源的 托管在 SourceForge http://sourceforge.net/projects/wtl/ 任何人都可以免费使用,并且WTL项目支持VCExpress版本的VisualStudio 所以无需任何花费就可以合法的使用WTL进行Windows图形化应用程序开发,有基本对话框的 有SDI的 有MDI的 说句实话,WTL模版并不是很好,在于:第一,仅仅提供了英文版本,第二,资源都比较老旧,在阅读WTL模版的同时,我有了汉化的动机,尝试一下,发现能够行得通。这里,特将WTL模版汉化的过程公之于众。
这里先将汉化后的模版给各位看一下啊,没汉化之前的可以自己下载安装测试下,查看区别。
1.模版选择
2.WTL向导概观
3.应用程序类型选择
4.用户界面设置
现在就开始讲如何汉化项目模版
第一.汉化过程不能使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到项目模版目录。
WTL 最重要的目录是AppWiz WTL代码由svn托管 不同的版本在中AppWiz目录不同,最重要的是WTLAppWiz.vsz WTLAppWiz.vsdir AppWiz\2052目录下便是存放简体中文的WTLAppWiz.vsz WTLAppWiz.vsdir 使用时将拷贝到AppWiz目录下。
在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模版需要的可以找我。