WTL项目向导汉化指南

在Windows上开发Win32图形程序最佳为WTL,包括迅雷,金山卫士等众多软件在内项目都是使用WTL或者基于WTL框架扩展框架开发的。 WTL目前是开源的 托管在 SourceForge http://sourceforge.net/projects/wtl/ 任何人都可以免费使用,并且WTL项目支持VCExpress版本的VisualStudio 所以无需任何花费就可以合法的使用WTL进行Windows图形化应用程序开发,有基本对话框的 有SDI的 有MDI的 说句实话,WTL模版并不是很好,在于:第一,仅仅提供了英文版本,第二,资源都比较老旧,在阅读WTL模版的同时,我有了汉化的动机,尝试一下,发现能够行得通。这里,特将WTL模版汉化的过程公之于众。

这里先将汉化后的模版给各位看一下啊,没汉化之前的可以自己下载安装测试下,查看区别。

1.模版选择

WTL项目向导汉化指南_第1张图片

2.WTL向导概观
WTL项目向导汉化指南_第2张图片

3.应用程序类型选择
WTL项目向导汉化指南_第3张图片

4.用户界面设置
WTL项目向导汉化指南_第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模版需要的可以找我。

 


你可能感兴趣的:(C++,批处理,项目构建,wtl,国际化支持)