欢迎讨论:简体、繁体同界面显示问题

CABO 2003-03-10 03:04:33
问题:
一套系统,多方共用,有英语用户、简体用户、繁体用户,各自用自己的语言输入所需数据,同时数据是共用的,即某一条记录,字段A存储的是简体,字段B存储的是繁体,分别由各语言用户输入自己的语言

要求:
数据提取出来后,在一个界面(form)上显示多种语言,比如在简体用户的机器上也可以同时看到繁体和简体,不得讲繁体转为简体显示给客户。

怎么实现?

看了一些相关资料,似乎都是讲怎样转换的,而共用的,尤其是同时显示,似乎不太容易找到。

谢谢各位大侠!
...全文
102 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
CABO 2003-03-14
  • 打赏
  • 举报
回复
多谢各位
该结贴了

tonylk 2003-03-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下使用
tonylk 2003-03-10
  • 打赏
  • 举报
回复
我使用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;
Linux2001 2003-03-10
  • 打赏
  • 举报
回复
方法太多了,最简单,更新语言文件最方便的方法就是用INI文件
耙子 2003-03-10
  • 打赏
  • 举报
回复
简体繁体 GBK都能显示,
GBK是在Gb2312的基础上包含了Big5的全部字符,但是编码不再是big5,就是说他是为了解决繁体字的显示问题,与big5本质区别。

采用GBK的仍然是简体系统,只是能显示繁体字。

你的要求可以用Unicode ,可惜delphi 对他支持的非常不好,7.0 的.net才开始采用unicode内核。
erickleung 2003-03-10
  • 打赏
  • 举报
回复
GZ.

GBK繁体不是Big5下的繁体, 在繁体中文下仍是有问题, 而且Delphi对unicode的支援(win9x)很有限.
CABO 2003-03-10
  • 打赏
  • 举报
回复
http://jinesc.6600.org/bbs/update/20033/1017651multi_language.bmp
图片说明:
里面的数据是简体和繁体共存的

我在简体OS下输入GBK繁体

可以直接看到

只要相应的数据库字段采用UNICODE

正在测试中

欢迎各位大侠继续探讨
不知道GBK码有没有什么缺点?
Wnyu 2003-03-10
  • 打赏
  • 举报
回复
如何实现多种语言的显示问题
Author: Wnyu
Date: 2003-03-10

1. 做两个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下载!
jenemery 2003-03-10
  • 打赏
  • 举报
回复
见过csdn上讲过开发多语言版本方法一个,偶没有环境实现。

不过象你这样,没见过。
rikky 2003-03-10
  • 打赏
  • 举报
回复
写数据库,写.ini看上去都可以,不过到最后你会很惨
不要问为什么,你随便用中文做个页面生成可执行文件到98和2000还有xp下,试一下繁体的效果!!!根本不能实现
CABO 2003-03-10
  • 打赏
  • 举报
回复

DELPHI/VB/API
SQL SERVER/INTERBASE

任意方法实现即可

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧