有一软件想中、英文作一个版本,两个版本可以互相转换,大家帮我想想方案

xiangdie 2004-01-12 09:32:50

有一软件现中文版己出来,带数据库,再要一英文版,领导要求中、英文版作一个版本,可以即时互相转换,用什么方法?
资源文件?还是………………?
...全文
68 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
tonylk 2004-01-13
  • 打赏
  • 举报
回复
你要翻译专用术语的话,一般要在数据库中有个专用的对应表。
你想让多国语言控件自己来翻译中英文那时不切实际的。
12rain 2004-01-13
  • 打赏
  • 举报
回复
想起了以前的一个程序、如果窗体很少的话、也可以试一下吧、
就是把整个窗体结构做为一个字段保存在数据库中、再整个载入、
需要做的是先定义一下不同的页面、然后保存至数据库中、
以以前的程序为例、在数据表中定义一个tList字段、text类型


//保存
var
MS1, MS2: TMemoryStream;
begin
MS1 := TMemoryStream.Create;
MS2 := TMemoryStream.Create;
try
with ADOQuery1 do
begin
if not Active then Open;
MS1.WriteComponent(Self);
MS1.Position:=0;
ObjectBinaryToText(MS1, MS2);
Append;
MS2.Seek(0, soFromBeginning);
TBLOBField(FieldByName('tList')).LoadFromStream(MS2);
Post;
end;
finally
MS1.Free;
MS2.Free;
end;
end;

//载入
var
MS1, MS2: TMemoryStream;
begin
MS1 := TMemoryStream.Create;
MS2 := TMemoryStream.Create;
try
with ADOQuery1 do
begin
if not Active then Open;
TBLOBField(FieldByName('tList')).SaveToStream(MS1);
ObjectTextToBinary(MS1, MS2);
Self.DestroyComponents;
MS2.Seek(0, soFromBeginning);
MS2.ReadComponent(Self);
end;
finally
MS1.Free;
MS2.Free;
end;
end;


crystaldn 2004-01-13
  • 打赏
  • 举报
回复
我也碰过这问题,解决办法按loh(乐啸天涯) 的方法,虽然前期工作量较大,但是运行速度没问题,扩展性好。
xiangdie 2004-01-13
  • 打赏
  • 举报
回复

以上各位介绍的两种控件我都看了,不能满足我的要求,对于那些固定项可以实现,但对查出的记录不行,用INI文件方式实现是可以的,但我怕运行速度比较慢,因为有很多中英文转换。
按loh(乐啸天涯) 的方法也可以实现,这几种方法我综合考虑一下,还有其它原因及条件限制

最好不影响原运行速度,实现又方便,灵活,扩展性要好
goomoo 2004-01-13
  • 打赏
  • 举报
回复
据库里查出的记录的中英文转换估计有困难。
其实SMLPack控件也是通过Ini文件实现中英文界面实时切换的。


----------------------
http://goomoo.uuoo.com
http://goomoo.yeah.net
xiangdie 2004-01-13
  • 打赏
  • 举报
回复

goomoo(古木) :能满足我的要求吗?中英文转换的不只是菜单和消息,还有数据库里查出的记录
中英文转换啊,而且大都是电力方面的专业术语,要买的啊,有没有先共享一下的?
xiangdie 2004-01-12
  • 打赏
  • 举报
回复

谢谢各位,我先按各位的想法做做试验
还有别的办法吗?多多奉献啊:)
mxk19791116 2004-01-12
  • 打赏
  • 举报
回复
楼上的东东看起来好复杂呀,


有学习价值


UP
12rain 2004-01-12
  • 打赏
  • 举报
回复
PS、
使用从INI载入可以参考一下kingron前辈的一个程序、里边有一个通用的函数可以用
http://www.soulan.com/kingron/download/winupx.rar
使用Delphi中的project->languages->add制作多语言包参考Demo:$Delphi/Demo/RichEdit
Tingl 2004-01-12
  • 打赏
  • 举报
回复
将资源封装在dll中
中英使用相同的ID
加载不同的dll
12rain 2004-01-12
  • 打赏
  • 举报
回复
1、project->languages->add
2、用INI文件
lgqTiger 2004-01-12
  • 打赏
  • 举报
回复
简单的办法是:线做两个版本的窗体类
在你要求转换时生成另一个类的实例,然后显示!
严黎斌 2004-01-12
  • 打赏
  • 举报
回复
我一个软件,也是用ini实现多语言的。运行时也可实时切换语言。
loh 2004-01-12
  • 打赏
  • 举报
回复
最简单最烦锁的要不要(不推荐使用,工作量太大)

既然已经做了数据库了,那就多加一个库,
把程序中出现中文的地方,对应该的翻译成英文,当然还可以再加几个列来添加其它语言!
再程序中加一个语言选择按钮,选中对应的语言,就刷新一个应用程序,将原来的caption
或者 text 或者 hide 等出现中文的地方,改成英文。

tonylk 2004-01-12
  • 打赏
  • 举报
回复
http://www.tonixsoft.com/index.php?mmenu_id=3&smenu_id=0000
qinmaofan 2004-01-12
  • 打赏
  • 举报
回复
不用什么控件。
你可以研究一下FlashGet,他是使用ini文件的。自己写函数从ini文件中读取相应的字符创更新界面即可。
goomoo 2004-01-12
  • 打赏
  • 举报
回复
非常好用,极力推荐!
goomoo 2004-01-12
  • 打赏
  • 举报
回复
http://www.sunisoft.com 有专门的控件。

SMLPack 1.4 released! (VCL)
SMLPack is a suite of multilingual support components package for Delphi & C++Builder. It can help you to make your application support multilingual user interface easily and automatically.
12rain 2004-01-12
  • 打赏
  • 举报
回复
资料可以自己找一下、关键字'Delphi+多语言'、至少我以前都看过好几篇

1、用载入INI文件的上面给你的地址中可以直接用、需要自己录入ini文件

2、Delphi自己的、具体步骤:

菜单Project->Languages->Add 添加新语言(按照向导选择要添加的语言然后一直按下一步)
Project->Languages->Update Resource DLLs 修改现有语言

然后进入Translation manager页面、需要再录入一些东西(翻译)(选择Workspace页)。确定之后Build Project即可(发布程序时要一起分发那些语言dll文件)。

载入这些语言资源参考DEMO、上面也提到了、

3、可能有这方面的第三方控件




xiangdie 2004-01-12
  • 打赏
  • 举报
回复

对资源文件的使用不是很熟悉,谁有这方面的详细资料,请提供给我
主要是建好需要的资源文件、且联到应用程序中后怎么具体用
如果创建字符串列表,好多啊,怎么查啊

如:中文版中查询记录时出现了“基本参数”,怎么找到它对应的英文
而且要考虑到扩展,软件中出现的中文是会增加的

5,379

社区成员

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

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