3. 文本资源与翻译管理:从创建到维护的全流程
文本资源管理,说白了就是给界面里的每个文字起个名字,然后告诉 TouchGFX 在不同语言下该显示什么。这步要是没做好,后面加语言、改文案的时候,你会想砸电脑的。我自己踩过这个坑,所以今天把这套流程掰开揉碎了讲。
3.1 创建文本 ID:给文字一个身份证
在 TouchGFX Designer 里,每个文本都有一个唯一的 ID。这个 ID 就像人的身份证号,程序里只认它,不认具体内容。
操作路径很简单:Texts → New Text。但这里有几个细节,我建议你注意一下:
- 命名规范:用大写字母 + 下划线,比如
BTN_CONFIRM、LABEL_TEMPERATURE。别用中文,也别用驼峰,后面代码里引用时会很别扭。 - 分组管理:按功能模块加前缀,比如
MENU_、SETTING_、ALERT_。项目大了你就知道这有多香。 - ID 长度:控制在 30 个字符以内。太长的话,代码里写起来累,而且容易拼错。
3.2 为不同语言输入翻译文本
创建好 ID 之后,就要给每种语言填内容了。TouchGFX 支持的语言列表很全,中、英、日、韩、阿拉伯语都没问题。
操作步骤:
- 在 Texts 面板里,先添加你需要的语言(比如中文简体、英文、日文)。
- 选中一个文本 ID,在右侧的 Translation 区域,逐语言输入翻译内容。
- 注意字符数限制——不同语言的同一个词,长度可能差很多。比如英文 "Confirm" 是 7 个字符,中文 "确认" 是 2 个,但德文 "Bestätigen" 是 10 个。
%WILDCARD% 动态适配。
3.3 使用文本数据库(Texts Database)
文本数据库是 TouchGFX 管理多语言文本的核心机制。它本质上是一个 XML 文件,里面记录了所有文本 ID 和对应的翻译。
文件位置在:assets/Texts/ 目录下,文件名通常是 Texts.xml。你可以直接打开它看结构:
<?xml version="1.0" encoding="UTF-8"?>
<Texts>
<Language Id="zh_CN">
<Text Id="BTN_CONFIRM">确认</Text>
<Text Id="BTN_CANCEL">取消</Text>
</Language>
<Language Id="en_US">
<Text Id="BTN_CONFIRM">Confirm</Text>
<Text Id="BTN_CANCEL">Cancel</Text>
</Language>
</Texts>
这个文件是自动生成的,你一般不需要手动改。但如果你要做批量导入/导出,或者对接翻译平台,直接操作 XML 反而更高效。我有个项目就是写了个 Python 脚本,把 Excel 里的翻译表转成这个 XML 格式,省了翻译团队好多时间。
3.4 管理多语言文本的增删改查
项目做到一半,需求变更是常有的事。加个新按钮、改个提示文案、删掉过时的功能……这些操作在 TouchGFX 里怎么搞?
3.4.1 新增文本
在 Designer 里直接点 New Text,填 ID,然后逐语言输入翻译。注意:新增的文本 ID 不要跟已有的重名,否则 Designer 会报错。
3.4.2 删除文本
选中要删的文本 ID,右键 Delete。但这里有个坑——如果代码里还在引用这个 ID,编译时会报链接错误。所以删除前,我建议你先全局搜索一下这个 ID 有没有被用到。
3.4.3 修改文本
直接改翻译内容就行,ID 不变,代码里不用动。这是最安全的操作。但如果你要改 ID 名称,那就相当于删了重建,所有引用地方都得改。
3.4.4 查询文本
在 Designer 的 Texts 面板里,可以用搜索框按 ID 或内容过滤。项目文本量超过 200 条时,这个功能就特别重要了。我习惯把搜索框快捷键记下来——Ctrl+F,省得鼠标点来点去。
3.5 多语言文本管理流程图
下面这张图把整个流程串起来了,你可以对照着看:
3.6 实战中的几个建议
最后,分享几个我在实际项目中总结出来的经验:
- 翻译占位符:如果某个语言的翻译还没到位,先用英文占位,别留空。空文本在界面上会显示成空白,测试时容易误以为是 bug。
- 变量文本:如果文本里要嵌入动态数值(比如温度、时间),用
<value>占位符。TouchGFX 支持%d、%s这类格式化符号,但不同语言的语序可能不同,这点要跟翻译团队提前沟通。 - 版本控制:
Texts.xml一定要纳入 Git 管理。每次修改后,commit 信息里注明改了哪些 ID,方便回溯。
Texts.xml 的变化。这样你能直观感受到 Designer 和底层文件之间的映射关系,后面出问题时排查起来快得多。