Chapter 13. 翻译记忆
Prev |  | Next

# Chapter 13. 翻译记忆

## 1. OmegaT 中的翻译记忆

### 1.1. tmx 文件夹 - 位置及用途

OmegaT项目含有在五个不同位置的翻译记忆文件，即扩展名为tmx的文件：

omegat 文件夹

  omegat 文件夹包含 `project_save.tmx` 文件，以及一些备份的 TMX 文件。`project_save.tmx` 文件包含了自项目开始以来所有被保存的片段。项目中总是存在此文件。其内容总是根据源片段的字母进行排序。

项目主文件夹

  项目主文件夹中包含 3 个 tmx 文件：`project_name-omegat.tmx`，`project_name-level1.tmx` 以及 `project_name-level2.tmx`（project_name 是项目的名称）。

  - level1 文件仅包含文本信息。

  - level2 文件以适当的 TMX 标签封装了 OmegaT 的特殊标签，因此它可以在支持第 2 级 TMX 的翻译工具中使用其中的格式信息，包括 OmegaT 本身。

  - OmegaT 文件包含了 OmegaT 特殊的格式标签，因此该文件可用于其他 OmegaT 项目。

  这些文件是 `project_save.tmx`文件的副本，即不包括被称为孤立片段的主翻译记忆。它们使用适当变化的名称，这样在其他地方使用时容易识别其中包含的内容，例如在其他项目的`tm`子文件夹（见下面）。

`tm` 目录

  /tm/ 可包含任何数量的辅助翻译记忆，即 TMX 文件。这样的文件可创建为上面提示的三种形式。注意：其他 CAT 也能导出（以及导入）TMX 文件，一般也有三种形式。最好的来源是使用 OmegaT 特定的 TMX 文件（见上文），这样可以保持片段中的内联格式。

  在 tm 子目录中翻译记忆的内容是为要翻译文本提供建议。这些文件中已经保存并翻译的任何文本，当它们与正在翻译的文本十分相似时，将出现在模糊匹配窗格中。

  如果某个辅助TM中的某个源片段与待译的文本完全相同，OmegaT会安装在选项 → 编辑行为……对话框中的设置进行操作。例如（使用缺省设置），在辅助TM中的译文被接受并加上前缀[模糊]，这样译员随后可以通过这个标记检查译文是否正确翻译（请参阅编辑行为章节）。

  可能出现这样的情况：在`tm`子文件夹的翻译记忆中多个片段含有相同的源文本，但目标译文不同。在指定的TMX文件中是根据每行的名称和片段逐行读取TMX文件的。因此含相同源文本的最后一个片段将获得采用（注：当然预先避免这种情况发生会更有意义）。

  注意在tm文件夹中的TMX文件可使用gzip压缩。

tm/auto 目录

  如果在提供的 TM 中的译文完全可靠的话，那么可以把它们放到 tm/auto 目录以避免需要对大量的 [模糊]进行确认。这样能更有效地预翻译源文本：在源文本中其翻译可以在那些“自动”TM 中找到的所有片段，将会自动加载到项目的主 TM 中。

tm/penalty-xxx文件夹

  有时由于题材、客户、版本状态等，需要从翻译记忆中区分出高质量译文与不可靠译文。在名称为“penalty-xxx”（其中xxx在0到100之间）文件夹中的翻译记忆产生的匹配其匹配度将减少文件夹名称中的数字：例如Penalty-30文件夹中所有TM中100%匹配的条目将减低至70%的匹配度。罚点适用于所有的三种匹配百分率：此时匹配度75、80、90将减低至45、50和60。

或者，您可以让 OmegaT 制作一份附加的 TMX 文件（OmegaT 风格）到您指定的地方，包含了项目所有的可译片段。请参阅下面的伪翻译记忆。

注意：打开项目时会把所有的翻译记忆加载到内存中。对项目翻译记忆的备份会定期进行（请参阅下一章），同时在打开或关闭项目时也会保存/更新`project_save.tmx`。这里的意思是，例如如果您想添加一个辅助 TM 到当前正在工作的项目时，无需退出项目：只要简单地重新载入项目，所做的更改就会生效。

对于指定的项目，多种不同翻译记忆的位置是由用户定义的（请参阅项目属性中的项目对话框）。

根据不同的情况可采取不同的策略，例如：

在相同主题中保存多个项目：保留项目结构，同时改变源和目标目录（Source = source/order1，target = target/order1等）。需要注意存在于order1而不在order2或后续任务中的片段，会被标记为孤立片段，不过这样仍可用来获取模糊匹配。

多个译员工作于相同项目：把源文件分成 source/Alice, source/Bob 等，同时把它们分配给项目成员 (Alice, Bob ...)。随后他们可创建自己的项目，当结束或到达阶段性目标时实现他们自己的 `project_save.tmx`。然后收集 `project_save.tmx`，并解决可能存在的用词冲突。 之后创建新的主翻译记忆，可以放到项目成员的tm/auto子文件夹或覆盖他们的`project_save.tmx`文件。该团队还可以使用相同的子目录结构来保存目标文件。这样允许他们，例如在任何时刻进行检查整个项目的目标版本是否已经完成。

### 1.2. TMX 备份

翻译时，OmegaT会不断在项目/`omegat`子文件夹的`project_save.tmx`文件中保存您的工作。

OmegaT 还会在每次项目被打开或重新载入时备份翻译记忆到同一子目录的 `project_save.tmx.YEARMMDDHHNN.bak`。YEAR 是 4 位数的年份；MM 是月份；DD 是日期；HH 和 NN 是前一份翻译记忆保存时的小时和分钟。

如果您认为丢失了翻译数据，可执行下列步骤：

1. 关闭项目

2. 重命名当前的 `project_save.tmx` 文件（例如改名为 `project_save.tmx.temporary`）

3. 选择最有可能包含所需数据的翻译记忆备份（例如最近的那个或从某个日子的最后版本）

4. 复制并更名为 `project_save.tmx`

5. 打开项目

### 1.3. tmx 文件和语种

tmx文件包含了由一定数量多种语言的等义片段组成的翻译单元。一个翻译单元至少包含了两个翻译单元变体（tuv）组成。每个都可以当作源或者目标使用。

项目的设置将指出哪个是源语言，哪个是目标语言。因此OmegaT抓取符合项目的源和目标语言代码的tuv片段，并把它们分别作为源和目标片段使用。OmegaT 使用下面两个标准约定来识别语言代码：

- 2 字母（例如对于 Japanese 为 JA），或者

- 2 或 3 个字母的语言代码后跟着 2 个字母的国家代码（例如 EN-US - 请参阅Appendix A, 语言－ISO 639 代码列表 了解部分的语言和国家代码）。

如果项目语言代码和 TMX 语言代码完全匹配，片段将会导入内存中。如果语言匹配但国家不匹配，仍会导入片段。如果语言代码和国家代码都不符合，片段将被忽略。

TMX文件通常包含有多种候选语言的翻译单元。如果一个指定的源片段在选择的目标语言中没有条目，则不考虑语言而加载其他所有目标片段。例如如果项目的语言对为DE-FR，则在不存在DE-FR对的情况下，看看DE-EN翻译仍然会有些帮助。

### 1.4. 孤立片段

`project_save.tmx` 文件包含了自项目开始以来已翻译的所有片段。如果您修改了项目的分割规则或从源中删除了文件，那么在匹配查看器中可能出现孤立字符串。这样的匹配指向源文档中不存在的片段，而是指向修改发生前的片段记录。

## 2. 重用翻译记忆

在创建项目时，项目的主 TM `project_save.tmx` 是空的。该 TM 文件会在翻译时逐步进行填充。要加快这个过程，可重用现有的翻译。如果指定的片段已翻译过一次且翻译正确，则无需再次翻译它们。翻译记忆还可以包含参考翻译：多国法律，例如欧共体的法律是个实际的例子。

在OmegaT项目中创建目标文档时，项目的翻译记忆记忆将会在OmegaT项目的根目录中输出三份文件（查阅之前的表述）。可将这三份 TMX 文件（`-omegat.tmx`，`-level1.tmx` 和 `-level2.tmx`）视为一份“导出的翻译记忆”，即当前项目的可导出双语形式。

如果希望复用之前某个项目的翻译记忆（例如新的项目与之前的项目非常相似，或者使用了之前可能用到的术语），您可以将这些用法记忆用作“输入翻译记忆”，也就是说导入您的新项目。在此情况下，可将这些翻译记忆记忆文件放置在新项目的/tm或/tm/auto目录下：以前您将在模糊匹配查看器中获取来自这些翻译记忆的提示，现在开始将使用这些翻译记忆预翻译您的源文本。

默认情况下，/tm文件夹位于项目的根文件夹中（例如：.../MyProject/tm)，但如果您愿意您也可以在项目属性对话框中选择不同的文件夹。如果您频繁使用过去创建的翻译记忆，这将非常有用，比方说因为您一直在同一领域或为同一客户服务。在此情况下，有益的过程可能包括如下步骤：

- 在硬盘上某个习惯的位置创建一个文件夹（“仓库文件夹”）以保存某个客户或者主题的翻译记忆。

- 每当完成一个项目，将该三份“导出”翻译记忆从项目的根文件夹复制到仓库文件夹。

- 当您为同一主题或者客户启动一个新项目时，在项目 > 属性 > 编辑项目对话框找到该仓库文件夹，将其选中为翻译记忆文件夹。

注意在程序启动时，/tm 仓库中的所有 TMX 文件将会被解析，因此将手头所有的 TMX 文件导入将会不必要地减慢 OmegaT 的运行。每当翻译记忆文件的内容已经转到`project-save.tmx`文件的时候，您可能要考虑移除那些不再需要的文件。

### 2.1. 导入和导出翻译记忆

OmegaT 支持导入 tmx 的 1.1-1.4b 版本（包括级别 1 和级别 2）。这样就可以在 OmegaT 中使用其他工具创建的翻译记忆。然而，OmegaT 不完全支持导入级别 2 tmx 文件（同时保存了译文和格式）。支持导入级别 2 tmx 文件并在 OmegaT 中看到它们的文本信息，但模糊匹配的质量会有所下降。

OmegaT在加载翻译记忆文件（TMX 文件）时遵循非常严格的过程。如果在文件中发现了错误，则 OmegaT 将提示问题文件中发现错误的位置。

已知有些工具在某些情况下会产生非法的TMX文件。如果您想在 OmegaT 中使用这样的文件作为参考翻译，您必须对它们进行修补，否则 OmegaT 会加载失败并报告错误。修补是琐碎的操作，OmegaT 将会在相关的错误信息中给您一些提示。如果遇到麻烦，可以向用户组垂询。

OmegaT 导出 1.4 版本的 TMX 文件（包括级别 1 和级别 2）。导出的级别 2 不是标准的级别 2，但是足以在支持 TMX 级别 2 的翻译工具中产生正确的匹配。如果您只需要文本信息（而不是格式信息），可以使用 OmegaT 创建的级别 1 文件。

### 2.2. 创建所选文档的翻译记忆

在译员需要与别人分享排除或仅包含某些文件的TMX翻译记忆文件时，此时无法分享`ProjectName-omegat.tmx`文件。下面的窍门只是其中一种方法，不过非常简单、容易操作且没有危险性。

- 使用希望的语言对和名称（注创建的翻译记忆文件也包含此名称）创建一个独立于其他项目的项目。

- 复制您希望获取翻译记忆的源文档到项目的源文件夹。

- 复制包含上述源文档翻译的翻译记忆到新项目的`tm/auto`子文件夹。

- 打开项目。使用Ctrl+T 检查标签错误，并用Ctrl+U检查未译片段。一切就绪后，按下Ctrl+D创建目标文档并检查其内容。

- 在退出项目时，现在在项目主文件夹（见上面）中的翻译记忆文件包含了所选语言对和您所复制到源文件夹中的所选文件的翻译。把它们复制到安全位置供将来使用。

- 要避免重用该项目而可能破坏将来的情况，则删除项目或存档到工作区外的其他位置。

### 2.3. 分享翻译记忆

在一个翻译团队参与的情况下，译员更喜欢分享公共的翻译记忆而不是发布他们的本地版本。

OmegaT为SVN和Git提供了界面，它们是在开源许可下提供的版本控制系统的两种常用协作软件。在OmegaT中完整的项目文件夹（即包含翻译记忆、源文件夹、项目设置等）都由所选的RCS进行管理。在**章节中可进一步了解

### 2.4. 使用包含可选语言对的翻译记忆文件

可能会遇到这样的情况：项目源语言为荷兰语、目标语言为英语。然而您需要翻译成中文，但您的译员不懂荷兰语，不过她英语极好。此时NL-EN的翻译记忆可作为桥梁以帮助生成NL-ZH的译文。

我们的解决方法是复制已有的翻译记忆到tm子文件夹并重命名为ZH_CN.tmx以表明TMX的目标语言。这样将显示给译员荷兰语的源片段其译文为英文，并使用它们创建中文译文。

重要提示：受支持的TMX必须重命名为XX_YY.tmx，其中XX_YY为TMX的目标语言，例如上面例子中的ZH_CN.tmx。当然项目和TMX的源语言必须一致，此例中为NL。请注意，对于指定的语言对只有一个TMX是可行的，所以当应该包含多个翻译记忆时您需要将它们全部合并到XX_YY.tmx。

## 3. 带有现存译文的源

某些类型的源文件（例如PO、TTX等）是双语文件，即它们即作为源文件又作为翻译记忆。此时在文件中的已有译文会包含到`project_save.tmx`。在没有找到匹配的源片段中这些译文被视为默认译文，当已含有目标译文的相同源片段中它们被作为可选译文。因此结果取决于其中源片段被加载的顺序。

源片段的所有译文除显示在匹配窗格外，还显示在注解窗格。如果是PO文件，会对可选译文应用20%的罚点（即100%的匹配度变成80%）。[模糊]短语会显示在源片段中。

当您加载片段化的TTX文件时，如果选中了选项→编辑行为……中的“允许译文和原文相同”选项时将会包含源文本与目标文本相同的片段。这样可能引起混乱，所以此时您应考虑取消该选项。

## 4. 伪翻译记忆

### Note

这些内容为感兴趣的高级用户准备的！

在翻译片段之前，您可能想以不同于 OmegaT 的其他方式预处理它们。例如，如果想创建伪翻译进行测试，OmegaT 能为您创建包含项目所有片段的附加 TMX 文件。该翻译记忆中的译文可以是：

- 和原文相同的译文（缺省）

- 译文片段为空

翻译记忆文件的名称可以任意指定。通过下列命令行参数可生成伪翻译记忆：

`java -jar omegat.jar --pseudotranslatetmx=<filename> [pseudotranslatetype=[equal|empty]]`

把其中的`<filename>`替换为想创建的文件名，可以为绝对目录或也可以相对于工作目录（OmegaT的启动文件夹）。第二个参数 `--pseudotranslatetype` 是可选的。它的值可以是 `equal`（缺省值，此时 source=target）或 `empty`（目标片段为空）。可以使用任何工具处理生成的 tmx 文件。要在 OmegaT 重用这个文件，请把它更名为 project_save.tmx 并放置到项目的 `omegat` 文件夹。

## 5. 更新翻译记忆

OmegaT 的早期版本只能将源文本按照段落切割成片段，而且对HTML和开放文档文件的格式标签编号时会出现前后不一致。OmegaT可以实时检测并更新这样的TMX文件，以此提高模糊匹配的质量、提高现有翻译的水平，减少您的手工操作。

项目的 TMX 只会更新一次，且会以更新过的格式写入 `project-save.tmx`，而每次项目被载入时都会对所继承的TMX文件进行更新。注意：修改OmegaT中的文件过滤器在某些情况下可能会导致完全不同的片段分割结构，结果在少数情况下您必须手动更新译文。

Prev |  | Next
Chapter 12. 处理格式化文本 | Home | Chapter 14. 源片段分割规则