VisualHMI - 多语言(字库、文字标签)

版本 内 容 摘 要 日期
V1.0 首次发布 2026/3/18

1.概述

VisulHMI平台支持多语言功能,用户不需要配置多套UI,将UI上的文字去掉,用相关控件代替代UI上的文字,配置控件上的相关语言词条,通过设置系统寄存器-多语言寄存器,一键切换不同语言词条

适用范围:VisualHMI - HMI&M系列&Dx系列

下载链接:VisualHMI - 多语言应用(点击下载)

在VisualHMI工程属性,配置语言数,最大支持30种语言,如下所示

image-20231111152828367

[!note|tip:]

1.多语言功能取决于“字库(*.ttf文件,矢量字库)”里是否含有该字符

2.系统提供的字库均为免费字库,用户添加额有字库时,需要考虑版权,自行购买

3.对静态文案(不随着MCU串口指令或网络WIFI等其他方法更新),可以在软件上预先输入不同语言的字符串,编译运行后,通过设置“多语言系统寄存器”,进行切换预先输入的字符串

支持多语言的控件如下所示,共12种,可以在控件属性栏查看

image-20231111172419848

2.字库

2.1.系统字库

在VisualFTF菜单栏,工程→字库中,可以添加、删除字库操作。其中,软件自带的字库如下所示:

  • DroidSans.tft:只含字母数字;
  • DS-DIGIB.tft:数码管, 大写字母、 数字;
  • fangsong_GB2312.tft:仿宋, 支持中英文;
  • songti_GB2312.tft:宋体, 支持中英文;
  • wqyMicroHeiMono.tft:文泉, 默认字库, 支持小语种(中文、繁体中文、英文、俄语、法语、日语、韩语、葡萄牙语、西班牙语、德语、意大利语), 多语言使用;

image-20231111153531403

2.2.添加字库

  1. 在字库设置里面,点击添加,选中字库文件即可,如下所示
  2. 勾选字库,如新添加的Arabic.ttf,索引为1,其中新添加的字库,会在工程目录下新建font文件夹,并将Arabic.ttf放在..\font目录下

Video_2023-11-11_154424

[!note|tip:]

1.添加的字库文件命名支持字母、数字、-、_等字符组成,命名长度不超过32个字符

2.3.替换字库

控件显示的字库和索引关联,如上章节所述,将Arabic.ttf替换为wqyMicroHeiMono.tft,将Arabic.ttf的索引修改为0,并取消勾选wqyMicroHeiMono.tft即可,如下所示

Video_2023-11-11_154944~1

[!note|tip:]

新加的字库,替换原本的字库,需要保存工程,重新打开,编辑界面时候才会刷新显示

2.4.删除字库

在字体设置列表中,系统自带的字库不支持删除。用户添加的字库,支持删除操作,如选中“Arabic”,点击删除即可,如下所示:

Video_2023-11-11_160456

2.5.裁剪字库

2.5.1.字库选择裁剪

VisualHMI软件集成字库裁剪工具,在工程 字库裁剪,操作流程如下:

  1. 选择需要裁剪的字库,如下所示;
  2. 加载需要保留的字符集合:txt文件必须要UTF-8编码格式;
  3. 点击开始裁剪,将生成xxx_cut.ttf字库。如下所示

Video_2023-11-11_160815

2.5.2.工程字符裁剪

VisualHMI新版本支持字符裁剪,在工程编译生成下载文件时,自动对下载文件中的字库进行裁剪,根据选择的裁剪方式,只在字库中保留选择项内容。有“禁用”、“工程字符”、“工程字符+GB2312”、“工程字符+GBK”四种选择,作用说明如下“

  1. 禁用:不启用字符裁剪,保留完整字库
  2. 工程字符:工程中使用到字符在字库中保留,其余裁剪掉
  3. 工程字符+GB2312:工程中使用到字符以及GB2312编码包含字符在字库中保留,其余裁剪掉
  4. 工程字符+GBK:工程中使用到字符以及GBK编码包含字符在字库中保留,其余裁剪掉

启用字库裁剪生成的精简字库,需要注意:通过串口动态接收的文本由 Lua 脚本在运行时设置的字符串不在裁剪字符集中,不会被自动纳入裁剪后的字库,可能导致运行时显示为乱码或方块。因此,在使用字库裁剪功能时,应预先评估并显式添加所有可能动态显示的字符,以确保完整显示支持。

2.6.合并字库

字库的合并,或某些字符缺失,可以通过第三方FontCreator 软件进行操作,本章节不进行阐述。可以在网上寻找相关资料了解

3.文字标签

在VisualHMI软件中,文字标签有利于多语言种的使用,一个文字标包含不同语言的合合集。用户在不同组态控件中可以引用同一个文字标签,省去了编写重复的文字的时间,尤其在使用多国语言文字时,更便捷的管理与修改所有用到的文字

点击Visual HMI软件菜单栏中【文字标签】打开文字标签管理,在该弹窗中可以对文字标签进行新增、修改、删除、导出以及导入操作

image-20231111161322823

3.1.增加文字标签

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

Video_2023-11-11_162042

3.2.删除单个文字标签

如选中标签“下拉选择”,点击删除即可

Video_2023-11-11_162437

3.3.删除全部文字标签

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

Video_2023-11-11_162835

3.4.EXCEL编辑

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

3.5.导出文字标签

当修改多语言的字符串内容时,可以导出xml、csv或xlsx文件进行修改,流程如下所示:

  1. 点击导出;
  2. .保存为xml、csv或xlsx文件,如下所示

Video_2023-11-11_163303

3.6.文字标签ID维护说明

工程编译时,会生成一张最终的字符串表。字符串来源主要包括:

  1. 文字标签表里的文字:这是用户主动维护的文字资源,每条文字有固定的序号/ID。使用 $ 引用时,就是引用文字标签表里的这条固定 ID。
  2. 未使用 $ 引用、直接填写的文字:例如直接写在控件、表单、操作记录、参数描述里的文字。这类文字没有绑定文字标签表中的固定 ID,编译时会被自动加入最终字符串表,通常追加在字符串表末尾。
  3. 告警配置的字符串:告警配置表里的告警内容也会参与最终字符串表。

设备运行时,历史记录通常保存完整文字,而是保存字符串 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,不能删除、不能复用、不能改成其他告警含义,否则历史告警会显示成错误的告警内容。

后续维护时建议按以下规则执行:

  1. 会被设备保存的文字,必须使用固定文字标签 ID,包括操作记录内容、参数描述、历史记录中引用的文字、告警内容。
  2. 已经发布使用过的 ID 不能删除,即使这条记录以后不用了,也要保留原 ID。
  3. 已经发布使用过的 ID 不能复用,旧 ID 不能分配给新的操作记录、告警内容、参数描述或其他文字。
  4. 已经发布使用过的 ID 不能改含义,可以修正错别字、补充翻译,但不能把“设定温度修改”改成“风机模式修改”,也不能把“回风温度故障”改成“送风温度故障”。
  5. 不再使用的 ID 保留占位,可以标记为“废弃”“Reserved”“Deprecated”,但不要删除。
  6. 新增内容只能使用新的 ID,新增操作记录、新增告警内容、新增参数描述、新增历史记录文字,都从未使用过的新 ID 往后追加。
  7. 不要依赖自动追加的字符串 ID。未使用 $ 引用、由编译自动汇总到末尾的文字,只适合当前版本界面显示,不适合作为操作记录、告警记录、掉电存储等长期数据的引用依据。
  8. 升级前要检查字符串表兼容性,对比新旧版本字符串表,确认已发布 ID 的含义没有变化。
  9. 建议建立字符串 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编码的文件

Video_2023-11-11_164223

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>

Video_2023-11-11_164945

4.应用说明

工程配置5种语言,分别是中文、英文、德语、韩语、阿拉伯语。其中Arabic.ttf是添加的用户字库。

目前文字、位状态指示灯、多状态指示灯、位状态按钮、多状态按钮、功能按钮若不使用标签,可支持单独设置每一种语言的字库、文字大小;RTC控件支持设置字库文件;其他支持多语言的控件,如滚轮、下拉菜单、表格类的表头、配方信息等,均只支持标签形式配置

4.1.工程配置

工程中添加支持多语言的控件,如下所示

image-20231111165636883

4.1.1.滚轮控件

  1. 使用标签:√
  2. 文本标签,选择“滚轮”,如下所示

在菜单栏 → 编辑 → 状态/语言,可以预览不同语言的词条显示状态

Video_2023-11-11_170148

4.1.2.告警控件

  1. 点击菜单栏 → 告警设置
  2. 在告警内容-语言x一栏中,填入多语言字符串

[!note|tip:注意:]

注意:告警内容目前不支持标签

Video_2023-11-11_172106

4.1.3.配方控件

  1. 点击菜单栏 → 配方设置

  2. 在文字标签一栏中,选择配方名称,如下所示

Video_2023-11-11_172739

若配方以数据记录控件方式显示,数据记录控件的表头也支持设置多语言,操作步骤下所示:

  1. 数量来源:配方数据

  2. 表格设置:点击进入,设置对应表头的对应的文字标签,如下所示

Video_2023-11-11_173019

[!note|tip:注意:]

注意:资料采集-数据记录、操作记录、告警记录的表头配置流程一样,此处不在阐述

4.1.4.位状态指示灯

若不使用标签,也只单独配置,以位状态指示灯控件为例:

  1. 位状态指示灯属性栏,点击设置

  2. 选择对应的状态S0/S1:填入对应字符串

  3. 每种语言可以单独设置字库、文字大小,如下所示:

Video_2023-11-11_173622

4.2.多语言设置配置

系统提供对应的寄存器设置多语言切换,寄存器地址为LW0119。设置画面中,添加5个位多态指示灯控件、5个字设置按钮控件,如图 下所示:

  1. 多状态指示灯控件:关联地址为LW0119,从左往右状态转换依次为1;0;、0;1;、0;2;、0;3;、0;4;启用图库。

    image-20231111174122123

  2. 字设置按钮控件:关联地址为LW0119,在多状态指示灯上,叠加5个字设置按钮,用来切换语言索引,从左往右设置常量为0~4

    image-20231111174311287

4.3.多语言掉电存储

若多语言设置后掉电存储,需要在LUA脚本设置,以下设置2个寄存器,如下所示:

image-20231111174609180

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.运行预览

运行虚拟屏,进入语言设置,切换不同语言,相关控件的词条对应变化,如下所示:

Video_2023-11-11_175159~1

Copyright ©Dacai all right reserved,powered by Gitbook该文件修订时间: 2026-05-11 18:03:50

results matching ""

    No results matching ""