在地化檔案格式

Weblate 支援各種各樣的翻譯格式。每種格式之間有略微的不同,提供不同的功能集。

提示

為應用程式選擇檔案格式時,最好採用所用工具組或平台中成熟穩定的格式。如此譯者也能使用熟悉的工具,更有可能參與專案。

自動偵測

Weblate 會在 新增翻譯專案和組件 期間嘗試偵測檔案格式。若同一序列化格式(JSON、YAML、properties)有不同變體,或檔案編碼不同,偵測結果可能有誤;建立組件前請確認 檔案格式 是否正確。

翻譯類型功能

各格式支援哪些功能,請參閱相應檔案格式的說明檔案頁面。

雙語言和單語言格式

Weblate 支援 單語 與 雙語 格式。雙語格式會在單一檔案中儲存來源與翻譯兩種語言(常見範例包括 GNU gettext PO (Portable Object)、XLIFF 1.1 與 1.2 與 Apple iOS 字串)。單語格式則以 ID 辨識字串,每個語言檔案只包含這些 ID 至指定語言翻譯的對應關係(常見範例為 Android 字串資源)。部分檔案格式同時支援兩種形式,詳情請見下方說明。

若要正確使用單語檔案,Weblate 必須能存取包含完整待翻譯字串及其來源內容的檔案。此檔案在 Weblate 中稱為 單語言基底語言檔案,其他架構可能使用不同名稱。

另外,可以利用 中間語言檔案 擴充此工作流程,以包括開發人員提供的字串,但不要在最終的字串中使用。

字串狀態

許多檔案格式只區分 “未翻譯” 和 “已翻譯”字串。而某些格式可以儲存更精細的狀態資訊,例如“需要編輯”或“已核准”。

來源字串描述

來源字串描述可用於傳遞要翻譯的字串的附加資訊。

部分格式原生支援向譯者提供額外資訊(例如 XLIFF 1.1 與 1.2、GNU gettext PO (Portable Object)、WebExtension JSON、CSV 檔案、Excel Open XML、Qt Linguist .ts、go-i18n JSON 檔案、gotext JSON 檔案、ARB 檔案、.NET 資源檔案 (RESX, RESW))。許多其他格式則會擷取最接近的註解,作為來源字串描述。

解釋

字串的 解釋 可以從部分檔案格式儲存及解析。

目前僅在 TermBase eXchange 格式 中支援。

來源字串位置

原始碼中字串的位置會幫助熟練的翻譯者搞清楚字串如何被使用。

此資訊通常在雙語言格式中可用,這些格式中,使用工具從原始碼中提取字串。例如,GNU gettext PO (Portable Object) 和 Qt Linguist .ts。

翻譯旗標

翻譯標記可用來自訂 Weblate 行為。部分格式支援在翻譯檔案中定義標記;您也可以隨時在 Weblate 介面中定義,請參閱 使用旗標自訂行為。

此功能以 GNU gettext PO (Portable Object) 中的標記為設計基礎。

此外,支援旗標的 XML 格式會從非標準屬性 weblate-flags 擷取旗標。XLIFF 標準所定義的 maxwidth 屬性 也支援 max-length:N 旗標;請參閱 指定翻譯旗標。

情境

情境用於區分雙語格式下用於不同領域的相同字串(例如 Sun 可以是 "Sunday" 的縮寫,也可以是離我們最近的恆星的名字)。

對單語格式而言,字串辨識碼(通常稱為鍵)可達到相同目的,因此不需要額外情境。

複數化字串

將帶有不同數量的字串正確在地化時複數是必要的。規則取決於一個目標語言並且許多格式遵循 CLDR 規範。

支援功能表格中的「複數支援」表示 Weblate 能以該格式呈現複數字串。有些格式需要既有的複數中繼資料或特定變體;若格式本身未原生支援建立新的複數字串,便無法建立這類字串。

提示

複數形式字串也需要應用程式框架妥善支援。請選擇平台的原生格式,例如 GNU gettext PO (Portable Object)、Android 字串資源 或 Stringsdict 格式。

多值格式

多值 CSV 和 TBX 等多值格式,會在同一個字串中儲存彼此獨立的來源和目標替代項。這些替代項沒有一對一配對關係,其數量也不依照文法上的複數規則。

來源檢查會檢查每個來源替代項。目標檢查會將各個目標替代項與所有來源替代項比較。無論替代項的順序或語言的文法複數形式為何,只要目標符合任一來源替代項就算通過。翻譯未變更 檢查則會回報與任一來源替代項相同的目標,並套用一般豁免條件。只有在所有來源替代項都產生相同修正內容時,系統才會自動修正。

Machine translation suggestions translate each source alternative independently. Automatic machine translation supports strings with one source alternative and at most one target alternative; it skips strings with multiple alternatives to preserve them. Translation service glossaries can use all alternatives. Automatic 翻譯記憶 contributions skip strings with multiple alternatives.

LLM 翻譯服務只會使用來源和目標替代項各一個的字串作為先前翻譯的範例。若字串包含多個替代項,服務不會附上既有翻譯情境。

唯讀的字串

翻譯檔案中的唯讀字串將被包含在 Weblate 中,但不能在 Weblate 中對其進行編輯。只有少數格式(XLIFF 1.1 與 1.2 和 Android 字串資源)原生支援此功能,但可以透過新增 read-only 標記在其他格式中進行模擬,請參閱 使用旗標自訂行為。

移除廢棄字串

部分檔案格式可以儲存廢棄字串。Weblate 可以從支援此操作的格式中移除這些廢棄字串。

支援其他格式

translate-toolkit 支援且可序列化的大多數格式,都能輕易獲得支援,但目前尚未經過測試。多數情況下,Weblate 需要額外的薄層,隱藏不同儲存方式的行為差異。

要為新格式新增支援,首先要在 translate-toolkit 中為其實作支援。

檔案格式參數

檔案格式參數可用來調整檔案格式相關設定。這些參數在組件層級設定,讓您自訂檔案的解析與序列化處理方式。

檔案格式參數清單

參數名稱

檔案格式

標籤

幫助文字

csv_encoding

  • csv

  • csv-multi

檔案編碼方式

用於 CSV 檔案的編碼方式

可用的選擇:

auto

自動偵測

utf-8

UTF-8

csv_escape_formulas

  • csv

  • csv-multi

  • csv-simple

跳脫試算表公式

儲存 CSV 檔案時,對看似試算表公式的值加上單引號前綴。

csv_simple_encoding

  • csv-simple

檔案編碼方式

用於簡單 CSV 檔案的編碼方式

可用的選擇:

auto

自動偵測

utf-8

UTF-8

iso-8859-1

ISO-8859-1

dos_eol

所有檔案格式

DOS 列尾字元

在字串中使用 DOS 換行符號(rn),而不使用 UNIX 換行符號(n)。

flatxml_key_name

  • flatxml

FlatXML 鍵名稱

flatxml_root_name

  • flatxml

FlatXML 根元素名稱

flatxml_value_name

  • flatxml

FlatXML 數值名稱

gwt_encoding

  • gwt

檔案編碼方式

用於 GWT Properties 檔案的編碼方式

可用的選擇:

utf-8

UTF-8

iso-8859-1

ISO-8859-1

json_indent

  • json

  • json-nested

  • webextension

  • i18next

  • i18nextv4

  • arb

  • go-i18n-json

  • go-i18n-json-v2

  • formatjs

  • gotext

JSON 縮排

json_indent_style

  • json

  • json-nested

  • webextension

  • i18next

  • i18nextv4

  • arb

  • go-i18n-json

  • go-i18n-json-v2

  • formatjs

  • gotext

JSON 縮排類型

可用的選擇:

spaces

空白

tabs

定位字元

json_sort_keys

  • json

  • json-nested

  • webextension

  • i18next

  • i18nextv4

  • arb

  • go-i18n-json

  • go-i18n-json-v2

  • formatjs

  • gotext

排序 JSON 金鑰

可用的選擇:

none

不要排序

case_sensitive

區分大小寫排序

case_insensitive

不區分大小寫的排序

json_use_compact_separators

  • json

  • json-nested

  • webextension

  • i18next

  • i18nextv4

  • arb

  • go-i18n-json

  • go-i18n-json-v2

  • formatjs

  • gotext

分隔符號後不要有空白

line_max_length

  • markdown

  • mdx

最大列寬

輸出檔案中每一列的最大字元數。

md_extract_code_blocks

  • markdown

  • mdx

擷取程式碼區塊

是否要從 Markdown 與 MDX 檔案的程式碼區塊中擷取可翻譯內容。

md_extract_frontmatter

  • markdown

  • mdx

擷取前置資料

是否要擷取並翻譯 Markdown 與 MDX 檔案中的 YAML front matter 區塊。

md_frontmatter_translate_values

  • markdown

  • mdx

翻譯前置資料值

剖析 YAML front matter,並僅翻譯純量字串值。盡可能保留鍵、結構、註解及格式。

md_no_placeholders

  • markdown

  • mdx

停用佔位字元

停用在 Markdown 與 MDX 檔案中偵測與處理預留位置。

merge_duplicates

  • markdown

  • mdx

  • html

  • txt

  • dokuwiki

  • mediawiki

  • asciidoc

移除重複的相同字串

將相同的來源字串合併為單一翻譯單元。透過移除與位置相關的情境,避免在檔案重整或表格重新排序時造成翻譯遺失。

po_contributor_comments

  • po

  • po-mono

貢獻者註解

將貢獻者姓名與年份加入標頭註解。SPDX 也會將現有、可識別的貢獻者註解轉換為 SPDX-FileCopyrightText 項目。

可用的選擇:

none

已停用

gettext

Gettext

spdx

SPDX

po_fuzzy_matching

  • po

使用模糊比對

po_keep_previous

  • po

保留翻譯字串上次的 msgid

控制是否保留模糊字串的前一個 msgid 註解。

po_line_wrap

  • po

  • po-mono

長列換列

預設情況下,gettext 會在每行第 77 個字元處與換行符處換行。新增 --no-wrap 引數後,換行只會在換行符處發生。

可用的選擇:

77

於第 77 個字元處與新列處換列(xgettext 預設值)

65535

只在換行符處換行(例如 xgettext --no-wrap)

-1

不要換行

po_no_location

  • po

不在檔案中納入位置資訊

po_remove_obsolete

  • po

  • po-mono

移除廢棄字串

儲存翻譯變更或從 POT 檔案更新時,移除 PO 檔案中的廢棄項目。

po_report_msgid_bugs_to

  • po

  • po-mono

報告 msgid 錯誤至

若已設定來源字串的錯誤報告位址,允許 Weblate 更新檔案標頭中的「Report-Msgid-Bugs-To」。

po_set_language_team

  • po

  • po-mono

更新語言團隊標頭

讓 Weblate 更新「Language-Team」檔案標頭。

po_set_last_translator

  • po

  • po-mono

更新最新譯者標頭

讓 Weblate 更新「Last-Translator」檔案標頭。

po_set_x_generator

  • po

  • po-mono

更新 X-Generator 標頭

讓 Weblate 更新「X-Generator」檔案標頭。

properties_encoding

  • properties

檔案編碼方式

Java Properties 檔案使用的編碼方式

可用的選擇:

iso-8859-1

ISO-8859-1

utf-8

UTF-8

utf-16

UTF-16

strings_encoding

  • strings

檔案編碼方式

用於 iOS 字串檔案的編碼方式

可用的選擇:

utf-8

UTF-8

utf-16

UTF-16

xliff_placeables

  • xliff

  • xliff2

可置入項目支援

控制是否將 XLIFF 字串中的內嵌 XML 元素保留為可編輯的可置入項目。「僅限純文字」會跳脫 XML 標記,並將內容視為一般文字。若支援可置入項目,<x id="name" =""> 或 </x>

可用的選擇:

plain

僅限純文字

placeables

支援可置入項目

xml_closing_tags

  • ts

  • xliff

  • xliff2

  • poxliff

  • apple-xliff

  • resx

  • aresource

  • moko-resource

  • cmp-resource

  • tbx

包含空白 XML 標記的結束標記

xml_whitespace_handling

  • xliff

  • poxliff

  • apple-xliff

  • xliff2

空白字元處理方式

設定 XLIFF 空白字元的處理方式。「依照 xml:space」會遵循檔案中的屬性;「一律保留」會保留所有空白字元;「一律正規化」會合併空白字元,即使設定了 xml:space="preserve" 也一樣。

可用的選擇:

standard

依照 xml:space

preserve

一律保留

normalize

一律正規化

yaml_indent

  • yaml

  • ruby-yaml

YAML 縮排

yaml_line_break

  • yaml

  • ruby-yaml

換行符號

可用的選擇:

dos

DOS (\r\n)

unix

UNIX (\n)

mac

MAC (\r)

yaml_line_wrap

  • yaml

  • ruby-yaml

長列換列

可用的選擇:

80

於第 80 個字元處折行

100

於第 100 個字元處折行

120

於第 120 個字元處折行

180

於第 180 個字元處折行

65535

不要換行