vc项目汉化

nofuck 2011-09-23 05:19:51
vc项目如何汉化,我把资源里的英文都改成中文以后,出现乱码的现象。
...全文
175 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
nofuck 2011-10-18
  • 打赏
  • 举报
回复
如何翻译VC++软件中的资源文件。

在VC编程中最先碰到的语言问题是当我们选择新建一个MFCAppWizard程序时,VC将询问我们选择何种的语系。如果我们需要生成支持双字节的软件的话,必须使用支持远东语系的DLL。这些DLL在缺省安装时并没有安装,需要你自己手动安装。这些文件在VisualC++光盘的\Bin\IDE目录中,具体如下所述:

日语 appwzjpn.dll
简体中文 appwzchs.dll
台湾中文 appwzcht.dll

如果你想在你的软件中支持中文,你必须把上面的appwzchs.dll复制到你安装Vusial C++的目录下的\Bin\IDE目录下,然后选择中文的AppWizard。否则,即使在中文环境下,你的软件也不能支持中文。

那么,选择中文的AppWizard会有哪些变化呢?有兴趣的朋友可以在文本状态下打开资源文件(*.rc),你会发现其中有这么两段代码:

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE 4, 2
#pragma code_page(936)
#endif //_WIN32

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE 4, 2
#pragma code_page(936)
#endif //_WIN32
#include "res\\New.rc2" // non-Microsoft Visual C++ edited resources
#include "l.chs\\afxres.rc" // Standard components
#include "l.chs\\afxprint.rc" // printing/print preview resources
#endif

其中AFX_TARG_CHS与936定义了资源文件的简体中文属性。
英文属性中为AFX_TARG_ENU与1252,
日文属性中为AFX_TARG_JPN与932,
繁体中文属性中为AFX_TARG_CHT与950。
翻译时必须改成相应的语言属性。

注意下面两句也应改动:
#include "l.chs\\afxres.rc" // Standard components
#include "l.chs\\afxprint.rc" // printing/print preview resources
英文为:
#include "afxres.rc" // Standard components
#include "afxprint.rc" // printing/print preview resources
日文为:
#include "l.jpn\\afxres.rc" // Standard components
#include "l.jpn\\afxprint.rc" // printing/print preview resources
繁体中文为:
#include "l.cht\\afxres.rc" // Standard components
#include "l.cht\\afxprint.rc" // printing/print preview resources

有些朋友从网上下载了一些原代码,但发现即使将菜单,字符串等翻译成中文也不能正确显示,就是由于没有改这些语言属性。另外,直接在文本状态下改资源文件比类似一个对话框接一个对话框的改
Chinese(P.R.C.)要省事许多。

BTW,要把中文Help文件变成英文也可以在文本状态下打开*.hpj文件,然后将Chinese (P.R.C.)改成English (U.S.)。

改完语言属性之后,再去改菜单及字符串就不会有问题了(当然还要小心诸如双字节的%或╲等字符的正确翻译)。

上面讲的是在能得到资源文件原代码的前提下讲翻译工作,那么要是没有原代码怎么办呢?其实没有原代码翻译软件在Windows下并不是一件不可能的事。当然,这要归功与Windows设计人员高超的思想。

大家知道,VC++编译程序时将资源文件单独编译成*.res文件,然后再与其他的目标文件连接成可执行文件。这就使我们可以通过某种工具将可执行文件中的资源单独提取出来。例如,VC++中的资源编译器,就可完成这个工作,不过必须是在Windows NT下,在Window 9x中只能编辑,不能保存。

有兴趣的朋友可以利用VC++打开一个exe文件,但注意在Open对话框中的Open As组合框中选Resources,而不要选Auto,这样打开之后,你会发现出现的即为该可执行文件的所有资源,包括菜单,对话框,及字符串等。不过这时翻译时的语言属性问题不能在文本状态下改了,只能一个一个地改。你可以在相应的资源ID上单击右键,然后在跳出的上下文菜单中选属性,接着在属性页中修改Language。

有朋友可能会注意到,如果一个应用程序将它的所有字符串都放在String Table中的话,通过这种方法就可以将该软件彻底翻译成另一种语言了,于是便会情不自禁地感叹:怪不得weizhenjiang经常教导我们要将所有的字符串放入String Table,原来如此。:-)从上面所述看来,一个软件要利于地域化的话,最好将所有的资源均放入*.rc,但我觉得,其实最好的方法是将资源单独作成一个dll文件(如resource.dll),然后在程序运行时通过如下方法载入资源:
m_hRC = AfxLoadLibrary(_T("resource.dll"));
/*remember to free resource library at exiting,
such as:
if(m_hRC)
AfxFreeLibrary(m_hRC);*/
if(m_hRC)
AfxSetResourceHandle(m_hRC);

这样你就可以象利用可执行体自身的资源一样地利用所有resource.dll中包含的资源了。

这种方法的好处是显而易见的,以后将该软件地域化时,只需改动resource.dll就可以了,很省事。一个真正优秀的软件就应该做长远打算。

nofuck 2011-10-18
  • 打赏
  • 举报
回复
分全给你了,终于解决了。
[Quote=引用 7 楼 swandream 的回复:]
要把资源的属性也改为P.R.C Chinese
[/Quote]
天鹅梦 2011-10-17
  • 打赏
  • 举报
回复
要把资源的属性也改为P.R.C Chinese
nofuck 2011-09-26
  • 打赏
  • 举报
回复
还是乱码的
[Quote=引用 3 楼 gold_water 的回复:]
要改下窗体属性里的字符集
[/Quote]
nofuck 2011-09-26
  • 打赏
  • 举报
回复
还是乱码的
[Quote=引用 2 楼 ljn398431 的回复:]
帮顶下
[/Quote]
gold_water 2011-09-23
  • 打赏
  • 举报
回复
要改下窗体属性里的字符集
ljn398431 2011-09-23
  • 打赏
  • 举报
回复
帮顶下
ljn398431 2011-09-23
  • 打赏
  • 举报
回复
帮顶下
英文原版 Visual C++ 6.0 (注:VC6 没有发布“中文版”,只有第三方汉化版,英文版稳定性比较好。 汉化VC6 下载地址:http://dl.dbank.com/c037ksnqow ) 【特色】 1. 免安装绿色英文原版,解压即可用,支持 WinXP / Vista / Win7,包括 64 位也支持; 2. 在 win7 下使用 vc6 的步骤请参考:http://tieba.baidu.com/p/1106194392 ; 3. 集成 Visual Studio 6.0 SP6 补丁包; 4. 集成 OpenGL GLUT 库; (包括 glut.h、glut32.lib、glut32.dll、glext.h 四个文件) 5. 集成 EasyX_v20120304beta(graphics.h)库; (包括 graphics.h、graphics.lib、graphicsu.lib、EasyX_Help.chm 四个文件) 6. 集成 VC6_Setup(VC6 绿色工具集),可以修复系统中 VC6 存在的问题,还可以创建快捷方式、安装调试库等。 (包括 VC6_Setup.hta) 【安装步骤】 1. VC6 只能在系统中存在一份,继续之前,必须删除系统中已经安装的 VC6; 2. 将下载的压缩包解压缩; 3. 执行 VC6_Setup,打开 VC6 设置窗口; 4. 点“修复 VC6”修复其他 VC6 对系统造成的错误(新装系统无需执行这步,执行了也没问题); 5. 点“安装调试库”使 VC6 具备调试功能(如果安装失败,请手动拷贝 windir_system32 下面的所有文件到 WINDOWS\system32 文件夹); 6. 点“添加桌面快捷方式”在桌面创建 VC6 快捷方式。 【创建新程序】 1. 双击桌面“Visual C++ 6.0”图标,启动 Visual C++ 6.0; 2. 点菜单 File -> New...,Projects 选项卡选择 Win32 Console Application,Project name 写项目名称(例如 easyx),Location 选择项目位置,点 OK; 3. Step 1 of 1 选择“An empty project.”,点 Finish,在下一个窗口点 OK; 4. 至此,一个空的项目建立好。下面添加代码文件。 5. 点菜单 File -> New...,Files 选项卡选择 C++ Source File,File 栏目写文件名(例如 main.cpp),点 OK; 6. 在新打开的窗口中输入代码; 7. 按 F7 编译; 8. 按 Ctrl + F5 执行程序。 【代码示例 (graphics.h 绘图程序)】 #include #include void main() { initgraph(640, 480); circle(320, 240, 50); // 画圆 line(230, 240, 410, 240); // 画线 line(320, 150, 320, 330); // 画线 getch(); closegraph(); } 【代码示例 (OpenGL 绘图程序)】 #include // 函数功能:绘制一个正方形 void MyDisplay(void) { glClear(GL_COLOR_BUFFER_BIT); // 清除颜色 glRectf(-0.5f,-0.5f,0.5f,0.5f); // 绘制矩形 glFlush(); // 保证前面的OpenGL命令立即执行(而不是让它们在缓冲区中等待)。 } // 主程序 void main(int argc, char *argv[]) { glutInit(&argc;, argv); // 对GLUT进行初始化,这个函数必须在其它的GLUT使用之前调用一次。 glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE); // 设置显示方式 glutInitWindowPosition(100, 100); // 设置窗口位置 glutInitWindowSize(400, 400); // 设置窗口大小 glutCreateWindow("My first OpenGL Program"); // 利用前面设置窗口的参数进行创建窗口,并设置窗口名称 glutDisplayFunc(&MyDisplay;); // 调用绘图函数 glutMainLoop(); // 消息等待 }
汉化新世纪从成立开始,即考虑汉化技术的传播问题,当时的口号除了“自由汉化”之外,还有一个就是“让汉化回归平民化”。为了这个,从一开始伟乾就一直考虑进行更全面的汉化教学和传播的问题。建站初期,下载站的结构以森林大地的“汉化超市”为基础,论坛从留言板逐步发展,后来成形的论坛即以YY的为基础。至于汉化教学,曾经考虑以Rapid的网站为原始模版,因Rapid没有加入,加上初期下载站和论坛事务所更加重要,汉化教学遂延后进行。后,伟与栋栋开始筹划教学站,将当时成员的文章和网上能收集的文章开始进行整理发布到网上。再接着,开始讨论用月刊的形式进行文章互动,当时才用的是希网(cn99)的平台进行邮件发送,早期的主编包括伟、Mago、大宇、TWN等等,后因人员变动,月刊停发。再后,乾重新整理月刊,逐步过渡到取消月刊,重新以教学站形式重建,最终成为现在的汉化教学网站。 本教学文集就是将这6年多的文章进行整理、总结的一个成果。这6年,是汉化新世纪成长的时期(到明年2月1日满7年,不知会否有7年之痒?),也是汉化技术发展的一个历程:从工具摸索到理论成形,从快速发展到逐步平民化,PC软件的汉化技术可谓格局已定,是时候进行一个汇总了。同时,在这么多年的技术发展中,我们也深感一些基础技术被种种因素所误导、干扰,影响了汉化新人的入门学习,而教学网站因主编的能力所限,建站初期的思维所限,一些技术的分类、逻辑都存在不足,也希望通过这次全面整理,能够重新梳理,对汉化初级技术的成形做一个新的尝试。因此,本文集的文章虽然都来自汉化教学网站,但分类、排序都做了新的尝试和改动,希望能帮助汉化新人更完整的了解汉化技术、了解汉化新世纪、了解汉化江湖。 整理思路: 汉化时事、时评等内容不用怎么说了,说说技术教学方面吧: 将文章进行梳理,将基础教程放在首位,希望汉化新人能先了解基础概念、懂得从资源入手进行工具选择作为最根本的起步阶段,然后逐个进入到VC、Delphi、VB,然后再过渡到非标。在掌握了上述标准和非标的技术后再对字典技术进行全面了解,自此,基础知识才算扎实,再去弄什么脱壳、自校验才有意义。 有关工具方面,针对最常用对工具进行了分类归纳,因此可能会出现文章重复:比如有关VL的文章,可能会出现在基础教程,同时也出现在VC汉化,也会在出现在“汉化工具”的“Visual Localize ”项目下。 有关汇编脱壳和字体调整的文章,由于不是个人强项,因此在文章规整和排序上,会存在种种不足和混乱,希望给予谅解。 由于相当多的文章图文并茂,还有动画呈现,因此最终生成的CHM文件会相当大,达到2XXMB,也希望给予谅解。其中部分SWF可能会播放不理想,请到教学上站上阅读为宜。由于电子书制作技术也有缺陷,也是需要大家的宽容,谨此也表示感谢。
汉化新世纪从成立开始,即考虑汉化技术的传播问题,当时的口号除了“自由汉化”之外,还有一个就是“让汉化回归平民化”。为了这个,从一开始伟乾就一直考虑进行更全面的汉化教学和传播的问题。建站初期,下载站的结构以森林大地的“汉化超市”为基础,论坛从留言板逐步发展,后来成形的论坛即以YY的为基础。至于汉化教学,曾经考虑以Rapid的网站为原始模版,因Rapid没有加入,加上初期下载站和论坛事务所更加重要,汉化教学遂延后进行。后,伟与栋栋开始筹划教学站,将当时成员的文章和网上能收集的文章开始进行整理发布到网上。再接着,开始讨论用月刊的形式进行文章互动,当时才用的是希网(cn99)的平台进行邮件发送,早期的主编包括伟、Mago、大宇、TWN等等,后因人员变动,月刊停发。再后,乾重新整理月刊,逐步过渡到取消月刊,重新以教学站形式重建,最终成为现在的汉化教学网站。 本教学文集就是将这6年多的文章进行整理、总结的一个成果。这6年,是汉化新世纪成长的时期(到明年2月1日满7年,不知会否有7年之痒?),也是汉化技术发展的一个历程:从工具摸索到理论成形,从快速发展到逐步平民化,PC软件的汉化技术可谓格局已定,是时候进行一个汇总了。同时,在这么多年的技术发展中,我们也深感一些基础技术被种种因素所误导、干扰,影响了汉化新人的入门学习,而教学网站因主编的能力所限,建站初期的思维所限,一些技术的分类、逻辑都存在不足,也希望通过这次全面整理,能够重新梳理,对汉化初级技术的成形做一个新的尝试。因此,本文集的文章虽然都来自汉化教学网站,但分类、排序都做了新的尝试和改动,希望能帮助汉化新人更完整的了解汉化技术、了解汉化新世纪、了解汉化江湖。 整理思路: 汉化时事、时评等内容不用怎么说了,说说技术教学方面吧: 将文章进行梳理,将基础教程放在首位,希望汉化新人能先了解基础概念、懂得从资源入手进行工具选择作为最根本的起步阶段,然后逐个进入到VC、Delphi、VB,然后再过渡到非标。在掌握了上述标准和非标的技术后再对字典技术进行全面了解,自此,基础知识才算扎实,再去弄什么脱壳、自校验才有意义。 有关工具方面,针对最常用对工具进行了分类归纳,因此可能会出现文章重复:比如有关VL的文章,可能会出现在基础教程,同时也出现在VC汉化,也会在出现在“汉化工具”的“Visual Localize ”项目下。 有关汇编脱壳和字体调整的文章,由于不是个人强项,因此在文章规整和排序上,会存在种种不足和混乱,希望给予谅解。 由于相当多的文章图文并茂,还有动画呈现,因此最终生成的CHM文件会相当大,达到2XXMB,也希望给予谅解。其中部分SWF可能会播放不理想,请到教学上站上阅读为宜。由于电子书制作技术也有缺陷,也是需要大家的宽容,谨此也表示感谢。

2,586

社区成员

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

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