大型程序多语言的两种实现思路

在国际化的程序中,经常要使用到语言切换的功能
以目前我正在做的为例,此程序有7种语言的切换功能
如此多的语言,为每一种语言单独设计一个对话框显然在大型程序中是不合适的
一般的,这会或多或少的利用dll.每个dll就是是个语言包。
为此,我所见的有两种设计思路:
1.语言包自带对话框资源
其实,其准确的说法是语言包自带对话框模版,因为这些dll工程中所引用的对话框都是完全相同的文件.
在写这些对话框时,他们的文本都只是一个宏名。对每一个宏名,不同的dll中对它有不同的define。
2.语言包只带自符串资源,对话框资源存在于主工程
在这种机制中,对话框资源中的文本显示的是什么已经不重要了,因为我们在加载对话框的时候可以分为两步。第一步:加载对话框资源,第二步,通过LoadString,将对话框中的字符串更新至合适语言。

另外,提示一点,即使工程浩大,字符串资源的ID也只有65536个(0 – 65535)(至于为什么是这么多,还有个典故可以去查),所以得珍惜着用。不要奇怪有时define的值超过了 65535,如果LoadString的参数超了的话,会自动减去65536.

发表评论

电子邮件地址不会被公开。 必填项已用*标注