转载自:https://www.evget.com/article/2012/6/18/17004.html
概述:BCGControlBar本地化机制提供了一个创建多语言应用程序的非常简单和可靠的方法。本文将为你详细介绍如何进行BCGControlBar本地化(汉化)。
BCGControlBar本地化机制提供了一个创建多语言应用程序的非常简单和可靠的方法。
BCGControlBar语言包文件:
本地化文件位于BCGCBPro\L.*目录中,其中* - 语言名称前缀(FRA - 法国,ITA - 意大利,...)。特定语言资源DLLs位于BCGControlBar\Bin目录下:
BCGCBProResCHS.dll | Chinese | BCGCBProResITA.dll | Italian | ||||
BCGCBProResCSY.dll | Czech | BCGCBProResJPN.dll | Japanese | ||||
BCGCBProResDEN.dll | Danish | BCGCBProResKOR.dll | Korean | ||||
BCGCBProResDEU.dll | German | BCGCBProResPTG.dll | Portuguese | ||||
BCGCBProResDUT.dll | Dutch | BCGCBProResROM.dll | Romanian | ||||
BCGCBProResELL.dll | Greek | BCGCBProResRUS.dll | Russian | ||||
BCGCBProResESP.dll | Spanish | BCGCBProResSKY.dll | Slovak | ||||
BCGCBProResFRA.dll | French | BCGCBProResSLV.dll | Slovenian | ||||
BCGCBProResHUN.dll | Hungarian | BCGCBProResTRK.dll | Turkish |
BCGControlBar DLL本地化:
- 请将以下成员加入到您的应用程序类中:
HINSTANCE m_hinstBCGCBProRes; - 在应用的InitiInstance()中添加DLL资源初始化:
m_hinstBCGCBProRes = LoadLibrary (_T("BCGCBProRes***.dll")); // *** - language
BCGCBSetResourceHandle (m_hinstBCGCBProRes); - 卸载ExitInstance中的DLL资源:
FreeLibrary (m_hinstBCGCBProRes);
BCGControlBar静态库本地化:
在该项目的“Resource Includes”对话框(View | Resource Includes)修改
#include "BCGCBPro.rc"
为:
#define _BCGCBPRO_STATIC_
#include "L.***\BCGControlBar.rc" // *** language
#pragma code_page(code)
例如:
#define _BCGCBPRO_STATIC_
#include "L.FRA\BCGControlBar.rc"
#pragma codepage(1252)
如何将库资源翻译成新语言?
- 在BCGControlBar目录下,创建新的子目录叫做“L.***”,其中“***”是语言的名称前缀;
- 从任何其他现有的语言目录复制下列文件:
BCGCBRes.dsp
BCGCBRes.dsw - 从BCGControlBar目录复制BCGCBPro.rc(英语资源)。将它重新命名为BCGControlBar.rc;
- 在Visual C++中,打开BCGCBRes项目;
- 删除资源的版本信息;
- 将DLL输出的文件名更改为“..\..\bin\BCGCBProRes***.dll”(*** - 表示语言名称的前缀);
- 转换对话框,字符串和菜单资源;
- 创建项目。因为BCGControlBar.rchas参考的BCGControlBar的共同资源(位图,图标和光标),会要求你创建“RES”子目录。这是Visual Studio资源编辑器的一个问题 - 它不解析从项目设置以正确的方式获得路径。只需回答是,L.***\res就会被创建。当资源文件创建完成后(静态和DLL模式),将采用正确的RES路径(BCGControlBar dir\RES)。语言资源DLL将被放置到BIN目录。