GNU gettext PO (Portable Object)¶
翻譯自由軟體用得最廣泛的格式。
通過調整檔案頭或連結到相應的來源檔案,可以支援儲存在檔案中的情境資訊。
也參考
顯示來源字串變更¶
如果 PO 檔案中包含先前的來源字串,Weblate 可以擷取這些字串,並以此顯示需要編輯之字串的差異。若要納入這些資訊,執行 msgmerge 時必須加上 --previous 引數;產生的 PO 檔案會包含如下的特殊資料列:
#, fuzzy
#| msgid "previous-untranslated-string"
msgid "untranslated-string"
msgstr "translated-string"
這由 po_keep_previous 檔案格式參數 參數控制,不會影響以 #~ 標示的過時項目。
過時字串¶
msgmerge 預設會將已從 POT 檔案移除的字串保留為過時的 #~ 項目。啟用 po_remove_obsolete 檔案格式參數 參數,可在 Weblate 儲存 PO 檔案時移除過時項目。
PO 檔案標頭¶
Weblate 會自動維護 PO 檔案的標頭。可使用 檔案格式參數 將 Language-Team、Last-Translator、X-Generator 及 Report-Msgid-Bugs-To 標頭納入設定。
貢獻者註解¶
使用 po_contributor_comments 檔案格式參數,將貢獻者名稱和年份加入 PO 標頭註解。選擇 gettext 可使用傳統註解,選擇 spdx 則會產生 SPDX 著作權項目。預設值 none 會停用貢獻者更新,但不會移除現有註解。此設定與 Last-Translator 標頭設定互不影響。
使用 gettext 時,貢獻者註解如下:
# Jane Doe <jane@example.com>, 2024, 2026.
使用 spdx 時,同一筆項目會變成:
# SPDX-FileCopyrightText: 2024, 2026 Jane Doe <jane@example.com>
符合資格的貢獻者下次提交時,SPDX 模式會將所有可辨識的貢獻者註解轉換為 SPDX 格式、保留過去的貢獻年份,並為該貢獻者加入當前年份。系統會略過匿名的 Weblate 作者。其他無關註解和著作權聲明會予以保留。Weblate 不會從譯文中的致謝名單推斷著作權主張,也不會加入專案專屬的聲明或授權識別碼;這些工作請使用自訂工具處理。
換行¶
換行方式大致符合 GNU gettext 的行為。GNU gettext 的換行演算法及其所依據的 Unicode 資料都會持續演進,因此少數情況下可能出現差異。
可以用 po_line_wrap 引數設定換行寬度,見 檔案格式參數。
產生相符的 MO 檔案¶
如果 MO 與 PO 檔案一同保留在儲存庫中,可以使用 產生 MO 檔案 讓 MO 檔案與 PO 檔案保持同步。
從 POT 檔案更新 PO 檔案¶
可以用 更新 PO 檔案以符合 POT (msgmerge) 從 POT 檔案更新 PO 檔案,見 更新目標語言檔案。
單語言 gettext¶
一些專案決定使用 gettext 作為單語言格式 —— 它們僅在原始碼中編碼 ID,然後將字串翻譯成所有語言,包括英語。支援此功能,儘管在將組件匯入 Weblate 時必須明確選擇此檔案格式。
範例檔案¶
雙語言 gettext PO 檔案通常如下所示:
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "Monday"
msgstr "Pondělí"
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "Tuesday"
msgstr "Úterý"
#: weblate/accounts/avatar.py:163
msgctxt "No known user"
msgid "None"
msgstr "Žádný"
單語言的 gettext PO 檔案通常如下所示:
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-monday"
msgstr "Pondělí"
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-tuesday"
msgstr "Úterý"
#: weblate/accounts/avatar.py:163
msgid "none-user"
msgstr "Žádný"
基本語言檔案將是:
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-monday"
msgstr "Monday"
#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-tuesday"
msgstr "Tuesday"
#: weblate/accounts/avatar.py:163
msgid "none-user"
msgstr "None"
Weblate 設定¶
典型的 Weblate 雙語 gettext 組件設定 |
|
|---|---|
檔案遮罩 |
|
單語言基底語言檔案 |
空白 |
新翻譯的範本 |
|
檔案格式 |
Gettext PO 檔案 |
典型的 Weblate 單語 gettext 組件設定 |
|
|---|---|
檔案遮罩 |
|
單語言基底語言檔案 |
|
新翻譯的範本 |
|
檔案格式 |
Gettext PO 檔案(單語言) |
檔案格式參數¶
po_* 模式的 檔案格式參數 可用來設定 gettext 格式的行為。