多语言资源的做成

Chrissie 2006-03-29 01:23:43
可不可以使用同一个工程实现多语言版本?
比如说中文版和英文版,对于工程来说,只有资源(*.rc)的不同,能不能通过设定不同的编译Option来链接不同的rc,从而实现两个版本都用一套代码。
...全文
358 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
jslisong 2006-06-08
  • 打赏
  • 举报
回复
mark
clever_boy_2000 2006-05-29
  • 打赏
  • 举报
回复
我在*.dsp中改的
如下:

SOURCE=.\cn_Capture.rc
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File

SOURCE=.\en_Capture.rc
# End Source File
# Begin Source File

如果想用某个资源,比如中文,则把SOURCE=.\cn_Capture.rc下的# PROP Exclude_From_Build 1删除,并copy到SOURCE=.\en_Capture.rc就可。
lldtcn 2006-04-21
  • 打赏
  • 举报
回复
等待中。。。。。。
lldtcn 2006-04-21
  • 打赏
  • 举报
回复
Areslee(懒虫易水)的方法很好,但在一个操作系统下,如何实现可以切换不同语言,而不再依赖操作系统的语言;有欺骗的方法也可以——即中文2000下,在运行程序之前,让系统认为是英文2000,从而运行的程序是英文版的
Chrissie 2006-04-01
  • 打赏
  • 举报
回复
TO: Atomictry(天影)
一个*.rc就可以搞定的事你为什么非要用两个*.rc?
因为我要在同一个操作系统下要能显示两种语言。
Chrissie 2006-04-01
  • 打赏
  • 举报
回复
多谢各位
Areslee 2006-03-31
  • 打赏
  • 举报
回复
以我所知是不能
问题是为什么非要把两个RC放到同一个工程中?分开不行?合成一个也不行?
Atomictry 2006-03-31
  • 打赏
  • 举报
回复
Areslee(懒虫易水)是对的。

一个*.rc就可以搞定的事你为什么非要用两个*.rc? 而且合并到一起并不需要你切换编译Option,到中文上就显示中文,到英文系统就显示英文。

非开的话,可以把rc分开,分别放到两个dll中编译出来dll,再进行AfxSetRourceHandle()进行切换本地资源和dll资源。
cpio 2006-03-30
  • 打赏
  • 举报
回复
利用资源dll制作多语言软件
弹出语言选择窗口,根据选择的语言加载不同的语言DLL

BOOL CDDApp::InitInstance()
{
AfxEnableControlContainer();


CSelDlg ddd;
if(ddd.DoModal()==IDOK)
{
if(ddd.m_nSel == 0)
{
HINSTANCE hinst=::LoadLibrary("taiwan.dll");
if(hinst)
::AfxSetResourceHandle(hinst);
}
}
....
}


制作过程:
用简体中文建立一个应用程序, 然后建立一个dll工程,将刚才程序下的res文件夹,.rc文件,resource.h文件 覆盖到dll工程中 。用Frontpage2003将.rc文件翻译成繁体中文,然后将dll工程的资源设置为中文(台湾),编译。
Chrissie 2006-03-30
  • 打赏
  • 举报
回复
To he_sl(he_sl) :你理解的就是我的要求
Areslee(懒虫易水) :你说的方法能满足在一个工程中同时编辑两个.rc吗?能麻烦你帮我做个简单的例子嘛?
teli_eurydice 2006-03-30
  • 打赏
  • 举报
回复
RC 不一样就可以了,但要保证 菜单之类的ID 相同,要不然响应消息有问题
Areslee 2006-03-30
  • 打赏
  • 举报
回复
如果一定要两个RC,就做成DLL,如果要求在一个工程,就用多语言资源
总有一个解决方案能满足楼主的要求
he_sl 2006-03-29
  • 打赏
  • 举报
回复
不知我理解是否正确
he_sl 2006-03-29
  • 打赏
  • 举报
回复
感觉一楼的回答没有满足楼主的要求
楼主的问题是:同一工程下有两个资源文件(中文版.rc、英文版.rc),编译时有没有可能选择使用哪个.rc?

对了,就算编译时可以选择使用哪个.rc,你能在一个工程中同时编辑两个.rc吗?没想过

我们这里多语言的实现,使用的方法是加载不同版本的资源(字符串)字典
Areslee 2006-03-29
  • 打赏
  • 举报
回复
在工程中建立资源,在资源上右键,选insert copy,然后选择需要的语言,就是为该资源建立了一个不同语言的项了,然后将新项的数据改为相应的语言就行了
Chrissie 2006-03-29
  • 打赏
  • 举报
回复
楼上的,麻烦你详细解释一下实现。
现在我用的资源工程就是dll形式的,目前我用了两个工程来做英文版和中文版(当前的操作系统英文OS),这两个工程的区别就是*.rc和*.bmp的不同。我怎样才能把这两个工程合成一个工程呢?
Areslee 2006-03-29
  • 打赏
  • 举报
回复
1 将所有语言相关的资源放到一个DLL中,替换DLL就是换语言
2 在资源中为每个语种建立相应的项,程序运行时会自己按平台语言使用相应的资源

2,586

社区成员

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

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