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

@@ -6,54 +6,54 @@ aliases:
- /zh-tw/guidelines-backend
---
# 后端开发指南
# 後端開發指南
## 背景
Gitea 使用 Golang 作为后端编程语言。它使用了多第三方包,且自己也编写了一些包。
例如Gitea 使用[Chi](https://github.com/go-chi/chi)作基本的 Web 框架。[Xorm](https://xorm.io)是一个用于与数据库交互的 ORM 框架。
因此,管理些包非常重要。在开始编写后端代码之前,请参考以下准则
Gitea 使用 Golang 作為後端編程語言。它使用了多第三方包,且自己也編寫了一些包。
例如Gitea 使用[Chi](https://github.com/go-chi/chi)作基本的 Web 框架。[Xorm](https://xorm.io)是一個用於與資料庫交互的 ORM 框架。
因此,管理些包非常重要。在開始編寫後端程式碼之前,請參考以下準則
## 包设计准则
## 包設計準則
### 包列表
了保持易理解的代码并避免循环依赖,拥有良好的代码结构是很重要的。Gitea 端分以下几个部分:
了保持易理解的程式碼並避免循環依賴,擁有良好的程式碼結構是很重要的。Gitea 端分以下幾個部分:
- `build`帮助构建 Gitea 的本。
- `cmd`:包含所有 Gitea 的实际子命令,包括 web、doctor、serv、hooks、admin 等。`web`将启动 Web 服`serv``hooks`被 Git 或 OpenSSH 用。其他子命令可以帮助维护 Gitea。
- `tests`:常用的测试函数
- `tests/integration`集成测试,用于测试后端回归
- `tests/e2e`:端到端测试,用于测试前端和端的容性和视觉回归
- `models`:包含由 xorm 用于构建数据库表的数据结构。它包含查和更新数据库的函数。应避免其他 Gitea 代码的依赖关系。在某些情下,比如日志记录时可以例外。
- `models/db`:基本的数据库操作。所有其他`models/xxx`包都应依赖于此包。`GetEngine`只能 models/中用。
- `models/fixtures`单元测试和集成测试中使用的示例数据。一`yml`文件表示一个将在测试开始时加载到数据库中的表。
- `models/migrations`:存不同版本之间的数据库迁移。修改数据库结构的 PR**必**包含一个迁移步
- `modules`:在 Gitea 中理特定功能的不同模。工作正在行中:其中一些模块应该移到`services`中,特是那些依赖于 models 的模,因为它们依赖于数据库
- `modules/setting`存储从 ini 文件中取的所有系统配置,并在各引用。但是在可能的情下,应将其作为函数参数使用。
- `modules/git`:用于与`Git`命令行或 Gogit 包交互的包。
- `public`编译后的前端文件JavaScript、像、CSS 等)
- `routers`处理服务器请求。由它使用其他 Gitea 包来处理请因此其他包models、modules 或 services不能依赖于 routers。
- `routers/api`:包含`/api/v1`路由,用于处理 RESTful API 求。
- `routers/install`:只能在系统处于安装模式INSTALL_LOCK=false时响应
- `routers/private`仅由内部子命令用,特`serv``hooks`
- `routers/web`处理来自 Web 浏览器或 Git SMART HTTP 协议的 HTTP 求。
- `services`:用于常见路由操作或命令行的支持函数。使用`models``modules`来处理请求。
- `templates`:用生成 HTML 出的 Golang 模板。
- `build`幫助構建 Gitea 的本。
- `cmd`:包含所有 Gitea 的實際子命令,包括 web、doctor、serv、hooks、admin 等。`web`將啟動 Web 服`serv``hooks`被 Git 或 OpenSSH 調用。其他子命令可以幫助維護 Gitea。
- `tests`:常用的測試函數
- `tests/integration`整合測試,用於測試後端迴歸
- `tests/e2e`:端到端測試,用於測試前端和端的容性和視覺迴歸
- `models`:包含由 xorm 用於構建資料庫表的資料結構。它包含查和更新資料庫的函數。應避免其他 Gitea 程式碼的依賴關係。在某些情下,比如日誌記錄時可以例外。
- `models/db`:基本的資料庫操作。所有其他`models/xxx`包都應依賴於此包。`GetEngine`只能 models/中調用。
- `models/fixtures`單元測試和整合測試中使用的範例資料。一`yml`文件表示一個將在測試開始時加載到資料庫中的表。
- `models/migrations`存不同版本之間的資料庫遷移。修改資料庫結構的 PR**必**包含一個遷移步
- `modules`:在 Gitea 中理特定功能的不同模。工作正在行中:其中一些模組應該移到`services`中,特是那些依賴於 models 的模,因為它們依賴於資料庫
- `modules/setting`儲存從 ini 文件中取的所有系統設定,並在各引用。但是在可能的情下,應將其作為函數參數使用。
- `modules/git`:用於與`Git`命令行或 Gogit 包交互的包。
- `public`編譯後的前端文件JavaScript、像、CSS 等)
- `routers`處理伺服器請求。由它使用其他 Gitea 包來處理請因此其他包models、modules 或 services不能依賴於 routers。
- `routers/api`:包含`/api/v1`路由,用於處理 RESTful API 求。
- `routers/install`:只能在系統處於安裝模式INSTALL_LOCK=false時響應
- `routers/private`僅由內部子命令調用,特`serv``hooks`
- `routers/web`處理來自 Web 瀏覽器或 Git SMART HTTP 協議的 HTTP 求。
- `services`:用於常見路由操作或命令行的支援函數。使用`models``modules`來處理請求。
- `templates`:用生成 HTML 出的 Golang 模板。
### 包依赖关系
### 包依賴關係
Golang 不支持导入循,我们必须仔细决定包之的依赖关系。这些包之有一些级别。以下是理想的包依赖关系方向。
Golang 不支援導入循,我們必須仔細決定包之的依賴關係。這些包之有一些級別。以下是理想的包依賴關係方向。
`cmd` -> `routers` -> `services` -> `models` -> `modules`
左到右,左的包可以依赖于右侧的包,但右的包不能依赖于左侧的包。在同一级别的子包中,可以根据该级别的规则进行依
左到右,左的包可以依賴於右側的包,但右的包不能依賴於左側的包。在同一級別的子包中,可以根據該級別的規則進行依
**注意事**
**注意事**
为什么我们需要在`models`之外使用数据库事务?以及如何使用?
某些操作在数据库记录插入/更新/除失败时应该允许回滚
因此,服务必须能够创建数据库事务。以下是一些例:
為什麼我們需要在`models`之外使用資料庫事務?以及如何使用?
某些操作在資料庫記錄插入/更新/除失敗時應該允許回滾
因此,服務必須能夠建立資料庫事務。以下是一些例:
```go
// services/repository/repository.go
@@ -70,8 +70,8 @@ func CreateXXXX() error {
}
```
`services`中**不应该**直接使用`db.GetEngine(ctx)`,而是应该`models/`编写一个函数
如果该函数将在事中使用,请将`context.Context`为函数的第一个参数
`services`中**不應該**直接使用`db.GetEngine(ctx)`,而是應該`models/`編寫一個函數
如果該函數將在事中使用,請將`context.Context`為函數的第一個參數
```go
// models/issues/issue.go
@@ -82,29 +82,29 @@ func UpdateIssue(ctx context.Context, repoID int64) error {
}
```
### 包名
### 包名
对于顶层包,使用复数作为包名,例如`services``models`对于子包,使用单数,例如`services/user``models/repository`
對於頂層包,使用複數作為包名,例如`services``models`對於子包,使用單數,例如`services/user``models/repository`
### 导入别
### 導入別
有一些使用相同包名的包,例如`modules/user``models/user``services/user`当这些包在一 Go 文件中被导入时,很知道我使用的是哪包以及它是量名还是导入名。因此,我们始终建议使用导入别名。为了与常见的驼峰命名法的包变量区分开,建使用**snake_case**作为导入别名的命名规则
有一些使用相同包名的包,例如`modules/user``models/user``services/user`當這些包在一 Go 文件中被導入時,很知道我使用的是哪包以及它是量名還是導入名。因此,我們始終建議使用導入別名。為了與常見的駝峰命名法的包變量區分開,建使用**snake_case**作為導入別名的命名規則
例如:`import user_service "code.gitea.io/gitea/services/user"`
### 重要注意事
### 重要注意事
-不要`x.Update(exemplar)`,而有明`WHERE`子句:
- 这将导致表中的所有行都被使用 exemplar 的非零值行更新,包括 ID。
- 通常应该写`x.ID(id).Update(exemplar)`
- 如果在迁移过程中使用`x.Insert(exemplar)`向表中插入记录,而 ID 是预设的:
- 对于 MSSQL 变体,你需要行`` SET IDENTITY_INSERT `table` ON ``(否则迁移将失败
- 对于 PostgreSQL需要更新 ID 序列,否则迁移将悄无声息地通,但后续的插入将失败
-不要`x.Update(exemplar)`,而有明`WHERE`子句:
- 這將導致表中的所有行都被使用 exemplar 的非零值行更新,包括 ID。
- 通常應該寫`x.ID(id).Update(exemplar)`
- 如果在遷移過程中使用`x.Insert(exemplar)`向表中插入記錄,而 ID 是預設的:
- 對於 MSSQL 變體,你需要行`` SET IDENTITY_INSERT `table` ON ``(否則遷移將失敗
- 對於 PostgreSQL需要更新 ID 序列,否則遷移將悄無聲息地通,但後續的插入將失敗
`` SELECT setval('table_name_id_seq', COALESCE((SELECT MAX(id)+1 FROM `table_name`), 1), false) ``
### 未的任
### 未的任
目前,我正在行一些重,以完成以下任
目前,我正在行一些重,以完成以下任
- 正不符合规则的代码
- `models`中的文件太多了,所以我正在其中的一些移到子包`models/xxx`中。
- 由于它们依赖于`models`,因此应将某些`modules`子包移到`services`中。
- 正不符合規則的程式碼
- `models`中的文件太多了,所以我正在其中的一些移到子包`models/xxx`中。
- 由於它們依賴於`models`,因此應將某些`modules`子包移到`services`中。

View File

@@ -6,114 +6,114 @@ aliases:
- /zh-tw/guidelines-frontend
---
# 前端开发指南
# 前端開發指南
## 背景
Gitea 在其前端中使用[Fomantic-UI](https://fomantic-ui.com/introduction/getting-started.html)(基[jQuery](https://api.jquery.com))和 [Vue3](https://vuejs.org/)。
Gitea 在其前端中使用[Fomantic-UI](https://fomantic-ui.com/introduction/getting-started.html)(基[jQuery](https://api.jquery.com))和 [Vue3](https://vuejs.org/)。
HTML 面由[Go HTML Template](https://pkg.go.dev/html/template)渲染。
HTML 面由[Go HTML Template](https://pkg.go.dev/html/template)渲染。
源文件可以在以下目中找到:
源文件可以在以下目中找到:
- **CSS 式** `web_src/css/`
- **CSS 式** `web_src/css/`
- **JavaScript 文件** `web_src/js/`
- **Vue 件** `web_src/js/components/`
- **Vue 件** `web_src/js/components/`
- **Go HTML 模板** `templates/`
## 通用准则
## 通用準則
们推荐使用[Google HTML/CSS Style Guide](https://google.github.io/styleguide/htmlcssguide.html)和[Google JavaScript Style Guide](https://google.github.io/styleguide/jsguide.html)。
們推薦使用[Google HTML/CSS Style Guide](https://google.github.io/styleguide/htmlcssguide.html)和[Google JavaScript Style Guide](https://google.github.io/styleguide/jsguide.html)。
## Gitea 特定准则
## Gitea 特定準則
1.功能Fomantic-UI/jQuery 模块)应放在单独的文件/目中。
2. HTML 的 id 和 class 使用 kebab-case最好包含 2-3 个与功能相关的关键词
3. 在 JavaScript 中使用的 HTML 的 id 和 class 在整个项目中是唯一的,并且应包含 2-3 个与功能相关的关键词。建议在仅在 JavaScript 中使用的 class 中使用 `js-`
4.应覆盖框架提供的 class 的 CSS 式。始使用具有 2-3 个与功能相关的关键词的新 class 名称来覆盖框架式。Gitea 中的助 CSS `helpers.less` 中。
5. 端可以通过使用`ctx.PageData["myModuleData"] = map[]{}`将复杂数据传递给前端,但不要将整个模型暴露前端,以避免泄露敏感数据
6. 简单页面和 SEO 相关的页面使用 Go HTML 模板渲染生成静态的 Fomantic-UI HTML 出。复杂页面可以使用 Vue3。
7.确变量类型,先使用`elem.disabled = true`而不是`elem.setAttribute('disabled', 'anything')`先使用`$el.prop('checked', var === 'yes')`而不是`$el.prop('checked', var)`
8. 使用语义化元素,先使用`<button class="ui button">`而不是`<div class="ui button">`
9. 避免在 CSS 中使用不必要的`!important`,如果法避免,添加注释解释为什么需要它。
10. 避免在一事件监听器中混合不同的事件,优先为每个事件使用立的事件监听器。
11.使用自定义事件名称前缀`ce-`
12.使用 Tailwind CSS它可以通过 `tw-`缀获得,例如 `tw-relative`. Gitea 自身的助手 CSS 使用 `gt-``gt-ellipsis`Gitea 自身的私有框架 CSS 使用 `g-``g-modal-confirm`)。
13. 量避免内联脚本和式,建议将 JS 代码放入 JS 文件中使用 CSS 。如果内联脚本和式不可避免,请解释无法避免的原因。
1.功能Fomantic-UI/jQuery 模組)應放在單獨的文件/目中。
2. HTML 的 id 和 class 使用 kebab-case最好包含 2-3 個與功能相關的關鍵詞
3. 在 JavaScript 中使用的 HTML 的 id 和 class 在整個專案中是唯一的,並且應包含 2-3 個與功能相關的關鍵詞。建議在僅在 JavaScript 中使用的 class 中使用 `js-`
4.應覆蓋框架提供的 class 的 CSS 式。始使用具有 2-3 個與功能相關的關鍵詞的新 class 名稱來覆蓋框架式。Gitea 中的助 CSS `helpers.less` 中。
5. 端可以透過使用`ctx.PageData["myModuleData"] = map[]{}`將複雜資料傳遞給前端,但不要將整個模型暴露前端,以避免泄露敏感資料
6. 簡單頁面和 SEO 相關的頁面使用 Go HTML 模板渲染生成靜態的 Fomantic-UI HTML 出。複雜頁面可以使用 Vue3。
7.確變量類型,先使用`elem.disabled = true`而不是`elem.setAttribute('disabled', 'anything')`先使用`$el.prop('checked', var === 'yes')`而不是`$el.prop('checked', var)`
8. 使用語義化元素,先使用`<button class="ui button">`而不是`<div class="ui button">`
9. 避免在 CSS 中使用不必要的`!important`,如果法避免,添加註釋解釋為什麼需要它。
10. 避免在一事件監聽器中混合不同的事件,優先為每個事件使用立的事件監聽器。
11.使用自事件名稱前綴`ce-`
12.使用 Tailwind CSS它可以透過 `tw-`綴獲得,例如 `tw-relative`. Gitea 自身的助手 CSS 使用 `gt-``gt-ellipsis`Gitea 自身的私有框架 CSS 使用 `g-``g-modal-confirm`)。
13. 量避免內聯腳本和式,建議將 JS 程式碼放入 JS 文件中使用 CSS 。如果內聯腳本和式不可避免,請解釋無法避免的原因。
### 可访问性 / ARIA
### 可訪問性 / ARIA
史上Gitea 大量使用了可访问性不友好的框架 Fomantic UI。
Gitea 使用一些丁使 Fomantic UI 更具可访问性(参见 `aria.md`
但仍然存在许多问题需要大量的工作和时间来修复
史上Gitea 大量使用了可訪問性不友好的框架 Fomantic UI。
Gitea 使用一些丁使 Fomantic UI 更具可訪問性(參見 `aria.md`
但仍然存在許多問題需要大量的工作和時間來修復
### 框架使用
不建混合使用不同的框架,这会使代码难以维护
JavaScript 模块应遵循一主要框架,遵循框架的最佳实践
不建混合使用不同的框架,這會使程式碼難以維護
JavaScript 模組應遵循一主要框架,遵循框架的最佳實踐
荐的实现方式:
薦的實現方式:
- Vue + Vanilla JS
- Fomantic-UIjQuery
- htmx (部分面重新加其他静态组件)
- htmx (部分面重新加其他靜態元件)
- Vanilla JS
不推荐的实现方式:
不推薦的實現方式:
- Vue + Fomantic-UIjQuery
- jQuery + Vanilla JS
- htmx + 任何其他需要大量 JavaScript 代码或不必要的功能,如 htmx 本 (`hx-on`)
- htmx + 任何其他需要大量 JavaScript 程式碼或不必要的功能,如 htmx 本 (`hx-on`)
了保持面一致Vue 件可以使用 Fomantic-UI 的 CSS
管不建混合使用不同的框架,
使用 htmx 进行简单的交互。您可以在此 [PR](https://github.com/go-gitea/gitea/pull/28908) 中查看一个简单交互的例,其中使用 htmx。如果您需要更高的反性,不要使用 htmx使用其他框架Vue/Vanilla JS
但如果混合使用是必要的,并且代码设计良好且易于维护,也可以工作。
了保持面一致Vue 件可以使用 Fomantic-UI 的 CSS
管不建混合使用不同的框架,
使用 htmx 進行簡單的交互。您可以在此 [PR](https://github.com/go-gitea/gitea/pull/28908) 中查看一個簡單交互的例,其中使用 htmx。如果您需要更高的反性,不要使用 htmx使用其他框架Vue/Vanilla JS
但如果混合使用是必要的,並且程式碼設計良好且易於維護,也可以工作。
### `async` 函
### `async` 函
只有当函数内部存在`await`用或返回`Promise`时,才将函数标记为`async`
只有當函數內部存在`await`調用或返回`Promise`時,纔將函數標記為`async`
不建使用`async`事件监听器,可能会导致问题
原因是`await`后的代码在事件分之外行。
https://github.com/github/eslint-plugin-github/blob/main/docs/rules/async-preventdefault.md
不建使用`async`事件監聽器,可能會導致問題
原因是`await`後的程式碼在事件分之外行。
https://github.com/github/eslint-plugin-github/blob/main/docs/rules/async-preventdefault.md
如果一事件监听器必`async`在任何`await`之前使用`e.preventDefault()`
议将其放在函数的开头
如果一事件監聽器必`async`在任何`await`之前使用`e.preventDefault()`
議將其放在函數的開頭
如果我想在非步上下文中`async`
使用`const _promise = asyncFoo()`来告诉读
是有意之的,我们想调用异步函数并忽略 Promise。
一些 lint 规则和 IDE 也在未理返回的 Promise 时发出警告。
如果我想在非步上下文中調`async`
使用`const _promise = asyncFoo()`來告訴讀
是有意之的,我們想調用異步函數並忽略 Promise。
一些 lint 規則和 IDE 也在未理返回的 Promise 時發出警告。
### 获取数据
### 獲取資料
获取数据,请使用`modules/fetch.js`中的包装函数`GET``POST`等。他
接受容的`data`选项,将自动设置 CSRF 令牌返回
獲取資料,請使用`modules/fetch.js`中的包裝函數`GET``POST`等。他
接受容的`data`選項,將自動設定 CSRF 令牌返回
[Response](https://developer.mozilla.org/en-US/docs/Web/API/Response)。
### HTML 性和 dataset
### HTML 性和 dataset
禁止使用`dataset`,它的峰命名行使得搜索属性变得困
然而,仍然存在一些特殊情,因此前的准则是:
禁止使用`dataset`,它的峰命名行使得搜索屬性變得困
然而,仍然存在一些特殊情,因此前的準則是:
- 对于旧代码
- 對於舊程式碼
- 应将`$.data()`构为`$.attr()`
-极少数情况下,可以使用`$.data()`一些非字符串数据绑定到元素上,但烈不推使用。
- 應將`$.data()`構為`$.attr()`
-極少數情況下,可以使用`$.data()`一些非字符串資料綁定到元素上,但烈不推使用。
- 对于新代码
-使用`node.dataset`,而使用`node.getAttribute`
- 不要任何用户数据绑定到 DOM 节点上,使用合适的设计模式描述节点和数据之间的关系
- 對於新程式碼
-使用`node.dataset`,而使用`node.getAttribute`
- 不要任何使用者資料綁定到 DOM 節點上,使用合適的設計模式描述節點和資料之間的關係
### 示/藏元素
### 示/藏元素
-在 Vue 件中使用`v-if``v-show`来显示/藏元素。
- Go 模板代码应使用 `.tw-hidden``showElem()/hideElem()/toggleElem()` 来显示/藏元素,请参阅`.tw-hidden`注释以获取更多详细信息
-在 Vue 件中使用`v-if``v-show`來顯示/藏元素。
- Go 模板程式碼應使用 `.tw-hidden``showElem()/hideElem()/toggleElem()` 來顯示/藏元素,請參閱`.tw-hidden`註釋以獲取更多詳細資訊
### Go HTML 模板中的式和
### Go HTML 模板中的式和
使用以下方式:
使用以下方式:
```html
<div
@@ -134,16 +134,16 @@ Gitea 使用一些补丁使 Fomantic UI 更具可访问性(参见 `aria.md`
></div>
```
以使代码更易
以使程式碼更易
### 旧代码
### 舊程式碼
许多旧代码已经存在本文撰之前。建议重构旧代码以遵循指南。
許多舊程式碼已經存在本文撰之前。建議重構舊程式碼以遵循指南。
### Vue3 和 JSX
Gitea 在正在使用 Vue3。我们决定不引入 JSX以保持 HTML 代码和 JavaScript 代码分离
Gitea 在正在使用 Vue3。我們決定不引入 JSX以保持 HTML 程式碼和 JavaScript 程式碼分離
### UI
### UI
Gitea 使用一些自制的 UI 元素并自定义其他元素,以将它们更好地集成到通用 UI 方法中。当在开发模式(`RUN_MODE=dev`)下行 Gitea ,在 `http(s)://your-gitea-url:port/devtest`提供一包含一些标准化 UI 例的面。
Gitea 使用一些自制的 UI 元素並自訂其他元素,以將它們更好地整合到通用 UI 方法中。當在開發模式(`RUN_MODE=dev`)下行 Gitea ,在 `http(s)://your-gitea-url:port/devtest`提供一包含一些標準化 UI 例的面。

View File

@@ -6,35 +6,35 @@ aliases:
- /zh-tw/guidelines-refactoring
---
# 重指南
# 重指南
## 背景
自 2014 年 2 月 12 日编写了第一行代码以来Gitea 已经发展成为一个庞大的项目
因此,代码库变得越越大。代码库越大,维护就越困
存在许多过时的机制,多框架混合在一起,一些遗留代码可能会导致错误并阻碍新功能的开发
了使代码库更易于维护,使 Gitea 得更好,开发人员应牢记使用现代机制来重构旧代码
自 2014 年 2 月 12 日編寫了第一行程式碼以來Gitea 已經發展成為一個龐大的專案
因此,程式碼庫變得越越大。程式碼庫越大,維護就越困
存在許多過時的機制,多框架混合在一起,一些遺留程式碼可能會導致錯誤並阻礙新功能的開發
了使程式碼庫更易於維護,使 Gitea 得更好,開發人員應牢記使用現代機制來重構舊程式碼
本文档是关于重构代码库的指南集合。
本文件是關於重構程式碼庫的指南集合。
## 重构建议
## 重構建議
- 设计更多关于未来的内容,而不仅仅解决当前问题
- 少模糊性,减少冲突,提高可维护性。
- 描述重,例如:
- 为什么需要重
- 如何解决旧问题
-构的优点/缺是什
- 只做必要的更改,量保留旧逻辑
- 引入一些中间步骤,使重更容易查,完整的重构计划可以在几个 PR 中完成。
- 如果存在分歧,应该请 TOC术监督委员会)参与决策。
- 添加必要的测试以确保重的正性。
-错误重构优先在里程碑的开始时进行,这样可以更容易地在发布之前发现问题
- 設計更多關於未來的內容,而不僅僅解決當前問題
- 少模糊性,減少衝突,提高可維護性。
- 描述重,例如:
- 為什麼需要重
- 如何解決舊問題
-構的優點/缺是什
- 只做必要的更改,量保留舊邏輯
- 引入一些中間步驟,使重更容易查,完整的重構計劃可以在幾個 PR 中完成。
- 如果存在分歧,應該請 TOC術監督委員會)參與決策。
- 添加必要的測試以確保重的正性。
-錯誤重構優先在里程碑的開始時進行,這樣可以更容易地在發佈之前發現問題
## 查和合并建议
## 查和合併建議
-的 PR 不应该长时间保持打开状态(通常 7 天),应尽快进行审查。
-的 PR 应尽快合,不被其他 PR 阻塞。
- 如果 TOC 没有异议,重的 PR 可以在 7 天后由一名核心成(非作者)批准后合并
- 如果最终结果良好,容忍一些不完美/临时的步
- 如果重是必要的,容忍一些回归错误,并尽快修复错误
-的 PR 不應該長時間保持打開狀態(通常 7 天),應儘快進行審查。
-的 PR 應儘快合,不被其他 PR 阻塞。
- 如果 TOC 沒有異議,重的 PR 可以在 7 天后由一名核心成(非作者)批准後合併
- 如果最終結果良好,容忍一些不完美/臨時的步
- 如果重是必要的,容忍一些迴歸錯誤,並儘快修復錯誤

View File

@@ -8,18 +8,18 @@ aliases:
# 本地化
Gitea 的本地化是通过我们的[Crowdin 项目](https://crowdin.com/project/gitea)行的。
Gitea 的本地化是通過我們的[Crowdin 專案](https://crowdin.com/project/gitea)行的。
对于对**英语翻译**的更改,可以出 pull-request更改[语语言环](https://github.com/go-gitea/gitea/blob/main/options/locale/locale_en-US.ini)中合适的关键字。
對於對**英語翻譯**的更改,可以出 pull-request更改[語語言環](https://github.com/go-gitea/gitea/blob/main/options/locale/locale_en-US.ini)中合適的關鍵字。
关对**非英**翻的更改,请参阅上面的 Crowdin 项目
關對**非英**翻的更改,請參閱上面的 Crowdin 專案
## 支持的语
## 支援的語
上述 Crowdin 项目中列出的任何言一旦翻了 25% 或更多都得到支
上述 Crowdin 專案中列出的任何言一旦翻了 25% 或更多都得到支
被接受,它在下一次 Crowdin 同步反映在主存储库中,通常是在任何 PR 合并之后
被接受,它在下一次 Crowdin 同步反映在主儲存庫中,通常是在任何 PR 合併之後
在撰本文时,这意味更改的翻可能要到 Gitea 的下一版本才会出现
在撰本文時,這意味更改的翻可能要到 Gitea 的下一版本纔會出現
如果使用开发版本,在同步更改内容后,它应该会在更新立即示。
如果使用開發版本,在同步更改內容後,它應該會在更新立即示。