各位大侠在多语言上是怎么实现的啊?偶今天查了半天资料,看主要有两种方法:
一是用delphi自带的ITE(Integrated Translation Environment),project->language...;
二是用几套ini文件。第二种方法如果只改控件标题还差强人意,要是改的多了,象hint,下拉列表中值之类的东东时,不会让偶编程实现吧?第一种方法用起来感觉还成,可问题是偶要是生成完了各个chs,eng,jpn,也都翻译完了,回头界面有改动的话怎么办啊?请各位大侠不吝指教,先行谢过!!!有更好的方法是最好的了,可另行开贴给分!!!

解决方案 »

  1.   

    http://www.tonixsoft.com/index.php?mmenu_id=3&smenu_id=0010
    這里有個介紹是多語言的程序的實現
      

  2.   

    kiss2([email protected]) 和666333(刘六) 两位大侠光说ini方便,可象我说的hint和下拉列表的值岂不是都得通过程序赋进去。而且我这个系统要是有百十个模块的话,这个ini得多大啊,不知道读值近来会不会慢,有经验的介绍一下先...jackie168(玉面書生) 给的网页更夸张,进去说本页已被黑客删除,我倒
      

  3.   

    谢谢DWGZ(),我已经找到siLang的文档,明天去公司看看...各位大侠还有别的高招吗?
      

  4.   

    大部分公司都时利用数据库,以前和现在我们也用数据库来处理多语言
    的问题,用delphi自己带的我搞过好象不怎么管用。
      

  5.   

    用数据库很方便的维护起来也方便
    以前我们用一个language做全局变量,所有有汉字的地方都是用一个方法
    从数据库理找对应的汉化,或english,客户可以通过设置全局language
      

  6.   

    siLang 东东的实际使用性能 不错了
      

  7.   

    用INI文件,你更换语言的时候并没有让你把所有模块语言一次更换啊,你难道不会当模块显示或者需要时候再更换吗?我都是用INI文件做的,其他的方法对于用户来说并不好,而且那些本地化语言者还需要更改EXE的资源文件,非常不方便。所以还是推荐使用INI文件
      

  8.   

    偶总结了一下,目前有三种方法:
    1,delphi自带的ITE,问题多多,在Translation Manager的tab页上打汉字都是乱码,粘过去竟然ok?真是奇怪,而且动态切换时闪烁明显,偶用的方法是网上好多文章都提到的利用demos\richedit里的reinit模块中的两个函数。还有就是英文的那个资源文件生成后后缀是enu,而reinit中函数根据选择语言找的文件后缀是eng(这个可能跟我的系统有关)。
    2,将所有需多国语言显示的数据放在ini或db中(其实这是ini也就是db),这种方法理论上一定能实现,但需要编程,比较麻烦。如果非选其一,我倾向于选择db。
    3,借助于第三方控件,DWGZ()大侠和dudunono(Cookies) 大侠提到的TSiLang真是一个好东东,操作界面简单明了, 它的userguide上有一句TsiLang Expert is an Add-In expert that will help you to translate your project in one-two mouse-clicks说的很好。(one-two mouse-clicks!呵呵)这个东东完全能满足我的需求。现在的问题是这个东东不注册的话能用多久,有什么限制?(149¥说句公道话真的不贵,可让公司批得好多手续...)
    DWGZ()大侠和dudunono(Cookies) 大侠使用过应该能给偶点帮助!
    也希望各位使用过的高手指点一二...
      

  9.   

    MULTILIZER VCL Edition 比TSiLang 更好一点了
    但是手头没有这样的控件了 没有什么说得了
    这里有一点资料了 你的信箱了
      

  10.   

    用ini文件的话,就可以在运行的时候动态改变软件所使用的语言
      

  11.   

    樓主,不好意思。我也看了,確實是說已被黑客刪除。
    前几天還有的,是一個Demo,多語言的實現,有英文,日文,簡體中文...........
    可惜....
      

  12.   

    樓主,來吧,留下mail,我給你吧.........
    使用方法
        将TLangMgr,TLangFrm两个文件复制到你的程序目录下,并将TLangFrm添加到你的工程下,在窗口类的interface下的uses中加入LangFrm,然后将TForm1=class(TForm)(或类似语句)改为TForm1=class(TLangForm),然后就可以重新编译程序了。    外部语言文件请使用工程默认名字,文件扩展名为语言的名称缩写,如Project.eng,Project.chs等。文件为标准的ini文件,每个窗口的语言每个语言文件必须有一个名为[General]的标准Section,Language表示该语言的英文名称,Charset表示语言的字符集数字代码,中文134,日文128,其它语言可以查看MSDN得到它的代码,Font为使用字体(为了使Font应用到每一个控件,必须将所有控件的ParentFont属性设为True,否则字体不会应用到该控件上),FontSize表示字体大小。后面的若干Section以窗口类名为依据分组,窗口内的控件就用控件名表示,然后用‘.’加属性名称的方法来表示具体属性内容,(如Label1.Caption=Label),现在支持的属性为Caption和Hint。    另外,对于显示Message等功能,可以直接在窗口中使用函数Translate('symbol','default string')来实现,对要使用的文字定一个略称,并写一段默认文字,以备读取语言配置文件出错时使用。    对于部分控件标题,如TListView.Column和TGrid.Column,程序无法自动识别,(本来可以直接加到基类的,但是这样程序编译时不管用不用到,都会加载这些模块,所以还是放到外部来实现吧),自己实现的方法就是覆盖(override)TLangForm中的DoChangeLanguage()函数,并在其中使用Translate()函数来手工设置它们的这些属性。    注意,由于Delphi的VCL本身不是Unicode的,所以该组件也没有实现unicode,比如,你无法在日文操作系统下正确的输入中文文字到程序中,中文界面的配置文件加载后,也只会显示乱码而已,如果你需要程序有Unicode的支持,请使用其它第三方Unicode VCL,你可以参照TLangForm的方法来写一个自己的Form类出来。你可以到“UnicodeVersion”目录下找到一个我使用TntUnicode组件改制的多国语言窗口类,使用前请先安装TntUnicode VCL,另外,在使用它的时候需要注意一些地方,比如语言(ini)文件中存放的不再是语言文字的本地码,而是经过转换后的unicode码的码值,你可以使用“UnicodeConveter”目录下的工具来将文字转换为该码值。另外,目前我写的这个类比较简单,没有判断窗口内的组件是否是Tnt组件库中的组件,如果你使用了不属于这个组件库的组件,程序可能会出错,还有TTntMuneItem中的属性设置被我跳过了,它老是出错,你可以在自己的Form中用继承DoChangeLanguage()函数的方法实现菜单文字的更新,当然,需要手工写更新代码了。。
    所有程序代码,在Delphi6,7下测试通过。
      

  13.   

    用db吧
    維護起來方便
    ini太小
      

  14.   

    Q:怎样编写支持多国语言的程序, 让它能够根据所运行的操作系统自动显示相应的文字。 而且不但要替换Windows标准对话框, 还要自动替换窗口标题、 按钮标题等所有显示的文字和所有错误提示。   A:使用Delphi 5的Integrated Translation Environment (ITE)可以轻易得完成这个工作。  我们创建一个示意性的工程MultiLanguage, 在Form上放一个Label和一个Button, 分别把Caption赋值为“English Label” 和“English Button”。  选择菜单Project|anguages|Add ..., Delphi显示Add Languages对话框, 选择Next。  从语言列表中选中“英语(美国)” 和“中文(中国)”, 选择Next。  ITE会根据所选的语言创建子目录,目录名称是语言的缩写,选择Next。  第一次增加语言时, Update Mode固ㄎ狢reate new, 选择Next。  选择Finish。  Delphi会自动创建支持不同语言的资源动态库。  Delphi还会自动创建一个工程组, 其中包括原有的MultiLanguages.EXE, 还包括新建的两个资源动态库 (MultiLanguages.enu, MultiLanguages.chs)。 保存工程组。  Delphi启动Translation Manager, 左边是需要翻译的语言, 右边是完成百分比。  选择“中文(中国)”|Forms|Unit1, 在右边第15行和20行填写翻译后的中文。 保存并关闭。  打开Project Manager, 编译MultiLanguages.enu和MultiLanguages.chs, Delphi会在相应的子目录生成资源动态库, 但后缀不是DLL而是ENU和CHS。
      

  15.   

    好像好多软件都是用ini实现的!
      

  16.   

    delphi自带的ITE,问题多多啊!
    在听听吧!
      

  17.   

    偶的调研工作有了点儿进展,现在上面自己提出的几个问题都已经找到了答案。等我都弄明白了,总结一下发上来,争取对大家以后的工作有点儿帮助,这是后话了...我觉得我现在调研的多语言功能,含义上已经超出了它本身的范畴,实际上是一个跨语言平台的东东,中文系统下可显示日文,且可输入日文正常显示;日文系统下又可正常显示中文,也可正常输入中文...(一不小心搞大了)可问题是delphi的vcl是不支持unicode的,我当了支持unicode的tnt那一套组件,到是蛮好用。不过我发现TsiLang好象也不支持unicode,郁闷ing...越说问题越多,偶先埋头研究一阵儿再说吧,楼上各位,人人有分。有眉目后,偶会再开几贴庆祝,到时一并给分吧(争取本月内)
      

  18.   

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