版本控制整合

Weblate 目前支援 Git ( 並擴展至 GitHub 拉取請求GitLab 合併請求Gitea 拉取請求Gerrit 檢閱請求SubversionBitbucket Cloud 拉取請求Bitbucket 資料中心拉取請求Azure DevOps 拉取請求) 與 Mercurial 作為版本控制後端。

如需結合儲存庫存取、接收通知及推送翻譯的服務提供者專用設定步驟,請參閱 程式碼託管整合

存取儲存庫

Weblate 必須存取您要使用的 VCS 儲存庫。使用公開的儲存庫,您只需輸入正確的 URL(例如 https://github.com/WeblateOrg/weblate.git ),但對於私人儲存庫或推送 URL,設定更複雜並且需要身分驗證。

從 Hosted Weblate 存取儲存庫

備註

此節內容 適用於 Hosted Weblate (hosted.weblate.org)。如果您執行自行託管的 Weblate 執行個體,請改為參閱 下一節

對 Hosted Weblate 上的 GitHub 儲存庫,請儘可能透過 Weblate 的 連結 GitHub 帳號 流程使用 Hosted Weblate app。此 App 可取得儲存庫存取權、接收通知、推送翻譯分支及建立 Pull Request,無須邀請 Hosted Weblate weblate 使用者。如需完整設定方式,請參閱 GitHub 儲存庫存取

對於 GitHub 應用工作流以外的直接 SSH 存取、以及對於 BitBucket、Codeberg 和 GitLab 儲存庫,Hosted Weblate 有專門的推送使用者(使用者名稱 weblate、電子郵件 hosted@weblate.org 以及名稱或個人資料描述 Weblate push user)。

提示

這些平台上可以有更多這樣的 Weblate 使用者,由其他 Weblate 執行個體所指定。建議搜尋電子郵件 hosted@weblate.org 以找到正確的 Hosted Weblate 推送使用者。

您必須將這位使用者新增為協作者,並授予其儲存庫的適當權限(複製時只需唯讀權限,推送時則需寫入權限)。視服務及組織設定而定,這可能會立即生效,也可能需要在 Weblate 端確認。

當您有意識地在 GitHub 上使用直接 SSH 存取,GitHub 上的 weblate 使用者會在五分鐘內自動接受邀請。其他服務可能需要人工處理,請耐心等待。

對於該直接 SSH 使用者設定,一旦 weblate 使用者被新增到您的儲存庫,您可以使用SSH協議,例如 git@example.com:group/project.git,設定 原始碼儲存庫儲存庫推送 URL

存取程式碼託管網站上的儲存庫(GitHub、GitLab、Bitbucket、Azure DevOps 等)

備註

此部分適用於 自託管 Weblate 執行個體。如果使用 Hosted Weblate(hosted.weblate.org),見 從 Hosted Weblate 存取儲存庫

對於自行託管的 Weblate,單一私有儲存庫通常最容易以搭配存取權杖的 HTTPS 儲存庫 URL 設定,請參閱 程式碼託管整合

若要存取多個儲存庫,請建立一個專用的程式碼託管網站使用者,並將其與 Weblate SSH 金鑰關聯(請參閱 Weblate SSH 金鑰)。如此便能將 Weblate SSH 金鑰關聯至單一使用者,因為平台通常規定每把 SSH 金鑰只能供一位使用者使用。請授予此使用者對這些儲存庫的存取權,並使用 SSH URL 存取儲存庫(請參閱 SSH 儲存庫)。

SSH 儲存庫

一種常見的私有儲存庫存取方式是使用 SSH。請授權公開 Weblate SSH 金鑰(請參閱 Weblate SSH 金鑰),以此方式存取上游儲存庫。

警告

在 GitHub 上,每個金鑰只能用一次,見 GitHub 儲存庫存取從 Hosted Weblate 存取儲存庫

Weblate 還會在首次連線時儲存主機金鑰指紋,並且在以後進行變更時將無法連線到主機(請參閱 驗證 SSH 主機金鑰)。

如需調整,請從 Weblate 管理介面進行:

_images/ssh-keys.webp

Weblate SSH 金鑰

在 4.17 版的變更: Weblate 現在同時產生 RSA 與 Ed25519 SSH 金鑰。對於新設定建議使用 Ed25519。

Weblate 公開金鑰對瀏覽 關於 頁面的所有使用者可見。

管理員可以在管理介面著陸頁的連線部分(從 SSH 金鑰)產生或顯示 Weblate 目前使用的公共金鑰。

備註

對應的 SSH 私密金鑰目前不能設定密碼,因此務必妥善保護。

提示

備份產生的 Weblate SSH 私密金鑰。

驗證 SSH 主機金鑰

Weblate 在首次存取時自動儲存 SSH 主機金鑰,並記住它們以備將來使用。

如果您想在連線到儲存庫之前驗證金鑰指紋,在管理介面的同一區域,在 新增主機金鑰 中新增您要存取的伺服器的SSH主機金鑰。輸入您要存取的主機名稱(例如:gitlab.com),然後點選 提交。確認其指紋與您新增的伺服器相符。

新增的帶指紋的金鑰顯示在確認訊息中:

_images/ssh-keys-added.webp

連線至舊式 SSH 伺服器

最近的 OpenSSH 發行版(例如用於 Weblate Docker 容器中的 OpenSSH)預設停用了使用 SHA-1 雜湊演算法的 RSA 簽名。做出此變化是因為 SHA-1 雜湊演算法存在密碼學缺陷,存在以不到 50 K 美元的成本建立指定字首雜湊碰撞的可能性。

多數使用者應該不會注意到這一變化,也無需替換 ssh-rsa 金鑰。自 7.2 版本起,OpenSSH便已支援 RFC8332 RSA/SHA-256/512 簽名,現有的 ssh-rsa 金鑰會在可能的地方自動使用更強的演算法。

當連線到尚未升級或尚未密切跟蹤 SSH 協議改進的舊 SSH 實作時更有可能發生不相容。到此類伺服器的 SSH 連線會失敗,錯誤為:

no matching host key type found. Their offer: ssh-rsa

對於這些情況,可能需要有選擇地重新啟用 RSA/SHA1 以允許透過 HostkeyAlgorithms 和 PubkeyAcceptedAlgorithms 選項來允許連線和/或使用者身分驗證。例如,檔案 DATA_DIR/ssh/config 中的下列段落會為單一目標主機的主機和使用者身分驗證啟用 RSA/SHA1:

Host legacy-host
   HostkeyAlgorithms +ssh-rsa
   PubkeyAcceptedAlgorithms +ssh-rsa

我們建議將啟用 RSA/SHA1 僅作為可以升級舊實作或使用另一金鑰型別(例如 ECDSA 或 Ed25519)前的權宜之計。

GitHub 儲存庫

詳細的 GitHub 儲存庫存取請參閱 GitHub 儲存庫存取

GitLab 儲存庫

詳細的 GitLab 儲存庫存取請參閱 GitLab 儲存庫存取

Weblate 內部 URL

透過在其他(連結)元件中將其位置稱為 weblate://project/component,在不同元件之間共享一個儲存庫設定。這樣,連結的元件使用主(引用)元件的版本控制系統儲存庫設定。

警告

刪除主元件也會刪除連結的元件。

如果 Weblate 找到具有相符的儲存庫設定的元件,則在建立元件時會自動調整儲存庫 URL。您可以在元件設定的最後一步中覆蓋它。

使用這個的理由:

  • 節省伺服器的磁碟空間,儲存庫僅儲存一次。

  • 使更新過程更快速,僅更新一個儲存庫。

  • 只有一個帶有 Weblate 翻譯的匯出儲存庫(參閱 Git 匯出器)。

  • 一些附加元件可以在共享一個儲存庫的多個元件上執行,例如 壓縮 Git 提交

HTTPS 儲存庫

要存取受保護的 HTTPS 儲存庫,請在 URL 中包含使用者名稱和密碼。不用擔心,當 URL 顯示給使用者時,Weblate 會刪除此資訊(如果甚至允許檢視儲存庫 URL)。

例如,加上身分驗證的 GitHub URL 可能長得像這樣: https://user:your_access_token@github.com/WeblateOrg/weblate.git

如果 URL 中不提供憑證,而儲存庫又需要憑證,Git 會報錯:

fatal: could not read Username for 'https://github.com': terminal prompts disabled

在 5.10.2 版的變更: 當提供 HTTP 憑證時,Weblate 對於 Git 2.46.0 及更高版本使用主動身分驗證。

這達成了對 Azure DevOps 儲存庫的存取,並提升了對已經過身分驗證的儲存庫的存取速度。

備註

如果您的使用者名稱和密碼包含特殊字元,需要對URL進行encode編碼,例如 https://user%40example.com:%24password%23@bitbucket.org/…

使用代理

如果您需要使用代理伺服器存取 HTTP/HTTPS VCS 儲存庫,請設定 VCS 以使用它。

這可以透過使用 http_proxyhttps_proxyall_proxy 環境變數來完成 (就像 cURL 說明文件 中描述的那樣) 或在 VCS 設定中執行它,例如:

git config --global http.proxy http://user:password@proxy.example.com:80

備註

代理設定需要在執行 Weblate 的使用者下完成(參閱 檔案系統權限)並使用 HOME=$DATA_DIR/home(參閱 DATA_DIR),否則由 Weblate 執行 Git 不會使用它。

Git

提示

Weblate 需要 Git 2.28 或更新版本。

也參考

請參閱 存取儲存庫 以取得關於如何存取不同類型儲存庫的資訊。

Git 強制推送

這與 Git 本身的行為完全一樣,唯一的區別是它總是強制推送。這僅適用於使用單獨的翻譯儲存庫的情況。

警告

請謹慎使用,因為這容易導致您的上游儲存庫遺失提交。

自訂 Git 設定

Weblate 使用 HOME=$DATA_DIR/home 呼叫所有 VCS 指令(請參閱 DATA_DIR),因此需要在 DATA_DIR/home/.git 中完成編輯使用者設定。

GitHub 拉取請求

詳細的 GitHub 拉取請求設定請參閱 GitHub 拉取請求

GitLab 合併請求

詳細的 GitLab 合併請求設定請參閱 GitLab 合併請求

Gitea 拉取請求

詳細的 Gitea 拉取請求設定請參閱 Gitea 拉取請求

Bitbucket 資料中心拉取請求

Bitbucket Data Center Pull Request 的詳細設定方式,請參閱 Bitbucket 資料中心拉取請求

Bitbucket Cloud 拉取請求

Bitbucket Cloud Pull Request 的詳細設定方式,請參閱 Bitbucket Cloud 拉取請求

Pagure 合併請求

詳細的 Pagure 合併請求設定請參閱 Pagure 合併請求

Gerrit

詳細的 Gerrit 檢閱請求設定請參閱 Gerrit 檢閱請求

Azure DevOps 拉取請求

詳細的 Azure DevOps 拉取請求設定請參閱 Azure DevOps 拉取請求

Mercurial

Mercurial 是另一個您可以直接在 Weblate 中使用的 VCS。

備註

它應該能與任何 Mercurial 版本配合使用,但指令列介面偶爾會出現不相容的變更破壞 Weblate 整合。

也參考

請參閱 存取儲存庫 以取得關於如何存取不同類型儲存庫的資訊。

Subversion

Weblate 使用 git-svnsubversion 儲存庫互動。它是一支 Perl 指令碼,讓 Git 用戶端能使用 Subversion,使用者因而可維護內部儲存庫的完整複本,並在本機進行提交。

備註

Weblate 會嘗試自動偵測 Subversion 儲存庫設定,支援分支的直接 URL,也支援使用標準設定(branches/、tags/ 及 trunk/)的儲存庫。詳細資訊請參閱 git-svn 說明文件。如果儲存庫不是標準設定且遇到錯誤,請嘗試將分支名稱加入儲存庫 URL,並將分支欄留空。

Subversion 憑證

Weblate 預期您已事先接受憑證(必要時也包括認證資訊),並會嘗試將它們加入 DATA_DIR 目錄。請將 $HOME 環境變數設為 DATA_DIR,再執行一次 svn 以接受憑證:

# Use DATA_DIR as configured in Weblate settings.py, it is /app/data in the Docker
HOME=${DATA_DIR}/home svn co https://svn.example.com/example

也參考

DATA_DIR

本機檔案

提示

下面,它使用 Git。它需要安裝 Git,並允許您切換到本機使用 Git,並提供完整的翻譯歷史記錄。

Weblate 也可以在沒有遠端 VCS 的情況下執行。透過上傳匯入初始翻譯。稍後您可以通過上傳取代個別檔案,或從 Weblate 直接新增翻譯字串 (目前僅對單語言翻譯可用)。

Weblate 在背景為您建立 Git 儲存庫並追蹤所有變更。如果您之後決定使用 VCS 儲存翻譯,其內建儲存庫可作為整合基礎。