OmegaT 4.2 - 用户指南

# 指南

## 建立团队项目

建立团队项目需要一些关于服务器和 SVN 或 Git 版本控制系统的知识。因此，它应当由项目经理、项目负责人或本地化工程师来执行。

由于很容易获得大量关于 SVN 和 Git 的信息，在这里我们不描述它们如何工作，而只描述 OmegaT 如何使用它们。

### 第 1 步：在服务器上创建一个空项目

在服务器上创建一个空项目

1. 在服务器上创建一个译者可访问的 SVN 或 Git 存储库。

2. 创建此存储库的本地副本（对 SVN 是 check out ，对 Git 是 clone ）。

3. 在本地存储库中建立一个新的、空的 OmegaT 项目。有两种方式可以完成这一点：

   - 项目 → 新建...

   - 在命令行： java -jar OmegaT.jar team init [语言1] [语言2]

4. 将新建立的 OmegaT 项目添加到版本控制系统（对于 SVN 和 Git 都是 add ）

   注意：如果在第 3 步是用命令行创建的项目，则该步骤已由程序完成。

5. 将新建立的 OmegaT 项目发布到服务器上（对 SVN 是 commit ，对 Gti 是 commit 然后跟着 push ）。

专用参数

如果项目使用专用过滤器和片段分割参数，`filters.xml` 和 `segmentation.conf` 文件都必须添加到版本控制系统中并发布到服务器上。

### 第 2 步：添加要翻译的文件和其他资源

使用 SVN 或 Git 客户端添加要翻译的文件。

这也可以在 OmegaT 中完成：

1. 将文件复制到 `/source` 目录中

2. 使用 项目 → 提交原文文件

要添加其他资源（词典、TMX、或词汇表），请使用 SVN 或 Git 客户端。

要 删除文件 ，请使用 SVN 或 Git 客户端。

请注意，在翻译期间，OmegaT 只修改两个文件：

- `omegat/project_save.tmx`

- `glossary/glossary.txt`

所有其他的文件都是只读的。如果译者试图修改它们，则只要项目被打开、关闭、保存或重新载入，它们就会回复到原始状态。

### 第 3 步：向译者发送邀请

一旦项目在服务器上建立好之后，项目经理可以邀请译者在其上工作，两种方式任选其一：

- 发送项目网址并要求译者用项目 → 下载团队项目创建本地副本。

- 发送包含对网址的引用的 `omegat.project`文件并要求译者将其复制到专用的文件夹中然后用 OmegaT 打开它。

  对网址的引用如下所示（此处为 Git 存储库）：

      <repositories>
       <repository type="git" url="https://repo_for_OmegaT_team_project.git">
        <mapping local="" repository=""/>
       </repository>
      </repositories>

两种情况下，项目经理都必须发给译者他们用来访问的存储库的 ID 和密码。

检查统计数据

项目经理应当与译者核实确认两侧（服务器侧与译者侧）的统计数据是一致的。

如果有所不同，请检查 `filters.xml` 和 `segmentation.conf` 文件是否受版本控制。

### 特殊情况：选择性共享

上面的流程是通常的情况，其中项目经理希望完全控制项目，文件（与统计数据）在两侧（服务器侧与译者侧）是一样的。

OmegaT 团队项目也可以以不同的方式建立，其中多个译者共享 project_save.tmx 文件但不共享（全部）（原文）文件。

在这种情况下，流程是一样的，但项目经理并不会将（所有）文件添加到版本控制的项目中。而是由译者自行复制文件，或者添加映射来从其他位置同步文件。

可以通过 UI：项目 → 属性 → 存储库映射或通过编辑 `omegat.project` 来添加映射。

### 映射参数

存储库类型（repository type）

  这可以是 http（包括 https）、svn、git 或文件。

存储库网址（repository url）

  要翻译的文件的远程位置或目录

映射本地（mapping local）

  本地文件夹或文件的名称，相对于 OmegaT 项目的根文件夹。

映射存储库（mapping repository）

  远程文件夹或文件的名称，相对于存储库网址。

排除（excludes）

  用通配符（*、?、**，Apache Ant 风格）来添加模式。不同模式之间用分号分隔。

  例： `**/excludedfolder/**;*.txt` 会排除路径中包含有 /excludedfolder/ 的文件，以及扩展名为 .txt 的文件。

包含（includes）

  同上。

  例如： `**/*.docx` 会添加所有 .docx 文件，无论它们位于项目中何处，哪怕是在排除文件夹中。

  默认情况下，所有未被排除的文件都会被包含。所以只在要否决某些排除项的时候才需要指定本项内容。

### 示例映射

默认项目映射：

    <repositories>
     <repository type="svn" url="https://repo_for_OmegaT_team_project">
      <mapping local="" repository=""/>
     </repository>
    </repositories>

`https://repo_for_OmegaT_team_project` 的所有内容映射到本地 OmegaT 项目

在存储库的子目录中映射项目：

    <repositories>
     <repository type="svn" url="https://repo_for_All_OmegaT_team_projects">
      <mapping local="" repository="En-US_DE_project"/>
     </repository>
    </repositories>

`https://repo_for_All_OmegaT_team_projects/En-US_DE_project` 的所有内容映射到本地 OmegaT 项目。

用过滤器从远程存储库映射其他资源：

    <repositories>
     <repository type="svn" url="https://repo_for_All_OmegaT_team_project_sources">
      <mapping local="source/subdir" repository="">
       <excludes>**/*.bak</excludes>
       <includes>readme.bak</includes>
      </mapping>
     </repository>
    </repositories>

`https://repo_for_All_OmegaT_team_project_sources` 的所有内容都映射到本地 OmegaT 项目的原文文件夹，除了 readme.bak 之外的 *.bak 文件则排除在外。

    从网站映射其他原文文件：<repository type="http" url="https://github.com/omegat-org/omegat/raw/master/">
     <mapping local="source/Bundle.properties" repository="src/org/omegat/Bundle.properties"/>
    </repository>

远程文件 `https://github.com/omegat-org/omegat/raw/master/src/org/omegat/Bundle.properties` 映射到本地文件 `source/Bundle.properties`。

带重命名的映射：

    <repository type="http" url="https://github.com/omegat-org/omegat/raw/master/">
     <mapping local="source/readme_tr.txt" repository="release/readme.txt"/>
    </repository>

远程文件 `https://github.com/omegat-org/omegat/raw/master/release/readme.txt` 映射到本地文件 `source/readme_tr.txt`。

这让重命名要翻译的文件成为可能。

本地文件映射：

    <repository type="file" url="/home/me/myfiles">
     <mapping local="source/file.txt" repository="my/file.txt"/>
     <mapping local="source/file2.txt" repository="some/file.txt"/>
    </repository>

本地文件 `/home/me/myfiles/my/file.txt` 映射成本地文件 `source/file.txt`，`/home/me/myfiles/some/file.txt` 映射成本地文件 `source/file2.txt`。

警告：如果文件不存在，则不会加载项目。

你可以根据需要添加任意数量的映射，但是只能在团队项目的上下文环境中添加，即，其中必须有一个映射包含 omegat.project。此功能旨在汇集原文文件，但并不限制你将它用于原文文件之外。

### 关于 omegat.project 和映射的说明

创建新项目并提交到存储库时，`omegat.project` 文件并不包含任何映射。当你下载项目时，项目会在本地被转换为团队项目并且会添加默认映射。

要注意，存储库中的 omegat.project 文件并不会自动更改，因此依然不包含任何映射。当你加载项目时，存储库中的所有更改都会被复制到本地项目中，包括带有项目设置的 `omegat.project` 文件。如果此文件不包含映射，则会重新应用现存的本地映射，且只会应用这些映射。对项目所做的其他本地更改都会被回退还原。如果文件包含映射，则本地对映射进行的更改都会丢失。

## 使用团队项目

OmegaT 团队项目必须先在服务器上建立起来。

首次使用团队项目时，请按照项目经理所提供的流程进行操作。

一旦项目已经打开，翻译的进行方式与非团队项目相同，但以下几点除外。

自动保存

每隔 3 分钟（默认情况下），本地项目将与远程存储库进行同步，这样项目经理或其他译者就可以查看并使用在此期间添加的翻译。

3 分钟的间隔可以在 选项 → 首选项 → 保存和输出 中更改。

同步文件

每当项目自动保存时，以及打开、关闭和重新载入时，实际上只会同步两个文件：

- `omegat/project_save.tmx`

- `glossary/glossary.txt`

所有其他文件将被远程存储库中的文件替换。

添加新原文文件

要添加新的原文文件：

1. 将文件复制到 `/source` 目录中

2. 使用 项目 → 提交原文文件

可以修改现有的原文文件，但必须在自动保存之前以及项目被重新载入或关闭之前执行 commit 操作。

删除原文文件

文件必须由项目管理器删除。

更改片段分割规则或文件过滤器

项目参数必须由项目经理来更改。

离线工作

团队项目可以离线打开并翻译。所有更改将在下次连接可用时进行同步。

要离线工作：

- 在打开项目前断开网络连接，

- 或者用命令行使用 --no-team 选项来打开项目。

## 重用翻译记忆库

一开始，即项目创建时，项目的主翻译记忆库 `project_save.tmx` 是空的。随着翻译，这个翻译记忆库逐渐得以填充。为了加快此进程，可以重用现有翻译。如果给定语句已被翻译过一次，且翻译是正确的，则无需重新对其进行翻译。翻译记忆库也可能包含参考译文：一个典型的例子是多国立法，例如欧盟的立法。

当你在 OmegaT 项目中创建译文文件时，项目的翻译记忆库将输出为 OmegaT 项目根目录下的三个文件（参见上文描述）。你可以将这三个 tmx 文件（`-omegat.tmx`、`-level1.tmx` 和 `-level2.tmx`）视为“导出翻译记忆库”，即以双语形式导出的当前项目的内容。

如果希望重用过往项目的翻译记忆库（例如，因为新项目与之前的项目类似，或者使用之前可能用过的术语），您可以将这些翻译记忆库用作“输入翻译记忆库”，即导入您的新项目中。在这种情况下，将想要使用的翻译记忆库放在新项目的 /tm 或 /tm /auto 文件夹中：前一种情况下，会在模糊匹配查看器中看到来自于这些翻译记忆库的匹配，而后一种情况下，这些翻译记忆库将用于对原文文本进行预翻译。

默认情况下，/tm 文件夹位于项目的根文件夹下（例如 ... /MyProject/tm ），但如果你愿意也可以在项目的属性对话框中选择其他文件夹。如果您经常使用过去生成的翻译记忆库，例如因为它们属于同一主题或者同一客户，则此功能非常有用。在这种情况下，有用的流程可以是这样：

- 在硬盘上方便的位置为特定客户或者主题的翻译记忆库创建一个文件夹（“仓库文件夹”）。

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

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

请注意，在打开项目时会解析 /tm 仓库中的所有 tmx 文件，因此将手头各种翻译记忆库全放进此文件夹可能会不必要地拖慢 OmegaT。一旦已经用其内容填充了 `project-save.tmx` 文件后，你甚至可以考虑删除那些不再需要的文件。

### 导入和导出翻译记忆库

OmegaT 支持导入 tmx 版本 1.1-1.4b（级别 1 和级别 2 都可）。这使得OmegaT 可以读取其他工具生成的翻译记忆库。但是，OmegaT 并不完全支持导入级别 2 的 tmx 文件（不仅存储翻译，还存储格式）。级别 2 的 tmx 文件依然会被导入，在 OmegaT 中能看到其文本内容，但模糊匹配的质量会有所下降。

在加载翻译记忆库（tmx）文件时，OmegaT 遵循非常严格的流程。如果在这类文件中发现错误，OmegaT 将指示错误在问题文件中的位置。

已知一些工具会在某些条件下生成无效的 tmx 文件。如果你想在 OmegaT 中使用这类文件作为参考译文，则必须对其进行修复，否则 OmegaT 将报错并无法加载它们。修复是微小的操作，OmegaT 会用相关错误信息协助进行错误排除。如果遇到问题，可以向用户组咨询。

OmegaT 导出版本 1.4 的 TMX 文件（级别 1 和级别 2 均有）。级别 2 的导出不完全符合级别 2 标准高，但已足够接近并且在其他支持 TMX 级别 2 的翻译记忆工具中会生成正确的匹配。如果你只需要文本信息（而非格式化信息），请使用 OmegaT 创建的级别 1 文件。

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

如果译者需要与别人分享他们的 TMX 而同时需要排除某些部分或者只要包含某些文件的翻译，那么分享完整的 `ProjectName-omegat.tmx` 文件是不行的。以下方案只是其中一种方法，不过足够简单、容易操作且没有危险性。

- 使用所需的语言对和合适的名称（注意：创建的 TMX 文件会包含此名称）创建一个与其他项目分开的项目。

- 将需要翻译记忆的原文文档复制到项目的原文文件夹中。

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

- 开启项目。用 Ctrl+T 检查可能的标签错误，用 Ctrl+U 检查未译片段。要检查是否所有内容都符合预期，你可以按 Ctrl+D 来创建译文文档并检查其内容。

- 现在退出项目。主项目目录（见上文）中的 TMX 文件现在包含你复制到原文文件夹中的文件的所选语言对的翻译。将它们复制到安全的地方备用。

- 要避免因为重用该项目而污染未来案例的可能，请删除项目文件夹或将其或存档到工作区外的其他位置。

### 共享翻译记忆库

如果涉及翻译团队，译者们会首选共享公共翻译记忆库而不是发布他们的本地版本。

OmegaT 可连接 SVN 和 Git，这是两种常见的以开源许可提供的团队软件版本与修订控制系统（RCS）。在 OmegaT 的情况下，完整的项目文件夹——换句话说，设计的翻译记忆库和原文文件夹、项目设置等——均由选定 RCS 管理。更多内容参见

### 在另一种语言上使用 TMX

某些情况下，你可能已经完成了一个项目，原文为比如说荷兰语，翻译为比如说英语。然后需要将其翻译为比如说中文，但其译者并不懂荷兰语，不过她精通英语。在这种情况下，NL-EN 翻译记忆库可以作为一个中转来帮助生成 NL 到 ZH 的翻译。

在这个例子中，解决方案是将已有的翻译记忆库复制到 tm/tmx2source/ 子文件夹中并将其重命名为 ZH_CN.tmx 来指示此 tmx 的译文语言。这样荷兰语的原文片段会以英文翻译的形式显示给译者，译者就能用它们来创建中文翻译。

重要提示： 辅助性的 TMX 必须重命名为 XX_YY.tmx，其中 XX_YY 是此 tmx 的译文语言，例如在上面的例子中是 ZH_CN.tmx。项目的原文语言和 TMX 的原文语言当然应当是相同的——在这个例子中是 NL。注意对于给定语言对只能使用一个 TMX，因此如果涉及多个翻译记忆库，则需要将它们全部合并到 XX_YY.tmx 中。

## 防止数据丢失

OmegaT 是健壮的应用程序。然而，就像使用任何其他应用程序一样，使用 OmegaT 时应当采取预防措施防止数据丢失。翻译文件时，OmegaT 将所有进度存储在项目的 `/omegat` 子文件夹中的翻译记忆文件 `project_save.tmx` 中。

OmegaT 在每次打开或者重新载入项目时也会将翻译记忆库备份到同一子目录下的 project_save.tmx.YEARMMDDHHNN.bak 文件。其中 YEAR 是 4 位数年份、MM 是月份、DD 是月份内的日期、而 HH 与 NN 是保存上一份翻译记忆库时的小时和分钟。

如果您认为丢失了翻译数据，那么可以使用以下步骤将项目恢复到最近保存的状态，通常是大约 10 分钟以内：

1. 关闭项目

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

3. 选择最有可能包含所需数据的翻译记忆库备份

4. 将其重命名为 `project_save.tmx`

5. 打开项目

为避免丢失重要数据：

- 定期将 /omegat/project_save.tmx 复制到备份媒介上，例如 CD 或 DVD。

- 在熟悉 OmegaT 之前，请定期创建译文文件，并检查译文文件是否包含最新版本的翻译。

- 在项目中途对 `/source` 中的文件进行更改要特别小心。如果在开始翻译后原文文件有所修改，OmegaT 也许会找不到您已翻译的片段。

- 借助这些帮助文字来起步。如果碰到问题，可以在 OmegaT 用户组中发帖。可以用您所最熟悉的语言发帖，无需犹豫。

## 翻译 PDF 文件

PDF 文件是一种特殊情况。它们包含文本格式信息，但 OmegaT 无法重用此类信息来创建译文文件。因此，PDF 作为纯文本文件处理，并且输出文件是纯文本文件。

如果您需要在翻译中复现文本格式（以及其他东西，例如绘图），有三种方法可供尝试：

1. 使用 OmegaT 的默认过滤器 （PDF输入），翻译， 创建译文文件（将会是纯文本文件），手动添加相关的格式和项目。

2. 使用 Iceni Infix 过滤器。参见指南 - 用 Iceni Infix 和 OmegaT 翻译 PDF 文件。

3. 将源文件导入 LibreOffice Draw，将其保存为 ODG 文件，翻译，然后按需要导出为 PDF。

注： 以上信息仅适用于带有文本层的 PDF 文件。如果你有一个由扫描页面组成的 PDF 文件（此类文件有时被称为“死”PDF），你需要用 OCR（光学字符识别）程序识别文本并将其转换为 OmegaT 可以处理的格式。

### 其它文件格式

还存在其他适合 OmegaT 处理的纯文本或格式化文本文件格式。

可以用外部工具将文件转换为支持的格式。然后需要将译文文件转换回原始格式。例如，如果你拥有的是无法处理 ODT 的过时 Microsoft Word 版本，那么对于有着 DOC 扩展名的 Word 文件需要这样来回：

- 将文件导入到 ODF writer

- 将文件保存为 ODT 格式保存

- 对它进行翻译并创建译文 ODT 文件

- 在 ODF writer 中加载译文文件

- 将文件保存为 DOC 格式

译文文件的格式质量取决于来回转换的质量。在进行此类转换之前，请务必测试所有选项。查看OmegaT 主页来获取最新的辅助翻译工具列表。

## 驾驭从右向左的语言

原文与译文片段的对齐方式取决于项目的语言。默认情况下，对于从左向右（LTR）的语言的语言使用左对齐，而对于从右向左（RTL）的语言使用右对齐。你可以通过按 Shift + Ctrl + O （这是字母 O 而非数字 0）在不同显示模式之间切换。 Shift + Ctrl + O 有三种切换状态：

- 默认对齐，由语言定义

- 左对齐

- 右对齐

在 OmegaT 中使用从右向左模式对于 OmegaT 中创建的译文文档的显示模式没有任何影响。译文文档的显示模式必须在通常用于显示或修改它的应用程序（诸如 Microsoft Word）中修改（详细信息请查看相关手册）。用 Shift + Ctrl + O 会导致 OmegaT 中的文本输入与显示都发生变化。通过点击窗格并切换显示模式，它可以单独用于所有三个窗格（编辑器、模糊匹配和词汇表）。它也能在 OmegaT 中出现的所有输入字段中使用——搜索窗口中、分割规则等。

对于 Mac OS X 用户，请注意：使用 Shift + Ctrl + O 快捷键而 不是 cmd+Ctrl+O。

### 在片段中混合从右向左和从左向右字符串

在编写纯从右向左文本时，可以使用默认的（从左向右）视图。然而在许多情况下，必须在从右向左文本中嵌入从左向右文本。例如，在 OmegaT 标签中、必须维持使用从左向右的原文语言的产品名称、本地化文件中的占位符、以及文本中的数字。在这类情况下，必须转换为从右向左模式，以正确显示从右向左（实际上是双向）文本。应当注意，当 OmegaT 处于从右向左模式时，原文和译文都以从右向左模式显示。这意味着如果原文语言是从左向右的而目标语言是从右向左的，或反之，就可能必须在从右向左和从左向右模式之间来回切换，以便在各自的模式下查看原文并输入译文。

### 从右向左片段中的 OmegaT 标签

如上所述，OmegaT 标签是从左向右的字符串。当在从右向左和从左向右的语言间进行翻译时，要正确地读取原文中的标签并在译文中正确输入它们可能需要译者在从左向右和从右向左模式之间多次切换。

如果文档允许，强烈建议译者从原始文档中删除样式信息以在 OmegaT 的界面中尽可能少地显示标签。请遵循标签管理提示中给出的说明。经常验证标签（参见标签验证）并定期生成译文文档（参见下文和菜单）可以更容易发现问题。提示：翻译文本的纯文本版本并在稍后阶段在相关应用程序中添加必要的样式可能会不那么麻烦。

### 创建从右向左的译文文档

创建译文文档时，其显示方式将与原始文档相同。如果原始文档是从左向右的，译文文档的显示方向需要手工在查看它的应用程序中改为从右向左。每种输出格式都有专门的方法来处理从右向左显示；查看相关的应用程序手册来了解详情。

不过，对于 .docx 文件会自动完成许多更改：

- 段落、节和表被设为双向
- 内容流（文本元素）被设为从右向左

为了避免每次打开译文文件都要更改其显示参数，可以更改原文文件的显示参数，以使译文文件继承此类参数。这种修改对诸如 ODF 等文件是可行的。