2009-02-03 206 views
181

我打算問一個關於如何準備桌面應用程序以支持用戶界面上的多種語言的問題。本地化和國際化有什麼區別?

在我搜索關於該主題的現有問題時,我想到的是「International」這個詞,所以我選擇了Internationalization標籤並通讀了一些匹配的問題。

最終我意識到我應該在標籤本地化的問題下進行研究。不過,看起來我並不是一個人就把這兩個詞混淆起來。

那麼,它們在本地化和國際化之間的關鍵區別是什麼?

另外,它們之間是否有明確的區別真的那麼重要?

回答

204
國際化(i18n)
改變你的軟件,以便它不是硬連接到一個語言/區域/文化的過程。
本地化(l10n)
向您的軟件添加適當資源以支持特定語言/區域設置的過程。它的範圍比 this Wikipedia entry大,但這是一個好的開始。


區分它們的值是(理論上),一旦你的程序經過了國際化過程中,你可以再重複很多本地化的過程,因爲你需要他們。同樣,用語言來精確度也很高。

+9

其他一些可以分開考慮的原因:國際化QA和本地化QA具有不同的測試用例,國際化是一次性成本(或多或少),因此您本地化的語言越多,投資回報率越高。對於任何一個地區來說,i18n通常比l10n更昂貴。 – 2009-02-03 13:04:49

+0

@Hank,@Mike,非常有幫助的答案,謝謝。所以我首先看到國際化是正確的。我的目標是確保應用程序設計將來至少支持多種語言,即使我只是專注於英語。 – Ash 2009-02-04 07:39:59

+0

儘管它稍微老了一點,但這個[W3C高級別視圖高](http://www.w3.org/International/questions/qa-i18n)基本上與此一致。 – mkobit 2015-08-31 17:22:14

64

根據Apple

國際是設計和建造的 應用程序,以方便 國產化的進程。 本地化,在 轉,是文化和語言 適應國際化 應用程序到兩個或兩個以上的文化不同的市場。

-1

i18n和l10n的定義很多。我使用的一個是:

國際化(i18n):你的應用程序的特定語言的適應(翻譯)

本地化(本地化):您的應用程序(金錢,數字格式的區域設置特定的適應,日期格式...)。例如,我們可以在法國和瑞士(我們都講法語,至少在瑞士的某些地區)發行的應用程序具有相同的語言,但是我們仍然需要一些適應性來將EUR兌換爲CHF。

28

國際化準備您的本地化應用程序。例如,你可能編碼存儲在數據庫中的Unicode字符(的utf8mb4代替latin1),移動字符串資源文件,使使用的日期,時間和貨幣格式等

當你想出售例如,您的應用程序的中文版本,然後您可以通過聘請翻譯人員來構建zh-CN資源文件並使用新的日期/時間/貨幣格式將其本地化。

13

L10n有時可以顯示你的i18n失敗的位置 - 例如,你的字典有一個單詞條目,用於一個單詞,用作英語中的名詞和動詞,不會翻譯成另一種語言中的同一單詞,或UI元素/設計不適合文化(L/R方向)。

因此l10n「普遍」會在i18n之後發生,但可以反饋到您的i18n並需要進一步重新設計,所以您不能認爲您的應用完全國際化,直到您完成了一些本地化。

3

這裏有幾個非常好的答案,所以我不會回收它們。然而,在某些時候,通常在國際化測試和本地化語言測試之間,國際化和本地化傾向於重疊。有人提到l10n反饋國際化,但如果您正在進行質量國際化測試,並創建僞本地化內容,那麼在本地化過程中迭代發展問題應該是例外,而不是規則。界面大小調整,特別是調整頁面以支持阿拉伯語和希伯來語等雙向語言也傾向於混合本地化問題和國際化工程。

只需說一句,國際化涉及到根據需求對來源進行更改以支持任何區域設置。如果國際化進展順利...

...本地化涉及對內容和某些級別的表示(例如粗體標記)進行調整,以便最好地滿足特定目標市場(地區)的需求。

很多文章&白皮書以供參考:http://www.lingoport.com/software-internationalization-articles

2

我覺得本土化可以去沒有國際化,但.. 國際本地化不應該做的......

7

全球化(G11N):是開發和銷售多語言軟件產品到全球市場的過程。

多語言軟件開發目前經歷了兩個階段:第一階段是國際化,第二階段是本地化。國際化(I18n):是一種推廣產品的過程,它可以處理多種語言和文化習俗,而無需重新設計(即語言&文化中立)。本地化(L10n):是一種採取產品並使其在語言和文化上適合其使用和銷售的目標區域(國家/地區和語言)的過程(即語言&文化特定)。

2

類比pov:想象一下你的書架上的書架上只有一個尺寸爲4x4英寸的書架。國際化將建立與各種不同的隔間,可以讓它來處理任何書的大小或形狀的架子。本地化將把所有書放在正確的部分。將您的數據庫,業務邏輯和用戶界面作爲書架,將不同的語言,貨幣和文本方向視爲書籍。

3

國際化 - I18N - 從任何特定的語言/文化的應用程序的抽象。

本地化 - l10n-將特定語言/文化/語言環境的具體支持插入到上述i18n框架中。

基本上通過i18n首先使得l10n少得多的PITA。

相比之下,如果您先在具體區域設置中創建應用程序,然後嘗試將其應用程序國際化,則它將成爲龐大的PITA。它不是一個簡單的問題,只是將一個具體的英文字符串換成「Hello World」給Resource.Global.HelloWorld。

不同的語言都會有不同的空間需求,佈局,重點,顏色等

你需要從地面到位的國際化框架多達輕鬆支持語言環境之間的此切換上述區別,如果你連認爲您可能需要支持多個區域設置。

稍後將其重新安裝到應用程序中確實很難。您將不得不重新審視您(或其他人)第一次進行的大量架構考慮和約束。

10

根據Wikipedia

國際是設計一個軟件應用程序,以便它可以潛在地適用於各種語言和地區without engineering changes的過程。

本地化是針對特定地區或語言的adapting internationalized software的過程,方法是添加特定於語言環境的組件並翻譯文本。

此外,本地化(這是潛在地執行多次,對於不同語言環境)使用infrastructure or flexibility provided by internationalization(其理想地只執行一次,或作爲持續發展的一個組成部分)。

4

如果你去通過下面的定義,這是非常簡單的,

的i18n(國際化)

工藝設計應用程序,使其具有 功能變化以不同的語言,而不訴諸程序的應用程序更改。

本地化(本地化)創建實際的特定語言的文本和格式

過程。

1

讓我們明白區域第一

區域 - 一組參數定義用戶的語言,地域,用戶希望在他們的用戶界面看到任何特殊的變種偏好。通常,區域設置標識符至少包含語言標識符和區域標識符。

i18n - 設計和開發支持多語言環境的軟件。

l10n - 只有當您的軟件支持i18n時纔有可能。但是l10n確保語言,日期格式,貨幣格式等在上下文中針對特定區域顯示。

例如,

#1。 1977年6月3日將翻譯成西班牙語,3月de 1977年。

#2。某些國家的貨幣用'。'分隔vs','

#3。根據區域的國家顯示相應的貨幣符號

#1,#2和#3是用於本地化的用例。

如果軟件被設計爲支持#1 OR#根據用戶現場2 OR#3,則產品本地化啓用。

如果它支持多個語言環境,則啓用它的i18n。

0

簡單,

國際化(I18N)是使你的軟件能夠適應不同的語言,地區和文化的過程。

本地化(L10N)是將您的軟件翻譯成多種語言的過程。但在您可以本地化您的軟件之前,您需要將其國際化。

3

很多的答案,很多正確的信息,但我的答案是一點點的另一種觀點。

國際 - 它是當開發商沒有在代碼中直接消息/錯誤信息/按鈕名稱有/標籤字幕/等在某些語言,但有被傳遞到翻譯功能的, 和翻譯功能根據當前用戶的語言環境將返回英文/法文/等最終文本...
翻譯功能適用於存儲(db/files/associative array/etc)。
存儲包含這是用於coode和值,這是應用程序支持的某種語言的文本。

本地化 - 它是在新的語言(例如西班牙)適當到存儲,而不會在該過程中涉及顯影劑添加新值的過程。

例如,我們有存儲:

key | english | italian   | 
------+------------+-------------------+ 
title | Welcome | Benvenuto   | 
agree | I agree | Sono d'accordo | 
thank | Thank you | Grazie   | 

國際化是使用代碼類似confirm(t(agree));代替confirm("I agree");confirm("Sono d'accordo");
本地化 - 這是新的語言環境添加到我們的存儲,如:

key | english | italian   | spanish   | 
------+------------+-------------------+------------------+ 
title | Welcome | Benvenuto   | Bienvenido  | 
agree | I agree | Sono d'accordo | Estoy de acuerdo | 
thank | Thank you | Grazie   | Gracias   | 

這裏開發者不需要更新代碼,翻譯功能會正確地載入適當的文本。