自訂 Weblate¶
使用 Django 和 Python 擴充與自訂。將您的變更貢獻給上游,使每人都能夠受益。這降低了您的維護成本; Weblate 中的代碼對變更內部介面或重構編碼時的情況。
提示
您也可以在 外觀自訂 中定製 Weblate 外觀。
警告
內部介面與範本都不被認為是穩定的 API。請每次升級都檢查您的定製,介面或其語義可能未經通知就進行變更。
也參考
建立 Python 模組¶
如果不熟悉 Python,您可以查看 Python For Beginners,它解釋了其基本內容並指向了進階教學。
要寫入有定製 Python 程式碼(被稱為模組)的檔案,需要一個地方儲存它,或者在系統路徑(通常像 /usr/lib/python3.12/site-packages/ 的地方),或者在 Weblate 目錄下,同樣也新增到解釋程式搜尋路徑下。
提示
使用 Docker 時,您可以將 Python 模組放在 /app/data/python/ 中(請參閱 Docker 容器儲存區),讓 Weblate 能夠載入這些模組,例如可透過 設定覆寫檔案 載入。
更好地是,將您的自訂轉換為適當的 Python 套件:
為您的套件建立資料夾(我們會使用 weblate_customization )。
在裡面建立
pyproject.toml檔案來描述包:[build-system] requires = ["uv_build>=0.8.18,<0.9.0"] build-backend = "uv_build" [project] name = "weblate-customization" version = "0.1.0" description = "Add your description here" requires-python = ">=3.13" dependencies = []
為 Python 模組建立資料夾:
src/weblate_customization在裡面建立
__init__.py檔案來確認 Python 可以匯入模組。現在可以使用 uv pip install -e 安裝這個包。可以在 Editable packages documentation 中找到更多資訊。
模組一旦安裝,就可以用在 Weblate 設定中(例如
weblate_customization.checks.FooCheck)。
您的套件結構應該看起來像這樣:
weblate_customization
├── pyproject.toml
└── src
└── weblate_customization
├── __init__.py
├── addons.py
└── checks.py
可以在 <https://github.com/WeblateOrg/customize-example> 找到自訂 Weblate 的範例,它涵蓋了下面描述的所有主題。
變更標誌¶
建立簡單的 Django 應用程式來包含想要覆寫的靜態檔案(請參閱 建立 Python 模組 )。
品牌出現在後面的檔案中:
icons/weblate.svg導覽條中顯示的 Logo。
logo-*.png根據螢幕解析度和 web 瀏覽器的 Web 圖示。
favicon.ico傳統瀏覽器使用的 Web 圖示。
weblate-*.png適用於機器人或匿名使用者的頭像。一些網路瀏覽器使用這些作為捷徑圖示。
email-logo.png在通知電子郵件中使用。
將其新增至
INSTALLED_APPS:INSTALLED_APPS = ( # Add your customization as first "weblate_customization", # Weblate apps are here… )
執行
weblate collectstatic --noinput,來收集提供給用戶端的靜態檔案。
自訂的品質檢查、附加元件與自動修復¶
要在 Weblate 中安裝您的 自訂自動修復,撰寫自訂檢查、自訂機器翻譯 或 編寫附加元件 程式碼:
將檔案放進包含 Weblate 定製的 Python 模組中(見 建立 Python 模組 或 自訂程式碼)。
在專用設定中將其完全合格的路徑新增到 Python 類中:
# Checks
CHECK_LIST += ("weblate_customization.checks.FooCheck",)
# Autofixes
AUTOFIX_LIST += ("weblate_customization.autofix.FooFixer",)
# Add-ons
WEBLATE_ADDONS += ("weblate_customization.addons.ExamplePreAddon",)
# Automatic suggestions
WEBLATE_MACHINERY += ("weblate_customization.machinery.SampleTranslation",)
也參考