I18N
I18N
i18n(其來源是英文單詞 internationalization的首末字元i和n,18為中間的字元數)是“國際化”的簡稱。在資訊領域,國際化(i18n)指讓產品(出版物,軟體,硬體等)無需做大的改變就能夠適應不同的語言和地區的需要。對程序來說,在不修改內部代碼的情況下,能根據不同語言及地區顯示相應的界面。在全球化的時代,國際化尤為重要,因為產品的潛在用戶可能來自世界的各個角落。通常與i18n相關的還有L10n(“本地化”的簡稱)。
眾周,計算技術源語,語範圍程序語言,優秀編程語言、開發工具、文檔都是英文版,導致許多軟體開發者習慣首先開發英文版本,根據需要,再把軟體界面和文檔翻譯成不同國家、地區的語言版本。
翻譯途徑、翻譯效率、翻譯素各,翻譯臨困境,阻礙軟體推廣。
軟體翻譯語言版,需套翻譯規範具,導致“際化”制。
僅僅翻譯是不夠的,同一種語言在不同國家、地區可能存在多個支系,它們在表達習慣、語法結構甚至文字種類和編碼上都有不同,方言更是千奇百怪,通用的翻譯其質量肯定是不高的。涉及到計算機領域,還存在操作習慣上的差別,而且對某種語言提供完美的輸入、顯示、列印、保存、傳輸並非一件輕而易舉的事,這就導致了“本地化”機制的出現。
國際化是指在設計軟體時,將軟體與特定語言及地區脫鉤的過程。當軟體被移植到不同的語言地區時,軟體本身不用做內部工程上的改變或修正。本地化則是指當移植軟體時,加上與特定區域設置有關的資訊和翻譯文件的過程。國際化和本地化之間的區別雖然微妙,但卻很重要。國際化意味著產品有適用於任何地方的潛力;本地化則是為了更適合於特定地方的使用,而另外增添的特色。用一項產品來說,國際化只需做一次,但本地化則要針對不同的區域各做一次。這兩者之間是互補的,並且兩者結合起來才能讓一個系統適用於各地。
簡而言之,“國際化”是“本地化”的一部分,主要是指國際化的實現機制和翻譯工作, “本地化”包含“國際化”,是對“國際化”的補充和完善,它還包括為實現對某種特定語言良好的支持而進行的有針對性的翻譯調整以及對軟體進行的打補丁工作。
在如微軟及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。
文件處理上的差異,如某些文字存在大小寫,其它則否。字母順序。
• 文字的圖像表示(列印物、內含線上圖片)。
• 讀法(音頻)
• 視頻的字幕
文化
• 圖片和顏色:這牽涉到理解和文化適宜的議題。
• 名字和稱謂
• 政府給定的編碼(如美國的社會安全碼,英國的National Insurance number,愛沙尼亞的Isikukood及其它各國的身份證號碼)和護照
• 電話號碼、地址和國際郵遞區號
• 貨幣(符號、貨幣標誌的位置)
• 度量衡
• 紙張大小
書寫習慣
• 日期跟時間的格式,包含各式日曆。
• 時區(在國際場合會使用世界標準時間)
• 數字格式(小數點、分隔點的位置、分隔所用的字元)
產品和服務所要面向的法規
只屬於本地化的主題有:
• 翻譯
• 針對特定語言(如東亞語言)的特別支持
• 符合當地習慣
• 符合當地的道德觀念
• 針對當地撰寫內容
• 符號
• 排序方法
• 美學
• 當地的文化價值和社會環境
開發軟體時,國際化和本地化對開發者是一個有挑戰性的任務,特別是當軟體當初設計時沒有考慮這個問題時。通常作法是將文本和其他環境相關的資源與程序代碼相分離。這樣在理想的情況下,應對變化的環境時無需修改代碼,只要修改資源,從而顯著簡化了工作。
開發團隊需要了解其他語言和文化,而這樣的人才可能難以尋覓。而且資源的複製也可能成為維護的惡夢。例如,如果某個語言中顯示給用戶的信息變化了,其他的翻譯版本都要隨之變化。Gettext之類軟體庫有助於解決這一問題。
計算機中一套定義用戶的語言、國家和用於定義用戶希望在其用戶界面上看到的各種可以改變的選擇的參數集合。通常一個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)可以在同一時間支持多種語言,例如你可以在一個頁面里看到中文、英文、德文和韓文。