zoukankan      html  css  js  c++  java
  • 程序的多语言支持

    程序的多语言支持 收藏
     
    经常会遇到这样的问题,程序要支持多种语言的操作系统。下面就说说VC6下怎样实现。

    一、使用字符列表文件
        这种方法算是比较好的。说白了就是配置文件,把所有需要显示的字符串都放在一个文件里,每种语言对应一个文件。如Simplified Chinese.ini、Traditional Chinese.ini、English.ini。文件内容示例如下:
        // In Simplified Chinese.ini
        ID_APP_CAPTION = 我的程序
        ……
       
        // In English.ini
        ID_APP_CAPTION = MyProgram
       
    采用这种方法,程序中通常会创建一个类(如CLanguageManager)用来专门管理这些琐事。需要显示字符串,就通过调用CLanguageManager的方法(如GetAppCaption())来取得。
       
    这方法的好处是你可以在程序运行时改变语言。缺点是需要仔仔细细的撰写这些配置文件。顺便提一下,早期版本的Skype用的就是这方法,不过它的配置文件是xml格式。
       
    二、使用资源DLL

        上面是每种语言对应一个配置文件,资源DLL类似,不过是每种语言对应一个资源DLL,类似的就会有Simplified Chinese.DLL、Traditional Chinese.DLL、English.DLL这样的DLL。资源DLL是一种特殊的数据,不能用上面的简单读取文件的方法来初始化内容,而会用到LoadLibrary和AfxSetResourceHandle两个函数。示例代码如下:
       
        BOOL CMultilanguageApp::InitInstance()
        {
         AfxEnableControlContainer();
       
         if (m_bChinese)
         {
          m_hLangDLL=::LoadLibrary("Chinese.dll");
         }
         else
         {
          m_hLangDLL=::LoadLibrary("English.dll");
         }
       
         AfxSetResourceHandle(m_hLangDLL);
         ……
        }

    与第一种方法比,资源DLL由于都是在VC6的集成环境中编辑,优点是比较直观,缺点是需要维护多份资源代码,且每次修改资源,都要重新编译和链接。第一种方法则只需要修改配置文件则可。同时,资源DLL的方法也做不到程序运行时切换语言。
       
    三、包含多份资源

        这种方法和第二种“使用资源DLL”的方法类似,不同之处是你可以在一个工程中管理多份资源,而不需要创建资源DLL。奥妙在于,资源编辑时,VC6 IDE提供了Insert Copy这个选项。在Insert新Copy时你可以指定与原资源不一样的语言。假设你的资源文件中有语言为“简体中文”和“繁体中文”的两份,那程序运行在简体下时,它便会显示简体中文,在繁体中文下时便会显示繁体中文的界面。在语言选择列表的最上面有个“Neutral”项,如果你创建了这样的资源,那么在每个操作系统中都将显示“Neutral”的资源,就是独立于操作系统代码页的意思。这种方法同样做不到动态切换语言,与第二种方法比,好处是不用管理资源DLL,程序启动时,会自动匹配相同代码页的资源。
       
       
       


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/swimmer2000/archive/2008/12/16/3529053.aspx

  • 相关阅读:
    jquery 操作大全
    http获取图片信息
    微信公众号服务号与订阅号有什么区别?
    国际语言代码 Language Code
    vs 2012 未能找到与约束contractName Microsoft.VisualStudio.Utilities...匹配的导出
    SQL Server 获取满足条件的每个条件下的前N条数据
    使用uploadify上传图片时返回“Cannot read property 'queueData' of undefined”
    Visual Studio 2017 添加引用报错(未能正确加载ReferenceManagerPackage包)
    html之select标签
    jQuery中Ajax的属性设置
  • 原文地址:https://www.cnblogs.com/kevinzhwl/p/3879007.html
Copyright © 2011-2022 走看看