VisualHMI - 多语言(字库、文字标签)
| 版本 | 内 容 摘 要 | 日期 |
|---|---|---|
| V1.0 | 首次发布 | 2026/3/18 |
1.概述
VisulHMI平台支持多语言功能,用户不需要配置多套UI,将UI上的文字去掉,用相关控件代替代UI上的文字,配置控件上的相关语言词条,通过设置系统寄存器-多语言寄存器,一键切换不同语言词条
适用范围:VisualHMI - HMI&M系列&Dx系列
在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.裁剪字库
2.5.1.字库选择裁剪
VisualHMI软件集成字库裁剪工具,在工程 字库裁剪,操作流程如下:
- 选择需要裁剪的字库,如下所示;
- 加载需要保留的字符集合:txt文件必须要UTF-8编码格式;
- 点击开始裁剪,将生成xxx_cut.ttf字库。如下所示

2.5.2.工程字符裁剪
VisualHMI新版本支持字符裁剪,在工程编译生成下载文件时,自动对下载文件中的字库进行裁剪,根据选择的裁剪方式,只在字库中保留选择项内容。有“禁用”、“工程字符”、“工程字符+GB2312”、“工程字符+GBK”四种选择,作用说明如下“
- 禁用:不启用字符裁剪,保留完整字库
- 工程字符:工程中使用到字符在字库中保留,其余裁剪掉
- 工程字符+GB2312:工程中使用到字符以及GB2312编码包含字符在字库中保留,其余裁剪掉
- 工程字符+GBK:工程中使用到字符以及GBK编码包含字符在字库中保留,其余裁剪掉

启用字库裁剪生成的精简字库,需要注意:通过串口动态接收的文本或由 Lua 脚本在运行时设置的字符串不在裁剪字符集中,不会被自动纳入裁剪后的字库,可能导致运行时显示为乱码或方块。因此,在使用字库裁剪功能时,应预先评估并显式添加所有可能动态显示的字符,以确保完整显示支持。
2.6.合并字库
字库的合并,或某些字符缺失,可以通过第三方FontCreator 软件进行操作,本章节不进行阐述。可以在网上寻找相关资料了解
3.文字标签
在VisualHMI软件中,文字标签有利于多语言种的使用,一个文字标包含不同语言的合合集。用户在不同组态控件中可以引用同一个文字标签,省去了编写重复的文字的时间,尤其在使用多国语言文字时,更便捷的管理与修改所有用到的文字
点击Visual HMI软件菜单栏中【文字标签】打开文字标签管理,在该弹窗中可以对文字标签进行新增、修改、删除、导出以及导入操作

3.1.增加文字标签
- 点击新增;
- 标签名称默认“text1”,用户可以修改有含义的标签名称,将译文词条复制到对于语言里,如下所示

3.2.删除单个文字标签
如选中标签“下拉选择”,点击删除即可

3.3.删除全部文字标签
点击全部删除,即可将所有标签全部清除,如下所示

3.4.EXCEL编辑
点击EXCL编辑按键,文本标签以excel表格形式打开,可通过表格文件直接进行编辑修改文字标签,保存后关闭excel返回文本标签,确认修改即可更新文本标签,如下所示:

3.5.导出文字标签
当修改多语言的字符串内容时,可以导出xml、csv或xlsx文件进行修改,流程如下所示:
- 点击导出;
- .保存为xml、csv或xlsx文件,如下所示

3.6.文字标签ID维护说明
工程编译时,会生成一张最终的字符串表。字符串来源主要包括:
- 文字标签表里的文字:这是用户主动维护的文字资源,每条文字有固定的序号/ID。使用
$引用时,就是引用文字标签表里的这条固定 ID。 - 未使用
$引用、直接填写的文字:例如直接写在控件、表单、操作记录、参数描述里的文字。这类文字没有绑定文字标签表中的固定 ID,编译时会被自动加入最终字符串表,通常追加在字符串表末尾。 - 告警配置的字符串:告警配置表里的告警内容也会参与最终字符串表。
设备运行时,历史记录通常保存完整文字,而是保存字符串 ID。例如:
历史记录 = 时间 + 字符串 ID
操作记录 = 时间 + 操作字符串 ID + 值变化
告警记录 = 告警时间 + 告警字符串 ID
显示历史记录时,设备会用保存的字符串 ID,到当前版本的字符串表里查找文字。
字符串 ID -> 当前字符串表 -> 显示文字
因此,字符串 ID 的含义必须保持不变。如果字符串表被修改,例如删除原来的文字、修改原 ID 对应的文字含义、新增文字时复用旧 ID、未使用 $ 引用导致编译后字符串顺序变化、表单内容调整后自动汇总的字符串位置变化,历史记录里保存的字符串 ID 就会指向当前字符串表里的新文字,历史记录显示内容会错误。
操作记录示例:原版本文字标签表中 150 = 设定温度修改,设备记录一条操作记录:
2026-05-11 10:20:30
操作字符串 ID:150
值变化:20 -> 25
显示结果为:
2026-05-11 10:20:30 设定温度修改 20 -> 25
如果后续工程修改后,文字标签表变成 150 = 风机模式修改,同一条历史操作记录会显示成:
2026-05-11 10:20:30 风机模式修改 20 -> 25
这样 20 -> 25 的含义也会变错。原来是温度从 20 改到 25,显示成风机模式后,这条操作记录就失去了真实含义。
告警内容来自告警配置表,也会参与最终字符串表。如果设备历史告警只保存“告警时间 + 告警字符串 ID”,显示历史告警时也是通过字符串 ID 到当前字符串表中查找告警文字。已经发布使用过的告警 ID,不能删除、不能复用、不能改成其他告警含义,否则历史告警会显示成错误的告警内容。
后续维护时建议按以下规则执行:
- 会被设备保存的文字,必须使用固定文字标签 ID,包括操作记录内容、参数描述、历史记录中引用的文字、告警内容。
- 已经发布使用过的 ID 不能删除,即使这条记录以后不用了,也要保留原 ID。
- 已经发布使用过的 ID 不能复用,旧 ID 不能分配给新的操作记录、告警内容、参数描述或其他文字。
- 已经发布使用过的 ID 不能改含义,可以修正错别字、补充翻译,但不能把“设定温度修改”改成“风机模式修改”,也不能把“回风温度故障”改成“送风温度故障”。
- 不再使用的 ID 保留占位,可以标记为“废弃”“Reserved”“Deprecated”,但不要删除。
- 新增内容只能使用新的 ID,新增操作记录、新增告警内容、新增参数描述、新增历史记录文字,都从未使用过的新 ID 往后追加。
- 不要依赖自动追加的字符串 ID。未使用
$引用、由编译自动汇总到末尾的文字,只适合当前版本界面显示,不适合作为操作记录、告警记录、掉电存储等长期数据的引用依据。 - 升级前要检查字符串表兼容性,对比新旧版本字符串表,确认已发布 ID 的含义没有变化。
- 建议建立字符串 ID 维护表,记录每个 ID 的用途、中文、英文、是否启用、是否废弃、首次使用版本。
[!note|tip:注意:]
操作记录、告警记录、掉电存储等历史数据只保存字符串 ID 时,字符串表就是历史数据的解释字典。这个字典一旦发布,就不能随意删除、复用或改变 ID 含义,否则历史记录会显示成错误内容。
3.7.导入文字标签
[!note|tip:注意:]
导入文字标签时,标签文件不能处于打开状态,否则导入失败
3.7.1.导入xlsx文件
xlsx格式文件,打开excel软件,第1列写标签名称,第2列写语言1的内容,第3列语言2的内容,依次类推。如下所示
[!note|tip:注意:]
1.需要根据当前工程语言数依次填入多语言内容,如:当前语言数为5,导入后,只识别前6列(1列标签名称+5列语言内容)
2.若改标签的语言内容含多个子项,用;隔开,如下拉选择控件的内容。
3.多语言文字,导入需要文件UTF8编码的文件

3.7.2.导入csv
csv格式文件,打开WPS软件,第1列写标签名称,第2列写语言1的内容,第3列语言2的内容,依次类推。如下所示
[!note|tip:注意:]
1.需要根据当前工程语言数依次填入多语言内容,如:当前语言数为5,导入后,只识别前6列(1列标签名称+5列语言内容)
2.若改标签的语言内容含多个子项,用;隔开,如下拉选择控件的内容。
3.多语言文字,导入需要文件UTF8编码的文件

3.7.3.导入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.4.运行预览
运行虚拟屏,进入语言设置,切换不同语言,相关控件的词条对应变化,如下所示:
