怎样通过资源文件实现多语言软件

fazhu 2002-04-23 06:19:44
假设我要做个有中文和英文的软件,我在资源文件中设了两张字符串表格(一张是系统默认的中文,一张是英语[美国]),他们有相同的标识号,如(在第一张表中):
-----------------------------------------------------
标识号 中文 英语[美国]

101 打开 Open

102 保存 Save
. . .
. . .
. . .
------------------------------------------------------
在第二张中
------------------------------------------------------
标识号 英语[美国] 中文

101 Open 打开

102 Save 保存
. . .
. . .
. . .
------------------------------------------------------
我该怎样从相同的标识号中读出不同语言的内容呢?
...全文
68 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nik_Amis 2002-12-16
  • 打赏
  • 举报
回复
把两种语言封装到两个dll:
res2052.dll,res1033.dll

然后loadlibrary()
然后使用里面的字符串资源就可以了
cjwcyc 2002-12-16
  • 打赏
  • 举报
回复
up
jyd 2002-05-20
  • 打赏
  • 举报
回复
补充,所有字符串都在一张表中:

标识号 英文 中文GB 中文BIG5
101 Open 打开 打開
102 Save 保存 保存
.
.
.
500 ... ... ...
jyd 2002-05-20
  • 打赏
  • 举报
回复
下面是MSDN帮助中的内容:
多字符串表模式
由资源编辑器创建的资源文件可以包含多字符串表,每个字符串表包含了为一种不同的语言本地化的字符串。运行时将会基于系统的 LCID 自动选中一个字符串表;如果找不到匹配,系统将加载资源文件中的第一个字符串表。这一模式有利于创建一个将要以两种或更多种语言发布、而不需要在单个实例中支持多种语言的应用程序。
Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long '得到系统语言的默认LCID
GB码的LCID是: 804 (16进制)
BIG5码的LCID是: 404 (16进制)
MSDN的第一张光盘的ATM例子,没有使用相同的标识号,而是不同的偏移。
我也想知道怎样从相同的标识号中根据系统语言类型读出不同语言的内容??
请高手指点。
例如101: 如果判断是英文系统,就取出"Open"
如果判断是中文系统,就取出"打开"
例如102: 如果判断是英文系统,就取出"Save"
如果判断是中文系统,就取出"保存"

关键是如何使用LCID来自动提取相应语言的字符串???
dbcontrols 2002-04-24
  • 打赏
  • 举报
回复
MSDN的第一张光盘有个ATM的例子完全是你需要的
enmity 2002-04-23
  • 打赏
  • 举报
回复
\Program Files\Microsoft Visual Studio\VB98\Template\Code\注册表访问.bas

有你需要的例子
vivan19781111 2002-04-23
  • 打赏
  • 举报
回复
使用资源文件的一个字符串表格,就可以实现在不同语言机器上显示出不同语言,利用API函数,简单例子如下:
Public Bas_Res_Start_Num As Integer '全局变量,资源文件文本串开始的号码
Public Bas_Default_FontName As String '全局变量,界面使用的默认字体

'声明API函数 开始
'取得当前的默认系统“地方”(Location)设置的API函数
Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
'声明API函数 结束


'自定义标准模块内部函数,设置界面的语言变量
'输入:无
'输出:无

Public Sub Set_LCID()
'***************************************************
'* 根据系统的默认Location,得到界面的语言变量 开始 *
'***************************************************
Select Case GetSystemDefaultLCID
'GB Chinese
Case &H804
'Set Default Font(宋体)
Bas_Default_FontName = ChrW(&H5B8B) + ChrW(&H4F53)
Bas_Res_Start_Num = 1000 '资源文件的字符串表格1000位置到1999为汉字
'Japanese
Case &H411

Bas_Default_FontName = "MS UI Gothic"
Bas_Res_Start_Num = 2000 '资源文件的字符串表格2000位置到2999为日文
'Other
Case Else
'Set Default Font(Arial)
Bas_Default_FontName = "Arial"
Bas_Res_Start_Num = 3000 '资源文件的字符串表格3000以后为英文
End Select
'***************************************************
'* 根据系统的默认Location,得到界面的语言变量 结束 *
'***************************************************
End Sub

1,066

社区成员

发帖
与我相关
我的任务
社区描述
VB 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧