Board logo

Subject: cnpack支持对事件内容的多语言处理吗? [Print This Page]

Author: 262607zzg    Time: 2009-6-23 16:21     Subject: cnpack支持对事件内容的多语言处理吗?

我的代码中有很多的MessageBox,看了“CnPack多语组件帮助文档”但是在文档中未找到涉及程序代码中提示信息多语言处理。请问下高手,CnPack支持代码中的信息多语言处理吗,如果可以的话如何处理。         
          举个小例子:
          begin
          application.MessageBox('测试','测试',mb_ok);
          end;
代码中MessageBox信息能和Form中的Button的Caption信息一样存到文本文件中吗?不胜感激。
Author: Passion    Time: 2009-6-23 17:11

这个需要手工来了。多语组件目前还没这么智能地分析字符串。
需要自行定义
var
  SThisCaption: string = '测试';

然后翻译的时候,TranslateStr(SThisCaption, 'SThisCaption');

多语文件中也要手工写上:
SThisCaption=测试
Author: 262607zzg    Time: 2009-6-23 17:31

非常感谢!没想到才发帖这么点时间就有高手来回复。
刘啸老师,但是我这里还是有点问题。
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;
这两个方法有什么区别呢?多谢
Author: 262607zzg    Time: 2009-6-23 18:08

现在解决了,我看了源代码。问题出在
function TCnBaseLangManager.TranslateString(Src: string): string;
begin
  if FLanguageStorage <> nil then
  begin
   if CurrentLanguageIndex <> FLanguageStorage.CurrentLanguageIndex then
      FLanguageStorage.CurrentLanguageIndex := CurrentLanguageIndex;
    FLanguageStorage.GetString(Src, Result);
  end
  else
    Result := '';
end;
我是在调用TranslateString之前没有进行CurrentLanguageIndex的设置,多谢了。




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0