# 文件过滤器

OmegaT 的特色之一是可高度自定义过滤器，它让您可以配置众多的过滤器。文件过滤器是一堆代码，它能够：

- 从某些特定文件格式中读取文档。例如：纯文本文件。

- 将可翻译的内容从文件中提取出来。

- 通过将可翻译内容替换为译文，自动修改可译文档的文件名。

要查看OmegaT能处理哪些文件格式，请打开选项>文件过滤器……菜单

多数用户应该会对缺省的文件过滤器选项感到满意。如果不满意，可以从主菜单选项→文件过滤器……打开主对话框。通过选择项目属性中的文件过滤器……属性，您还可以启用仅用于当前项目的项目专用文件过滤器.

通过项目→属性……您还可以启用项目专用过滤器。点击文件过滤器按钮并选中启用项目专用过滤器复选框。此时文件过滤器配置文件的副本会与项目保存在一起。如果以后您改变了过滤器，则只更新当前项目的过滤器而用户过滤器保持不变。

文件过滤器 项目专用文件过滤器

警告！如果您在项目打开的时候改变过滤器选项，您必须重新载入项目以使改变生效。

## 文件过滤器对话框

文件过滤器 对话框

该对话框列出了可用的文件过滤器。如果您不想使用 OmegaT 翻译某种类型的文件，您可以取消选中该文件名旁边的复选框来关闭其过滤器。这样一来，在载入项目时 OmegaT 会忽略这些文件，并且在创建目标文档时对它们进行原封不动的复制。如果之后您又决定使用这些过滤器，只需勾上这些复选框。点击缺省【Defaults】可将文件过滤器恢复为缺省设置。要编辑过滤器处理文件时使用的编码，请从列表中选中该过滤器然后点击编辑按钮。

## 过滤器选项

文件过滤器 选项

多种过滤器（文本文件、XHTML文件、HTML和XHTML文件、OpenDocument文件和Microsoft Open XML文件）有一个或多个特殊选项。要修改这些选项，请从列表中选中该过滤器，并点击 选项【Options】按钮。可用选项包括：

文本文件

- 在换行、空行处进行片段分割或不分割：

  如果激活了句子分割规则，则文本将会按照现有规则作进一步的分割。

PO 文件

- 允许目标文件中存在空译文：

  如果启用，未翻译的 PO 片段（可能是整个段落）在目标文件中的译文是空的。从技术上说，PO 目标文件（如果创建了）中的 `msgstr` 片段将为空的。由于这是 PO 文件的标准行为，所以缺省启用。如果关闭了此选项，则会复制源文本到目标片段中。

- 跳过PO头部

  如果选中此选项，则PO头部会被跳过而保持不变。

- 自动替换头部中的‘nplurals=INTEGER; plural=EXPRESSION;’

  此选项会让OmegaT覆盖PO文件头部的规范并在选择的目标语言中使用默认规范。

XHTML 文件

- 新增或重写HTML和XHTML文件中的编码声明：目标文件通常使用与源文件不同的编码字符集（不论是显式或隐式定义）。通过该选项译者可以指定目标文件是否包含编码声明。例如，如果文件过滤器指定目标文件的编码方案为UTF8，则选择总是能确保已译文件中包含此信息。

- 翻译下列属性：已选择的属性会作为片段出现在编辑器窗口中。

- 在下列位置分割新段落：按照 <br> HTML 标签分割段落。

- 忽略匹配正则表达式的文本：匹配该正则表达式的文本会被忽略。它在标签检验中显示为渲染红。源片段中匹配的文本以斜体显示。

- 不翻译元标签……的内容属性：下列元标签将不进行翻译。

- 不翻译含下列属性键值对（逗号分隔）的标签内容：匹配列表中键值对的标签内容将被忽略。

  在需要根据属性值来不翻译一些标签时很有用。例如，对于`<div class="hide"> <span translate="no">`您可以定义键值对来保持其未译状态。对于上面这个例子，定义字段应包含：`class=hide, translate=no`

Microsoft Office 开放 XML 文件

您可以选择要翻译的元素。它们将以单独片段的形式出现。

- Word：不可见说明文本、注释、脚注、尾注、页脚

- Excel：注释、工作表名

- Power Point：幻灯片注释、幻灯片控制和幻灯片布局

- 通用：图表、图示、图画和艺术字

- 其他选项：

  - 聚合标签：如果选中了，不含可翻译文本的多个相邻标签会被合并为单个。

  - 保留所有标签的空白：如果选中了，则会保留“空白”（即空格和新行符），即使没有在文档中专门设置

HTML 和 XHTML 文件

- 在 HTML 和 XHTML 文件中新增或重写编码声明：总是（缺省），仅当 (X)HTML 文件含标题时，仅当 (X)HTML 文件含编码声明时，从不

- 翻译下列属性：已选择的属性会作为片段出现在编辑器窗口中。

- 在下列位置分割新段落：按照 <br> HTML 标签分割段落。

- 忽略匹配正则表达式的文本：匹配该正则表达式的文本会被忽略。

- 不翻译元标签……的内容属性：下列元标签将不进行翻译。

- 不翻译含下列属性键值对（逗号分隔）的标签内容：匹配列表中键值对的标签内容将被忽略。

文本文件

- 在换行、空行处进行片段分割或不分割：

  如果激活了句子分割规则，则文本将会按照现有规则作进一步的分割。

Open Document格式（ODF）文件

- 您可以选择要翻译下列哪些项：

  索引条目、书签、书签参考、笔记、注解、介绍说明、链接（URL）、工作表名称

## 编辑过滤器对话框

文件过滤器 编辑

该对话框允许您设置该过滤器所处理的文件的源文件名模式，定制已译文件文件名，并为它选择用何种编码来载入文件及保存已译副本。要修改文件过滤器模式，可直接修改该字段或点击编辑按钮。要新增文件过滤器模式，请点击新增。新增模式和编辑特定模式使用的是相同的对话框。该对话框非常有用，因为它带有的特定目标文件名模式的编辑器，它允许您自定义输出文件的名称。

### 源文件类型、文件名模式

源文件 文件类型和文件名模式
文件过滤器 文件类型和文件名模式

当 OmegaT 在源文件夹中发现一个文件时，它将首先根据文件的扩展名试着选择过滤器。更确切地说，OmegaT 尝试着用每个过滤器的源文件名模式对文件名进行匹配。例如，`*.xhtml` 模式将会匹配任何扩展名为 `.xhtml` 的文件。如果找到了合适的过滤器，它将被用来处理该文件。比如说在缺省情况下 XHTML 过滤器将会用来处理扩展名为 .xhtml 的文件。 您可以对每个文件过滤器要处理文件的名称模式进行修改或增添。源文件名模式中使用的匹配字符与搜索中所使用的类似。'*' 字符匹配零个或多个字符。'?' 字符只匹配一个字符。其他所有字符代表自身。比如，如果您希望文本过滤器处理 readme 文件（`readme, read.me` 和 `readme.txt`），那么您应该使用模式 `read*`.

### 源文件和目标文件编码

仅少量文件格式必须指定强制性的编码方式。未指定编码方式的文件格式将使用您所设定的匹配该名称的扩展名的编码方式。例如，缺省情况下 `.txt` 文件将会使用系统缺省的编码导入。您可以对每种源文件名模式的源编码进行修改。这些文件也可以任何编码方式输出。缺省情况下，已译文件的编码与源文件的编码相同。源和目标编码字段使用的组合框包括了所支持的全部编码。<自动>将编码选择工作留给 OmegaT。以下是其工作原理：

- OmegaT 通过（HTML 文件、基于 XML 的文件中）可能存在的编码声明来识别源文件编码。

- OmegaT 被设置为某些文件格式（Java 属性等）使用强制性编码。

- OmegaT 为文本文件使用缺省的系统编码。

源文件 编码
目标文件 编码
文件过滤器 源、目标——编码

### 目标文件名

目标文件 文件名

有时您也需希望系统自动将译好的的文件重新命名，比如在文件名后加上语言代码。目标文件名模式使用特殊的语法规则，因此如果希望编辑这些字段的话，您必须点击编辑……以使用编辑模式对话框。如果您想恢复到缺省的过滤器设置，点击缺省。您也可以在文件过滤器对话框中的目标文件名模式字段中直接修改名称。编辑模式对话框提供了以下选项：

文件过滤器 对话框

- 缺省设置是 `${filename}`——和源文件完全相同的文件名和扩展名：此时已译文件名和源文件名完全一样。

- `${nameOnly}`——只插入源文件的名称，而不包括扩展名。

- `${extension}` ——源文件扩展名

- `${targetLocale}`——目标文件区域设置代码（形式为“xx_YY”）。

- `${targetLanguage}`——目标语言和国家代码（形式为“XX-YY”）。

- `${targetLanguageCode}`——目标语言——仅“XX”

- `${targetCountryCode}`——目标国家——仅“YY”

- `${timestamp-????}`——多种格式的生成时间系统日期时间

  请参阅Oracle文档了解“SimpleDateFormat”格式示例

- `${system-os-name}`——电脑使用的操作系统

- `${system-user-name}`——系统用户名

- `${system-host-name}`——系统主机名

- `${file-source-encoding}`——源文件编码

- `${file-target-encoding}`——目标文件编码

- `${targetLocaleLCID}`——微软目标区域设置

对${nameOnly}和${Extension}变量还有附加变量可用。在文件名存在疑义的情况下，其中某个可以适用于`${仅文件名`-扩展数字} and `${扩展名`-扩展数字} 形式的变量。例如如果原始文件名为Document.xx.docx，则变量与其对应的结果如下：

- `${nameOnly-0}` Document

- `${nameOnly-1}` Document.xx

- `${nameOnly-2}` Document.xx.docx

- `${extension-0}` docx

- `${extension-1}` xx.docx

- `${extension-2}` Document.xx.docx