急!请问多语种软件的开发有哪几种方法(除用语言DLL外)?

shuiyuntian 2004-08-29 02:19:39
我有一个VC开发的项目,现在想加入实现多语种国际化,由于DLL很多,我想请教一下有什么其他的方法来实现多语种?
...全文
188 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuiyuntian 2004-08-31
  • 打赏
  • 举报
回复
自己顶一下!
verybigbug 2004-08-30
  • 打赏
  • 举报
回复
所有版本都编译进模块,运行时会自动根据系统选择的。

这样,同一个程序在不同的系统下会自动调用相应的语言版本。
shuiyuntian 2004-08-30
  • 打赏
  • 举报
回复
我想问一下 verybigbug() ,如果用你的方法,那所有版本的资源是都编译进EXE,还是编译器根据当前系统来选择编译适当的语言版本!
popofish2002 2004-08-30
  • 打赏
  • 举报
回复
恩。。学习
shuiyuntian 2004-08-30
  • 打赏
  • 举报
回复
多谢verybigbug()!
再问清一个问题就给分;)
那多个Res文件是如何进行编译呢?
Hawk_lp 2004-08-30
  • 打赏
  • 举报
回复
多.res文件,其实和多DLL一样!
verybigbug 2004-08-29
  • 打赏
  • 举报
回复
用DLL太麻烦了,VC本身就支持多语种。在资源文件中选择就可以了。
比如:
Dialog
IDD_ABOUTBOX
IDD_ABOUTBOX[中文]
IDD_ABOUTBOX[英文(美国)]
IDD_ABOUTBOX[日文]
等,系统就会自动根据用户的平台选择相应的语种资源。

cnwww 2004-08-29
  • 打赏
  • 举报
回复
学习!
Kudeet 2004-08-29
  • 打赏
  • 举报
回复
比较正式的还是应该用DLL
http://article.taibangla.com/article/1603.htm
pomelowu 2004-08-29
  • 打赏
  • 举报
回复
还是用DLL的方便,而且还可以扩展。
pandengzhe 2004-08-29
  • 打赏
  • 举报
回复
存到单独文件中,各种都行
名牌大灰狼 2004-08-29
  • 打赏
  • 举报
回复
你还是用DLL.这是最方便的方法.http://www.ccw.com.cn/htm/app/aprog/01_8_15_2.asp
AndyZhang_ 2004-08-29
  • 打赏
  • 举报
回复
关注up
verybigbug 2004-08-29
  • 打赏
  • 举报
回复
晕,用INI或者 oyljerry(☆勇敢的心☆) 的方法必须修改代码。

其实用VC的资源管理器进行修改的话,根本就不用修改代码。

方法非常简单:
在VC的资源管理器中选择Dialog,右健选择[Insert Copy]
然后再选择语言中选择你希望的就可以了。然后打开这个Dialog,修改
里面的资源就可以了。

对于Dialog以外的资源如Menu, String 都可以用同样的方法。
这样,你的应用程序就会自动根据系统选择相关的语言了。

这样的话,源代码一句都不用修改。
Kudeet 2004-08-29
  • 打赏
  • 举报
回复
以前看到过有人用INI文件做的,你找找以前的帖子
shuiyuntian 2004-08-29
  • 打赏
  • 举报
回复
多谢楼上的各位,但由于我的DLL太多,每个DLL中又各有资源,如果用DLL的方法就太过繁复,请问存于单独文件或配置文件怎样显示菜单、对话框、工具条等显示资源?或有什么其他的好方法,使原程序修改最少。
oyljerry 2004-08-29
  • 打赏
  • 举报
回复
一、建立工程项目文件
选择语言为中文,其余采用默认,添加中英文切换菜单IDD_MENU_CHANGE

二、用文本形式打开资源文件,找到IDR_MAINFRAME的菜单文本内容如下:
IDR_MAINFRAME MENU PRELOAD DISCARDABLE
BEGIN
POPUP "文件(&F)"
BEGIN
MENUITEM "新建(&N)\tCtrl+N", ID_FILE_NEW
MENUITEM "打开(&O)...\tCtrl+O", ID_FILE_OPEN
MENUITEM "保存(&S)\tCtrl+S", ID_FILE_SAVE
MENUITEM "另存为(&A)...", ID_FILE_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "打印(&P)...\tCtrl+P", ID_FILE_PRINT
MENUITEM "打印预览(&V)", ID_FILE_PRINT_PREVIEW
MENUITEM "打印设置(&R)...", ID_FILE_PRINT_SETUP
MENUITEM SEPARATOR
MENUITEM "最近文件", ID_FILE_MRU_FILE1, GRAYED
MENUITEM SEPARATOR
MENUITEM "退出(&X)", ID_APP_EXIT
END
POPUP "编辑(&E)"
BEGIN
MENUITEM "撤消(&U)\tCtrl+Z", ID_EDIT_UNDO
MENUITEM SEPARATOR
MENUITEM "剪切(&T)\tCtrl+X", ID_EDIT_CUT
MENUITEM "复制(&C)\tCtrl+C", ID_EDIT_COPY
MENUITEM "粘贴(&P)\tCtrl+V", ID_EDIT_PASTE
END
POPUP "查看(&V)"
BEGIN
MENUITEM "工具栏(&T)", ID_VIEW_TOOLBAR
MENUITEM "状态栏(&S)", ID_VIEW_STATUS_BAR
MENUITEM "弹出CD", ID_VIEW_FULLSCREEN
MENUITEM "英文", ID_MENU_CHANGE
END
POPUP "帮助(&H)"
BEGIN
MENUITEM "关于 FullScreen(&A)...", ID_APP_ABOUT
END
END
在此后加入英文菜单资源复制上述文本,把其中的中文改成英文,并作些改动IDR_MAINFRAME_ENGLISH MENU PRELOAD DISCARDABLE
BEGIN
POPUP "File(&F)"
BEGIN
MENUITEM "New(&N)\tCtrl+N", ID_FILE_NEW
MENUITEM "Open(&O)...\tCtrl+O", ID_FILE_OPEN
MENUITEM "Save(&S)\tCtrl+S", ID_FILE_SAVE
MENUITEM "Save as(&A)...", ID_FILE_SAVE_AS
MENUITEM SEPARATOR
MENUITEM "Print(&P)...\tCtrl+P", ID_FILE_PRINT
MENUITEM "Print Preview(&V)", ID_FILE_PRINT_PREVIEW
MENUITEM "Print Setting(&R)...", ID_FILE_PRINT_SETUP
MENUITEM SEPARATOR
MENUITEM "Recent Files", ID_FILE_MRU_FILE1, GRAYED
MENUITEM SEPARATOR
MENUITEM "Exit(&X)", ID_APP_EXIT
END
POPUP "Edit(&E)"
BEGIN
MENUITEM "Undo(&U)\tCtrl+Z", ID_EDIT_UNDO
MENUITEM SEPARATOR
MENUITEM "Cut(&T)\tCtrl+X", ID_EDIT_CUT
MENUITEM "Copy(&C)\tCtrl+C", ID_EDIT_COPY
MENUITEM "Paste(&P)\tCtrl+V", ID_EDIT_PASTE
END
POPUP "View(&V)"
BEGIN
MENUITEM "ToolBar(&T)", ID_VIEW_TOOLBAR
MENUITEM "StatusBar(&S)", ID_VIEW_STATUS_BAR
MENUITEM "Eject CD", ID_VIEW_FULLSCREEN
MENUITEM "Chinese", ID_MENU_CHANGE
END
POPUP "Help(&H)"
BEGIN
MENUITEM "About FullScreen(&A)...", ID_APP_ABOUT
END
END
修改完成后保存资源。

三、在 CMainFrame中加入变量CMenu m_englistmenu 和m_chinesemenu保存中英文菜单资源
加入变量enum Enum{e,c}m_current 保存当前菜单

四、由于默认为中文菜单在 CMainFrame::CMainFrame()中设置m_current=c;表示当前为中文菜单,在CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中装入英文菜单资源 m_englistmenu.LoadMenu("IDR_MAINFRAME_ENGLISH");
HMENU m_hMenu=::GetMenu(this->m_hWnd); // 保存中文菜单
m_chinesemenu.Attach(m_hMenu);
五、加入菜单函数 void CMainFrame::OnMenuChange()
{
if(m_current==e)
{
SetMenu(&m_chinesemenu);
m_current=c;
}
else
{
SetMenu(&m_englistmenu);
m_current=e;
}

}
编译运行程序您就可以获得一个具有英汉对照菜单的应用程序。

15,976

社区成员

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

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