VC编程实现软件多语言功能

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

resu lt = C In t ( In t (x 3 R nd () + 1) ) End If R etu rn resu lt
End Function
random 方法的形参 x 代表了奖池中奖号的数量, 该方法返回1~ x 中的任意一个平均分布随机整数。以 返回值为地址查找奖池链表, 得到对应的中奖号码。在 该方法中, R andom ize ( ) 函数以系统时间为种子初始 化随机数生成器, R nd () 函数返回 0~ 1 的平均分布小 数。 313 屏幕显示和音效
根据需求编写XM L 语言资源配置文件, 在V C + + 610 环境下对XM L 的编程, 获取配置项, 保存到变 量中, 然后用变量取代文字从而实现多语言功能。 115 使用数据库加载语言资源
建立相关数据库表, 录入不同语种的语言资源。在 V C+ + 工程中根据语言标志读取数据库表的语言资 源, 并赋给相应变量, 然后显示。 主要过程为打开数据 库连接, 根据语言标志读取表中的字符串, 关闭数据库 连接。
有两种方法来编译链接基于libxm l2 的程序, 第一 种是在V C 环境中设置 lib 和 include 路径, 并在 link 设 置中添加 libxm l21lib 和 iconv1lib; 第二种是用编译器 选项告诉编译器 cl1exe 头文件的位置, 并用链接器选 项 告 诉 链 接 器 link1exe 库 文 件 的 位 置, 同 时 在 w indow s 环境变量p a th 中添加 libxm l2 中 b in 文件夹 的位置, 以便于程序运行时可以找到 d ll (也可以将 d ll 拷贝到 system 32 目录下)。
if (L ang- flg = = 1) m - Cu rren tM enu1L oadM enu ( IDR - M ENU 1) ; 中文菜单
else m - Cu rren tM enu1L oadM enu ( IDR - M ENU 2) ; 英 文菜单
213 in i 文件方法 ① 根据需求编辑语言包 in i 文件
随着计算机技术的快速发展, 软件的交流越来越 频繁, 软件的国际化已成为一个软件开发人员不可回 避的问题。所谓软件的国际化, 就是在软件的设计和文 档开发过程中, 使得功能和代码设计能处理多种语言 和文化习俗, 能够在创建不同语言版本时, 不需要重新 设计源 代 码 的 软 件 工 程 方 法。软 件 界 面 支 持 多 种 语 言, 从而可以被很多国家的人使用, 达到资源共享 的目的。对于提供国际化解决方案的程序设计者而言, 根据用户地区设置来显示对应的语言界面, 将是非常 有意义的。
[Ch inese M enu ] BU T T - O K= 确定 BU T T - Cancel= 取消
[English M enu ] BU T T - O K= En ter BU T T - Cancel= Cancel
② 编写获取 in i 文件中词条的函数, 读取所有配 置的 ID、Cap t ion 条目到V ecto r 或者A rray 中, 还可以 读到变量结构体中: 如Pa raCT &CTN am e 定义结构 体变量。
为了使应用程序支持多种语言, 笔者参看了一些 多语言功能的资料, 都不够全面。最近在某项目的多语 言功能中通过实际的编程实现, 将多语言实现方法简 单总结一下。
1 软件多语言功能的几种实现思路
111 使用纯资源DLL 加载语言资源 使用纯资源DLL 的方法是将不同的语言资源放
入不同的动态库中, 根据需要程序加载不同的动态库, 从而实现软件的国际化。 这样开发者根据需求每增加 一种语言, 就要多做一个相应语言的动态库, 重复劳 动、工作量大而且这种方法实现起来不很方便, 对软件 开发人员要求较高, 不适宜初学者。 112 使用资源文件加载语言资源
END
对应的英文菜单为:
" IDR - English i - M A IN FRAM E M ENU PR ELOAD
D ISCA RDABL E "
B EG IN PO PU P "F ile (&F) "
B EG IN M ENU IT EM "N ew (&N ) tC trl+ N " , ID - F IL E- N EW …
【关键词】软件国际化, 多语言, XM L
中图分类号: T P312
文献标识码: A
ABSTRACT Softw a re in terna tiona liza tion is one of requ irem en ts of softw a re developm en t1 T he thesis firstly in troduces the ba sis
}
else {
A fxSetR esou rceH andle (m - h In stM enu ) ;
get
resou rces from the DLL
}
212 资源文件实现方法 ① 打开工程中的资源文档 (1rc 文档) , 找到菜单
文本, 将其复制一份并略作改动, 也可以直接在工程里 添加一个菜单资源, 将原菜单各项的翻译文本作为新 菜单各项, 新菜单项与原对应菜单项的 ID 号一致。
② 在V C+ + 工程中建立XM L 编程环境: 下载并 安 装 XM L 库, 如 libxm l2 和 iconv 库。 正确安 装 了 libxm l2 和 iconv 库, 包括头文件、lib 文件和 d ll 文件。 注意头文件主要是 libxm l2 和 iconv 的头文件, lib 文件 就是两个 libxm l21lib 和 iconv1lib, 而 d ll 有三个, 即 libxm l21d ll、iconv1d ll 和 zlib11d ll。
使用不同的资源文件, 在同一个工程中建立不同 的语言资源文件, 程序通过加载不同的资源来实现多
语言。这种方法比较简便、适用于静态菜单的多语言显 示, 但是当菜单的词条需要改变时, 资源文件就需要改 变, 程序必须重新编译。 而且不适用于界面的实现。 113 使用 in i 文件加载语言资源
使用in i 文件加载语言资源实现多语言功能。工程 中所有的文字先写入 in i 文件中, 再从中读取, 保存到 变量中, 在程序中以变量取代文字来实现多语言功能。 114 使用 XML 文件加载语言资源
genera l idea and m ean ing of softw a re in terna tion1 In terna tiona lized softw a re requests softw a re ha s m u lti2language
function1Secondly, the thesis dem on stra tes m ethods to relize softw a re m u lti2language1T ha t m ean s loading m u lti2language resou rce
③ 修改主工程: 根语言标志在没有任何资源的主 工程加载语言资源DLL 文件。
④ 在主应用程序类的1h 文件中定义p ro tected 的 H IN STAN CE 类型变量 (如: m h In stM enu)。
⑤ 在主应用程序类的 1cpp 文件: : In it In stance () 函数过程中添加下面代码:
·26· (总 958)
V C 编程实现软件多语言功能
2009 年
文章编号: 100325850 (2009) 1220026203
VC 编程实现软件多语言功能
Sof tware M ulti-Language Function Rea l ized by VC Progamm ing
邸江芬 李晓婷 吴 琼
(北方自动控制技术研究所 太原 030006)
【摘 要】软件国际化是当今软件开发的需求之一。首先介绍了软件国际化的基本概念及意义, 国际化软件要求
软件支持多语言功能。 其次介绍软件多语言的实现方法, 即通过不同的方式加载语言资源从而实现软件多语言
显示, 软件多语言功能实现的思路和方法步骤, 并以具体实例给以说明。 最后对这几种方法进行了比较。
③ 在程序中编写加载词条的函数: 将变量替换文 字。 或者遍历指定窗口中所有组件时, 每发现一个组 件, 就用其 ID 在已经加载的语言包数组中查找, 找到 就用配置的值修改组件Cap tion 属性; 找不到, 就认为 是不需要动态配置, 不做处理。 214 XML 文件存储语言包方法
① 根据XM L 文件的语法规则编写Xm l 的配置文 件。
2 软件多语言功能实现的方法步骤介绍
以V C + + 610 为开发环境, 各种方法的实现步骤 如下。 211 纯资源DLL 实现方法
① 创建主工程: 把V C 框架自动创建的 1rc, 1rc2, 1ico , 1bm p 等文件从程序框架中删除。
② 创建资源DLL : 把主工程中创建的 1rc, 1rc2, 1ico , 1bm p 等文件加入到该资源DLL 工程文件中; 在
m h In stM enu = : : L oadL ib ra ry ( " M enu1dll " ) ; ? M enu1dll 为多语言纯资源的 dll 文件
if (m h In stM enu = = NU LL ) ?
{ retu rn FAL SE; fa iled to load the loca lized resou rces
in deferen t style to rea lize softw a re m u lti2language function1 It a lso exp la in s tha t the though t and m ethod of softw a re m u lti2
language w ith in stance1 L a st , au tho r com p a res these m ethod in the thesis1 KEYWO RD S softw a re in terna tiona liza tion, m u lti2language, XM L
如:
IDR - M A IN FRAM E M ENU PR ELOAD
D ISCA RDABL E
B EG IN PO PU P " 文档 (&F) "
B EG IN M ENU IT EM " 新建 (&N ) tC trl+ N " , ID - F IL E- N EW …
M ENU IT EM SEPA RA TO R M ENU IT EM " 退出 (&X) " , ID - A PP - EX IT
③ 在工程中从Xm l 配置文件读取配置项。 过程 为: 定义解析文档指针、定义结点指针; 打开 Xm l 文 档, 返回文档指针; 根据XPA TH 路径读取字符串; 根 据XPA TH 路径读取整型值; 关闭Xm l 文档。
(下转第 33 页)
第 22 卷 第 12 期
电脑开发与应用
(总 965) ·33·
3 2009208202 收到, 2009210208 改回 3 3 邸江芬, 女, 1976 年生, 硕士, 工程师, 研究方向: 计算机开发与应用。
第 22 卷 第 12 期
电脑开发与Hale Waihona Puke 用(总 959) ·27·
P ro ject 菜单项选择Set t ing s 然后选择P ro ject Set t ing s 的 L ink 标 签, 然 后 在 P ro ject O p t ion s 框 内 输 入 NO EN TR Y。 编译后就产生不同语言的资源DLL 文 件。
M ENU IT EM SEPA RA TO R M ENU IT EM "Ex it (&X) " , ID - A PP- EX IT
END
② 在 主 工 程 中 加 入 变 量 CM enu m -
Cu rren tM enu 对象, 用来根据需要装载中文或英文菜 单资源。CM enu 类是M FC 提供的管理菜单的类, 该类 的L oadM enu () 函数来装载菜单资源, 在加载菜单处 根据语言标志加载不同的菜单资源:
相关文档
最新文档