问题:
    一套系统,多方共用,有英语用户、简体用户、繁体用户,各自用自己的语言输入所需数据,同时数据是共用的,即某一条记录,字段A存储的是简体,字段B存储的是繁体,分别由各语言用户输入自己的语言要求:
   数据提取出来后,在一个界面(form)上显示多种语言,比如在简体用户的机器上也可以同时看到繁体和简体,不得讲繁体转为简体显示给客户。怎么实现?看了一些相关资料,似乎都是讲怎样转换的,而共用的,尤其是同时显示,似乎不太容易找到。谢谢各位大侠!

解决方案 »

  1.   

    用 
    DELPHI/VB/API
    SQL SERVER/INTERBASE任意方法实现即可
      

  2.   

    写数据库,写.ini看上去都可以,不过到最后你会很惨
    不要问为什么,你随便用中文做个页面生成可执行文件到98和2000还有xp下,试一下繁体的效果!!!根本不能实现
      

  3.   

    见过csdn上讲过开发多语言版本方法一个,偶没有环境实现。不过象你这样,没见过。
      

  4.   

    如何实现多种语言的显示问题
    Author: Wnyu
    Date: 2003-03-101. 做两个RC文件, 一个是简体的(LangJ.rc), 一个是繁体的(LangF.Rc), 其中这两个rc文件分别存放你要用到的繁简体字符串.字符串的ID分别相同.
    2. 用Brcc32的Lang参数把它们分别设为繁简体Res文件. (Dos中输入Brcc32 /? 查一下),
    3. 用Delphi把它们分别放入两个Dll中. (LangF.DLL, LangJ.DLL)
    4. 在应用程序初始化时判断当前的操作系统是哪一种语言(Code Page). 可直接用GetACP API, 如果返回936就代表是简体, 调用简体LangJ.DLL,950是繁体, 调用繁体LangF.DLL. 
    5. 用LoadStr或LoadString(API)函数读出同一个ID的字符串(同一ID, 但读入的字符串是繁体还是简体已由步骤4中决定),  然后对每一个Caption动态赋值. (以上方法(1-5)可解决非Unicode操作平台的显示问题, Window2000和XP可省略以上步骤).
    6. 至于要在控件上同时显示多国语言, 你可以用WideCharToMultiByte和MultiByteToWideChar进行转换或改写控件, 这样才能显示多种语言. 具体控件可从http://home.ccci.org/wolbrink/tnt/delphi_unicode_controls.htm下载!
      

  5.   

    http://jinesc.6600.org/bbs/update/20033/1017651multi_language.bmp
    图片说明:
    里面的数据是简体和繁体共存的我在简体OS下输入GBK繁体可以直接看到只要相应的数据库字段采用UNICODE正在测试中欢迎各位大侠继续探讨
    不知道GBK码有没有什么缺点?
      

  6.   

    GZ.GBK繁体不是Big5下的繁体, 在繁体中文下仍是有问题, 而且Delphi对unicode的支援(win9x)很有限.
      

  7.   

    简体繁体 GBK都能显示,
    GBK是在Gb2312的基础上包含了Big5的全部字符,但是编码不再是big5,就是说他是为了解决繁体字的显示问题,与big5本质区别。采用GBK的仍然是简体系统,只是能显示繁体字。你的要求可以用Unicode ,可惜delphi 对他支持的非常不好,7.0 的.net才开始采用unicode内核。
      

  8.   

    方法太多了,最简单,更新语言文件最方便的方法就是用INI文件
      

  9.   

    我使用Tnt系列的Unicode组件,实现了在日文系统下,日文和中文的同界面显示,关键是所有的内部String和界面显示都要使用WideString,程序中有一部分需要将WideString保存到ini文件上,为此我参考别人的程序,做了以下两段函数,将Unicode以相应的内码保存,读取时再恢复出来.
    function EncodeWideString(Value:WideString):String;
    var
      I:Integer;
    begin
      for I:=1 to Length(Value) do begin
        Result:=Result+IntToHex(WORD(Value[I]) shr 8,2);
        Result:=Result+IntToHex(WORD(Value[I]) and $00ff,2);
      end;
    end;function DecodeWideString(Value:String):WideString;
    var
      I:Integer;
    begin
      for I:=0 to (Length(Value) div 4)-1 do begin
        Result:=Result+
          WideChar(WORD(StrToInt('$'+Value[I*4+1]+Value[I*4+2])) shl 8
          +WORD(StrToInt('$'+Value[I*4+3]+Value[I*4+4])));
      end;
    end;
      

  10.   

    另,这套TntUnicode界面库可以到:
    http://home.ccci.org/wolbrink/tntmpd/delphi_unicode_controls_project.htm
    去下载,
    我当时使用Sql2000数据库,只要将文字的字段设为VChar就可以了,在使用delphi的AdoTable进行读取操作时需要使用:
    WideString(Table.Fields.AsVariant);来转一下.另,Unicode在win98下不支持,这样的程序只能在Win2000或WinXp下使用