现本人要开发一个软件,需要支持几种语言,中文、英文两种,以后支持多种。我想了用两种方式实现,第一种是资源封装成动态库的形式,第二种是配置文件的形式,类似Nero的多语言选择。请问各位高手,第二种怎么样实现比较好,特别是在对话框里面的话,字的长度是不一样的由于语言的不同。如果采用第一种的话,以后别的语言的翻译工作就落在自己身上了,还要编译,也是麻烦。各位高手请指教

解决方案 »

  1.   

    利用资源dll制作多语言软件
    弹出语言选择窗口,根据选择的语言加载不同的语言DLLBOOL CDDApp::InitInstance()
    {
            AfxEnableControlContainer();
      CSelDlg ddd;
            if(ddd.DoModal()==IDOK)
            {
      if(ddd.m_nSel == 0) 
                    {
                       HINSTANCE hinst=::LoadLibrary("taiwan.dll");
                       if(hinst)
      ::AfxSetResourceHandle(hinst);
      }
             }
             ....
    }
    制作过程:
    用简体中文建立一个应用程序, 然后建立一个dll工程,将刚才程序下的res文件夹,.rc文件,resource.h文件 覆盖到dll工程中 。用Frontpage2003将.rc文件翻译成繁体中文,然后将dll工程的资源设置为中文(台湾),编译。
      

  2.   

    根据语言选择读取配置文件不同的节(也可以用不同的配置文件对应不同的语言),然后逐个设置界面上的字符串,对于长度没有关系,就是多用几个SetWindowText(),对于菜单是SetMenuInfo。
      

  3.   

    http://www.vckbase.com/document/viewdoc/?id=1567
      

  4.   

    To:cpio(希望我的回复能带给您一点点帮助)你说的这个方法我是知道的,我说了采用这种方法的话支持别的语言会很麻烦的,不停的加动态库,然后编译,翻译工作也在自己身上。
    To:Mackz(在相互),采用配置文件可能会好点,但是对于配置文件的定义本人不是很清楚,随便自己定义的话很有可能会引起程序里面代码编写不方便。如果有范文可参考就好了。长度怎么会没有关系呢,比如在中文下只有几个字,但是翻译成英文就要很多,在一个Lable里面是显示不完全的,怎么避免?
      

  5.   

    这个,你要说界面上当然要留出足够的空间,甚至可以考虑改变字体、调节控件大小来适应。另外,使用的语言本身要考虑界面的局限,适当简化、缩略。至于配置文件,看看WritePrivateProfileString/GetPrivateProfileString,自己做一个编辑器也行。