为了设计一个多语言的程序,简体/繁体的,我把简体和繁体的资源都放到了一个资源文件里面。假设两个函数f(简体) = 繁体,g(繁体) = 简体。
如果只有一个资源文件,没有任何问题,但是,我的程序是多个工程的。
工程A中,存在A.rc,假设里面有 IDS_AA字符串资源,我在工程B中strOld.LoadString(IDS_AA),我们假定strOld的正确值为strNew,如果在简体操作系统下面,就会发现,strOld实际上是 g(strNew) 也就是说,我对strOld进行一次f运算,才能够得到正确的ids_aa。   相反,如果在繁体操作系统下,strOld.LoadString(IDS_AA)就会得到f(strNew)的值。也就是说,strOld load进来的字符串都是乱码,但是经过一次f或者g运算,才能够得到正确的字符串。
   请问,这是为什么?
    

解决方案 »

  1.   

    采用MLangX组件,可以管理界面中的语言字串项目,在Cache中HASH方式查寻字串很快。
    下载 http://www.1bitsoft.com/downloads/mlxdemo1_1.zip
    可以与作者[email protected]联系 QQ 12821922
    正在征集测试用户,你可以得到一份正版的许可
      

  2.   

    http://www.wingsofts.com里面也有一个多语支持控件:SwitchLanguage
      

  3.   

    把所有的资源都放到一个工程里?好像不合适吧?
    资源文件里面记录了语言标识,比如我用的是简体中文,是这样的:
    /////////////////////////////////////////////////////////////////////////////
    // 中文(中华人民共和国) resources#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
    #ifdef _WIN32
    LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
    #pragma code_page(936)
    #endif //_WIN32不同的语言这部分内容是不相同的,所以将不同类型的资源放到一个rc文件中会有问题。