多国语言编程之资源转换

原创 2000年12月14日 10:54:00
 
    湖南省公安高等专科学校内保教研室(410006) 杨霞

    1. 多国语言编程之资源转换问题
    不同国家的人使用着不同语言的操作系统。在Microsoft Window
s下,语言用代码页来识别,不同语言用不同代码页来表示,如"简体中
文"用代码页936表示,而"美国英语"则用代码页1252表示。
    在用Visual C++开发应用程序时,与语种相关信息一般存储在资
源文件(*.RC文件)中,因此,要编制不同语种应用程序(如中文应用程
序、英文应用程序),实质上是要求编写出不同语种的资源文件。在实
际编程中,我们可将不同语种的资源文件编译成相应的动态连接库。
这样,在使用时,可根据操作系统所使用代码页异同,选用由相应语种
的资源文件编译而成的动态连接库,即可使应用程序正常运行。这就
是所谓的多国语言编程问题。
    在开发中文应用程序时,常要求应用程序在中文操作系统和英文
操作系统+外挂汉字平台这两种环境中都能正常运行。但由于工作环
境不同,往往导致同一应用程序,在某种环境下能正常工作,在另一种
环境下则不能正常工作。如中文版的Microsoft Word软件, 在中文操
作系统下能正常运行,但在英文操作系统+外挂汉字平台这种环境下,
显示的就是一堆乱码。
    要解决这一问题,需为不同语种操作系统编制不同语种资源文件,
实际上这也是多国语言编程问题。所不同的是,由于此时所显示信息
并不需随语种而变(无论在哪种环境下都只显示中文信息),因此,编制
多个语种资源文件可以有很简单的方法,此即本文所要讨论的资源转
换问题。该问题可简单地描述为:如果已有了某一语种的资源文件,在
资源内容不变的情况下,如何将其转换为另一语种的资源文件。例如,
已有了简体中文(代码页为936)的资源文件,在资源内容不变的情况下
,如何将其转换为美国英语(代码页为1252)的资源文件。
    2. 如何进行资源转换
    下面以将资源文件从代码页936(简体中文)转换到代码页1252(美
国英语)为例进行说明。
    容易想到但会带来灾难性后果的方法是,直接修改资源属性。这
种方法过程是将Vis ual C++的Workspace窗口切换到Resource View,
选中某项资源,单击右键,从弹出菜单中选择"Properties"命令,此时
系统将会弹出一对话框。在弹出的对话框中,修改Language 项的值,
将其由"简体中文"改为"美国英语"。如此对Resource View中其他各
项资源进行修改,将所有资源项的Language属性都改为"美国英语"。
但是,经此种修改后,再打开资源,会发现资源里的内容变成了一堆不
可读的乱码。更致命的是,即使将资源的Language项的属性重新设为"
简体中文",资源内容仍是不可读的一堆乱码。也就是说,我们根本无
法恢复资源原来内容。因此,如果在修改前没有将资源备份,此种修改
带来的后果将是灾难性的。
    正确的方法是,以某文本编辑器(如EDIT、NOTEPAD)打开资源文件
,在其中查找词"LA NGUAGE",找到后可看到如下内容:
    //////////////////////////////////////////////
    // Chinese (P. R. C.) resources
    #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
    #ifdef _WIN32
    LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
    #pragma code_page(936)
    #endif //_WIN32
    这段代码表示当前使用的代码页为936,所代表的语种为简体中文
。将以上代码段用如下代码段替换
    //////////////////////////////////////////////
    // English (U.S.) resources
    #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
    #ifdef _WIN32
    LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
    #pragma code_page(1252)
    #endif //_WIN32
    以上代码说明资源使用代码页为1252,所代表语种为美国英语。
    经过上面简单修改,即可将代码页为936资源文件转换为代码页为
1252的资源文件,而资源内容不变。
  

MFC多语言实现的两种方法

前不久由于工作需要,用新工具Passolo制作软件的英文版,顺便回顾了一下以前一直用的老方法--动态加载英文资源的DLL。今天有空整理了一下,与大家分享两种方法是如何实现软件多语言的。 方法一:动态...
  • u012102000
  • u012102000
  • 2017年02月25日 13:15
  • 1874

超级简单:ASP.NET Localization (本地化,多语言)

有很多讨论ASP.NET localization(本地化,多语言)的文章,这篇文章是不会的深入讨论ASP.NET Localization (本地化,多语言)。相反,它将给你有关asp.net页面中...
  • qq285679784
  • qq285679784
  • 2015年07月13日 15:01
  • 2290

让asp.net网站支持多语言,使用资源文件

asp.net多语言支持例子
  • smartsmile2012
  • smartsmile2012
  • 2014年11月26日 16:50
  • 4977

字符串资源多国语言版本的出错问题

"Description    Resource    Path    Location    Type "your_string_name" is not translated in af, am...
  • Tonyfield
  • Tonyfield
  • 2013年02月08日 20:19
  • 9291

windows 7 多国语言包官方下载资源共享(32/64位)

Download Official 32-bit (x86) Windows 7 SP1 MUI Language Packs   Arabic / 阿拉伯语: windows6.1-kb248313...
  • bjtbjt
  • bjtbjt
  • 2013年10月31日 15:06
  • 6280

Winform中多国语言窗体的设计以及.NET中资源文件的使用

Winform中多国语言窗体的设计以及.NET中资源文件的使用     最近在做一些多国语言的软件,就学习了一下.NET中的多国语言相应知识,受益不少,下面我就简单介绍一下winform中关于多国语...
  • SunCherryDream
  • SunCherryDream
  • 2014年05月29日 10:05
  • 1449

利用资源文件实现多国语言(含源代码)

代码下载 1、新建WinClass类库 新建ChangLanguage类(实现设置所有窗体的界面语言); 包含的方法有: public static void SetAllLang(strin...
  • zhdd1234
  • zhdd1234
  • 2011年10月12日 10:51
  • 385

Android应用资源总结一:多国语言value文件夹命名

转载自:http://www.cnblogs.com/loulijun/p/3164746.html 和http://blog.csdn.net/shrimpcolo/article/details...
  • lixpjita39
  • lixpjita39
  • 2017年07月16日 11:10
  • 351

VC 多国语言动态切换 资源dll版

  • 2011年06月22日 16:19
  • 162KB
  • 下载

Xplorer2 Pro(资源管理器) V2.3.0.1 多国语言绿色便携版

  • 2013年04月11日 09:05
  • 2.54MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多国语言编程之资源转换
举报原因:
原因补充:

(最多只允许输入30个字)