我安装的是VS2005中文简体版,所以,VS2005默认的是中文模式(不管是工程中的区域性设置,还是资源属性,似乎都是中文的)。我的对话框的资源属性,语言是宋体。
这本来也是相安无事,直到有一天我做了多语言版本,即可以随意切换界面的语言(英文,中文)。本来这样做完后,在中文系统里测试效果也还可以,不管是中文显示,还是英文显示,都是正常的。但是当把程序拿到纯英文系统下运行,问题出现了:主要问题描述如下:1. 由于我的程序很多界面元素都是通过MoveWindow写死的,但是不知道为什么,在英文系统里,首先,字体不对,我个人觉得应该是英文系统里没有宋体和其它中文字体,所以,程序用了默认的字体显示,这样一来,字体比以前的要大。2. 对话框的大小也变大了,导致对话框中的界面元素和对话框的布局都发生了比较大的变化。3. 其它相关的界面问题。
我想问一下,对于这种多语言版本(同时支持英文,中文)的软件,到底应该怎么设置工程的语言或者说区域性、字体、资源类型,以保证程序界面元素的显示效果兼容不同的操作系统(英文系统,中文系统),不会有差异?注意:这里不用考虑字体库是否安装的问题,因为你无法保证英文系统都装汉字库。所以,这里只考虑程序在英文显示模式下,如何让其在中、英文系统下,都能正常工作(即没有特别大的界面显示上的差别,比如,布局变形,对话框变大等问题)。谢谢!

解决方案 »

  1.   

    这个确实比较麻烦,要么就是指定语言的字体,比如中文的指定为“宋体”,英文的指定为“Arial”,在开发的时候就指定好字体,这样应该能避免使用系统默认字体而造成的界面变化。由于这两种字体本身大写也不相同,或许还要提供不同语言的界面DLL。
      

  2.   

    碰见过,最好就是选用一些基本通用的字体。我自己处理的就是在InitDialog里面把全部控件都设置下位置,不过我的程序本来就需要做这个,所以也不嫌麻烦。
      

  3.   

    这个确实是一个问题,为了保证界面显示正常,一般的解决方案就是使用多套纯资源的dll库,然后根据locale选择加载。最典型的例子比如office就是如此,你可以搜索一下 *intl.dll文件,这些库就是根据不同语言选择加载到进程中去的
      

  4.   

    Arial?我也没具体测试过,因为做了后一步,什么语言都自己调正了。