1. 概述
ApusTAI平台支持多语言功能,用户不需要配置多套UI,将UI上的文字去掉,用填写各语言内容的文字标签替换,通过设置系统寄存器-多语言寄存器SysLang,一键切换不同语言。
| 项目 | 作用 |
|---|---|
| 语言数目 | 设置工程使用的语言数量 |
| 字库 | 提供文字显示所需的字符 |
| 文字标签 | 保存各语言的文字内容 |
| SysLang | 当前语言索引,从 0 开始 |
点击“工程 → 设置”,将“语言数目”设为 2,本例使用简体中文和 English。

图片中的文字不参与语言切换,需要切换的文字应使用控件显示。
2. 字库
2.1 内置字库
点击“工程 → 字库”打开管理器。本例使用文泉驿微米黑显示中英文,DigifaceWide用于数码风格的数字显示。

2.2 添加字库
- 点击“新增(系统字库)”选择已安装字体,或点击“添加字体文件”导入本地字体。
- 在文字标签或控件的字体属性中选用。
所选字体需包含待显示字符,否则可能显示为空白或方框。

2.3 调整与删除
选中字库后,可上移、下移、设为默认或删除。更换字体时,先添加新字库,再调整控件和语言设置中的字体引用。

2.4 字体裁剪
点击“工程 → 字体裁剪”:
- 选择字体文件。
- 载入 UTF-8 字符集文件,或勾选“输入字符集合”直接填写字符。
- 点击“开始裁剪”,将生成的字体文件加入工程。

若提示
No output file was specified,请改用下一节的编译裁剪。
2.5 工程字符裁剪
点击“工程 → 编译”,勾选“裁剪字体”,按需附加 GB2312 或 GBK 字符集,再点击“确定”。本例选择 GBK。

| 设置 | 保留内容 | 适用情况 |
|---|---|---|
| 不勾选裁剪 | 完整字库 | 动态文字范围不确定 |
| 仅裁剪字体 | 工程中使用的字符 | 固定菜单、提示和标签 |
| 附加 GB2312 | 工程字符及 GB2312 字符 | 常用简体中文输入 |
| 附加 GBK | 工程字符及 GBK 字符 | 更广的中文字符范围 |
键盘输入、串口接收和脚本生成的文字需纳入保留范围。新增文字后应重新编译。
3. 文字标签
3.1 语言设置
点击“工程 → 文字标签”。左侧设置语言名称和默认字体,右侧编辑标签内容。
语言顺序对应 SysLang 索引:本例简体中文为 0,English 为 1。调整顺序后,需同步修改切换按钮的索引。
3.2 新增与编辑
- 点击“添加标签”,填写标签名称。
- 双击各语言单元格,填写文字。
- 点击“确定”保存。
| 标签名称 | 简体中文 | English |
|---|---|---|
| 欢迎语 | 欢迎使用 | Welcome |
| 运行状态 | 设备状态:运行中 | Status: Running |
| 语言提示 | 请选择界面语言 | Select a language |

搜索标签名称可快速定位,修改内容后,引用该标签的控件会同步更新。下图新增“操作提示”标签:

3.3 删除标签
选中标签,点击“删除标签”。删除前先解除控件对该标签的引用。

3.4 导出标签
点击“导出”,选择保存位置,保存为 CSV 文件,可用表格软件批量编辑。

第一行为表头,后续每行对应一条标签:
csv 复制代码标签名称,简体中文,English
欢迎语,欢迎使用,Welcome
运行状态,设备状态:运行中,Status: Running
语言提示,请选择界面语言,Select a language
3.5 导入标签
- 按导出文件的表头和语言列顺序编辑,保存并关闭文件。
- 点击“导入”,选择 CSV 文件。
- 核对各语言内容,点击“确定”。

当前版本导出的 CSV 使用 GBK 编码,编辑时应保持一致。GBK 无法表示的文字可直接在管理器中填写。
4. 多语言应用
4.1 控件引用
- 添加文字控件,在“外观”中启用“使用标签”。
- 点击“文字标签”右侧的“…”,选择“欢迎语”。
- 设置字体、字号、颜色和对齐方式。

按钮需先启用“使用文字”。控件宽度应能容纳最长的译文。
4.2 语言切换
添加两个字设置按钮,向 SysLang(LW0119) 写入对应语言索引:
| 属性 | 中文按钮 | English 按钮 |
|---|---|---|
| 写入地址 | LW0119(SysLang) | LW0119(SysLang) |
| 操作模式 | 写入常量 | 写入常量 |
| 常量值 | 0 | 1 |
| 按钮文字 | 简体中文 | English |
4.3 运行预览
编译运行,点击语言按钮,已引用标签的文字随之切换。

文字未切换时,检查标签引用和译文;显示方框时,检查字体及裁剪范围。
5. RW 保存语言
将语言索引存入 RW,下次上电恢复上次选择。
5.1 地址设置
| 地址 | 用途 | 数值 |
|---|---|---|
| LW0119(SysLang) | 当前语言 | 0:简体中文;1:English |
| RW1000 | 保存语言索引 | 0 或 1 |
切换按钮仍向 LW0119 写入 0 或 1,脚本负责保存。RW1000 需独立预留。
5.2 脚本
打开“工程 → 脚本”,在 main.lua 中加入:
LW = 1
RW = 2
function on_init()
local lang = get_uint16(RW, 0x1000)
if lang > 1 then lang = 0 end
set_uint16(LW, 0x0119, lang)
end
function on_update(slave, kind, addr)
if kind == LW and addr == 0x0119 then
local lang = get_uint16(LW, 0x0119)
if lang <= 1 and lang ~= get_uint16(RW, 0x1000) then
set_uint16(RW, 0x1000, lang)
end
end
end
启动时恢复保存值,无效值默认使用中文;语言改变时才写 RW。增加语言后,调整代码中的上限 1。
地址按十六进制填写。已有 on_init、on_update 时,将代码合并到原函数。
5.3 验证
- 编译运行,切换为 English。
- 重启同一份模拟器工程,查看是否恢复英文;切回中文后重复检查。
- 下载到屏幕,切换语言并待保存完成后,断电重启检查。
重新编译可能重建模拟器数据目录,测试保存效果时只重启运行环境。
