CnPack Forum


 
Subject: 关于多语言包
VictorWoo
灌水科科长
Rank: 3Rank: 3



Medal No.1  
UID 1975
Digest Posts 1
Credits 114
Posts 98
点点分 114
Reading Access 10
Registered 2006-3-11
Location 福建
Status Offline
Post at 2006-10-19 11:30  Profile | Site | Blog | P.M.  | QQ | ICQ Status
关于多语言包

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


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2006-10-19 13:31  Profile | Blog | P.M. 
我们的多语包的特点为“简单易用,功能也足够,存储方式可扩展”,属于组件包中比较成熟的一部分,能够比较自动地处理界面中的静态和动态窗体上的内容。但对代码中的多语功能的支持则需要开发者配合,它没有自动将代码中的字符串提取为资源字符串变量的功能。

更具体点的内容,可参考我们CVS中文档里的多语帮助文档和多语设计文档,里头说的比较详细。
Top
VictorWoo
灌水科科长
Rank: 3Rank: 3



Medal No.1  
UID 1975
Digest Posts 1
Credits 114
Posts 98
点点分 114
Reading Access 10
Registered 2006-3-11
Location 福建
Status Offline
Post at 2006-10-19 14:40  Profile | Site | Blog | P.M.  | QQ | ICQ Status


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

您说的“自动将代码中的字符串提取为资源字符串变量的功能”是指源码级别的替换还是?
如果别的工具源码级别的替换功能,那么先替换再结合CnPack里的这个,岂不是很完美?
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2006-10-19 16:48  Profile | Blog | P.M. 
对,我指的是源码级别的替换,记得ModelMaker里头就有这么个自动替换生成资源字符串的功能。
这样的结合我想了想,貌似确实比较方便,但有个地方需要说明:我们翻译的字符串得用var定义(变量才能被翻译后赋值),所以如果其他工具生成的是const或resourcestring,那就得改改了。
Top
VictorWoo
灌水科科长
Rank: 3Rank: 3



Medal No.1  
UID 1975
Digest Posts 1
Credits 114
Posts 98
点点分 114
Reading Access 10
Registered 2006-3-11
Location 福建
Status Offline
Post at 2006-10-20 10:47  Profile | Site | Blog | P.M.  | QQ | ICQ Status
嗯,是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的话)?
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2006-10-20 11:55  Profile | Blog | P.M. 
也不能说完全让CnPack自动处理了。

const
  strConst = 'abc';

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

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

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

不写这句的话,strConst的内容是不会被翻译到指定语言的。
Top
VictorWoo
灌水科科长
Rank: 3Rank: 3



Medal No.1  
UID 1975
Digest Posts 1
Credits 114
Posts 98
点点分 114
Reading Access 10
Registered 2006-3-11
Location 福建
Status Offline
Post at 2006-10-22 10:58  Profile | Site | Blog | P.M.  | QQ | ICQ Status
oic, thanks
Top
 




All times are GMT++8, the time now is 2024-11-23 18:41

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.010660 second(s), 8 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP