刚刚看到一贴:“一个土制的多语言引擎 Langine,希望能借此简化编写多国语言系统的工作”
http://community.csdn.net/Expert/topic/3151/3151612.xml?temp=8.926028E-02程序支持多国语言问题,我想这也是许多Delphi Fans共同关注的问题。所以把自己的一点经验贴出来,与大家共享一下;其实Delphi本身就已经包含的很完善的多国语言支持的功能;. 为不同语言的UI资源保存、编译不同的副本资源文件;. 为程序中使用的字符串(非UI资源)保存、编译不同的副本资源文件;. 程序运行后动态的选择支持语言;例子:1、新建一个空工程、放一些组件(菜单、按钮,任意组件……)、保存;2、菜单Project->Language->Add;按提示选择语言,如英语(美国)+中文(中国),一路确认,最后生成两个目录CHS, ENU,为UI资源文件副本;
(注意:此时会提示存储ProjectGroup,存下来会很方便以后使用)3、打开UI副本并设置各个组件在不同语言副本中的内容;4、菜单Delphi->Language->Set Active 设置缺省语言;5、菜单Delphi->Language->Update Resource DLLs,当你在主工程中进行资源文件更新后,用此功能更新各个资源文件副本。(除非你的主工程有大的改动,否则副本内容也是选择更新,即,不会每次对各种语言重新翻译一遍)6、使用菜单Project->Build All Projects,编译;7、此时你可能会问,如果是非UI资源内容,譬如想为程序中的某些/全部字符串保存不同语言副本,该如何处理;如下:在自动生成的自动副本目录下都会有一个“*_RC.rc”文件,存储不同的内部使用字符串;在程序中,找到你要存储多国语言的字符串,先在程序中将其作为常量字符串定义,!!!关键就在这个定义上,不要用const做关键字,而要用resourcestring,然后在执行步骤5更新,你会发现——这些字符串都出现在“*_RC.rc”文件中了,修改不同语言副本的“*_RC.rc”文件中对应的字符串,再重新编译……(也是一次偶然机会发现了resourcestring的此功能,因为就算想 D6DG 这种经典的书对resourcestring也只是一笔带过……)8、动态加载不同语言设置,不用我多说了,在
“..\Borland\Delphi7\Demos\RichEdit”目录下有个现成的例子,很容易,执行一下,再看看就知道了。
我自己还增强了此方法,现在我在自己的程序中除了可以动态加载主EXE的资源文件,就算在外挂DLL(自己写的一些COM组件)中也可以实现语言的动态切换;…………这回就这么多了,希望以上内容对大家有帮助!