请问如何做语言包?(简繁转换) 急...帮帮忙啊..

xiaoyuehen 2003-08-04 03:51:27
我在简体系统下编写的Delphi程序, 在繁体系统下运行时, 但凡有中文的地方都变成了乱码....:(...请教:

1.用asp编写动态网页时, 我可以用UTF-8的形式, 使页面在一般平台(简繁)下都能正常显示..但是我不知道, Delphi有没有支持这种功能呢?有的话, 我应该怎么做?(整个软件只有一种语言界面, 在其他平台下运行时不会乱码)

2.若尝试做语言包, 应该从哪几个方面进行着手呢?(多种语言界面)

请各位大侠帮帮小弟, 谢谢!
...全文
181 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
span_space 2003-08-08
  • 打赏
  • 举报
回复
learn
tonylk 2003-08-07
  • 打赏
  • 举报
回复
在你的代码中加入
var
List:TStringList;
I:Integer;
...
begin
...
List:=TStringList.Create();
try
List.Delimiter:=',';
List.DelimitedText:=s_tempStr;
for I:=0 to List.Count-1 do begin
ShowMessage(List.Strings[I];
end;
finally
List.Free;
end;
...
end;
tonylk 2003-08-07
  • 打赏
  • 举报
回复
以上提供的多国语言开发包,并不是指能在一种语言的系统下显示另一种语言的文字,而是指,程序在制作完成后可以方便的转换成不同语言的版本,而无须重新编译。

必须使用winnt系列的操作系统。数据库中的记录用unicode形式保存没有错,nvarchar,但是vcl控件本身是不支持unicode的,所以在简体系统下显示繁体,和在繁体系统下显示简体都有可能有一些字符无法显示,唯一的办法是使用unicode版本的控件。
如:
http://www.tonixsoft.com/index.php?mmenu_id=0003
中后半部分所说的。
另外,我这里还有一个完整的使用数据库读写unicode文字的例子程序,现在在公司的日文系统下可以正常显示和输入中文。
http://www.tonixsoft.com/index.php?mmenu_id=3&smenu_id=0000
xiaoyuehen 2003-08-07
  • 打赏
  • 举报
回复
又发现一个奇怪的问题...在简体系统下保存数据到数据库里,在繁体系统下显示不正常(乱码)..

但是在繁体系统下保存的数据,在简体系统中却能正确显示(显示繁体字)...为什么会这样呢??
xiaoyuehen 2003-08-07
  • 打赏
  • 举报
回复
谢谢tonylk(tony) ( ) 信誉:105 的回复...

呵呵..原来是用TStringList,怪不得昨天我搞了好久,老是提示错误:( (TStrings)

基本上界面的语言已经可以完成了!:)

最后一个问题:SQL数据库提取出来的数据,在BIG5界面下显示乱码,怎么解决?能给我点思路吗?

(我以为数据库的数据都是以Unicode的形式存储的,可在任何平台下通用,看来错了:(..)
xiaoyuehen 2003-08-06
  • 打赏
  • 举报
回复
谢谢楼上的回复,帮了我很大的忙...

你的源代码我看了,但是我比较笨,看了一天,实在看不太明白...:(

不过,Format的用法我已经会用了..Delphi帮助我也看了,现在对TStringList还有一点疑问,想请教你..

如下代码:
var
IniFile : TIniFile;
IniFileName, s_tempStr : String;
str_temList : TStrings;
begin
//语言包文件
IniFileName := ExtractFilePath(application.ExeName) + '\lgcht.ini';
IniFile := TIniFile.Create(IniFileName);
//读取字符串
s_tempStr := IniFile.ReadString('Con_sys_mcsz', '9000', 'ID,通路名称,备注信息')

//问题:接下来应该怎么把 'ID,通路名称,备注信息' 用str_temList以','分割开来呢?

//怎么做才会有TStringList.Strings[0] = 'ID'的结果???
end;
tonylk 2003-08-06
  • 打赏
  • 举报
回复
还是这句老话,这些功能这个类都有的:
http://www.tonixsoft.com/index.php?mmenu_id=3&smenu_id=0010

1。在ini文件中写
8000=您真的要删除此记录吗?\n 通路名称:%s\n 备注信息:%s
在改类中用translate函数,该函数内部封装了Format()函数,类似
Format('您真的要删除此记录吗?\n 通路名称:%s\n 备注信息:%s',[str1,str2]);

Split在delphi中为TStringList.DelimeterString:='...';
然后循环便利TStringList.Strings[]就可以了
xiaoyuehen 2003-08-06
  • 打赏
  • 举报
回复
我参照楼上的方法用.ini的形式,把不同语言内码写的文字以相同的形式保存在.ini文件中..

在程序运行时动态调用,用到了IniFile.ReadString()函数..基本上可以解决问题,在此过程中,我又遇到了新问题,如下:

.ini文件内的格式假设为:
[Con_sys_mcsz]
Title=组别设置
;按钮文本
1001=通路名称:
1002=备注信息:
8000=您真的要删除此记录吗?\n 通路名称:xxx \n 备注信息:yyy
9000=ID,通路名称,备注信息
.............

1.在弹出窗口的提示信息,我想把目前的某个变量值传递出来,应该怎么做呢?如上的xxx怎么用变量值代替呢?

2.某个窗体内有一个DBGrid控件(设为DBG_1)..要使DBGrid每一列的标题都从.ini文件来读取便于正常显示,如上ini内的9000一节,我想让DBG_1显示如下结果:

ID 通路名称 备注信息
... .... ... //本行为各字段值

那我应该怎么处理9000对应的字符串呢?(读取9000对应的字符串我已经会了)

PS:我学过一点VB,JS,这两种语言内都有一个函数Split()(js中为Split()方法),可以将一个字符串分割为子字符串,然后将结果作为字符串数组返回,未知Delphi怎么实现相同的函数或方法???

盼回复,谢谢!
ly_liuyang 2003-08-04
  • 打赏
  • 举报
回复
Ini或资源Dll都可以
jackie168 2003-08-04
  • 打赏
  • 举报
回复
如果是小程序用.ini文件。或是.Dll.
給你一個例子:http://www.tonixsoft.com/freeware/langmgr/langmgr.zip
tonylk 2003-08-04
  • 打赏
  • 举报
回复
http://www.tonixsoft.com/index.php?mmenu_id=3&smenu_id=0010
xiaoyuehen 2003-08-04
  • 打赏
  • 举报
回复
xiaoyuehen@mail.tenfu.com

万分感谢!!!
huanzhugege 2003-08-04
  • 打赏
  • 举报
回复

留下你的邮箱,我送你一个函数包,可以进行简体繁体的转化

5,392

社区成员

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

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