现在我做了个小程序,但是编译后,aboutmenu上,出现的都是中文,主要是我的系统是中文的。但是目前这个程序需要支持多国语言,我该如何来做?谢谢各位高人先

解决方案 »

  1.   

    比较常用的方法就是资源dll吧,具体方法可以到网上搜一下。
      

  2.   

    偶,看了一些帖子,说资源dll有局限性。
    但是说实话,我也没有找到一个帖子比较好的,一步一步的说了,如何用资源dll来做这个多国语言支持的工作。最好能有点代码片段,给我一些参考,这样偶实现起来比较方便。偶继续查查看,高人们,还请继续给我点点拨,谢谢
      

  3.   

    资源dll的原理就是先制作多个资源dll,然后进程有选择的去加载这些资源dll。
    一般我们开发的时候都是用的默认资源,这些资源都在当前进程内,资源dll就是让当前进程去加载其他dll来替换默认资源。
    我记得方法也挺简单,Load一下资源dll,然后调用一个XXXResourceXXX之类的api函数就行了。
      

  4.   

    偶有点晕了。MFC下加载这个方面,我知道了。代码比较简单。把下面的代码加入初始化函数InitInstance的顶部:   
    //调入资源DLL   
    m_hDemoDLL   =   AfxLoadLibrary(_T("Resource.dll"));   
    //告诉应用程序设置资源句柄m_hDemoDLL;     
    AfxSetResourceHandle(m_hDemoDLL);     
        
    ExitInstance加入以下代码:   
    AfxFreeLibrary(m_hDemoDLL);//释放DLL资源;现在有个问题。我已经开发过了一些代码。这些代码,已经用了一些资源。我如何做这些不同的DLL文件呢?比如一个纯英文,一个纯简体中文的?
      

  5.   

    需要再做和你之前加的一模一样的资源,就是ID什么的必须一样,我印象中只要共用一个resource.h就行,但是rc文件得各自修改。
    当然,必须是所有资源,包括图片对话框字符等等。想想原理就知道了,因为他只是替换,所以资源ID必须保持一样才行。
      

  6.   

    king820802 大侠,网上我有搜索到这些东东,但是就是不知道具体如何实现。这些想必有些免费的code,可以套用一部分的吧。XML的解析什么的,然后如何更新菜单上的文字什么的?能否给偶点参考?谢谢
      

  7.   

    我之前做游戏的时候,我们的引擎是分析源代码中所有用到的字符串,然后汇总到一起,等需要多语言支持的时候再把汇总结果翻译一遍生成一个新文件,这个思想应该类似XML做多语。
      

  8.   


    我刚刚建立了一个MFC static的dll,然后把我的工程里面的rc和res目录下的东西copy过来,去掉了新建的chnrcs的res和rc文件。但是编译遇到下面的错,我的步骤是不是还是有问题,请帮忙指正,谢谢--------------------Configuration: chnres - Win32 Debug--------------------
    Compiling resources...
    E:\Work\chnres\chnres.rc (82): error RC2104 : undefined keyword or key name: IDR_MAINFRAME
    Error executing rc.exe.chnres.dll - 1 error(s), 0 warning(s)
      

  9.   

     恩,这个感觉和XML差不多,但是这个不需要解析代码了,Windows自己已经带了。但是大家为什么不用这个,而用XML,我想知道为什么?可有什么考虑的原因啊?
      

  10.   

    我认为用文本的方式(如:INI,用UNICODE编码)实现多语言比用DLL资源好
    原因是:
    1.文本的方式可以让任何人翻译成不同的语言版本
    你只需要制作英文版本即可
    软件运行时, 根据当前系统的使用的语言加载不同的语言文件, 翻译界面元素
    2.不用每次都编译DLL资源文件, 方便修改至于LZ说的菜单, 运行时修改菜单文本即可达到多语言的效果
      

  11.   

    qifa说的,我觉得挺有道理的,毕竟文本翻译工作对于大型软件来说,有很多工作。而且有可能翻译的人并不知道如何来写软件。
    这个时候用INI或者XML,确实能够得到这些好处。UNICODE的好处是是大家都能显示文本文件内容。谢谢。但是目前我的软件,需要翻译的内容比较少,想先尝试下dll,现在编译新的dll出现了点问题,不知道是哪里步骤错了?各位帮我看看,谢谢
      

  12.   

    还没有弄好,继续Googling。网上应该有类似的demo的吧,继续找
      

  13.   

    楼主,你所说的那个左上方的about菜单是会自动随着不同语言的系统而自动改变的,因为这个菜单是系统提供的不然楼主也可以去掉这个菜单
      

  14.   


    哦,不好意思,偶就一个系统。没法看,随系统自己变,那就无所谓了,谢谢jerry4711偶回去还是要试试,把Dll的弄好。到时候像各位汇报,结贴,谢谢!有问题,偶就要继续盖楼了,各位还请帮我看看。