原帖地址:http://www.ibm.com/developerworks/cn/xml/x-localis2/index.html
XLIFF 是用來在參與翻譯項目的各方之間交換本地化數據的格式。這種特殊的格式使翻譯人員能夠把精力集中到所翻譯的文本上,而不用擔心文本的佈局。XLIFF 標準得到了大量本地化服務提供商和本地化工具提供商的支持。
翻譯文檔時使用 XLIFF 最主要的原因是,在翻譯不同類型的文檔時,您可以使用單一的文件格式。
上一期文章中,我描述了本地化項目需要經過的步驟:
第 2 步中所說的專用 XML 文檔就是 XLIFF 文檔。本文主要討論步驟 1、步驟 2 和步驟 4。
現在介紹使用 XLIFF 文件作爲中間格式的翻譯過程,步驟如圖 1 所示。
該過程可以具體描述如下:
- 文本提取:從佈局數據中分離出可以翻譯的文本。
- 預翻譯:將已有的翻譯添加到上一步中生成的 XLIFF 文件中。
- 翻譯:專業翻譯人員進行翻譯。
- 逆轉換:從翻譯後的 XLIFF 文件生成翻譯後的文檔。
- 翻譯存儲改進:將新的翻譯保存到翻譯存儲(TM)數據庫中,以備重用。
爲了幫助翻譯人員,將可翻譯的文本從文本佈局信息中提取出來。 清單 1 中給出了一個簡單 HTML 頁面的代碼。該頁面包含兩個可翻譯的句子和幾個與翻譯人員無關的標籤。
<html> <head> <title> A Title</title> </head> <body> <p> One paragraph</p> </body> </html> |
稱爲 過濾程序的專門程序把文本和佈局分離開。計算機輔助翻譯(CAT)工具通常擁有常見格式的過濾程序,如:HTML、RTF、XML 和純文本等。
過濾程序將不可翻譯的部分保存在專門的文件中,稱爲 提綱。所有可翻譯的句子在提綱中被替換爲特殊的記號。 清單 2 的例子就是 清單 1 的文本提綱。
<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 文件。
<? 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 格式。
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 列出了所有行內元素及其用法的說明。
元素 | 說明 |
<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 及相關技術的開發人員。