2009-6-23 16:21
262607zzg
cnpack支持对事件内容的多语言处理吗?
我的代码中有很多的MessageBox,看了“CnPack多语组件帮助文档”但是在文档中未找到涉及程序代码中提示信息多语言处理。请问下高手,CnPack支持代码中的信息多语言处理吗,如果可以的话如何处理。
举个小例子:
begin
application.MessageBox('测试','测试',mb_ok);
end;
代码中MessageBox信息能和Form中的Button的Caption信息一样存到文本文件中吗?不胜感激。
2009-6-23 17:11
Passion
这个需要手工来了。多语组件目前还没这么智能地分析字符串。
需要自行定义
var
SThisCaption: string = '测试';
然后翻译的时候,TranslateStr(SThisCaption, 'SThisCaption');
多语文件中也要手工写上:
SThisCaption=测试
2009-6-23 17:31
262607zzg
非常感谢!没想到才发帖这么点时间就有高手来回复。
刘啸老师,但是我这里还是有点问题。
procedure TForm1.Button1Click(Sender: TObject);
var
SThisCaption: string;
ss:string;
begin
SThisCaption :='TForm1.Button1.Caption';
ss := CnLangManager1.TranslateString(SThisCaption);
memo1.Lines.Add(ss);
end;
end.
并且在对应的文本中写上TForm1.Button1.Caption=测试
怎么取不到对应的‘测试’两个字呢?
最后还想问下
“function Translate(Src: string): string;”
和
function TranslateString(Src: string): string;
这两个方法有什么区别呢?多谢
2009-6-23 18:08
262607zzg
现在解决了,我看了源代码。问题出在
function TCnBaseLangManager.TranslateString(Src: string): string;
begin
if FLanguageStorage <> nil then
begin
[color=blue] if CurrentLanguageIndex <> FLanguageStorage.CurrentLanguageIndex then
[/color] FLanguageStorage.CurrentLanguageIndex := CurrentLanguageIndex;
FLanguageStorage.GetString(Src, Result);
end
else
Result := '';
end;
我是在调用TranslateString之前没有进行CurrentLanguageIndex的设置,多谢了。
页:
[1]
Powered by Discuz! Archiver 5.0.0
© 2001-2006 Comsenz Inc.