首頁
中文書目錄
原文書目錄
 站內快速搜尋
資源中心
Book Series
Special Interest













■好消息,歐萊禮書籍已重新鋪貨至各大書局及網路書店,歡迎讀者選購       ■歡迎各院校採用歐萊禮書籍,學校團購請洽校園服務團隊

Learning Java the O'Reilly's Way

Java Internationalization


「寫程式很難,寫中文的程式更難」這是許多程式員的心聲。許多平台、語言、編譯器、資料庫、驅動程式 ... 對於英文以外的語言支援都不好,而使用雙位元的東方語言更是常常會遇到亂碼的情況,這正是因為這些軟體在開發時,沒考慮 到國際化(internationalization,i18n)的需求所造成。當這些不夠國際化的軟體欲進入另一個國家的市場,必須額外花費更 多心力進行本土化(localization,l10n)的工作,才能符合當地的需求。

軟體市場的國際藩籬早已經被打破,所以在規劃軟體的同時,最好能有 i18n 的考量。近年來,IBM 和微軟的產品 i18n 得相當徹底,所以不太需要花時間進行各地區的本土化,這些公司的軟體在英文版上市的同時,世界各地的版本幾乎都能同時上市。i18n 不但減少他們各國版本在本土化時所需要的人力,節省成本,更可以讓產品提早上市,搶得商機。比方說:幾年前,MS-Windows 和 MS-Office 還沒有全面 i18n 之前,中文版上市時間會延遲數月甚至半年以上。

許多人以為軟體本土化只是軟體和手冊的文字翻譯罷了,如果你也這麼認為,那麼就太天真了。各國不同的不只是文字語言,還有習慣、文化、法規 ...。所以單純的翻譯只是本土化的第一步,後續還有許多工作要進行。設計時沒有 i18n 考量的軟體,在進行本土化時會遇到許多困難,甚至很有可能要改寫原始碼。不但成本大幅提高,上市日期延後,甚至會有更多的 bug 出現。也因此,軟體在一開始設計時,最好就把 i18n 考量進來,雖然會在初期帶來些許的不便,但是結果卻相當值得。

Java 不但希望能跨平台,也希望能跨國際、族群。所以 Java 對於多國語言有相當好的支援,讓我們能開發出不同語言的使用者都能使用的軟體。Java 對於 i18n 的支援,是相當先進的,除了全面採用 Unicode 並提供許多編碼轉換之外,更內建許多機制(最為人所知的是 Locale 和 String Boundle),讓程式員能很簡單地開發出 i18n 的程式。

比較可惜的是,Java 在語音的部分對於 i18n 的支援並不佳,畢竟語音辨識和語音合成的技術門檻太高,而 Java Speech 也很久沒有動靜了。我希望在以後 Java Speech API 出新版本時,能有完善的 i18n 考量,而且各國語音的實作版本也能陸續推出,在這方面最有希望的是 IBM。

由 O'Reilly 出版,Andrew Deitsch 與 David Czarnecki 所合著的「Java Internationalization」一書,廣泛地涵蓋了 Java i18n 相關的主題。 本書的各章節介紹如下:

第一章:討論國際化和本土化的一般觀念,以及 Java 對國際化的支援。
第二章:分析世界各地具代表性的書寫方式,包括西方的(由左至右)、東方的(任意方向)、和中東的(雙向混合)。這章可以讓你大開眼界。
第三章:討論 java.util.Locale 相關的用法。所謂的 Locale 指的是:一個特定的地區(以政治、經濟、宗教、語言 ... 來區分)。
第四章:討論如何透過 Resource Boundle 來將程式和相關資源隔離。許多人都以為資源指的是字串,但其實也可以是任何物件。
第五章:各種格式(貨幣符號,數字格式,日期時間格式 ...)的使用。
第六章:Unicode、各種編碼與轉碼相關的議題。如果你常遇到中文變亂碼的問題,這一章的知識對你來說應該會有幫助。《Java I/O 技術》一書對此已經有相當詳細的討論。
第七章:敘述文字的比對與排序相關的議題。
第八章:討論字型和呈現文字的方式。部分主題在《Java 2D 圖學技術》一書中有更完整的討論。
第九章:介紹圖形化的使用者介面對於 i18n 應該做的改變。不同的國家,可能會需要不同風格的 GUI。本章對此做一個概念性的解說,更詳細的 GUI 資訊可以從《Java Swing 基礎篇》和《Java Swing 進階篇》中獲得。
第十章:討論利用 Input Method Framework 來設計輸入法,讓 Java 程式所使用的輸入法也能不受作業系統的影響。
第十一章:國際化的 web 程式設計。讓 web(applet、servlet、JSP)也能夠國際化,從不同的地方讀取會得到不同語言的版本。
第十二章:敘述 Java 未來還可能針對 i18n 做出哪些改進。
附錄 A:各種語言和國碼
附錄 B:Java 所支援的編碼方式
附錄 C:Unicode 的編碼分類
附錄 D:Java i18n 相關的 API 列表
附錄 E:Java 各版本對於 i18n 支援的變革

這是一本 i18n 的入門書,不是百科全書,許多時候你會需要更進階的資訊,所以本書最後還列出許多參考資料。本書雖然是以 Java 為程式語言,但是書中所提到的這些概念,其實其他程式語言也可仿效採用。特別是,目前專門論述 i18n 的書很罕見,所以本書彌足珍貴。

關於編碼和文字的部分,我建議各位在看完本書之後,繼續看下面這兩本書:
  • The Unicode Standard, Version 3.0 (published by Addison-Wesley)
  • CJKV Information Processing (published by O'Reilly)
關於文化習俗,你還需要另外收集資料來看,特別是文明悠久的地區,例如:以色列、埃及、阿拉伯、印度 ... 等國家的文化習俗比較不為我們所熟知。而且因為有些國家比較激進一點,所以尚未全盤瞭解文化習俗之前,不要隨便推出當地 版本,否則天曉得會出什麼亂子。闢用幾位當地人員作為本土化諮詢顧問,似乎是可行的管道。


本文作者:蔡學鏞
張貼日期:06/05/01

| 首頁 | 聯絡我們 |
© 2009, O'Reilly Media, Inc. Taiwan Branch