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 格式化

HTML RTF
This is <b>bold </b> text This 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 XLIFF x-localis2_filters.zip 155 KB HTTP
關於下載方法的信息

 

參考資料

  • 您可以參閱本文在 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 及相關技術的開發人員。 

 

發佈了6 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章