國際化

b10l07發表於2018-03-26

Django最初是在美國中部開發的 - 就像字面意義上的那樣,堪薩斯州勞倫斯距離美國大陸的地理中心不到40英里。然而,與大多數開源專案一樣,Django的社群也逐漸成長為包括來自全球各地的人們。隨著Django的社群日益多元化,國際化和本地化變得越來越重要。

Django本身已經完全國際化;所有字串都被標記為翻譯,並且設定控制顯示與日期和時間等語言環境相關的值。 Django還附帶有50多個不同的本地化檔案。如果您不是以英語為母語的人,Django很可能已經被翻譯成您的主要語言。

用於這些本地化的相同國際化框架可供您在自己的程式碼和模板中使用。

由於許多開發人員至多對國際化和本地化實際上意味著什麼有模糊的理解,因此我們將從幾個定義開始。

定義
國際化

指的是為潛在使用任何語言環境而設計程式的過程。這個過程通常由軟體開發人員完成。國際化包括為未來翻譯標記文字(如UI元素和錯誤訊息),抽象顯示日期和時間,以便可以觀察不同的本地標準,為不同時區提供支援,並且通常確保程式碼不包含任何假設關於其使用者的位置。您經常會看到國際化縮寫為I18N。 (18代表在初始I和終端N之間省略的字母數目。)

本土化

指實際翻譯國際化程式以用於特定語言環境的過程。這項工作通常由翻譯人員完成。您有時會看到縮寫為L10N的本地化。

以下是一些有助於我們處理共同語言的術語:

區域設定名稱

語言環境名稱,可以是形式ll的語言規範,也可以是形式ll_CC的組合語言和國家/地區規範。例如:it,de_AT,es,pt_BR。語言部分總是小寫,國家部分大寫。分隔符是下劃線。

語言程式碼

代表一種語言的名稱。瀏覽器使用此格式在Accept-Language HTTP標頭中傳送它們接受的語言的名稱。例如:it,de-at,es,pt-br。語言程式碼通常以小寫字母表示,但HTTP Accept-Language標頭不區分大小寫。分隔符是一個短劃線。

訊息檔案

訊息檔案是純文字檔案,表示單一語言,其中包含所有可用的翻譯字串以及它們應如何用給定語言表示。訊息檔案具有.po副檔名。

翻譯字串

可以翻譯的文字。

格式檔案

格式檔案是一個Python模組,用於定義給定語言環境的資料格式。

翻譯

為了使Django專案可以翻譯,你必須在你的Python程式碼和模板中新增最少數量的鉤子。這些鉤子被稱為翻譯字串。他們告訴Django:如果該文字的翻譯可以用該語言翻譯,則應將該文字翻譯成終端使用者的語言。標記可翻譯的字串是您的責任;該系統只能翻譯它所知道的字串。

然後Django提供實用程式將翻譯字串提取到訊息檔案中。此檔案是翻譯人員提供目標語言翻譯字串的等效方法。一旦譯員填寫了訊息檔案,它必須被編譯。這個過程依賴於GNU gettext工具集。

完成此操作後,Django會根據使用者的語言偏好,按照每種可用語言即時翻譯Web應用程式。

基本上,Django做了兩件事:

  • 它允許開發人員和模板作者指定應用程式的哪些部分應該可翻譯。
  • 它使用該資訊根據他們的語言偏好為特定使用者翻譯Web應用程式。

Django的國際化掛鉤預設開啟,這意味著在框架的某些地方會有一些與i18n相關的開銷。如果你不使用國際化,你應該花兩秒鐘在你的設定檔案中設定USE_I18N = False。然後Django將進行一些優化,以免載入國際化機器,這將為您節省一些開銷。還有一個獨立但相關的USE_L10N設定,用於控制Django是否應該實現格式本地化。

相關文章