Board logo

Subject: 关于多语言包 [Print This Page]

Author: VictorWoo    Time: 2006-10-19 11:30     Subject: 关于多语言包

发现最近多语言包的修改动作频频,想到以前没有答案的问题:各种多语言支持,哪一套好?
以前关注过大富翁,上面好像没有较权威的答案
这里CnPack里的多语言组件不知和外面的组件(包括收费的)比起来有何优劣?
也许发在这里也许不太合适,不过我想可能有朋友对比研究过这个问题,望不吝笔墨,稍许点拨,非常感谢!
Author: Passion    Time: 2006-10-19 13:31

我们的多语包的特点为“简单易用,功能也足够,存储方式可扩展”,属于组件包中比较成熟的一部分,能够比较自动地处理界面中的静态和动态窗体上的内容。但对代码中的多语功能的支持则需要开发者配合,它没有自动将代码中的字符串提取为资源字符串变量的功能。

更具体点的内容,可参考我们CVS中文档里的多语帮助文档和多语设计文档,里头说的比较详细。
Author: VictorWoo    Time: 2006-10-19 14:40



QUOTE:
Originally posted by Passion at 2006-10-19 13:31:
我们的多语包的特点为“简单易用,功能也足够,存储方式可扩展”,属于组件包中比较成熟的一部分,能够比较自动地处理界面中的静态和动态窗体上的内容。但对代码中的多语功能的支持则需要开发者配合,它没有自动将 ...

您说的“自动将代码中的字符串提取为资源字符串变量的功能”是指源码级别的替换还是?
如果别的工具源码级别的替换功能,那么先替换再结合CnPack里的这个,岂不是很完美?
Author: Passion    Time: 2006-10-19 16:48

对,我指的是源码级别的替换,记得ModelMaker里头就有这么个自动替换生成资源字符串的功能。
这样的结合我想了想,貌似确实比较方便,但有个地方需要说明:我们翻译的字符串得用var定义(变量才能被翻译后赋值),所以如果其他工具生成的是const或resourcestring,那就得改改了。
Author: VictorWoo    Time: 2006-10-20 10:47

嗯,是ModelMaker Code Explorer,有这个功能
implementation

// START resource string wizard section
resourcestring

// START resource string wizard section
  SDef = 'def';

// END resource string wizard section

  SAbc = 'abc';

// END resource string wizard section


{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  strVar: string;
const
  strConst = 'abc';
begin
  strVar := SAbc;
  strVar := strVar + SDef;
end;

在begin..end里的 := 右边,原先是'abc'和'def',被MMX重构了。
不过我重构了两次,居然MMX生成了两遍
// START resource string wizard section 和
// END resource string wizard section
似乎有点SB?

MMX没有重构const常量:
const
  strConst = 'abc';

这样的话剩下的活是不是完全可以交给CnPack处理了(假设程序中不用const的话)?
Author: Passion    Time: 2006-10-20 11:55

也不能说完全让CnPack自动处理了。

const
  strConst = 'abc';

就得手工改写成:
var
  strConst: string = 'abc';

然后在指定的语言条目中增加一条:
strConst=某某文字

然后在语言切换的事件里头写:
TranslateStr(strConst, 'strConst');

不写这句的话,strConst的内容是不会被翻译到指定语言的。
Author: VictorWoo    Time: 2006-10-22 10:58

oic, thanks




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