語言定義

為了恰當地呈現不同的翻譯,需要提供有關語言名稱、文字方向、複數定義和語言程式碼的資訊。

內建語言定義

Weblate 中包含了大約 800 種語言的定義,而且該語言清單在每個發行版中都會進行擴充。每當升級 Weblate 時(更確切地說,是每當執行 migrate 時,請參閱 通用升級說明)語言資料庫都會更新,以包含 Weblate 提供的所有語言定義。

這個特性可以使用 UPDATE_LANGUAGES 來禁止。還可以使用 setuplang 來強制更新資料庫,從而相符 Weblate 內建資料。

解析語言代碼

解析翻譯時,Weblate 試圖從 檔案遮罩 將語言程式碼(通常為 ISO 639-1)對映到任何現有的語言物件。

您可以通過 語言別名 在專案層次來進一步調整這種映射。

如果無法找到精確的相符,將嘗試把其融入一種現有的語言。已嘗試以下措施:

  • 大小寫不敏感的查詢。

  • 將下劃線和破折號標準化。

  • 查詢內建語言別名。

  • 按語言名稱查詢。

  • 忽略給定語言的預設國家代碼 — 選擇 cs 而非 cs_CZ

如果這也失敗了,將使用預設值(從左到右的文字方向,一個複數)建立一個新的語言定義。自動建立的程式碼為 xx_XX 的語言將被命名為 xx_XX (generated)。您可能想稍後在管理介面中變更這個(見 變更語言定義),並將它報告給問題跟蹤器(見 為 Weblate 做貢獻),這樣的話,正確的定義就可以新增到即將釋出的 Weblate 版本中。

提示

在您看到有些不想要的內容作為語言的情況下,您會想要調整 語言篩選,當分析翻譯時忽略這樣的檔案。

變更語言定義

您可以在語言介面來變更語言定義( /languages/ URL )。

當編輯時,確認所有欄位都是正確的(特別是複數和本文方向),否則翻譯者將不能正常編輯這些翻譯。

提示

請考慮將您的變更貢獻回來,見 擴展內建語言定義

模稜兩可的語言代碼和巨集語言

在很多情況下,最好不要為翻譯使用宏語言程式碼。可能會出問題的典型範例是庫爾德語,它可以用阿拉伯文或拉丁字母書寫,這取決於實際的變體。為了讓 Weblate 可以正確地執行,建議只使用單獨的語言程式碼,避免使用宏語言程式碼。

語言定義

每種語言都包括後面的欄位:

語言代碼

辨識語言的程式碼。Weblate 使用兩個字母程式碼,如 ISO 639-1 所定義的,但對於沒有兩個字母程式碼的語言,使用會使用 ISO 639-2ISO 639-3 程式碼。它還支援 BCP 47 定義的擴充套件程式碼。

語言名稱

語言的可見名稱。還要根據使用者介面語言將 Weblate 中包括的語言名稱進行在地化。

文字方向

確定語言的書寫方向是由左至右還是由右至左。此屬性對於大多數語言都能正確地自動偵測到。

語言使用者數量

此語言的全球使用人數。

複數定義

Weblate 有內建的複數定義集。它們時基於檔案格式規範、CLDR及其他來源。

警告

變更內建的複數定義很可能不會生產您期望的效果,因為這些規則需相符底層實作。

變更複數或配方只會影響字串顯示,但不會影響解析字串並將字串儲存到檔案中。如果您認為 Weblate 的行為有誤,請在我們的問題追蹤器上新開一個工單。

複數數量

語言中使用的複數的數量。

複數公式

Gettxt 相容的複數公式,用於確定給定數量使用哪種複數形式。

此公式使用與 Gettext Plural-Forms 標頭中 plural= 部分相同的運算式語法。nplurals 值設定語言具有多少種複數形式,而公式會傳回計數 n 應使用的複數形式索引(從零開始)。

Weblate 會使用 Python 提供的 Gettext 剖析器驗證公式。可接受的語法是類似 C 的整數運算式,並以 n 作為唯一變數。可以使用十進位數字、括號、算術運算子(+-*/%)、比較及相等運算子、邏輯運算子(&&||!),以及三元運算子(condition ? value1 : value2)。結果必須介於 0nplurals - 1 之間。

例如,英語使用:

nplurals=2; plural=n != 1;