多语开发
在设计仪器仪表设备的软件时候,经常有多语的需求,也就是说允许通过设置,影响界面显示文字的内容
常规实现中,需要用软件通过固化的全局数据中的语种来决定按钮等界面的显示字符串,这样不仅软件实现复杂,而且大量使用字符串赋值,导致单片机RAM空间大量使用,从而导致资源紧张,影像数据处理;
因此我们针对这个需求,在内核增加了多语模块,主要实现:
- 除主语言外,还支持四种语言
- 多语模块原理是根据主语言的字符串的hash值为key,针对此key设置不同语种的显示字符串,完成多语显示
具体实现:
一、编辑多语对应的字符串
上位机菜单:工程-->多语数据编辑:
- 第一步: 启用lang1 后,系统会将原始字符串 slang复制到lang1中,方便编辑
- 第二步:编辑语言名称,可选
- 第三步:编辑翻译语言,如果是大段文本,可在右侧编辑,人后点确认
- 第四步:编辑完成点击保存返回
二、使用语句切换语种
void x3.onclick()
{ //中文
setlanguage(0);gopage(0); //切换到slang
}
void x4.onclick()
{ //英文
setlanguage(1);gopage(0); //切换到lang1
}
实际效果:
中文界面:
英文界面:
注意事项
由于是资源字符串的替换,因此请认为分别显示字符串和代码字符串,用于程序处理的代码字符串被多语系统替换后会影响程序的运行,比如下面语句:
str s="ABC";
setlanguage(1);
echo(s);
在正常的情况下,输出会输出ABC,但是在多语模式下,当设置:
| slang | lang1 |
|---|---|
| ABC | 123 |
此时上段代码会输出123,请注意。
备注
- 本多语系统主要解决多语字符串的切换显示机制,并不解决多语字库的显示问题,因此只适合简繁汉字以及通过切换不同asc字库完成的拉丁体系显示