XML本地化

 

原帖地址:http://www.ibm.com/developerworks/cn/xml/x-localis2/index.html

 

 

XLIFF 是用来在参与翻译项目的各方之间交换本地化数据的格式。这种特殊的格式使翻译人员能够把精力集中到所翻译的文本上,而不用担心文本的布局。XLIFF 标准得到了大量本地化服务提供商和本地化工具提供商的支持。

翻译文档时使用 XLIFF 最主要的原因是,在翻译不同类型的文档时,您可以使用单一的文件格式。

上一期文章中,我描述了本地化项目需要经过的步骤:

  1. 从原始文档中 提取所有可翻译的文本。
  2. 将提取的字符串 保存到专门的 XML 文档中。
  3. 发出要翻译的 XML 文档。
  4. 从 XML 文档中 提取翻译后的字符串,然后将它们重新插入原始文档中。

第 2 步中所说的专用 XML 文档就是 XLIFF 文档。本文主要讨论步骤 1、步骤 2 和步骤 4

将文档转换成 XLIFF 格式

现在介绍使用 XLIFF 文件作为中间格式的翻译过程,步骤如图 1 所示。


图 1. 翻译过程
翻译过程

该过程可以具体描述如下:

  1. 文本提取:从布局数据中分离出可以翻译的文本。
  2. 预翻译:将已有的翻译添加到上一步中生成的 XLIFF 文件中。
  3. 翻译:专业翻译人员进行翻译。
  4. 逆转换:从翻译后的 XLIFF 文件生成翻译后的文档。
  5. 翻译存储改进:将新的翻译保存到翻译存储(TM)数据库中,以备重用。

文本提取

为了帮助翻译人员,将可翻译的文本从文本布局信息中提取出来。 清单 1 中给出了一个简单 HTML 页面的代码。该页面包含两个可翻译的句子和几个与翻译人员无关的标签。


清单 1. 简单的 HTML 页面

<html>
   <head>
      <title>
        A Title</title>
   </head>
   <body>
      <p>
        One paragraph</p>
   </body>
</html>
      

 

称为 过滤程序的专门程序把文本和布局分离开。计算机辅助翻译(CAT)工具通常拥有常见格式的过滤程序,如:HTML、RTF、XML 和纯文本等。

过滤程序将不可翻译的部分保存在专门的文件中,称为 提纲。所有可翻译的句子在提纲中被替换为特殊的记号。 清单 2 的例子就是 清单 1 的文本提纲。


清单 2. 提纲文本

<html>
   <head>
      <title>
        %%%1%%%</title>
   </head>
   <body>
      <p>
        %%%2%%%</p>
   </body>
</html>
      

 

每个文本片段保存在 XLIFF 文件中的一个翻译单元元素中( <trans-unit>)。提纲中使用的标记可以作为翻译单元的 id 属性,简化提纲和 XLIFF 文件之间的映射。

正式规范中的 XLIFF 格式非常精确、清晰和实用:

XLIFF 是一种 XML 应用,因此开头带有 XML 声明。XML 声明之后是 XLIFF 文档本身,包括在  <xliff> 元素中。XLIFF 文档由一节或多节组成,每节都包围在  <file> 元素中。  <file> 元素包含  <header> 元素,其中包括关于  <file> 的元数据;  <body> 元素包括从  <file> 提取的可翻译文本。  <trans-unit> 元素中的可翻译数据被组织成成对出现的  <source> 和  <target> 元素。这些  <trans-unit> 元素被递归地组织到  <group> 元素中。

清单 3 包含 清单 1. 中所示 HTML 文档的 XLIFF 文件。


清单 3. 示例 XLIFF 文件

<? xml version="1.0" ?>
<xliff version="1.0">
  <file original="sample.html" 
        source-language="en" 
        datatype="HTML Page">
    <header>
      <skl>
        <external-file href="sample.skl"/>
      </skl>
    </header>
    <body>
      <trans-unit id="
        %%%1%%%">
        <source xml:lang="en">
        A Title</source>
      </trans-unit>
      <trans-unit id="
        %%%2%%%">
        <source xml:lang="en">
        One paragraph</source>
      </trans-unit>
    </body>
  </file>
</xliff>
      

 

过滤程序的复杂性取决于要解析的格式。HTML 和 XML 都是容易编制的格式。过滤程序引用特定的规范区分可翻译文本和格式化信息。字处理程序通常使用专有的文件格式。所幸的是,多数字处理程序都可以导入和导出 RTF 文档,RTF 也是容易编制的格式。

本文所附源代码包含 Java 属性文件的完整 Java 语言过滤程序实现(请参阅 参考资料)。

 




回页首

 

处理格式化信息

表 1 显示了同一句子的两种版本,一种是 HTML 格式,另一种是 RTF 格式。


表 1. HTML 和 RTF 格式化

HTMLRTF
This is <b>bold </b> textThis is /b bold /b0 text

两个版本包含同样的文本,只有格式化代码不同。标记代码不需要翻译。使用 HTML 编辑器和字处理程序的翻译人员必须完成两次翻译,每种工具一次。翻译人员需要使用一种统一的工具,能够显示相关的文本、隐藏标记信息,并且无论使用何种标记能够重用翻译的结果。

文本布局信息保存在 XLIFF 标准为此目的定义的专用 行内元素(inline elements)中。 清单 4 显示了包围在相应行内元素中的 清单 1 中的标记。

注意,用于包装标记的元素是相同的,只有内容不同。这样,CAT 工具就能使用属性中提供的信息在 TM 数据库中搜索翻译。比如,如果数据库包含 HTML 版本的翻译,就可以通过自动调整 <bpt> 和 <ept>元素的内容,并将其用于 RTF 版本。

翻译人员在使用 CAT 工具翻译时不会看到 XML 形式的行内元素。无论是图像,还是通过单击鼠标或者使用快捷键就能很容易插入的文本标记,行内元素都必须以友好的方式表示。

表 2 列出了所有行内元素及其用法的说明。


表 2. 行内元素

元素说明
<g>通用分组占位符: <g> 元素用于替换原始文档中带有开始和结束标记,而且不与其他成对出现的行内代码交叉的的行内代码,该元素可以在父结构元素中移动
<x/>通用占位符: <x/> 元素用于替换原始文档中的任何代码
<bx/>成对起始占位符: <bx/> 元素用于代替原始文档中的成对起始代码,适用于不符合 XML 格式良好规则(即元素不重叠)的成对代码
<ex/>成对结束占位符: <ex/> 元素用于代替原始文档中的成对结束代码,适用于不符合 XML 格式良好规则(即元素不重叠)的成对代码
<bpt>成对起始标签: <bpt> 元素用来确定本机代码成对序列的开始之处。翻译单元中每个 <bpt> 都有一个对应的 <ept> 元素
<ept>成对结束标签: <ept> 元素用来确定本机代码中成对序列的结束之处。翻译单元中每个 <ept> 都有一个对应的 <bpt> 元素
<ph>占位符: <ph> 用于分隔翻译单元中原来独立的代码序列
<it>孤立标签: <it> 元素用于分隔翻译单元中没有对应开始/结束标记的本机代码的开始/结束序列
<mrk>标记: <mrk> 元素用于区分具有特殊含义的文本片段,比如术语单位、固有名称或者不需修改的项目等

分段

一旦提取了要分析的文本,就需要将所有标记都包含在正确的行内元素中,然后对翻译单元进行下一步处理,即称为 分段的处理。分段就是将文本块分解成更小的可翻译文本段,比如句子、段落或短语。使翻译单位尽可能小非常重要,这样可以增加在 TM 数据库中发现可重用翻译的机会。

通常,分段程序(执行分段的工具)啊按照以下基本原则来分割文本的:

  • 遇到句号或者后跟空白的停顿时分割,假定为句子或段落的结束。
  • 遇到后跟空白的分号时分割,假定为联合句或者短语的结束。
  • 遇到后跟空白的冒号时分割,假定为列表的开始。

在省略号后面分割需要专门考虑,因为省略号可以是缩略形式的一部分。

上述分段规则不适用于亚洲语言,如汉语、日语和韩语。

 




回页首

 

翻译文档

实际的翻译必须由翻译人员完成。这方面机器不能代替人,无论多好的翻译程序,翻译结果都必须由人来检查以保证质量。

通过提供类似的翻译、可能的同义词、以前的文本来帮助翻译人员,专业翻译人员可以判断给出的翻译是否值得重用。

原始文档转化成 XLIFF 后,用于执行转换的工具可以遍历所有翻译单元,在 TM 数据库中查找匹配的翻译。一旦找到匹配单元,则在翻译文档中添加一个 <alt-trans> 元素。该过程通常称为 预翻译

数据库中发现的文本不需要与翻译的文本完全相同。 清单 5 中的例子说明 HTML 和 RTF 文档中的翻译如何混合出现在翻译单元中。注意,因为标记格式的原因,第二个 <alt-trans> 元素匹配度只有 96%,但是文本却完全可以接受。

 




回页首

 

将翻译后的文本转换回原来的格式

在 XLIFF 文件最终准备好之后,将该文件发送给专业翻译人员。翻译人员使用支持 XLIFF 的 CAT 工具,把所有缺少的翻译添加上,并检查预翻译阶段提供的译文。

翻译后的 XLIFF 必须与提纲文件合并,形成目标输出格式的翻译文档。

过滤程序用于读入提纲,依次处理所有特殊的标记。提纲中的每个标记都使用 XLIFF 文件中的对应翻译单元校正;如果翻译单元被翻译人员注明已获得批准,那么 <target> 元素中的文本将代替提纲中的标记。如果该段没有翻译,或者包含的翻译没有被认可,则使用 <source> 元素中的文本。所有标记都使用 XLIFF 文件中的对应文本代替之后,提纲就变成了翻译后的文档,应该使用新的名称保存它。

多数文档格式都需要固定在翻译后的文档布局中,一般而言,XML、HTML 和 RTF 格式所要做的译后调整较少。

最后还剩下一项任务:从获得 XLIFF 文件批准的 <trans-unit> 元素中提取 <source><target> 对的内容,并将其保存在 TM 数据库中以备重用。这些 <source><target> 对通常保存在专门的 XML 格式中,称为 Translation Memory eXchange (TMX),所有主要的翻译工具都支持这种格式。

 




回页首

 

示例应用程序

附带的 Java 源代码(请参阅 参考资料)包含两个过滤程序:

  • 将 Java 属性文件转换成 XLIFF 格式的程序。
  • 从 XLIFF 到 Java 属性文件的逆转换程序。

 

在 Java 程序中使用属性文件来保存应用程序 GUI 显示的文本。这些属性文件是可以包含多行的文本文件,每一行可以是注释、空白行或者 <key>=<value> 记录。

示例代码中没有包含分段和预翻译例程,因为其复杂程度远远超出了本文的范围。不过,该示例代码中包含了这类程序的占位符,如果需要的话,读者可以自己去实现。

 




回页首

 

结束语

本文讨论了如何将 XLIFF 用作中间文件格式来翻译文档,并通过一个例子介绍了该过程中的每个阶段。文中包含的源代码从实用的角度说明了如何实现 Java 本地化项目的 XLIFF 解决方案,这种解决方案经过扩展也可用于其他格式。

下一期文章将介绍 TM 数据库的工作原理,强调用于翻译交换的 TMX 格式的相关内容。

 




回页首

 

下载

描述名字大小下载方法
Filters to convert Java Properties files to XLIFFx-localis2_filters.zip155 KBHTTP
关于下载方法的信息

 

参考资料

  • 您可以参阅本文在 developerWorks 全球站点上的 英文原文。 
  • 下载文件 x-localis2_filters.zip,其中包含了将 Java Properties 文件转化成 XLIFF 及其反向操作的过滤程序的 Java 实现。 
  • 参阅本系列的上一篇文章“ 本地化中的 XML: 实用分析”( developerWorks,2004 年 8 月)。它介绍了 XLIFF 在本地化过程中的作用,以及 XLIFF 与其他相关 XML 标准的交互。 
  • 参阅 XLIFF 1.1 Specification,它定义了 XML 本地化交换文件格式(XLIFF)。该词汇表的目标是存储可本地化的数据,并将这些数据从处理过程中的上一个阶段带入下一个阶段,同时支持工具间的互操作性。 
  • 从 Heartsome 网站下载免费的 XLIFF 编辑器,并使用它翻译示例代码生成生成的 XLIFF 文件。 
  • 仔细阅读 XLIFF 1.1 的白皮书(PDF 文件, XLIFF 技术委员会,2003 年 7 月)。其中包含关于 XLIFF 标准的历史、体系结构和用法等方面的有用信,非常有趣。 
  • 参阅 developerWorks 文章“ Application Framework for e-business: Globalization”(2001 年 7 月),该文为以全球市场为目标的面向 Web 应用程序开发人员提供了丰富的资料。 
  • 在 developerWorks XML 专区 可以找到更多 XML 资源。 
  • 在 developerWorks Developer Bookstore 可以找到各种关于 XML 的书籍,包括 关于本地化的书籍。 
  • 了解如何才能成为一名 IBM 认证的 XML 及相关技术的开发人员。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值