FOSS 開放標準/標準和軟體國際化/本地化
軟體等產品的國際化與本地化不同,儘管它們可能解決許多類似問題。國際化是指使產品能夠在國際上使用(即在世界各地不同國家或地區,具有不同文化和慣例)而無需重新設計的過程。另一方面,本地化則是指透過使產品在語言和文化上適合特定國家、地區或文化,來對產品進行調整。國際化通常用縮寫“I18N”或“i18n”來表示,其中數字 18 代表省略的字母數。類似地,縮寫“L10N”或“l10n”用於表示本地化。
對於旨在部署在多個不同國家/地區的應用程式軟體,這些國家/地區具有不同的文化和語言,在設計時必須牢記國際化,以便能夠適應可能不同的資訊表達方式或不同語言的特殊性。國際化需要解決的一些問題包括:[1]
- 日期和時間格式
- 貨幣格式
- 語言特點(例如,字母、數字和從左到右的文字 vs. 從右到左的文字)
- 語言字元編碼集用於文字顯示
- 姓名和頭銜
- 姓名和文字的排序
- 識別號碼,例如社會保險號和護照號碼
- 電話號碼、地址和國際郵政編碼
- 重量和度量
雖然文化和語言要求可能因國家/地區而異,但處理軟體產品功能的核心程式不會改變,因此通常的做法是將文字和其他環境相關資料與程式程式碼本身分開。這使得支援國際化變得更容易,因為只需要對環境相關資源進行更改。需要進行最小的程式碼更改。
應用程式的國際化程度越高,本地化就越容易。這是因為經過良好國際化的應用程式將內建支援以滿足本地化所需的專案。這些可能包括:[2]
- 語言翻譯
- 對某些語言的硬體支援,例如輸入裝置和方法
- 當地習俗
- 本地內容
- 美學
- 文化價值觀和社會背景。
本地化的主要工作是翻譯使用者介面和文件,但這不僅僅是翻譯所使用的語言。它還需要迎合其他相關更改,例如使用合適的文化和社會價值觀、語言特有的符號、數字顯示、32 個日期、貨幣、合適的輸入方法等。
在軟體國際化和本地化中,一組引數(稱為區域設定)用於定義使用者的語言、國家/地區以及使用者希望在使用者介面中看到的任何特殊變體偏好。[3] 區域設定識別符號通常至少包含語言和區域/國家/地區識別符號。根據所使用的作業系統/系統,區域設定識別符號可以以多種方式定義。大多數系統使用 ISO 639-1 和 639-2 分別定義的兩位和三位語言程式碼作為語言識別符號,並使用 ISO 3166-1 中的兩位國家/地區程式碼作為國家/地區識別符號。但是,MS Windows 使用一個數字區域設定識別符號 (LCID),它指定語言和排序識別符號。[4]
在本節中,我們將介紹一些在 i18n 和 l10n 中使用的重要標準。
如果要成功實現使軟體以多種語言提供,則在計算機系統上對多語言文字進行正確的渲染和顯示以及實用的輸入方法至關重要。需要為字元程式碼表和字元編碼方法制定標準。字元程式碼表將整數分配給字元,而字元編碼是一種方法,透過該方法,字元或它們各自的整數值可以表示為用於軟體的位元組序列。
國際標準 ISO/IEC 10646[5] 和 Unicode 標準 (Unicode)[6] 描述並定義了通用字元集 (UCS),它是所有其他字元集標準的超集。它保證與其他字元集的往返相容性。這僅僅意味著在將任何文字字串轉換為 UCS 然後轉換回其原始編碼時不會丟失任何資訊。[7]
Unicode 標準版本 4.0 和 ISO/IEC 10646:2003 使用相同的字元集表和字元編碼方法,但 Unicode 標準還提供了對字元屬性、處理演算法和定義的詳細資訊,這些資訊對實現者很有用。[8]
ISO/IEC 10646 和 Unicode 定義了多種編碼形式,包括 UCS 變換格式 8 (UTF-8)、UCS-2、UTF-16、UCS-4 和 UTF-32。在編碼形式中,每個字元都被表示為一個或多個編碼單元,除了 UTF-8 之外,所有其他編碼形式的編碼單元都大於一個八位位元組(一個 8 位位元組),這使得它們難以在許多當前應用程式和協議中使用,這些應用程式和協議假設 8 位或甚至 7 位字元。[9] UTF-8 使用八位位元組的所有位進行編碼,並且保留了完整的 US-ASCII 範圍,後者在一個八位位元組中編碼,具有正常的 US-ASCII 值。這很重要也很有用,因為它向後相容大量現有的主要使用 US-ASCII 編碼的軟體。UTF-8 將 UCS 字元編碼為可變數量的八位位元組,其中八位位元組的數量以及每個八位位元組的值取決於 Unicode 字元程式碼表中分配給該字元的整數的值。
Unicode 已成為軟體國際化和多語言環境中使用的主要編碼方案。許多其他標準,如 XML,已將 Unicode 作為表示文字的底層方案。現代作業系統環境,例如 GNU/Linux、Mac OS X 和 MS Windows XP 下的作業系統環境都支援 Unicode。[10]
ISO 639
[edit | edit source]國際標準 ISO 639-1 為表示語言名稱提供了一個兩位字母程式碼識別符號(alpha-2),而 ISO 639-2 為語言提供了一個三位字母識別符號(alpha-3)。[11] 地區語言識別符號使用 ISO 3166 國家程式碼來標識要使用的語言。
ISO 639-1 主要是在術語中使用。它為那些負責世界大部分文獻的語言提供識別符號,這些語言也擁有專門的詞彙和術語。
ISO 639-2 試圖為世界各地的語言提供表示形式,用於書目和術語,但它在範圍上不像 ISO 639-1 那樣嚴格。它的設計目的是包含世界文獻中經常出現的語言,無論這些語言中是否存在專門的術語。ISO 639-2 的三位字母程式碼意味著它可以容納更多語言。因此,雖然它將單個語言的覆蓋範圍限制在至少已開發出適度文獻的語言,但其他語言仍然可以透過語言族等語言集合的識別符號來容納。[12]
在 ISO 639-2 下,一些語言在書目和術語中使用不同的程式碼(見表 8)。
| 示例 ISO 639-1 和 639-2 語言程式碼 | ||
|---|---|---|
| 639-2* | 639-1 | 語言名稱 |
| apa | 阿帕奇語 | |
| ara | ar | 阿拉伯語 |
| bur/mya | my | 緬甸語 |
| chi/zho | zh | 漢語 |
| dut/ndl | nl | 荷蘭語;佛蘭芒語 |
| eng/ndl | en | 英語 |
| hin | hi | 印地語 |
| kar | 克倫語 | |
| kin | rw | 基尼亞爾旺達語 |
| tlh | 克林貢語;tlhlngan-Hol | |
| may/msa | ms | 馬來語 |
| nep | ne | 尼泊爾語 |
| swa | sw | 斯瓦希里語 |
| tam | ta | 泰米爾語 |
| tha | th | 泰語 |
| ton | to | 湯加語(湯加群島) |
對於 639-2 程式碼,如果提供兩個程式碼,則首先提供書目程式碼,然後提供術語程式碼。
ISO 3166-1
[edit | edit source]ISO 3166-1 為表示國家名稱提供兩位(alpha-2)和三位(alpha-3)字元程式碼。因此,它提供了國家程式碼表,就像 ISO 639 提供語言程式碼表一樣。但是,這兩個標準是獨立開發的,沒有嘗試為語言使用與其使用該語言的國家相同的程式碼,並且應獨立使用每個列表中的程式碼。地區國家識別符號使用 ISO 3166 程式碼來標識國家或地區位置。
ISO 3166-1 alpha-2 程式碼在 國家程式碼頂級域名 (ccTLD) 中最廣為人知,它是 網際網路 域名系統 (DNS) 的一部分。但是,有一些 ccTLD 正在使用,它們不是 ISO 3166-1 兩位字母程式碼的一部分,例如,用於英國的 "uk"(相應的 ISO 3166-1 alpha-2 程式碼是 "gb")。
| 示例 ISO 3166-1 Alpha-2 國家程式碼 | |
|---|---|
| ISO 3166-1(Alpha-2) | 國家/地區 |
| CA | 加拿大 |
| DE | 德國 |
| GB | 英國 |
| KE | 肯亞 |
| NG | 奈及利亞 |
| TH | 泰國 |
| TN | 突尼西亞 |
| VE | 委內瑞拉 |
IETF 的 RFC 3066[13] 描述了一種語言標籤,用於在需要指示資訊物件中使用的語言的情況下,以及如何註冊用於此語言標籤的值,以及匹配此類語言標籤的結構。 RFC 3066 指定使用 ISO 639-1 中的兩位字元語言程式碼(如果存在),如果一種語言沒有分配兩位字元程式碼,則使用三位字元程式碼。
RFC 還指定了使用可選子標籤(例如,來自 ISO 3166 的國家程式碼)以及如何將方言或變體資訊註冊到 網際網路號碼分配機構 (IANA),如果不存在可用的 ISO 639 程式碼。
截至 2006 年 9 月,RFC 3066 已被新的/擴充套件的 RFC 4646 棄用。[14]
國際化和本地化軟體計劃
[edit | edit source]過去,軟體支援的語言在很大程度上取決於作者的所在地。由於美國等國家在該領域的優勢,許多常見的現成軟體 (COTS) 主要用英語編寫。近年來,隨著 網際網路 和 全球化 的興起,這種主要以單一語言為中心的流行軟體支援正在發生變化。軟體開發人員和作者越來越意識到,許多軟體可以並且將部署到全球各地,並且適應當地環境非常重要。因此,現代軟體平臺對國際化和本地化的支援有了很大的提高。
對於商業 專有軟體,經驗表明,任何 本地化 工作都必須從經濟可行性和/或工作可能給供應商帶來的其他利益方面進行考慮。這意味著在許多情況下,流行的商業專有軟體的版本在商業回報不合理的情況下不可用。由於 FOSS 可以自由修改和重新分發,有時只需要一些感興趣的方來主動本地化以 FOSS 釋出的軟體。這導致許多流行的 FOSS 被本地化(例如,Mozilla.org 產品家族、GNOME、KDE、OpenOffice.org)並以多種語言(包括一些相當冷門的語言)提供。
開放國際化 (OpenI18N) 倡議[15] 是自由標準組織 的一項重要倡議。 [16] 該倡議下有幾個活躍的專案,其中之一是 OpenI18N 規範,它涉及類似GNU/Linux 的作業系統必須支援的介面和功能的規範,以執行國際化的應用程式軟體,以及這些作業系統為促進國際化應用程式軟體的開發而提供的建議。 [17] 其他活躍專案包括
- Linux 國際化區域設定名稱指南
- 通用XML 區域設定儲存庫(現稱為通用區域設定資料儲存庫)
- 網際網路 Intranet 輸入法框架
- OpenI18N 認證測試套件
- 多語言庫 (m17n-lib)
OpenI18N 倡議的所有標準、出版物和文件都可以免費獲得。
大多數 FOSS I18N 和/或 L10N 專案都是社群驅動的。幾乎所有主要的 FOSS 都對 I18N 和 L10N 有很好的支援和工具。鼓勵軟體的本地使用者為 L10N 專案做出貢獻。
Mozilla 本地化專案 (MLP)[18] 主要依靠 FOSS 社群使 Mozilla 基金會的產品可供不同的世界文化和語言使用。該專案專注於軟體本地化,利用產品中可用的底層國際化支援。
MLP 下的軟體本地化專案包括
- Mozilla(又名專案 Seamonkey),註冊了 100 多種語言
- Mozilla Firefox,註冊了 30 多種語言
- Mozilla Thunderbird,註冊了 50 多種語言
The aim of the GNOME Translation Project[19] is to translate GNOME applications and documentation to every language in existence. This community-based effort currently boasts of translation projects covering well over 100 languages.
流行的 K 桌面環境 (KDE) 軟體也對其國際化和本地化倡議提供了廣泛的支援。 [20] 有很好的指南和文件可用,並且社群驅動的本地化專案也得到了很好的支援和認可。因此,KDE 目前提供超過 100 種語言。
OOo 擁有 I18N 和 L10N 的框架和工具。 [21] OOo 目前提供超過 70 種語言,涵蓋世界所有主要語言和文化,以及一些小語種。
來自Microsoft 的軟體的更新版本,例如Windows XP、MS Office 2003 具有良好的國際化支援,並且也提供許多本地化的原生版本。
Localized versions of MS Windows XP are available in 24 languages and the Multilingual User Interface (MUI) Pack offers more localized user interface languages. The MUI Pack is a set of language-specific resource files that can be added to the English version of MS Windows. Microsoft claims that the total number of languages supported in MS Windows XP is in excess of 140.[22]
Localized versions of MS Office 2003 are available in over 35 languages.[23] In addition, the MS Office MUI offers support for other languages for which a localized version is not available.
- ↑ Wikipedia (the free-content encyclopedia) entry on "Internationalization and localization" http://en.wikipedia.org/wiki/Internationalization_and_localization
- ↑ Wikipedia (the free-content encyclopedia) entry on "Internationalization and localization" http://en.wikipedia.org/wiki/Internationalization_and_localization
- ↑ Wikipedia (the free-content encyclopedia) entry on "Locale" http://en.wikipedia.org/wiki/Locale
- ↑ The Microsoft Developer Network (MSDN), "Locale Identifiers" http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/nls_8sj7.asp
- ↑ ISO/IEC 10646:2003, "Information technology - Universal Multiple-Octet Coded Character Set (UCS)" http://www.iso.ch/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=39921&ICS1=35&ICS2=40&ICS3=
- ↑ The Unicode Standard http://www.unicode.org/standard/standard.html
- ↑ Kuhn, M., "UTF-8 and Unicode FAQ for Unix/Linux" http://www.cl.cam.ac.uk/~mgk25/unicode.html
- ↑ ISO/IEC 10646:2003, "Information technology - Universal Multiple-Octet Coded Character Set (UCS)" http://www.iso.ch/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=39921&ICS1=35&ICS2=40&ICS3=
- ↑ RFC 3629, "UTF-8, a transformation format of ISO 10646" http://www.ietf.org/rfc/rfc3629.txt
- ↑ Wikipedia (the free-content encyclopedia) entry on "Unicode" http://en.wikipedia.org/wiki/Unicode
- ↑ ISO 639 Frequently Asked Questions (FAQ) http://www.loc.gov/standards/iso639-2/faq.html
- ↑ ISO 639 Frequently Asked Questions (FAQ) http://www.loc.gov/standards/iso639-2/faq.html
- ↑ RFC 3066, "Tags for the Identification of Languages" http://www.ietf.org/rfc/rfc3066.txt
- ↑ RFC 4646, "Tags for Identifying Languages" http://www.ietf.org/rfc/rfc4646.txt
- ↑ The Open Internationalization Initiative http://www.openi18n.org
- ↑ The Free Standards Group http://www.freestandards.org
- ↑ OpenI18N 1.3 Globalization Specification http://www.openi18n.org/docs/pdf/OpenI18N1.3.pdf
- ↑ The Mozilla Localization Project http://www.mozilla.org/projects/l10n
- ↑ GNOME 翻譯專案 http://developer.gnome.org/projects/gtp
- ↑ KDE 國際化 http://i18n.kde.org
- ↑ OpenOffice.org L10N 和 I18N 專案 http://l10n.openoffice.org
- ↑ Windows XP LIP 常見問題解答 http://www.microsoft.com/globaldev/DrIntl/faqs/winxp.mspx
- ↑ Office 2003 版本本地化版本 http://www.microsoft.com/office/editions/prodinfo/language/localized.mspx