创建支持复杂脚本Complex Scripts的WINCE6.0系统
如果要创建支持复杂脚本(Complex Scripts)的系统,我们需要完成下面一系列步骤来确保系统包含所有需要支持的具体区域设置 (locale–specific)。
1. 选择international下面的Unicode Processor for Complex Scripts组件
图1
此组件对应系统环境变量SYSGEN_UNISCRIBE。
2. 增加具体locale
从PB目录中,添加对具体locale的支持到系统中,比如,我们要在系统中包含Arabic,在PB中International\Locale Specific Support找到Arabic文件,并选择合适的字体和键盘,如图1所示。
3. 工程下面Property Pages中选择具体的locale
图2
在list目录下,为我们的系统选择适当的locale,选中的目标locale包含所需要的NLS(National Language Support,国际化语言支持)和相关的ANSI(美国国家标准协会)和此locale对应的默认OEM code page(字符集和字符编码方案,Codepage就是各国的文字编码和Unicode之间的映射表)
在图2中的Default locale选择默认的locale,并清空
4. 创建具体locale所需要的common.str
打开:\WINCE600\PUBLIC\COMMON\OAK\FILES\INTLTRNS文件夹,创建一个文件夹并用LCID(locale identifier)来命名,此LCID将作为系统默认的LCID。比如,我们如果要创建默认LCID为Arabic (Saudi Arabia,沙特阿拉伯)的系统,以0401命名此文件夹。
从INTLTRNS\0409(对应英文)复制common.str到0401文件夹下面,并打开此文件修改下面的定义:
#define LOC_LCID ~"<default LCID>"
#define LOC_ACP ~"<default code page>"
#define LOC_HKL_DEFAULT ~"<default HKL value>"
对于沙特阿拉伯,上面的定义对应的值如下:
#define LOC_LCID ~"401"
#define LOC_ACP ~"4e8"//1256,ARA
#defineLOC_HKL_DEFAULT "00000401"
图3
需要注意的是LCID和默认的code page都必须是十六进制,下面的表列出了复杂脚本locale的HKL。
图4
5. 选择Sysgen编译并运行
选择Sysgen编译并更新之后WINCE的界面如下:
图5
My device的显示也是由右到左,如下图:
图6
但为什么显示的还是英文呢?像Arabic这样的PB就没有直接提供res文件。当然这些res文件可以自己做(无非就是建立对话框,添加按钮,编辑框之类的),不过前提是你要懂得相关的语言。如果你要是在pb->setting->local中选择arabic相关语言的话,在你编译后的nk运行后,一直都english的。因为,在makeimage的时候,如果没有找到相关语言的res文件的话,就用默认的0x0409来代替。
WINCE6.0中特别提到WordPad、Inbox、Windows Messenger和File Viewers不支持复杂脚本。
图7