Update zh tw languages and fix some broken links (#455)

---------

Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: silverwind <2021+silverwind@noreply.gitea.com>
Reviewed-on: https://gitea.com/gitea/docs/pulls/455
Reviewed-by: silverwind <2021+silverwind@noreply.gitea.com>
This commit is contained in:
Lunny Xiao
2026-07-09 23:41:46 +00:00
parent c0f8a04185
commit 965c269495
652 changed files with 30864 additions and 30792 deletions

View File

@@ -8,36 +8,36 @@ aliases:
# Hacking on Gitea
## 快速入
## 快速入
得快速工作的开发环境,您可以使用 Gitpod。
得快速工作的開發環境,您可以使用 Gitpod。
[![在 Gitpod 中打](/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/go-gitea/gitea)
[![在 Gitpod 中打](/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/go-gitea/gitea)
## 安 Golang
## 安 Golang
您需要 [ go](https://go.dev/doc/install) 并设置您的 go 境。
您需要 [ go](https://go.dev/doc/install) 並設定您的 go 境。
接下[使用 npm 安 Node.js](https://nodejs.org/en/download/) 这是构
JavaScript 和 CSS 文件的必要工具。最低支的 Node.js 版本是 @minNodeVersion@
且推使用最新的 LTS 版本。
接下[使用 npm 安 Node.js](https://nodejs.org/en/download/) 這是構
JavaScript 和 CSS 文件的必要工具。最低支的 Node.js 版本是 @minNodeVersion@
且推使用最新的 LTS 版本。
**注意** 当执行需要外部工具的 make 任务时,比如
`make watch-backend`Gitea 会自动下载并构建这些必要的件。了能使用些,你必
`"$GOPATH"/bin`加入到可行路上。如果你不把 go bin 目添加到可行路你必须手动
指定可行程序路径
**注意** 當執行需要外部工具的 make 任務時,比如
`make watch-backend`Gitea 會自動下載並構建這些必要的件。了能使用些,你必
`"$GOPATH"/bin`加入到可行路上。如果你不把 go bin 目添加到可行路你必須手動
指定可行程式路徑
**注意 2** Go 版本 @minGoVersion@ 或更高版本是必的。Gitea 使用 `gofmt`
格式化源代码。然而,`gofmt`果可能因 `go` 的版本而有差。因此推荐安装我们持续集成使用
的 Go 版本。截至上次更新Go 版本应该@goVersion@。
**注意 2** Go 版本 @minGoVersion@ 或更高版本是必的。Gitea 使用 `gofmt`
格式化源程式碼。然而,`gofmt`果可能因 `go` 的版本而有差。因此推薦安裝我們持續整合使用
的 Go 版本。截至上次更新Go 版本應該@goVersion@。
## 安 Make
## 安 Make
Gitea 大量使用 `Make` 来自动化任和改进开发。本指南涵了如何安 Make。
Gitea 大量使用 `Make` 來自動化任和改進開發。本指南涵了如何安 Make。
### 在 Linux 上
使用管理器安
使用套件管理器安
在 Ubuntu/Debian 上:
@@ -53,37 +53,37 @@ sudo yum install make
### 在 Windows 上
Make 的这三个发行版都可以在 Windows 上行:
Make 的這三個發行版都可以在 Windows 上行:
- [单个二进制构](http://www.equation.com/servlet/equation.cmd?fa=make)。复制到某处并添加到 `PATH`
- [單個二進制構](http://www.equation.com/servlet/equation.cmd?fa=make)。複製到某處並添加到 `PATH`
- [32 位版本](http://www.equation.com/ftpdir/make/32/make.exe)
- [64 位版本](http://www.equation.com/ftpdir/make/64/make.exe)
- [MinGW-w64](https://www.mingw-w64.org) / [MSYS2](https://www.msys2.org/)。
- MSYS2 是一工具和的集合,您提供一个易于使用的环境来构建、安装和运行本 Windows 件,它包括 MinGW-w64。
- 在 MingGW-w64 中,二制文件称为 `mingw32-make.exe` 而不是 `make.exe` `bin` 文件添加到 `PATH`
- 在 MSYS2 中,您可以直接使用 `make`请参阅 [MSYS2 移植](https://www.msys2.org/wiki/Porting/)。
- 要使用 CGO_ENABLED例如SQLite3编译 Gitea您可能需要使用 [tdm-gcc](https://jmeubank.github.io/tdm-gcc/) 而不是 MSYS2 gcc MSYS2 gcc 标头缺少一些 Windows -只有 CRT 函像 \_beginthread 一
- [Chocolatey 管理器](https://chocolatey.org/packages/make)。`choco install make`
- MSYS2 是一工具和的集合,您提供一個易於使用的環境來構建、安裝和運行本 Windows 件,它包括 MinGW-w64。
- 在 MingGW-w64 中,二制文件稱為 `mingw32-make.exe` 而不是 `make.exe` `bin` 文件添加到 `PATH`
- 在 MSYS2 中,您可以直接使用 `make`請參閱 [MSYS2 移植](https://www.msys2.org/wiki/Porting/)。
- 要使用 CGO_ENABLED例如SQLite3編譯 Gitea您可能需要使用 [tdm-gcc](https://jmeubank.github.io/tdm-gcc/) 而不是 MSYS2 gcc MSYS2 gcc 標頭缺少一些 Windows -只有 CRT 函像 \_beginthread 一
- [Chocolatey 套件管理器](https://chocolatey.org/packages/make)。`choco install make`
**注意** :如果您尝试在 Windows 命令提示符下使用 make 进行构建,您可能遇到问题。建使用上述提示Git bash 或 MinGW但是如果您只有命令提示符或可能是 PowerShell可以使用 [set](https://docs.microsoft.com/zh-tw/windows-server/administration/windows-commands/set_1) 命令,例如 `set TAGS=bindata`
**注意** :如果您嘗試在 Windows 命令提示符下使用 make 進行構建,您可能遇到問題。建使用上述提示Git bash 或 MinGW但是如果您只有命令提示符或可能是 PowerShell可以使用 [set](https://docs.microsoft.com/zh-tw/windows-server/administration/windows-commands/set_1) 命令,例如 `set TAGS=bindata`
## 下载并克隆 Gitea 源代码
## 下載並克隆 Gitea 源程式碼
取源代码的推方法是使用 `git clone`
取源程式碼的推方法是使用 `git clone`
```bash
git clone https://github.com/go-gitea/gitea
```
(自 go modules 出现后,不再需要建 go 项目从 `$GOPATH`取,因此不再推使用 `go get` 方法。)
(自 go modules 出現後,不再需要建 go 專案從 `$GOPATH`取,因此不再推使用 `go get` 方法。)
## 派生 Gitea
如上所述下主要的 Gitea 源代码。然,派生 [Gitea 仓库](https://github.com/go-gitea/gitea)
并为您的本地仓库切换 git 程源,或添加另一个远程源:
如上所述下主要的 Gitea 源程式碼。然,派生 [Gitea 儲存庫](https://github.com/go-gitea/gitea)
併為您的本地儲存庫切換 git 程源,或添加另一個遠程源:
```bash
# 将原来的 Gitea origin 重命名 upstream
# 將原來的 Gitea origin 重命名 upstream
git remote rename origin upstream
git remote add origin "git@github.com:$GITHUB_USERNAME/gitea.git"
git fetch --all --prune
@@ -92,86 +92,86 @@ git fetch --all --prune
或者:
```bash
# 为我们的 fork 添加新的
# 為我們的 fork 添加新的
git remote add "$FORK_NAME" "git@github.com:$GITHUB_USERNAME/gitea.git"
git fetch --all --prune
```
了能够创建合并请求,应将分叉存储库添加 Gitea 本地仓库的远程,否则无法推送更改。
了能夠建立合併請求,應將分叉儲存庫添加 Gitea 本地儲存庫的遠程,否則無法推送更改。
## 建 Gitea基本
## 建 Gitea基本
看看我
[](installation/from-source.md)
关于如何[从源代码构](installation/from-source.md) 。
看看我
[](installation/from-source.md)
關於如何[從源程式碼構](installation/from-source.md) 。
从源代码构建的最简单推荐方法是:
從源程式碼構建的最簡單推薦方法是:
```bash
TAGS="bindata sqlite sqlite_unlock_notify" make build
```
`build`标将同时执`frontend``backend` 子目。如果存在 `bindata` 标签,资源文件将被编译成二制文件。建议在进行前端开发时省略 `bindata` 标签,以便实时反映更改。
`build`標將同時執`frontend``backend` 子目。如果存在 `bindata` 標籤,資源文件將被編譯成二制文件。建議在進行前端開發時省略 `bindata` 標籤,以便實時反映更改。
所有可用的 `make`标,请参阅 `make help`。另请参阅 [`.drone.yml`](https://github.com/go-gitea/gitea/blob/main/.drone.yml) 以解我的持续集成是如何工作的。
所有可用的 `make`標,請參閱 `make help`。另請參閱 [`.drone.yml`](https://github.com/go-gitea/gitea/blob/main/.drone.yml) 以解我的持續整合是如何工作的。
## 持续构
## 持續構
要在源文件更改时运行并持续构建:
要在源文件更改時運行並持續構建:
```bash
# 对于前端和
# 對於前端和
make watch
# 或者只看前端文件html/js/css
make watch-frontend
# 或者:只看端文件 (go)
# 或者:只看端文件 (go)
make watch-backend
```
在 macOS 上,监视所有端源文件可能会达到默认的打文件限制,可以通过当前 shell 的 `ulimit -n 12288` 或所有未 shell 的 shell 启动文件增加。
在 macOS 上,監視所有端源文件可能會達到預設的打文件限制,可以透過當前 shell 的 `ulimit -n 12288` 或所有未 shell 的 shell 啟動文件增加。
### 格式化、代码分析和拼写检
### 格式化、程式碼分析和拼寫檢
的持续集成将拒绝未通过代码检查(包括格式查、代码分析和拼写检查)的 PR。
的持續整合將拒絕未通過程式碼檢查(包括格式查、程式碼分析和拼寫檢查)的 PR。
应该格式化你的代码
應該格式化你的程式碼
```bash
make fmt
```
并检查源代码
並檢查源程式碼
```bash
# lint 前端和端代
# lint 前端和端代
make lint
# lint 端代
# lint 端代
make lint-backend
```
**注意** `gofmt`果取决于 `go` 的版本。您应该运行与持续集成相同的 go 版本。
**注意** `gofmt`果取決於 `go` 的版本。您應該運行與持續整合相同的 go 版本。
### 理 JS 和 CSS
### 理 JS 和 CSS
前端开发应遵循 [Guidelines for Frontend Development](contributing/guidelines-frontend.md)。
前端開發應遵循 [Guidelines for Frontend Development](contributing/guidelines-frontend.md)。
要使用前端资源构建,使用上面提到的“watch-frontend”目或只建一次:
要使用前端資源構建,使用上面提到的“watch-frontend”目或只建一次:
```bash
make build && ./gitea
```
在提交之前,保 linters 通
在提交之前,保 linters 通
```bash
make lint-frontend
```
### 配置本地 ElasticSearch
### 設定本地 ElasticSearch
使用 docker 启动本地 ElasticSearch 例:
使用 docker 啟動本地 ElasticSearch 例:
```sh
mkdir -p $(pwd) /data/elasticsearch
@@ -179,7 +179,7 @@ sudo chown -R 1000:1000 $(pwd) /data/elasticsearch
docker run --rm --memory= "4g" -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 -e "discovery.type=single-node" -v "$(pwd)/data /elasticsearch:/usr/share/elasticsearch/data" docker.elastic.co/elasticsearch/elasticsearch:7.16.3
```
配置`app.ini`
設定`app.ini`
```ini
[indexer]
@@ -190,112 +190,112 @@ REPO_INDEXER_TYPE = elasticsearch
REPO_INDEXER_CONN_STR = http://elastic:changeme@localhost:9200
```
### 建和添加 SVGs
### 建和添加 SVGs
SVG 图标是使用 `make svg` 命令建的,命令将图标资源编译到输出目 `public/assets/img/svg` 中。可以在 `web_src/svg`中添加自定义图标
SVG 圖標是使用 `make svg` 命令建的,命令將圖標資源編譯到輸出目 `public/assets/img/svg` 中。可以在 `web_src/svg`中添加自訂圖標
### 建 Logo
### 建 Logo
Gitea Logo 的 PNG 和 SVG 版本是使用 `TAGS="gitea" make generate-images`标从单个 SVG 源文件 assets/logo.svg 建的。要行它Node.js 和 npm 必可用。
Gitea Logo 的 PNG 和 SVG 版本是使用 `TAGS="gitea" make generate-images`標從單個 SVG 源文件 assets/logo.svg 建的。要行它Node.js 和 npm 必可用。
更新 `assets/logo.svg` 并运`make generate-images`,同样的过程也可用于从 SVG 源文件生成自定义 Logo PNG。忽略 gitea 编译选项将仅更新用户指定的 LOGO 文件。
更新 `assets/logo.svg` 並運`make generate-images`,同樣的過程也可用於從 SVG 源文件生成自 Logo PNG。忽略 gitea 編譯選項將僅更新使用者指定的 LOGO 文件。
### 更新 API
建新的 API 路由或修改有的 API 路由,您**必**
更新和/或建 [Swagger](https://swagger.io/docs/specification/2-0/what-is-swagger/)
些使用 [go-swagger](https://goswagger.io/) 评论的文
[规范](https://goswagger.io/use/spec.html#annotation-syntax)中描述了这些注释的结构
如果您想了解更多有 Swagger 结构的信息,可以查看
[Swagger 2.0 文](https://swagger.io/docs/specification/2-0/basic-structure/)
添加新 API 端的先前 PR 行比,例如 [PR #5483](https://github.com/go-gitea/gitea/pull/5843/files#diff-2e0a7b644cf31e1c8ef7d76b444fe3aaR20)
新的 API 路由或修改有的 API 路由,您**必**
更新和/或建 [Swagger](https://swagger.io/docs/specification/2-0/what-is-swagger/)
些使用 [go-swagger](https://goswagger.io/) 評論的文
[規範](https://goswagger.io/use/spec.html#annotation-syntax)中描述了這些註釋的結構
如果您想了解更多有 Swagger 結構的資訊,可以查看
[Swagger 2.0 文](https://swagger.io/docs/specification/2-0/basic-structure/)
添加新 API 端的先前 PR 行比,例如 [PR #5483](https://github.com/go-gitea/gitea/pull/5843/files#diff-2e0a7b644cf31e1c8ef7d76b444fe3aaR20)
应该注意不要破下游用户依赖的 API。在定的 API 上,一般来说添加是可以接受的,但
API 行根本性更改将会被拒
應該注意不要破下游使用者依賴的 API。在定的 API 上,一般來說添加是可以接受的,但
API 行根本性更改將會被拒
建或更改 API 端点后,请用以下命令重新生成 Swagger 文
或更改 API 端點後,請用以下命令重新生成 Swagger 文
```bash
make generate-swagger
```
应该验证生成的 Swagger 文件:
應該驗證生成的 Swagger 文件:
```bash
make swagger-validate
```
应该提交更改的 swagger JSON 文件。持续集成服务器将使用以下方法查是否已完成:
應該提交更改的 swagger JSON 文件。持續整合伺服器將使用以下方法查是否已完成:
```bash
make swagger-check
```
**注意** 注意,您应该使用 Swagger 2.0 文,而不是 OpenAPI 3 文
**注意** 注意,您應該使用 Swagger 2.0 文,而不是 OpenAPI 3 文
### 创建新的配置选项
### 建立新的設定選項
创建新的配置选项时,将它们添加到 `modules/setting`对应文件。您应该将信息添加到 `custom/conf/app.ini`
到[配置备忘单](../administration/config-cheat-sheet.md)
建立新的設定選項時,將它們添加到 `modules/setting`對應文件。您應該將資訊添加到 `custom/conf/app.ini`
到[設定備忘單](../administration/config-cheat-sheet.md)
`docs/content/doc/advanced/config-cheat-sheet.zh-tw.md` 中找到
### 更改 Logo
更改 Gitea Logo SVG ,您需要运行并提交果的:
更改 Gitea Logo SVG ,您需要運行並提交果的:
```bash
make generate-images
```
这将创建必要的 Gitea 图标和其他图标
這將建立必要的 Gitea 圖標和其他圖標
### 数据库迁
### 資料庫遷
如果您对数据库中的任何数据库持久结构进行重大更改
`models/`,您需要行新的移。可以找到
`models/migrations/` 中。您可以保您的迁移适用于主要
数据库类型使用:
如果您對資料庫中的任何資料庫持久結構進行重大更改
`models/`,您需要行新的移。可以找到
`models/migrations/` 中。您可以保您的遷移適用於主要
資料庫類型使用:
```bash
make test-sqlite-migration # SQLite 切换为适当的数据库
make test-sqlite-migration # SQLite 切換為適當的數據庫
```
## 测试
## 測試
Gitea 运行两种类型的测试:单元测试和集成测试
Gitea 運行兩種類型的測試:單元測試和整合測試
### 单元测试
### 單元測試
`go test`中的`*_test.go`盖了单元测试
您可以设置环境变`GITEA_UNIT_TESTS_LOG_SQL=1` 以在详细模式下运行测试时显示所有 SQL 句(即设置`GOTESTFLAGS=-v` )。
`go test`中的`*_test.go`蓋了單元測試
您可以設定環境變`GITEA_UNIT_TESTS_LOG_SQL=1` 以在詳細模式下運行測試時顯示所有 SQL 句(即設定`GOTESTFLAGS=-v` )。
```bash
TAGS="bindata sqlite sqlite_unlock_notify" make test # Runs the unit tests
```
### 集成测试
### 整合測試
单元测试不会也不能完全单独测试 Gitea。因此们编写了集成测试;但是,些依赖于数据库
單元測試不會也不能完全單獨測試 Gitea。因此們編寫了整合測試;但是,些依賴於資料庫
```bash
TAGS="bindata sqlite sqlite_unlock_notify" make build test-sqlite
```
在 SQLite 境中运行集成测试。集成测试需要安 `git lfs`。其他数据库测试可用,但
可能需要适应当地环境。
在 SQLite 境中運行整合測試。整合測試需要安 `git lfs`。其他資料庫測試可用,但
可能需要適應當地環境。
看看 [`tests/integration/README.md`](https://github.com/go-gitea/gitea/blob/main/tests/integration/README.md) 有更多信息以及如何运行单个测试
看看 [`tests/integration/README.md`](https://github.com/go-gitea/gitea/blob/main/tests/integration/README.md) 有更多資訊以及如何運行單個測試
### 测试 PR
### 測試 PR
的持续集成将测试代码是否通过了单元测试,并且所有支持的数据库都将在 Docker 境中通过集成测试
还将测试从几个最新版本的 Gitea 移。
的持續整合將測試程式碼是否通過了單元測試,並且所有支援的資料庫都將在 Docker 境中通過整合測試
還將測試從幾個最新版本的 Gitea 移。
在 PR 中附提交适当的单元测试和集成测试
在 PR 中附提交適當的單元測試和整合測試
## 站文
## 站文
该网站的文档位于 `docs/` 中。如果你改了文档内容,你可以使用以下测试方法行持续集成
該網站的文件位於 `docs/` 中。如果你改了文件內容,你可以使用以下測試方法行持續整合
```bash
make lint-md
@@ -303,32 +303,32 @@ make lint-md
## Visual Studio Code
`contrib/ide/vscode` Visual Studio Code 提供了 `launch.json``tasks.json`。查看
[`contrib/ide/README.md`](https://github.com/go-gitea/gitea/blob/main/contrib/ide/README.md) 解更多信息
`contrib/ide/vscode` Visual Studio Code 提供了 `launch.json``tasks.json`。查看
[`contrib/ide/README.md`](https://github.com/go-gitea/gitea/blob/main/contrib/ide/README.md) 解更多資訊
## Goland
单击 `/main.go` 中函 `func main()` 上的 `Run Application`
可以快速启动一个可调试的 Gitea 例。
單擊 `/main.go` 中函 `func main()` 上的 `Run Application`
可以快速啟動一個可調試的 Gitea 例。
`Run/Debug Configuration` 中的 `Output Directory`须设置为
gitea 项目目录(包含 `main.go``go.mod`
则,启动实例的工作目是 GoLand 的临时目录
防止 Gitea 在开发环境中加载动态资源(例如:模板)。
`Run/Debug Configuration` 中的 `Output Directory`須設定為
gitea 專案目錄(包含 `main.go``go.mod`
則,啟動實例的工作目是 GoLand 的臨時目錄
防止 Gitea 在開發環境中加載動態資源(例如:模板)。
要在 GoLand 中使用 SQLite 运行单元测试,请设置 `-tags sqlite,sqlite_unlock_notify`
`行/调试配置``Go 工具参数` 中。
要在 GoLand 中使用 SQLite 運行單元測試,請設定 `-tags sqlite,sqlite_unlock_notify`
`行/調試配置``Go 工具參數` 中。
## 提交 PR
更改感到满意后,将它们推送并打开拉取求。它建您允 Gitea Managers 和 Owners 修改您的 PR
分支,因为我们需要在合之前其更新 main 和/或可能是能直接助解决问题
更改感到滿意後,將它們推送並打開拉取求。它建您允 Gitea Managers 和 Owners 修改您的 PR
分支,因為我們需要在合之前其更新 main 和/或可能是能直接助解決問題
任何 PR 都需要 Gitea 维护者的次批准,且需要通过持续集成。看看我
任何 PR 都需要 Gitea 維護者的次批准,且需要通過持續整合。看看我
[CONTRIBUTING.md](https://github.com/go-gitea/gitea/blob/main/CONTRIBUTING.md)
如果您需要更多助,请访问 [Discord](https://discord.gg/gitea) #Develop
在那聊天。
如果您需要更多助,請前往 [Discord](https://discord.gg/gitea) #Develop
在那聊天。
在,您已准备好 Hacking Gitea。
在,您已準備好 Hacking Gitea。