我的想法是這樣:
數據庫建立一個表,共兩列,engligh varcha2(100),local varchr2(150),
程序員開發的時候就用英文,程序運行的時候再根據用戶需要再決定是否翻譯,如果翻譯的話就把窗口內的文本全部按該表的對應關系把他翻譯過來,當然local字段的內容就可以是任何其他語言都行,從而實現多語言的支持。望大家幫忙。謝謝
數據庫建立一個表,共兩列,engligh varcha2(100),local varchr2(150),
程序員開發的時候就用英文,程序運行的時候再根據用戶需要再決定是否翻譯,如果翻譯的話就把窗口內的文本全部按該表的對應關系把他翻譯過來,當然local字段的內容就可以是任何其他語言都行,從而實現多語言的支持。望大家幫忙。謝謝
解决方案 »
- delphi用spcomm实现串口通信,数据能发送到串口调试工具,但是不能接受它们发过来的数据。
- 获得Tab Order中下一个控件,FindNextControl怎么用
- batchmove的问题!!!!急用,我在这方面用了2天了?!!
- 散分:请各位推荐一本好的DELPHI书
- 请问一个调整QUICKREPORT宽度问题!!
- 请问间接点球、戴尔飞等大侠,在corba data modul中,可以在客户端调用的过程,在服务端如何定义?
- 如何定义stringgrid控件光标所在行的颜色?
- 关于程序间的通讯问题
- 点击按钮和执行按钮中间有没有夹缝??
- 关于timeGetTime
- 安装制作工具哪有下载?(中文的哟) 结帐时间: 13:30
- 请问在Delphi中如何传送文件,要实例
第二个方法是使用dll,即所有的文字都存放到一个dll的字符串表中,然后不同的语言就发布不同的dll
方法如下:
首先写一个Dll,在Dll中首先声明一个语言的变量全局变量,格式如下:
var
LangStrings: Array[??..??] of String =
['Hello', // Id=1
'Yes', // Id=2
'No', ...]
然后写一个LoadString函数,该函数是一个接口函数,即其他的程序可以通过调用该函数来获得String的数据
function GetLangStrings(ID: Integer): string;
begin
Result:=LangStrings[ID]
end;然后你在你的Project中,所有的涉及到需要切换的Strings都编一个编号。
在FromCreate的时候,将需要切换的语句进行调用一下
比如
Label1.Caption:=GetLanStrings(??)你再写一个中文的Dll,这样你的程序要发布的时候直接更改一下Dll就可以了。这样还是麻烦了点,你说是吧。因此可以在设计的时候稍微多考虑一下,即在Dll中设计两个函数,一个函数是取Form上的需要切换的,另外一个是取程序中showmessage之类的内容的。
这样做有什么好处呢?你可以将Form上所有控件设计一个编号,即各个控件一般都有一个Tag属性,如果他们没有被用的话你可以用在这里,将所有的需要切换的控件的Tag编号后,在FormCreate的时候直接这么写:
for i:=0 to ComponentCount-1 do
begin
if Components[i].Tag<>0 then
begin
if Components[i] is TLabel then
(Components[i] as TLabel).Caption:=LoadLanString(Components[i].Tag) else
if Components[i] is TEdit then
... ...
end;
end;
对于在程序中显示的语句的切换,你需要对所有语句进行编号,比如你有一句话为‘Hello’
那么程序可以这么写:
声明一个 uDeclare的Unit
在该Unit中有:
const
sHello=1
sOK=2;
... ...
然后你的程序中有一句本来是:
showmessage('hello')
那么需要更改成如下:
showmessage(sHello);
就可以了。有什么问题,QQ 156514982