文章目录

触摸屏多语言文本的动态切换脚本

发布于 2026-03-31 05:31:28 · 浏览 17 次 · 评论 0 条

触摸屏多语言文本的动态切换脚本

在电气自动化项目中,设备出口往往需要支持多种语言界面。硬编码文本会导致项目维护困难,重新编译耗时。通过变量绑定与脚本逻辑,可实现不修改画面即可动态切换语言。本指南提供一套通用的实施步骤,适用于大多数主流 HMI 开发环境。


1. 定义全局语言索引变量

切换逻辑的核心是一个控制变量,用于存储当前选定的语言代码。

  1. 打开 变量管理表。
  2. 创建 一个新的内部变量,命名为 g_LangID
  3. 设置 变量数据类型为 整数(Int 或 Short)。
  4. 设定 初始值为 1,代表默认语言(如中文)。
  5. 确认 变量属性为全局可读可写,确保所有画面均可访问。

该变量作为脚本的输入条件,决定了系统加载哪一组文本数据。避免使用布尔量,因为布尔量仅支持两种状态,无法扩展第三种语言。


2. 规划多语言文本映射表

在编写脚本前,必须明确每种语言对应的文本内容及其标识。建议采用前缀区分法,便于脚本批量调用。

假设系统需要支持中文与英文两种语言,文本变量命名规范如下表所示:

语言 ID 语言名称 文本变量前缀 示例变量名 (状态显示)
1 中文 _CN Status_Text_CN
2 英文 _EN Status_Text_EN

上表中的 示例变量名 需在实际项目中预先创建。每个需要切换的文本对象,都应准备对应数量的后台变量。例如一个“运行状态”文本,需同时存在 Status_Text_CNStatus_Text_EN 两个变量,分别存储“运行中”和"Running"。


3. 编写动态切换脚本

脚本负责监听 g_LangID 的变化,并将对应的文本变量值赋给显示对象。以下代码基于常见的 VBScript 语法逻辑,可根据实际软件环境调整为 C 脚本或 JavaScript。

  1. 新建 一个全局脚本文件,命名为 Script_LanguageSwitch
  2. 输入 以下逻辑代码,确保缩进清晰。
' 获取当前语言索引
Dim LangID
LangID = HMIVariables("g_LangID").Value

' 定义需要切换的文本对象列表
' 格式:显示对象名,中文变量名,英文变量名
Dim TextList(1)
TextList(0) = Array("TextObj_Status", "Status_Text_CN", "Status_Text_EN")
TextList(1) = Array("TextObj_Alarm", "Alarm_Text_CN", "Alarm_Text_EN")

' 循环处理每个文本对象
Dim i
For i = 0 To UBound(TextList)
    Dim TargetObj
    Dim SourceVar

    TargetObj = TextList(i)(0)

    ' 根据 ID 选择源变量
    If LangID = 1 Then
        SourceVar = TextList(i)(1)
    ElseIf LangID = 2 Then
        SourceVar = TextList(i)(2)
    Else
        SourceVar = TextList(i)(1) ' 默认回退到中文
    End If

    ' 执行赋值操作
    HMIScreenObjects(TargetObj).Text = HMIVariables(SourceVar).Value
Next
  1. 保存 脚本文件。
  2. 检查 代码中所有变量名是否与步骤 1 和步骤 2 中定义的名称完全一致。

脚本逻辑采用循环结构,便于后期增加新的文本对象。只需在 TextList 数组中添加新行,无需修改核心判断逻辑。若涉及更多语言,可扩展 ElseIf 分支或使用二维数组存储所有语言变量名。


4. 绑定界面交互元素

脚本编写完成后,需通过界面按钮触发执行,并将文本框绑定到显示逻辑。

  1. 放置 两个按钮对象在画面角落,分别命名为 Btn_CNBtn_EN
  2. 点击 Btn_CN 的属性设置,进入“鼠标点击”事件。
  3. 添加 动作:将变量 g_LangID 的值设置为 1
  4. 添加 动作:调用脚本 Script_LanguageSwitch
  5. 点击 Btn_EN 的属性设置,重复上述步骤,将 g_LangID 设置为 2
  6. 选中 画面上的文本显示对象(如状态栏)。
  7. 设置 文本属性为“动态”,绑定变量选择为脚本中对应的目标对象名称,或直接由脚本控制显示内容。

若软件支持“间接寻址”或“数组变量”,可直接将文本对象的显示变量绑定为 Text_Array[g_LangID],从而省去脚本赋值步骤。若不支持该功能,则必须依靠上述脚本强制刷新文本内容。


5. 验证逻辑流程与调试

为确保切换过程无死锁或延迟,需理解数据流向。以下流程图展示了从用户操作到界面更新的完整路径。

flowchart TD Start[用户点击语言按钮] --> SetVar[设置 g_LangID 数值] SetVar --> CallScript[调用切换脚本] CallScript --> ReadID[脚本读取 g_LangID] ReadID --> CheckID{判断 ID 数值} CheckID -- "ID=1" --> LoadCN[加载 _CN 后缀变量] CheckID -- "ID=2" --> LoadEN[加载 _EN 后缀变量] LoadCN --> UpdateUI[更新界面文本对象] LoadEN --> UpdateUI UpdateUI --> End[切换完成]

在上图中,判断 ID 数值 节点包含冒号,已按规范使用双引号包裹。流程表明,变量赋值必须先于脚本调用,否则脚本将读取到旧的语言索引。

  1. 启动 仿真模式或下载项目到触摸屏。
  2. 点击 中文按钮,观察 界面文本是否立即变为中文。
  3. 点击 英文按钮,观察 界面文本是否立即变为英文。
  4. 切换 不同画面,确认 全局变量 g_LangID 是否保持当前状态。
  5. 重启 设备,检查 文本是否恢复为 g_LangID 的初始值设定语言。

若发现文本未更新,检查 脚本触发事件是否设置为“按下”而非“释放”。若发现变量值错误,检查 按钮动作中写入变量的顺序是否正确。确保所有文本变量已正确初始化,避免显示空值。

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文