開始為 Weblate 貢獻程式碼

要理解 Weblate 原始碼,請瀏覽 Weblate 原始碼Weblate 前端Weblate 內部

從程式碼庫開始

若要熟悉 Weblate 程式碼庫,可以先嘗試處理標有 good first issue 的問題。

歡迎直接開始處理這些問題,不必事先詢問。只要在問題中留言告知,讓大家知道已有人著手處理即可。

本機執行 Weblate

開始參與 Weblate 開發最方便的方式,是依照 從原始碼中安裝 操作。這會建立含可編輯 Weblate 原始碼的 Python 環境。

  1. 複製 Weblate 原始碼:

    git clone https://github.com/WeblateOrg/weblate.git
    cd weblate
    
  2. 安裝 Weblate 和所有對開發有用的相依套件:

    uv sync --all-extras --dev
    
  3. 啟動開發伺服器:

    uv run weblate runserver
    
  4. 取決於設定,您也許想啟動 Celery workers:

    uv run ./weblate/examples/celery start
    
  5. 若要執行測試(更多細節請參閱 Weblate 的本機測試):

    . scripts/test-database.sh
    uv run pytest
    

在 Docker 中本機執行 Weblate

如果您安裝了 Docker 和 docker-compose-plugin,您還需要透過您喜愛的包管理器安裝名為 jq 的額外工具。之後,只需執行以下指令即可啟動開發環境:

./rundev.sh

它將新增 Docker 影響並啟動它。 Weblate 執行在 <http://127.0.0.1:8080/> 上,並且您可以以 admin 為使用者名稱, admin 為密碼來登入。新的安裝是空的,所以您會想要以 新增翻譯專案和元件 來繼續。

Weblate 已設定為使用 maildev 容器作為電子郵件伺服器。寄送的電子郵件可在 <http://127.0.0.1:1080/> 檢視。

相關的 Dockerfiledocker-compose.yml 位於 dev-docker 目錄。為方便開發期間存取資料庫,執行 PostgreSQL 的容器會在 5433 連接埠提供服務。

指令碼還接受一些引數,要執行測試,以 test 引數來執行,然後指定任何 test 引數,例如,只在 weblate.machine 模組中執行測試:

./rundev.sh test --exitfirst weblate/machine

備註

小心在執行測試前您的 Docker 容易活動並執行。您可以通過執行 docker ps 指令來檢查。

展示日誌:

./rundev.sh logs

為了停止背景容器,執行:

./rundev.sh stop

執行沒有任何參數的指令碼將重建 Docker 容器並重啟動它。

警告

此容器不適合正式環境使用。為簡化開發工作,其安全性有所取捨。

引導您的開發執行個體

您可以使用 import_demo 建立示範翻譯,並使用 createadmin 建立管理員使用者。

若也安裝了 帳單,可以使用 billing_demo 建立示範帳務專案。

使用 PyCharm 為 Weblate 編寫程式碼

PyCharm 是 Python 的著名 IDE,這裡有一些幫助您在其中建立您的 Weblate 專案的指導原則。

考慮到您剛剛將 GitHub 儲存庫複製到一個資料夾中,只需使用 PyCharm 開啟它。一旦 IDE 開啟,第一步要做的是指定您想要使用的直譯器:

../_images/pycharm-1.png

選取由 uv sync --all-extras --dev 建立的 .venv 環境,以符合指令列開發環境的設定。您也可以讓 PyCharm 建立 Python 環境,但建議優先使用 uv 管理的環境:

../_images/pycharm-2.png

設定直譯器後,別忘了安裝相依套件。使用建議的 uv 管理環境時,請從主控台執行 uv sync --all-extras --dev

第二步是設定正確的資訊來在 PyCharm 中原生使用 Django:理念是能夠立刻觸發 IDE 中的單元測試。為此,您需要指定該 Django 專案的根路徑及其設定路徑:

../_images/pycharm-3.png

請注意,Django project root 是儲存庫的實際根目錄,而不是 Weblate 子目錄。關於設定,您可以使用儲存庫中的 weblate/settings_test.py,您也可以建立自己的設定並將其設定在那裡。

最後一步是執行伺服器,並將中斷點放置在代碼中而能夠除錯它。這通過新增新的 Django Server 設定來完成:

../_images/pycharm-4.png ../_images/pycharm-5.png

提示

小心被稱為 No reload 的屬性:如果您修改檔案,它會阻止伺服器被實時重新載入。這允許保留現有的除錯器中斷點,而它們通常會在重新載入伺服器時被丟棄。