怎樣製作多語言版本程式(20分)

  • 主题发起人 主题发起人 yodjvk
  • 开始时间 开始时间
Y

yodjvk

Unregistered / Unconfirmed
GUEST, unregistred user!
在網路螞蟻有Languane 功能可以選擇多做語言顯示,如果需簡/繁兩種語言,該怎樣辦?在網路螞蟻有Languane 功能可以選擇多做語言顯示,
如果需簡/繁兩種語言,該怎樣辦?
 
现在我就描述如何用TsiLang组件包来开发多语言程序。它可以从http://www.sicomponents.com/tsilang1.html下载。写这篇文章时最新的版本是4.9。

要利用TsiLang组件包你首先要将它安装到Delphi IDE中。如果你使用安装程序并且你有Delphi 3或以上版本,它已在Delphi IDE中安装好了。否则你可以阅读"INSTALL.TXT" 来指导你安装。

我们将用已包含在Delphi标准版中的Richedit例子来演示TsiLang组件包的几个特征。让我们用16步来建立多语言程序:

在Delphi中打开RICHEDIT.DPR工程。

从Delphi菜单中选择"Tools|TsiLang Expert",打开TsiLang Expert。 这时会出现TsiLang Expert窗口,其中有工程窗体的列表。

窗体列表中选择主窗体(MainForm), 你将看到停用的按钮现在激活来。点击标题为"0"(它指示选定窗体的语言数)的按钮,在出现的编辑框中填写你所需要的选定窗体的语言数,例如2,你将得到双语程序。

在窗体列表中双击MainForm,将出现TsiLang Captions Editor(标题编辑器),你可以输入组件"Caption"属性的第二种语言的翻译值。

输入第二种语言的翻译值。我们将德语作为第二语言,而将英语作为重要语言。

点击Expert上的工具条,用同样的方法翻译所有其他的属性。

对第二个窗体重复这些动作。

现在我们翻译原文件中的所有字符常量。选择MainForm并在Expert的菜单中选择 "File|Source|With form…",你将看到你的单元的原文件中出现的所有字符常量。

你可以从这一列表中删去你不想是多语言的任意常量:选择常量的所在行并点击"Delete" 按钮。正如你将看到的,第一列常量的字符串ID,相等的变量这个ID是一样的;第二列显示字符常量值;第三列显示替代文本,你可以任意修改;第四列显示常量在源文件中出现的行号。所有的字符串常量分别调用TsiLang组件的GetText()被替换。这一方法根据字符串ID和当前界面的语言返回字符串。在我们的例子中,我们将删除IDS_0、 IDS_2 和IDS_3 这几行,然后点击"Replace"按钮。

这以后,所有放置在窗体TsiLang组件的"Strings"属性的字符常量和你的源代码中的字符串,将被分别调用TsiLang的GetText()方法而替换。这样只要双击TsiLang组件的"Strings"属性打开TsiLang Strings Editor,就可以输入字符串的翻译。

为了建立真正的双语工程,需要将TSaveDialog, TOpenDialog, TFontDialog和TPrintDialog组件替换为"SiDialogs"面板页中的TsiSaveDialog, TsiOpenDialog, TsiFontDialog和TsiPrintDialog组件。设置"siLang"属性使它们与TsiLang链接。在Object Inspector中双击TsiLang组件的"DlgsCaptions"属性打开TsiLang Strings Editor,输入普通对话框字符串的翻译。

现在,将TsiLangDispatcher(它可以在组件面板的"SiComponents"页中找到)加入MainForm。设置NumOfLanguages属性为2并在LangNames属性中输入语言名字(英语和德语)。

选择窗体中的TsiLang组件并设置LangDispatcher属性。你可以看到TsiLang的LangNames属性随TsiLangDispatcher的同一属性变化。TsiLangDispatcher协助管理语言切换过程,当你改变了它的ActiveLanguage属性,所有与之相链接的TsiLang属性跟着改变。

激活工程的第二个窗体(AboutBox),在Reabout的uses子句中添加REMain。选择AboutBox的TsiLang组件并设置其LangDispatcher属性为主窗体的TsiLangDispatcher组件。

现在是最后也是最简单的一步:加入语言切换的实现。下面是一个例子:

在主窗体的主菜单中加入一"Language"的一级菜单,在其中加入"English"和"German"两个菜单项,设置它们的"RadioItem"属性为TRUE。设置"English"的"Tag"属性为"1","German"的为"2"。

选择两个菜单项并添加其OnClick事件处理函数,注意两项设置同一个事件处理函数。此函数代码为:

procedure TMainForm.German1Click(Sender: TObject);
begin
siLangDispatcher1.ActiveLanguage := TComponent(Sender).Tag;
TMenuItem(Sender).Checked := True;
end;

编译工程并执行,选择你的工程是双语的了。

按照上面方法你可以在一个可执行文件中包含多语言支持。你不需要附加文件、数据库之类的东西。但是你可以用TsiLangRT或是TsiLangRTSE来替代TsiLang,生成较小的多语言程序。这些组件允许使用存储多语言翻译的外部文件。TsiLangRT还有内置的编辑器,允许用户自己为程序修改和添加新的语言,不需要你的帮助。TsiLangRTSE为SIL Editor程序提供COM接口。由于SIL Editor程序是自由软件,你可以把它们随你的程序提供给用户,使他们方便的编辑SIL文件。

你还可以将翻译保存在附带的Dictionary Manager中,以便为将来的其他程序使用。所有的TsiLang编辑器都允许自动化翻译过程。你总是可以用储存在Dictionary Manager中的翻译,使工程的翻译自动化。

如你所看到的,用TsiLang Components Suite建立多语言程序是相当简单迅速的。你可以在SiComponents的主页(http://www.sicomponents.com/)找到在线帮助和更多的信息。
 
谢谢你给我回答,请问TsiLang组件在哪里,
 
我用的是delphi5,见到language功能。可否这个功能编多语言
 
它可以从http://www.sicomponents.com/tsilang1.html下载

当然可以啦~
 
也可以用table定义所有界面的简繁表达,这样用户自己也可以修改。
最简单的办法,定义一个PUBLIC变量,和一个根据这个值选择参数的函数,然后把所有显示
汉字的地方都用函数表达。

比如:
//定义一个PUBLIC变量l_CP。在程序里定义它的值,如果繁简改变,只改变这个值就好了。
或者根据操作系统自动判断它的值。

function Tform1.get_CP(chrC:string; chrP:string):string;
begin
if l_CP then result:=chrP
else result :=chrC;
end;

然后调用的地方象这样:
check1.Caption := get_CP('羉砰','简体');

 
看看ZhangKan的那个帖子,讨论比较多
你的问题已经过期,请自己提前或结束
 
http://delphi.ktop.com.tw/topic.asp?TOPIC_ID=28843
推荐一组实现多语言的Delphi元件,所有文字,讯息都可以实现,简单,扩展性强,
第三方元件也没问题;附专业的资料字典编辑工具。
既可以外带字典文件,也可以把字典装在exe里。
 
delphi7.0怎样做
 

Similar threads

I
回复
0
查看
800
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
800
import
I
后退
顶部