最近在做一个多语言的项目,感想颇深,写出来与大家分享。
首先抱怨一下,谁让这个程序是Delphi的呢,用C#或者Java写根本不会有那么多问题,唉......
1.现状
Delphi直到2007才支持Unicode,但是事实是大部分的Delphi程序依然用Delphi6 & Delphi7编写。 指望通过Unicode来解决问题还是有相当难度的,要考虑的问题太多。
如果是简单的多语言界面支持,难度就小了很多,目前有很多比较成熟的框架可以借鉴,解决方案大致分为三种,这里不详述了。
第三方的技术框架提供了一种解决思路,但是更大的工作量体现在代码的重构与规范中。因为以前编写的Delphi代码由于没有考虑到多语言支持,在上了多语言框架后会有很多问题,因此需要规范此类代码。
2.技术方案
1)最近我做的项目用的是CnPack的多语言框架,这个框架可以解析Delphi的dfm文件,从而将界面上所有可视化界面元素的字符串信息抽取出来,然后保存在文本文件中。另外,它提供了运行时遍历所有控件并更改控件字符显示的功能,因此我们只需要把注意力集中在翻译和其他一些特殊问题上就可以了