背景信息
眾所周知,計算機技術發源於英語國家,英語也因此成為世界範圍內程式設計師的通用語言,許多優秀的程式語言、開發工具、文檔都是英文版,導致許多軟體開發者習慣首先開發英文版本,根據需要,再把軟體界面和文檔翻譯成不同國家、地區的語言版本。
但是由於實現翻譯的途徑、翻譯的工作效率、翻譯的可重用性等因素各不相同,使翻譯工作面臨很大困境,也阻礙了軟體的推廣和套用。
為了方便地將軟體翻譯成不同語言的版本,需要一套翻譯規範和通用工具,這就導致了“國際化”機制的出現。
僅僅翻譯是不夠的,同一種語言在不同國家、地區可能存在多個支系,它們在表達習慣、語法結構甚至文字種類和編碼上都有不同,方言更是千奇百怪,通用的翻譯其質量肯定是不高的。涉及到計算機領域,還存在操作習慣上的差別,而且對某種語言提供完美的輸入、顯示、列印、保存、傳輸並非一件輕而易舉的事,這就導致了“本地化”機制的出現。
國際化是指在設計軟體時,將軟體與特定語言及地區脫鉤的過程。當軟體被移植到不同的語言地區時,軟體本身不用做內部工程上的改變或修正。本地化則是指當移植軟體時,加上與特定區域設定有關的資訊和翻譯檔案的過程。 國際化和本地化之間的區別雖然微妙,但卻很重要。國際化意味著產品有適用於任何地方的潛力;本地化則是為了更適合於特定地方的使用,而另外增添的特色。用一項產品來說,國際化只需做一次,但本地化則要針對不同的區域各做一次。 這兩者之間是互補的,並且兩者結合起來才能讓一個系統適用於各地。
簡而言之,“國際化”是“本地化”的一部分,主要是指國際化的實現機制和翻譯工作, “本地化”包含“國際化”,是對“國際化”的補充和完善,它還包括為實現對某種特定語言良好的支持而進行的有針對性的翻譯調整以及對軟體進行的打補丁工作。
在如微軟及IBM等企業中,則會使用全球化(globalization)來表示此兩者的合稱。在英文中,也會使用 g11n做為簡稱。
隨著全球經濟的一體化,軟體開發者開發出支持多國語言、國際化的套用是一種趨勢。對於Web套用來說,同樣的頁面在不同的語言環境下需要顯示不同的效果。也就是說,一個Web應用程式在運行時能夠根據客戶端請求所來自的國家和語言顯示不同的用戶界面。
國際組織
i18n 和 L10n 的國際組織是 Openi18n 組織,其前身是 li18nux 組織。它原來是制定GNU/Linux 自由作業系統上軟體全球化標準的國際計畫,後來擴充到GNU/Linux 之外所有開放原始碼的技術領域,因而更名為 Open Internationalization Initiative,由非營利組織 Free Standards Group 贊助,並為世界各大廠商所支持,對於GNU/Linux 系統上的多國語言文字處理技術和環境有決定性的影響。各個開源軟體開發組織通常都有負責“國際化”和“本地化”工作的分支機構。
i18n 主要使用 gettext 軟體包使軟體實現國際化支持。事實上它是一整套 i18n解決方案。現在開源程式中普遍通過分離語言檔案 ,然後通過 gettext 軟體包來實現國際化發展。
範圍
國際化與本地化工作的焦點包括:
語言
字母。目前大部分的系統都採用統一碼為標準來解決
字元編碼。
不同的數字命名系統。
書寫方向。譬如德語是從左到右,而波斯語、希伯來語和阿拉伯語是由右到左。
相同語言在不同地區的拼法差異,如美國英語、加拿大英語使用localization,而英國英語和澳大利亞英語使用localisation。
檔案處理上的差異,如某些文字存在大小寫,其它則否。字母順序。
文字的圖像表示(列印物、內含線上圖片)。
讀法(音頻)
視頻的字幕
文化
書寫習慣
日期跟時間的格式,包含各式日曆。
時區(在國際場合會使用世界標準時間)
產品和服務所要面向的法規
只屬於本地化的主題有:
翻譯
符合當地習慣
符合當地的道德觀念
針對當地撰寫內容
符號
排序方法
美學
當地的文化價值和社會環境
困難
開發軟體時,國際化和本地化對開發者是一個有挑戰性的任務,特別是當軟體當初設計時沒有考慮這個問題時。通常作法是將文本和其他環境相關的資源與程式代碼相分離。這樣在理想的情況下,應對變化的環境時無需修改代碼,只要修改資源,從而顯著簡化了工作。
開發團隊需要了解其他語言和文化,而這樣的人才可能難以尋覓。而且資源的複製也可能成為維護的惡夢。例如,如果某個語言中顯示給用戶的信息變化了,其他的翻譯版本都要隨之變化。Gettext之類軟體庫有助於解決這一問題。
由於自由軟體自由地修改和再分發,因此它比較容易國際化。當
KDE擁有70個語言版本時,大多數專有軟體只能夠用於商業上有利可圖的語言。
區域設定
計算機中一套定義用戶的語言、國家和用於定義用戶希望在其用戶界面上看到的各種可以改變的選擇的參數集合。通常一個locale
標識符至少包括一個語言標識符和一個區域標識符。
在UNIX和WINDOWS中,locale的控制是不同的。在UNIX下,通常通過
環境變數來控制locale。這些環境變數包括:LC_ALL, LC_CTYPE, LC_TIME, 等等。你可以通過改變這些環境變數來控制你的程式或者命令所表現出來的locale,前提是這些程式或者命令必須是已經被國際化的和本地化的。在Windows下,你可以通過改變控制臺上的“語言/區域”中的區域的值來設定Windows的當前用戶的locale。
與全球化的關係
國際化有時與 全球化 交替使用以描述聯繫日益緊密的世界的經濟與文化影響。
國際化經常(特別是在軟體中)指提供一個用於多語言的框架,有時也指事物(機構、理念)可以藉此影響多個民族的過程。 此時很少使用全球化,因為它一般指機構和產品出現與世界各地(同時也引起了對本地化的需求)。
本地化可能用於描述貼近最終用戶以減小全球化的環境和其他副作用。
其它
除了i18n,L10n(localization),g11n(globalization),還有m17n(multilingualization),區別是:
i18n支持多種語言,但是同一時間只能是英文和一種選定的語言,例如英文+中文、英文+德文、英文+韓文等等;
L10n(localization),支持2種語言,英文和另外一種語言(例如中文);
g11n(globalization),簡單的理解可以認為g11n = i18n + L10n。
m17n(multilingualization)可以在同一時間支持多種語言,例如你可以在一個頁面里看到中文、英文、德文和韓文。