什么是TMX?
**TMX(Translation Memory eXchange,翻译记忆交换格式)**是一种开放的XML标准,设计用于在不同CAT工具和本地化系统之间交换翻译记忆(TM)数据。由LISA(本地化行业标准协会)开发,TMX使组织能够共享和迁移翻译资产,而不受所使用软件的限制。
TMX已成为TM交换的事实标准,得到业界几乎所有CAT工具的支持。
TMX版本
TMX 1.1(1998)
原始规范,建立了基本结构。
TMX 1.4(2004)
最广泛支持的版本:
- 改进的元数据处理
- 更好的字符编码支持
- 增强的片段级属性
- 仍然是生产中最常见的版本
TMX 2.0(草案)
由于LISA解散而未最终确定的提议更新。
TMX结构
基本结构
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tmx SYSTEM "tmx14.dtd">
<tmx version="1.4">
<header
creationtool="KTTC"
creationtoolversion="1.0"
datatype="plaintext"
segtype="sentence"
adminlang="en"
srclang="en"
o-tmf="KTTC"/>
<body>
<tu>
<tuv xml:lang="en">
<seg>Hello, world!</seg>
</tuv>
<tuv xml:lang="zh">
<seg>你好,世界!</seg>
</tuv>
</tu>
</body>
</tmx>
关键元素
| 元素 | 描述 |
|---|---|
<tmx> | 带有版本属性的根元素 |
<header> | 关于TM的元数据 |
<body> | 翻译单元的容器 |
<tu> | 翻译单元(源文+译文) |
<tuv> | 翻译单元变体(一种语言) |
<seg> | 实际的片段文本 |
<prop> | 自定义属性 |
<note> | 注释和备注 |
头部属性
<header
creationtool="CAT工具名称"
creationtoolversion="3.0"
datatype="plaintext"
segtype="sentence"
adminlang="en"
srclang="en-US"
o-tmf="native-format">
</header>
| 属性 | 描述 |
|---|---|
creationtool | 创建应用程序的名称 |
creationtoolversion | 创建应用程序的版本 |
datatype | 数据类型(plaintext、html、xml等) |
segtype | 分段类型(sentence、paragraph、phrase) |
adminlang | 管理语言 |
srclang | 源语言代码 |
o-tmf | 原始TM格式 |
翻译单元(TU)详情
基本TU
<tu tuid="001" creationdate="20241220T120000Z">
<tuv xml:lang="en">
<seg>Welcome to our platform.</seg>
</tuv>
<tuv xml:lang="zh">
<seg>欢迎来到我们的平台。</seg>
</tuv>
</tu>
带元数据的TU
<tu
tuid="002"
creationdate="20241220T120000Z"
creationid="translator1"
changedate="20241221T150000Z"
changeid="reviewer1"
lastusagedate="20241222T100000Z"
usagecount="5">
<prop type="domain">legal</prop>
<prop type="project">合同翻译</prop>
<prop type="client">某某公司</prop>
<note>已经法务团队批准</note>
<tuv xml:lang="en">
<seg>This agreement shall be governed by...</seg>
</tuv>
<tuv xml:lang="zh">
<seg>本协议应受...管辖</seg>
</tuv>
</tu>
多语言TU
<tu tuid="003">
<tuv xml:lang="en">
<seg>Save</seg>
</tuv>
<tuv xml:lang="zh">
<seg>保存</seg>
</tuv>
<tuv xml:lang="ja">
<seg>保存</seg>
</tuv>
<tuv xml:lang="ko">
<seg>저장</seg>
</tuv>
</tu>
内联元素
TMX支持内联元素以保留格式:
常见内联标签
| 标签 | 用途 | 示例 |
|---|---|---|
<bpt> | 开始配对标签 | <bpt i="1"><b></bpt> |
<ept> | 结束配对标签 | <ept i="1"></b></ept> |
<ph> | 占位符 | <ph>{0}</ph> |
<it> | 独立标签 | <it><br/></it> |
<hi> | 高亮 | <hi>术语</hi> |
<ut> | 未知标签 | 用于无法识别的标记 |
带格式的示例
<tu>
<tuv xml:lang="en">
<seg>Click the <bpt i="1"><b></bpt>Save<ept i="1"></b></ept> button.</seg>
</tuv>
<tuv xml:lang="zh">
<seg>点击<bpt i="1"><b></bpt>保存<ept i="1"></b></ept>按钮。</seg>
</tuv>
</tu>
语言代码
TMX使用BCP 47 / ISO语言代码:
| 代码 | 语言 |
|---|---|
| en | 英语(通用) |
| en-US | 英语(美国) |
| en-GB | 英语(英国) |
| zh | 中文(通用) |
| zh-CN | 中文(简体) |
| zh-TW | 中文(繁体) |
| ja | 日语 |
| ko | 韩语 |
| de | 德语 |
| fr | 法语 |
| ru | 俄语 |
最佳实践
创建TMX文件
使用UTF-8编码
- 始终指定
encoding="UTF-8" - 避免遗留编码
- 始终指定
包含元数据
- 设置创建日期
- 包含创建者信息
- 添加领域/项目属性
一致的语言代码
- 使用标准BCP 47代码
- 对地区变体保持一致
导出前验证
- 检查XML格式正确性
- 根据TMX DTD验证
导入TMX
检查编码
- 验证文件编码与声明匹配
- 如存在BOM则进行处理
处理重复
- 定义重复解决策略
- 考虑源文本+上下文
映射语言代码
- 处理变体映射(en vs en-US)
- 记录任何转换
TMX质量
| 问题 | 解决方案 |
|---|---|
| 编码错误 | 转换为UTF-8 |
| 缺少语言代码 | 添加xml:lang属性 |
| 无效XML | 验证并修复结构 |
| 重复TU | 合并或去重 |
| 缺少元数据 | 添加头部信息 |
TMX vs 其他格式
TMX vs XLIFF
| 方面 | TMX | XLIFF |
|---|---|---|
| 用途 | TM交换 | 文档本地化 |
| 重点 | 片段对 | 完整工作流程 |
| 内容 | 最终译文 | 进行中的工作 |
| 元数据 | TM特定 | 工作流程特定 |
TMX vs TBX
| 方面 | TMX | TBX |
|---|---|---|
| 内容 | 片段对 | 术语条目 |
| 结构 | 源文+译文 | 术语+定义 |
| 用例 | 翻译重用 | 术语一致性 |
常见问题和解决方案
字符编码
问题:特殊字符显示乱码。 解决方案:确保UTF-8编码和正确的XML转义。
<!-- 正确转义 -->
<seg>价格:<100元 & 免费送货</seg>
大文件处理
问题:TMX文件太大无法处理。 解决方案:
- 按语言对拆分
- 按项目/领域拆分
- 使用流式XML解析器
版本兼容性
问题:不同工具支持不同TMX版本。 解决方案:导出为TMX 1.4b以获得最大兼容性。
常见问题
TMX和TM有什么区别?
TM(翻译记忆)是翻译数据库,而TMX是用于在不同系统之间导出和交换该数据的文件格式。
TMX可以存储多个语言对吗?
可以,单个TMX文件可以包含多种语言的翻译。每个TU可以有多个TUV元素用于不同的目标语言。
TMX文件的最大大小是多少?
没有技术限制,但非常大的文件(数百万TU)可能会导致性能问题。建议拆分大于100MB的文件。
如何在TMX版本之间转换?
大多数CAT工具在导入/导出期间自动处理版本转换。对于手动转换,确保目标版本所需的所有元素都存在。
TMX仍然是行业标准吗?
是的,TMX 1.4b仍然是TM交换最广泛支持的格式。虽然XLIFF用于项目文件,但TMX是TM数据交换的标准。
TMX可以保留格式吗?
可以,使用内联元素(bpt、ept、ph、it)来表示格式标签。但是,具体处理方式在CAT工具之间有所不同。
