VisualHMI - 多语言(字库、文字标签)
1. 概述
VisulHMI平台支持多语言功能,用户不需要配置多套UI,将UI上的文字去掉,用相关控件代替代UI上的文字,配置控件上的相关语言词条,通过设置系统寄存器-多语言寄存器,一键切换不同语言词条
适用范围:VisualHMI - HMI&M系列
在VisualHMI工程属性种,配置语言数,最大支持30种语言,如下所示
[!note|tip:]
1.多语言功能取决于“字库(*.ttf文件,矢量字库)”里是否含有该字符
2.系统提供的字库均为免费字库,用户添加额有字库时,需要考虑版权,自行购买
3.对静态文案(不随着MCU串口指令或网络WIFI等其他方法更新),可以在软件上预先输入不同语言的字符串,编译运行后,通过设置“多语言系统寄存器”,进行切换预先输入的字符串
支持多语言的控件如下所示,共12种,可以在控件属性栏查看
2. 字库
2.1 系统字库
在VisualFTF菜单栏,工程→字库中,可以添加、删除字库操作。其中,软件自带的字库如下所示:
- DroidSans.tft:只含字母数字;
- DS-DIGIB.tft:数码管, 大写字母、 数字;
- fangsong_GB2312.tft:仿宋, 支持中英文;
- songti_GB2312.tft:宋体, 支持中英文;
- wqyMicroHeiMono.tft:文泉, 默认字库, 支持小语种(中文、繁体中文、英文、俄语、法语、日语、韩语、葡萄牙语、西班牙语、德语、意大利语), 多语言使用;
2.2 添加字库
- 在字库设置里面,点击添加,选中字库文件即可,如下所示
- 勾选字库,如新添加的Arabic.ttf,索引为1,其中新添加的字库,会在工程目录下新建font文件夹,并将Arabic.ttf放在..\font目录下
[!note|tip:]
1.添加的字库文件命名支持字母、数字、-、_等字符组成,命名长度不超过32个字符
2.3 替换字库
控件显示的字库和索引关联,如上章节所述,将Arabic.ttf替换为wqyMicroHeiMono.tft,将Arabic.ttf的索引修改为0,并取消勾选wqyMicroHeiMono.tft即可,如下所示
[!note|tip:]
新加的字库,替换原本的字库,需要保存工程,重新打开,编辑界面时候才会刷新显示
2.4 删除字库
在字体设置列表中,系统自带的字库不支持删除。用户添加的字库,支持删除操作,如选中“Arabic”,点击删除即可,如下所示:
2.5 裁剪字库
VisualHMI软件集成字库裁剪工具,在工程 字库裁剪,操作流程如下:
- 选择需要裁剪的字库,如下所示;
- 加载需要保留的字符集合:txt文件必须要UTF-8编码格式;
- 点击开始裁剪,将生成xxx_cut.ttf字库。如下所示
2.6 合并字库
字库的合并,或某些字符缺失,可以通过第三方FontCreator 软件进行操作,本章节不进行阐述。可以在网上寻找相关资料了解
3 文字标签
在VisualHMI软件中,文字标签有利于多语言种的使用,一个文字标包含不同语言的合合集。用户在不同组态控件中可以引用同一个文字标签,省去了编写重复的文字的时间,尤其在使用多国语言文字时,更便捷的管理与修改所有用到的文字
点击Visual HMI软件菜单栏中【文字标签】打开文字标签管理,在该弹窗中可以对文字标签进行新增、修改、删除、导出以及导入操作
3.1 增加文字标签
- 点击新增;
- 标签名称默认“text1”,用户可以修改有含义的标签名称,将译文词条复制到对于语言里,如下所示
3.2 删除单个文字标签
如选中标签“下拉选择”,点击删除即可
3.3 删除全部文字标签
点击全部删除,即可将所有标签全部清除,如下所示
3.4 导出文字标签
当修改多语言的字符串内容时,可以导出xml或csv文件进行修改,流程如下所示:
- 点击导出;
- .保存为csv或xml文件,如下所示
3.5 导入文字标签
3.5.1 导入csv
csv格式文件,打开WPS软件,第1列写标签名称,第2列写语言1的内容,第3列语言2的内容,依次类推。如下所示
[!note|tip:注意:]
1.需要根据当前工程语言数依次填入多语言内容,如:当前语言数为5,导入后,只识别前6列(1列标签名称+5列语言内容)
2.若改标签的语言内容含多个子项,用;隔开,如下拉选择控件的内容。
3.多语言文字,导入需要需要文件UTF8编码的文件
3.5.2 导入xml
xml文件,打开相关编辑软件,第NAME为名称,LANG0为语言1的内容,LANG1语言2的内容,依次类推。如下所示
[!note|tip:注意:]
1.需要根据当前工程语言数依次填入多语言内容,如:当前语言数为5,导入后,只识别前LANG4 前的语言
2.若改标签的语言内容含多个子项,用;隔开,如混轮的内容。
3.多语言文字,导入需要需要文件UTF8编码的文件
<TextLabel><label NAME="滚轮" LANG0="1.滚轮;2.滚轮;3.滚轮;4.滚轮;5.滚轮;" LANG1="1. Roller; 2. Roller; 3. Roller; 4. Roller; 5. Roller;" LANG2="1. Walze; 2. Walze; 3. Walze; 4. Walze; 5. Walze;" LANG3="1. 롤러;2.롤러;3.롤러;4.롤러;5.롤러;" LANG4="1 . بكرة ; 2 . بكرة ; 3 . بكرة ; 4 . بكرة ; 5 . بكرة ;"/></TextLabel>
4 应用说明
工程配置5种语言,分别是中文、英文、德语、韩语、阿拉伯语。其中Arabic.ttf是添加的用户字库。
目前文字、位状态指示灯、多状态指示灯、位状态按钮、多状态按钮、功能按钮若不使用标签,可支持单独设置每一种语言的字库、文字大小;RTC控件支持设置字库文件;其他支持多语言的控件,如滚轮、下拉菜单、表格类的表头、配方信息等,均只支持标签形式配置
4.1 工程配置
工程中添加支持多语言的控件,如下所示
4.1.1 滚轮控件
- 使用标签:√
- 文本标签,选择“滚轮”,如下所示
在菜单栏 → 编辑 → 状态/语言,可以预览不同语言的词条显示状态
4.1.2 告警控件
- 点击菜单栏 → 告警设置
- 在告警内容-语言x一栏中,填入多语言字符串
[!note|tip:注意:]
注意:告警内容目前不支持标签
4.1.3 告警控件
点击菜单栏 → 配方设置
在文字标签一栏中,选择配方名称,如下所示
若配方以数据记录控件方式显示,数据记录控件的表头也支持设置多语言,操作步骤下所示:
数量来源:配方数据
表格设置:点击进入,设置对应表头的对应的文字标签,如下所示
[!note|tip:注意:]
注意:资料采集-数据记录、操作记录、告警记录的表头配置流程一样,此处不在阐述
4.1.4 位状态指示灯
若不使用标签,也只单独配置,以位状态指示灯控件为例:
位状态指示灯属性栏,点击设置
选择对应的状态S0/S1:填入对应字符串
- 每种语言可以单独设置字库、文字大小,如下所示:
4.2 多语言设置配置
系统提供对应的寄存器设置多语言切换,寄存器地址为LW0119。设置画面中,添加5个位多态指示灯控件、5个字设置按钮控件,如图 下所示:
多状态指示灯控件:关联地址为LW0119,从左往右状态转换依次为1;0;、0;1;、0;2;、0;3;、0;4;启用图库。
字设置按钮控件:关联地址为LW0119,在多状态指示灯上,叠加5个字设置按钮,用来切换语言索引,从左往右设置常量为0~4
4.3 多语言掉电存储
若多语言设置后掉电存储,需要在LUA脚本设置,以下设置2个寄存器,如下所示:
4.3.1 LUA脚本
在on_int()初始化中,从上一次掉电存储的参数加载。当用户修改多语言时,触发on_updata(...)函数,设置LW011A,LW011B寄存器保存,代码下所示:
function on_init()
set_uint16(VT_LW, 0x011B, (1<<1)) -- 选择需要加载的掩码,bit1,多语言
set_uint16(VT_LW, 0x011A, 0x5502) -- 加载选中的系统参数
update_system() --立刻加载
end
function on_update(slave,vtype,addr)
if vtype == VT_LW
then
if addr == 0x0119
then
set_uint16(VT_LW, 0x011B, (1<<1))-- 设置的系统变量,bit1-多语言
set_uint16(VT_LW, 0x011A, 0x5501)-- 保存参数
end
end
end
[!note|tip:注意:]
注意:有多个系统参数需要掉存储,设置0x011B,将对应为置为1,如背光 set_uint16(VT_LW, 0x011B, (1<<3) |(1<<1))
4.3 运行预览
运行虚拟屏,进入语言设置,切换不同语言,相关控件的词条对应变化,如下所示: