TMX全称为Translation Memory eXchange,是本地化行业标准组织制定的一套基于XML的翻译记忆库交换规范,目的是解决不同翻译辅助工具之间翻译记忆数据不兼容的问题,让翻译人员可以在多个工具间无缝迁移已有的翻译资产。

TMX格式的核心设计目标
翻译记忆库是存储原文和对应译文片段的数据库,不同厂商的翻译工具往往采用私有格式存储这些数据,导致用户更换工具时无法复用之前的翻译成果。TMX格式的出现就是为了解决这个问题,它具有以下核心特点:
- 基于通用的XML标准,任何支持XML解析的工具都可以读取TMX文件
- 支持多语言对的存储,同一个文件可以包含多种语言之间的翻译对应关系
- 保留翻译的上下文信息、创建时间、译者信息等元数据
- 版本迭代稳定,主流翻译工具都提供了TMX格式的导入导出支持
TMX文件的基本结构
一个标准的TMX文件遵循XML的语法规则,整体结构分为文件头<header>和正文<body>两部分,下面是结构说明:
文件头部分
<header>标签用于定义TMX文件的全局属性,比如创建工具、源语言、目标语言、创建时间等信息,常见的属性说明如下:
| 属性名 | 说明 |
|---|---|
| creationtool | 创建该TMX文件的工具名称 |
| srclang | 源语言代码,比如en表示英语,zh-CN表示简体中文 |
| datatype | 数据类型,比如plaintext表示纯文本,xml表示XML格式内容 |
| segtype | 分段类型,比如sentence表示按句子分段,paragraph表示按段落分段 |
正文部分
<body>标签内部包含多个<tu>标签,每个<tu>代表一条翻译单元,也就是一组对应的原文和译文。每个<tu>内部包含多个<tuv>标签,每个<tuv>对应一种语言的翻译版本,通过xml:lang属性区分语言。
标准TMX文件示例
下面是一个符合TMX 1.4版本规范的XML文件示例,包含英语到简体中文的翻译记忆条目:
<?xml version="1.0" encoding="UTF-8"?>
<tmx version="1.4">
<header
creationtool="CustomTool"
creationtoolversion="1.0"
datatype="plaintext"
segtype="sentence"
adminlang="en"
srclang="en"
creationdate="20240501T120000Z">
</header>
<body>
<tu>
<tuv xml:lang="en">
<seg>Hello, welcome to our platform.</seg>
</tuv>
<tuv xml:lang="zh-CN">
<seg>你好,欢迎来到我们的平台。</seg>
</tuv>
</tu>
<tu>
<tuv xml:lang="en">
<seg>Please submit your feedback via the form.</seg>
</tuv>
<tuv xml:lang="zh-CN">
<seg>请通过表单提交你的反馈。</seg>
</tuv>
</tu>
</body>
</tmx>
TMX版本的差异说明
TMX目前主要有1.1、1.4、1.5等版本,主流工具都支持1.4版本,不同版本的核心差异如下:
- 1.1版本是最早的公开版本,功能相对基础,不支持部分元数据属性
- 1.4版本是目前使用最广泛的版本,完善了多语言支持和属性定义,兼容性最好
- 1.5版本增加了对格式化的支持,允许在
<seg>标签内部添加样式标记,适合富文本翻译场景
TMX的实际应用场景
在实际的本地化和翻译工作中,TMX格式主要用于以下场景:
- 翻译工具之间的记忆数据迁移,比如从OmegaT导出TMX文件导入到Trados中使用
- 翻译团队共享翻译记忆,统一团队的翻译术语和风格
- 翻译项目的归档存储,将项目翻译记忆保存为通用格式便于后续复用
- 机器翻译系统的训练数据准备,提取TMX中的平行语料用于模型训练
TMX文件的解析注意事项
在编写程序解析TMX文件时,需要注意以下几点:
- 严格遵循XML语法规则,处理特殊字符的转义,比如
&需要转义为& - 注意语言代码的规范,优先使用BCP 47标准的语言标签,比如
zh-CN、en-US - 处理
<seg>标签内部的可能存在的嵌套标记,尤其是高版本TMX中的格式化内容 - 兼容不同版本的TMX文件,对缺失的可选属性做默认处理,避免解析报错