Santé

为明天干杯!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于Localize的问题

Posted on 2005-06-20 14:13  smalldust  阅读(1742)  评论(8编辑  收藏  举报

今天的主要任务是对我前两天写的一个简单的Calendar控件进行本地化测试。结果没想到,从刚开始就遇到了麻烦。

因为我们的产品要在日本、新加坡、中国(包括大陆,香港,台湾的几个城市)等地应用,所以特地制作了2种语言版本——日语版和英语版。测试的OS也有四种语言版本的Windows2003:日文版,英文版,简体中文,繁体中文。日文OS上运行日文版本,其他OS上运行英文版本。我在制作这个控件的时候,因为控件上只有一处需要根据语言而改变的部分(最上方的Label,显示当前年月),或者说只有这一处需要Localize的部分,所以只粗粗看了一下Localize的相关MSDN,就把控件写完了。下面是在日文OS下跑的情况:


没想到,第一个Localize的工程就失败了-_-!
在我自己的机器上(Windows XP日文版)跑得完全没问题,安装到简体中文,繁体中文和英文Windows Sever 2003都会乱成一团:

其中,英文OS还好一点,宽度上没有问题,但是高度上也是一样错位。

经过调查,引起这个问题的原因是,在日文系统上开发的东西,到了其它语言版本的系统上控件的大小是会被自动调整的(以前使用某些英文软件的时候就遇到过这个问题,但是根本没当回事);而我写的控件中的每个格的大小是在Load时就已经计算出来了,所以会遇到这样的问题。

现在临时用了一种笨方法解决(为了应付上面)——在Paint时重新计算格子的大小位置。可是究竟什么才是正确的方法?能让一个软件到了另一个语言版本的OS中仍然能不改变大小位置? 

To 从来没有遇到过这类问题的人
关于在不同语言中界面元素大小发生改变的简单实验方法:
·建立一个新的WinForm,设定好高度宽度;
·拖一个按钮上来,为其Click事件添加内容:MessageBox.Show(this.Height.ToString());
然后在不同语言的系统上运行就可以了。


最后的解决@6月20:

感谢NetCobra提供的方法,就是全部换成英文字体或者宋体,这样就解决了问题。