我所知道的多语言支持的方式是以下三种:1. 不同语言的独立版本(比如 Windows)
2. 单一的可执行文件包含多种语言资源,或不同语言使用独立的资源 .dll(比如 IsoBuster)
3. 单一的可执行文件,使用外挂的语言包(比如 FlashGet, Netants 或者 PatchWise Free)大伙儿一般都采用哪一种?还有其他方式吗?

解决方案 »

  1.   

    采用第二种方法有一个缺点:如果不是自己制作全部的其他语言资源的话,就必须提交 RC 资源给翻译者,这样对于不懂编程只搞翻译的人来说是一个小小的障碍。我记得 Netants 的作者洪以容刚开始的时候就是采用第二种方法,后来发觉不方便制作更多的语言支持,因此放弃了。现在采用了第三种方式。
      

  2.   

    使用INI文件描述,把各种界面的信息全部放在INI中,动态显示,这样多语言就很容易了
      

  3.   

    这种采用 INI 的方法,实际上就是使用外挂的语言包嘛!就是第三种方法。
      

  4.   

    http://www.playicq.com
    有delphi实现的例子。
      

  5.   

    要實現多國語言的整體支持..應該用你的2.和unicode(2000才能)支持.
    對於98系統等Ansi格式得..就要用1.2.3結合..其實處理多語言支持在你做軟件的時候,你應該注意到兩個方面.1.你的系統資源的多語言化.影響的只是介面上的語言文字.
    2.要對你控件如edit等實現全面的多語言支持.需要用unicode方式.多國語其實從最根本得理解是因為字符集不一樣造成的.
      

  6.   

    http://www.csdn.net/Expert/topicview.asp?id=679519
      

  7.   

    看了金学凌的文章,感触是有的,不过这个东西在大学都学了四五年了
    在大学中一些很厉害的老教授也没有像他这样,牛比轰轰的,指使别人应该干什么,不应该干什么,
    作为专业的软件从事人员我像这点道理是懂的,因为软件工程是一个系统工程,并不是所有的软件都要有非常完善的文档,总的一句话,文档是为软件服务的。而不是软件为文档服务的,金学凌小朋友可能这一认识还不够(当然我不是在托大,只不过觉的用他称呼大家的叫法觉得很爽),当然文档本身就是软件工程中的一部分。软件在实际的操作过程中,会因为进度或各种因素的考虑,也会有相应的变化。理想的软件编写方法当然是漂亮的。但是任何一件东西必须在实践中创造价值,不是说说应该这么做,不应该这样做。这个世界本来就没有万金油,也没有一成不变的法则。软件工程而且在不断的发展,以适应变化的软件行业。金学凌小朋友可能在课本的知识学习的不错,或者可能是他的同学或同事教他软件工程是这样的。然后在这里指手画脚,立规立矩,在同行中与他想法有所出入的,就被定为“小朋友”,或者被蔑称为fans,我想作为一个软件专业人员被如此羞辱是很难让人接受的。
       以上是我所要说的第一点,软件工程并不是愚蠢的人认为应该这样干,而就那样干的行业。软件也会具体的项目的不同而不同。当然完善的文档是非常重要的,不要把文档和程序分开来,因为文档本身就是软件的一个部分。
       小朋友金学凌还教大家如何作人,如何学习。认为学asp,php,jsp 是下人一等,是表面东西,是个小屁屁,仿佛只有学了网络传输,中断向量,才是真正程序员学的。我怀疑他为什么说出这样的话,有一点是明白的,说明他本身技术能力就不行,我不想探讨asp,php,jsp是否很简单,以至于一些白痴不屑一顾。但是有一点是很明白的,所谓的网络传输,中断向量是非常简单的,只要有一些c,c++或者vc++的编程经验,中断向量更是简单了,汇编语言那个从事计算行的同仁不懂!!!?
        我希望金学凌小朋友在说别人浮躁的时候,有没有检讨自己有浮躁,说我门的同仁是“小朋友”,仅仅是"fans",以托出自己的所谓的“高大”,是不是很浮躁呢。
        我希望金学凌小朋友在跟别人探讨软件工程的时候,不要倚着大学究,大
    文豪的形式,鼻子弄的比牛鼻子还高,就教训我门的同仁应该干什么,不应该干什么,我希望金学龄小朋友在教训别人的时候,先理解一下软件工程是什么。你对软件工程又掌握多少,才来执鞭论教。
        我希望金学凌小朋友在要求别人作人的时候,不要叫别人小朋友,“fans",来羞辱我们,这样恰恰反映了他人格的缺陷。我希望金学龄小朋友在
    别人如何作人的时候,应该自己知道如何作人。
        写到这里我的怒火稍稍有所平息。我还是要引用一下 ‘istech(工作辛苦啊)’的话‘要教训人,也要好好的说,不要动辄“小朋友”,还什么什么地。叽叽歪歪话听多了,就是屁话’。
        我想对金学龄小朋友说:'不要以为往脸上涂了大便,就以为是往脸上添金了‘。
        我想对金学凌小朋友说:’不要以为披了一张人皮,我们就把你当人‘。
        我写完了,也骂完了,真舒服!!!
      

  8.   

    看了金学凌的文章,感触是有的,不过这个东西在大学都学了四五年了
    在大学中一些很厉害的老教授也没有像他这样,牛比轰轰的,指使别人应该干什么,不应该干什么,
    作为专业的软件从事人员我像这点道理是懂的,因为软件工程是一个系统工程,并不是所有的软件都要有非常完善的文档,总的一句话,文档是为软件服务的。而不是软件为文档服务的,金学凌小朋友可能这一认识还不够(当然我不是在托大,只不过觉的用他称呼大家的叫法觉得很爽),当然文档本身就是软件工程中的一部分。软件在实际的操作过程中,会因为进度或各种因素的考虑,也会有相应的变化。理想的软件编写方法当然是漂亮的。但是任何一件东西必须在实践中创造价值,不是说说应该这么做,不应该这样做。这个世界本来就没有万金油,也没有一成不变的法则。软件工程而且在不断的发展,以适应变化的软件行业。金学凌小朋友可能在课本的知识学习的不错,或者可能是他的同学或同事教他软件工程是这样的。然后在这里指手画脚,立规立矩,在同行中与他想法有所出入的,就被定为“小朋友”,或者被蔑称为fans,我想作为一个软件专业人员被如此羞辱是很难让人接受的。
       以上是我所要说的第一点,软件工程并不是愚蠢的人认为应该这样干,而就那样干的行业。软件也会具体的项目的不同而不同。当然完善的文档是非常重要的,不要把文档和程序分开来,因为文档本身就是软件的一个部分。
       小朋友金学凌还教大家如何作人,如何学习。认为学asp,php,jsp 是下人一等,是表面东西,是个小屁屁,仿佛只有学了网络传输,中断向量,才是真正程序员学的。我怀疑他为什么说出这样的话,有一点是明白的,说明他本身技术能力就不行,我不想探讨asp,php,jsp是否很简单,以至于一些白痴不屑一顾。但是有一点是很明白的,所谓的网络传输,中断向量是非常简单的,只要有一些c,c++或者vc++的编程经验,中断向量更是简单了,汇编语言那个从事计算行的同仁不懂!!!?
        我希望金学凌小朋友在说别人浮躁的时候,有没有检讨自己有浮躁,说我门的同仁是“小朋友”,仅仅是"fans",以托出自己的所谓的“高大”,是不是很浮躁呢。
        我希望金学凌小朋友在跟别人探讨软件工程的时候,不要倚着大学究,大
    文豪的形式,鼻子弄的比牛鼻子还高,就教训我门的同仁应该干什么,不应该干什么,我希望金学龄小朋友在教训别人的时候,先理解一下软件工程是什么。你对软件工程又掌握多少,才来执鞭论教。
        我希望金学凌小朋友在要求别人作人的时候,不要叫别人小朋友,“fans",来羞辱我们,这样恰恰反映了他人格的缺陷。我希望金学龄小朋友在
    别人如何作人的时候,应该自己知道如何作人。
        写到这里我的怒火稍稍有所平息。我还是要引用一下 ‘istech(工作辛苦啊)’的话‘要教训人,也要好好的说,不要动辄“小朋友”,还什么什么地。叽叽歪歪话听多了,就是屁话’。
        我想对金学龄小朋友说:'不要以为往脸上涂了大便,就以为是往脸上添金了‘。
        我想对金学凌小朋友说:’不要以为披了一张人皮,我们就把你当人‘。
        我写完了,也骂完了,真舒服!!!
      

  9.   

    用.NET平台開發(如 Visual C#)對實現多語言比較方便,因為.NET裡的一切Text皆以Unicode存儲(每個字元皆是唯一的,避免了亂碼的現像),另外.NET平台本身已為多語言軟體提供了工具,所以推薦用.NET
      

  10.   

    第2种方法还应该是首选,毕竟向netants那样出N多种语言的软件是少数。此外,多语言问题不仅仅是文本的问题,还涉及到资源的问题,例如英文对话框和中文对话框绝对不是一个样子。
      

  11.   

    我认为对于个人或者小公司做共享软件,第三种方法应该是首选。因为第二种方法难度较大,不利于实现更多的语言(除非作者自己制作全部的语言版本...因为毕竟要求翻译者处理 rc 资源有点儿难度)。第三种方法制作起来难度不大,而且有现成的 MFC类库可以使用。有兴趣的朋友可以试试 http://www.tucows.com/system/preview/262299.html对于翻译者来说,因为语言包与程序本身是分离的,因此翻译编辑起来非常方便。而对于软件作者来说,增加更多的语言完全不需要重新编译源程序,直接把新的语言包提供给用户下载,用户自己放到原来的语言包安装目录即可支持新的该种语言了。
      

  12.   

    我所知道的多语言支持的方式是以下三种:1. 不同语言的独立版本(比如 Windows)
    2. 单一的可执行文件包含多种语言资源,或不同语言使用独立的资源 .dll(比如 IsoBuster)
    3. 单一的可执行文件,使用外挂的语言包(比如 FlashGet, Netants 或者 PatchWise Free)大伙儿一般都采用哪一种?还有其他方式吗?
    从理论上讲,应该是只有这三种方法:
    1.从系统角度去支持翻译程序;
    2.使用通用的.dll接口;
    3.使用外挂语言包.
    本才偏向于使用第二种方式,以为使用的是BCB 5.0
    谢谢!
      

  13.   

    用资源dll,运行正常,但是用BoundChecker检查,MFC代码出现LoadResource/LockResource错误,包括菜单、对话框等加载时都
    出现。
      

  14.   

    用GetSystemLocaleLCID()来指定使用对应的用XML放的字符串资源文件。
      

  15.   

    如果你想自己每个语言都自己翻译,就用第二种。如果你做共享,就选第三种。请VC高手顺便解决一下:
    http://www.csdn.net/expert/topic/816/816910.xml?temp=.8320429
    http://www.csdn.net/expert/topic/809/809890.xml?temp=.1718256
    http://www.csdn.net/expert/topic/820/820683.xml?temp=.1690943谢了!!!
      

  16.   

    Cuteric(What?) 分析得很有道理。大伙儿可以去下载试用一下 LocWise:http://www.tucows.com/system/preview/262299.htmlLocWise 是一个多语言支持的 SDK开发包,for VC++ 的。有方便易用的 AppWizard 界面,非常容易创建出支持多语言的应用程序。对于已有程序,我们提供了专用的工具提取所有字符串资源并生成语言包。只需很少量的代码就能把实时切换多语言的功能添加到你的软件中。这是充分参考中小型软件企业的需求而开发的领先的解决方案,拥有以下主要特点:1.基于 Win32 编程环境(目前版本支持 VC++)下的多语言支持,全面支持 Windows 9X/ME/NT4/2000/XP 以及更新的操作系统;
    2.基于外挂语言包的多语言支持,语言包的文件名称和所在目录可以自定义;
    3.支持 MFC 和 Unicode,可以高度整合到现有软件中,高效并且非常稳定;
    4.采用集成的 AppWizard 向导模式构建新的多语言支持软件工程。对于现有软件,只需添加少量的代码即可方便实现多语言支持;
    5.实现了多语言支持的软件,其界面语言(包括菜单、工具栏、状态栏、对话框、字符串等所有资源)可以实时切换,并支持多种切换方式;
    6.采用了先进的“Intelligent Language Identification(智能语言辨识)”技术,软件首次运行时可以自动检测并切换与用户系统语言一致。当没有相对应的语言包时,自动调用内置的界面语言,保证软件可被正常使用;
    7.提供专用的语言包生成工具 LangGen for LocWise,方便制作和翻译不同语言版本的语言包;
    8.提供多个完整的参考范例程序,完备的在线帮助系统,以及完善的售后技术支持;