docs: update zh-tw (#265)

Reviewed-on: https://gitea.com/gitea/docs/pulls/265
Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: ifurther <55025025+ifurther@users.noreply.github.com>
Co-committed-by: ifurther <55025025+ifurther@users.noreply.github.com>
This commit is contained in:
ifurther
2025-09-03 21:00:35 +00:00
committed by techknowlogick
parent 908a27589d
commit cb462089e9
88 changed files with 3545 additions and 3423 deletions

View File

@@ -8,8 +8,8 @@ aliases:
# 邮件模板
了定制特定操作的电子邮件主题和内容,可以使用模板来自定义 Gitea。这些功能的模板位于 [`custom` 目](../administration/customizing-gitea.md) 下。
如果没有自定义的替代方案Gitea 将使用内部模板作默认模板。
了定制特定操作的电子邮件主题和内容,可以使用模板来自定义 Gitea。这些功能的模板位于 [`custom` 目](../administration/customizing-gitea.md) 下。
如果没有自定义的替代方案Gitea 将使用内部模板作默认模板。
自定义模板在 Gitea 启动时加载。对它们的更改在 Gitea 重新启动之前不会被识别。
@@ -17,42 +17,42 @@ aliases:
目前,以下通知事件使用模板:
| 操作名 | 用途 |
| 操作名 | 用途 |
| ---------- | ---------------------------------------------------------------------- |
| `new` | 建了新的工或合并请求。 |
| `comment` | 在有工或合并请求中创建了新的评论。 |
| `close` | 关闭了工或合并请求。 |
| `reopen` | 重新打开了工或合并请求。 |
| `review` | 在合并请求中行审查的首要评论。 |
| `approve` | 对合并请求进行批准的首要评论。 |
| `reject` | 对合并请求提出更改求的审查的首要评论。 |
| `code` | 关于合并请求的代码的个评论。 |
| `assigned` | 用户被分配到工或合并请求。 |
| `default` | 未包括在上述类别中的任何操作,或者当对类别的模板不存在时使用的模板。 |
| `new` | 建了新的工或合並請求。 |
| `comment` | 在有工或合並請求中建立了新的评论。 |
| `close` | 关闭了工或合並請求。 |
| `reopen` | 重新打开了工或合並請求。 |
| `review` | 在合並請求中行审查的首要评论。 |
| `approve` | 对合並請求進行批准的首要评论。 |
| `reject` | 对合並請求提出更改求的审查的首要评论。 |
| `code` | 关于合並請求的代码的个评论。 |
| `assigned` | 使用者被分配到工或合並請求。 |
| `default` | 未包括在上述类别中的任何操作,或者当对类别的模板不存在时使用的模板。 |
特定消息型的模板路径
特定消息型的模板路径
```sh
custom/templates/mail/{操作}/{操作名}.tmpl
custom/templates/mail/{操作}/{操作名}.tmpl
```
其中 `{操作型}``issue``pull`(针对合并请求),`{操作名}` 是上述列出的操作名之一。
其中 `{操作型}``issue``pull`(针对合並請求),`{操作名}` 是上述列出的操作名之一。
例如,有关合并请求中的评论的电子邮件的特定模板是:
例如,有关合並請求中的评论的电子邮件的特定模板是:
```sh
custom/templates/mail/pull/comment.tmpl
```
然而,不需要每个操作型/名组合建模板。
使用回退系统来择适当的模板。在此列表中,将使用 _第一个存在的_ 模板:
然而,不需要每个操作型/名组合建模板。
使用回退系统来择适当的模板。在此列表中,将使用 _第一个存在的_ 模板:
- 所需**操作型**和**操作名**的特定模板。
- 操作类型为 `issue` 和所需**操作名**的模板。
- 所需**操作型**和操作名称为 `default` 的模板。
- 操作类型为` issue` 和操作名称为 `default` 的模板。
- 所需**操作型**和**操作名**的特定模板。
- 操作類型為 `issue` 和所需**操作名**的模板。
- 所需**操作型**和操作名稱為 `default` 的模板。
- 操作類型為` issue` 和操作名稱為 `default` 的模板。
唯一必需的模板是操作类型为 `issue` 操作名称为 `default` 的模板,除非用户`custom`中覆盖了它。
唯一必需的模板是操作類型為 `issue` 操作名稱為 `default` 的模板,除非使用者`custom`中覆盖了它。
## 模板语法
@@ -70,44 +70,44 @@ custom/templates/mail/pull/comment.tmpl
用于邮件正文的文本和宏
```
指定 _主题_ 部分是可因此也是虚线分隔符。在使用时_主题_ 和 _邮件正文_ 模板之间的分隔符需要至少三个虚线;分隔符行中不允许使用其他字符。
指定 _主题_ 部分是可因此也是虚线分隔符。在使用时_主题_ 和 _邮件正文_ 模板之间的分隔符需要至少三个虚线;分隔符行中不允许使用其他字符。
_主题__邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text/template/) 解析,提供了每个通知组装的 _元数据上下文_。上下文包含以下元素:
_主题__邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text/template/) 解析,提供了每个通知组装的 _元数据上下文_。上下文包含以下元素:
| 名 | 型 | 可用性 | 用途 |
| 名 | 型 | 可用性 | 用途 |
| ------------------ | ---------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `.FallbackSubject` | string | 始终可用 | 默认主题行。参见下文。 |
| `.Subject` | string | 在正文中可用 | 解析后的 _主题_。 |
| `.Body` | string | 始终可用 | 工、合并请求或评论的消息,从 Markdown 解析 HTML 并进行了清理。勿与 _邮件正文_ 混淆。 |
| `.Link` | string | 始终可用 | 源工、合并请求或评论的地址。 |
| `.Issue` | models.Issue | 始终可用 | 产生通知的工(或合并请求)。要获取特定于合并请求的数据(例如 `HasMerged`),可以使用 `.Issue.PullRequest`,但需要注意,如果工 _不是_并请求,则字段将 `nil`。 |
| `.Comment` | models.Comment | 如果适用 | 如果通知是针对添加到工或合并请求的评论,则其中包含有关评论的信息。 |
| `.IsPull` | bool | 始终可用 | 如果邮件通知与合并请求关联(即 `.Issue.PullRequest` `nil` ),则 `true`。 |
| `.Repo` | string | 始终可用 | 仓库的名,包括所有者名(例如 `mike/stuff` |
| `.User` | models.User | 始终可用 | 事件来源仓库的所有者。要获取用户名(例如 `mike`),可以使用 `.User.Name`。 |
| `.Doer` | models.User | 始终可用 | 行触发通知事件的操作的用户。要获取用户名(例如 `rhonda`),可以使用 `.Doer.Name`。 |
| `.IsMention` | bool | 始终可用 | 如果此通知是因在评论中提到了用户而生成的,且收件人未订阅源,则 `true`。如果收件人已订阅工单或仓库,则 `false`。 |
| `.SubjectPrefix` | string | 始终可用 | 如果通知是关于除工或合并请求创建之外的其他内容,则 `Re`;否则空字符串。 |
| `.ActionType` | string | 始终可用 | `"issue"``"pull"`。它将与实际的 _操作_,与择的模板关。 |
| `.ActionName` | string | 始终可用 | 它将是上述操作型之一(`new` `comment` 等),并与选择的模板对。 |
| `.Subject` | string | 在正文中可用 | 解析后的 _主题_。 |
| `.Body` | string | 始终可用 | 工、合並請求或评论的消息,从 Markdown 解析 HTML 並進行了清理。勿与 _邮件正文_ 混淆。 |
| `.Link` | string | 始终可用 | 源工、合並請求或评论的地址。 |
| `.Issue` | models.Issue | 始终可用 | 产生通知的工(或合並請求)。要获取特定于合並請求的数据(例如 `HasMerged`),可以使用 `.Issue.PullRequest`,但需要注意,如果工 _不是_並請求,则字段将 `nil`。 |
| `.Comment` | models.Comment | 如果适用 | 如果通知是针对添加到工或合並請求的评论,则其中包含有关评论的信息。 |
| `.IsPull` | bool | 始终可用 | 如果邮件通知与合並請求关联(即 `.Issue.PullRequest` `nil` ),则 `true`。 |
| `.Repo` | string | 始终可用 | 存放庫的名,包括所有者名(例如 `mike/stuff` |
| `.User` | models.User | 始终可用 | 事件来源存放庫的所有者。要获取使用者名(例如 `mike`),可以使用 `.User.Name`。 |
| `.Doer` | models.User | 始终可用 | 行触发通知事件的操作的使用者。要获取使用者名(例如 `rhonda`),可以使用 `.Doer.Name`。 |
| `.IsMention` | bool | 始终可用 | 如果此通知是因在评论中提到了使用者而生成的,且收件人未订阅源,则 `true`。如果收件人已订阅工單或存放庫,则 `false`。 |
| `.SubjectPrefix` | string | 始终可用 | 如果通知是关于除工或合並請求建立之外的其他内容,则 `Re`;否则空字符串。 |
| `.ActionType` | string | 始终可用 | `"issue"``"pull"`。它将与实际的 _操作_,与择的模板关。 |
| `.ActionName` | string | 始终可用 | 它将是上述操作型之一(`new` `comment` 等),並与選择的模板对。 |
| `.ReviewComments` | []models.Comment | 始终可用 | 审查中的代码评论列表。评论文本将在 `.RenderedContent` 中,引用的代码将在 `.Patch` 中。 |
所有名区分大小写。
所有名区分大小写。
### 模板中的主题部分
用于邮件主题的模板引擎是 Golang 的 [`text/template`](https://go.dev/pkg/text/template/)。
有关语法的详细信息,参阅链接的文
有关语法的详细信息,参阅链接的文
主题构建的步骤如下:
- 根据通知型和可用的模板择一个模板。
- 解析解析模板(例如,将 `{{.Issue.Index}}` 转换为工单或合并请求的编号)。
- 将所有空格字符(例如 `TAB``LF` 等)转换普通空格。
- 根据通知型和可用的模板择一个模板。
- 解析解析模板(例如,将 `{{.Issue.Index}}` 转换為工單或合並請求的编号)。
- 将所有空格字符(例如 `TAB``LF` 等)转换普通空格。
- 删除所有前导、尾随和多余的空格。
- 将字符串截断前 256 个字母(字符)。
- 将字符串截断前 256 个字母(字符)。
如果最终结果空字符串,**或者**没有可用的主题模板(即所模板不包含主题部分),将使用 Gitea 的**内部默认值**。
如果最终结果空字符串,**或者**没有可用的主题模板(即所模板不包含主题部分),将使用 Gitea 的**内部默认值**。
内部默认(回退)主题相当于:
@@ -117,29 +117,29 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
例如:`Re: [mike/stuff] New color palette (#38)`
即使存在有效的主题模板Gitea 的默认主题也可以在模板的元数据中作 `.FallbackSubject` 找到。
即使存在有效的主题模板Gitea 的默认主题也可以在模板的元数据中作 `.FallbackSubject` 找到。
### 模板中的邮件正文部分
用于邮件正文的模板引擎是 Golang 的 [`html/template`](https://go.dev/pkg/html/template/)。
有关语法的详细信息,参阅链接的文
有关语法的详细信息,参阅链接的文
邮件正文在邮件主题之后行解析,因此有一个额外的 _元数据_ 字段,即在考虑所有情况之后实际呈的主题。
邮件正文在邮件主题之后行解析,因此有一个额外的 _元数据_ 字段,即在考虑所有情况之后实际呈的主题。
期望的结果是 HTML包括结构元素`<html>``<body>`等)。可以通 `<style>` 块、`class``style` 属性行样式设置。但是,`html/template`行一些 [自动转义](https://go.dev/pkg/html/template/#hdr-Contexts),需要考虑这一点。
期望的结果是 HTML包括结构元素`<html>``<body>`等)。可以通 `<style>` 块、`class``style` 属性行样式设置。但是,`html/template`行一些 [自动转义](https://go.dev/pkg/html/template/#hdr-Contexts),需要考虑这一点。
不支持附件(例如图像或外部样式表)。但是,也可以引用其他模板,例如以集中方式提供 `<style>` 元素的内容。外部模板必放置在 `custom/mail` 下,并相对于该目录引用。例如,可以使用 `{{template styles/base}}` 包含 `custom/mail/styles/base.tmpl`
不支持附件(例如图像或外部样式表)。但是,也可以引用其他模板,例如以集中方式提供 `<style>` 元素的内容。外部模板必放置在 `custom/mail` 下,並相對於該目錄引用。例如,可以使用 `{{template styles/base}}` 包含 `custom/mail/styles/base.tmpl`
邮件以 `Content-Type: multipart/alternative` 发送,因此正文以 HTML 和文本格式发送。通剥离 HTML 标记来获取文本版本。
邮件以 `Content-Type: multipart/alternative` 发送,因此正文以 HTML 和文本格式发送。通剥离 HTML 标记来获取文本版本。
## 故障排除
邮件的呈方式直接取决于邮件用程序的功能。许多邮件客户端甚至不支持 HTML因此显示生成邮件中包含的文本版本。
邮件的呈方式直接取决于邮件用程序的功能。许多邮件客户端甚至不支持 HTML因此显示生成邮件中包含的文本版本。
如果模板法呈,则只有在发送邮件时才会注意到。
如果主题模板失败,将使用默认主题,如果从 _邮件正文_ 中成功呈了任何内容,则将使用内容,忽略其他内容。
如果模板法呈,则只有在发送邮件时才会注意到。
如果主题模板失败,将使用默认主题,如果从 _邮件正文_ 中成功呈了任何内容,则将使用内容,忽略其他内容。
如果遇到问题,检查 [Gitea 的日志](../administration/logging-config.md) 以获取错误消息。
如果遇到问题,检查 [Gitea 的日志](../administration/logging-config.md) 以获取错误消息。
## 示例
@@ -148,7 +148,7 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
```html
[{{.Repo}}] @{{.Doer.Name}}
{{if eq .ActionName "new"}}
建了
{{else if eq .ActionName "comment"}}
评论了
{{else if eq .ActionName "close"}}
@@ -159,9 +159,9 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
更新了
{{end}}
{{if eq .ActionType "issue"}}
{{else}}
并请
並請
{{end}}
#{{.Issue.Index}}: {{.Issue.Title}}
------------
@@ -175,7 +175,7 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
<body>
{{if .IsMention}}
<p>
您收到此邮件是因 @{{.Doer.Name}} 提到了您。
您收到此邮件是因 @{{.Doer.Name}} 提到了您。
</p>
{{end}}
<p>
@@ -185,7 +185,7 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
({{.Doer.FullName}})
{{end}}
{{if eq .ActionName "new"}}
建了
{{else if eq .ActionName "close"}}
关闭了
{{else if eq .ActionName "reopen"}}
@@ -209,11 +209,11 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
</html>
```
模板将生成以下内容:
模板将生成以下内容:
### 主题
> [mike/stuff] @rhonda 在合并请求 #38 上行了评论New color palette
> [mike/stuff] @rhonda 在合並請求 #38 上行了评论New color palette
### 邮件正文
@@ -231,18 +231,18 @@ _主题_ 和 _邮件正文_ 由 [Golang 的模板引擎](https://go.dev/pkg/text
## 高级用法
模板系统包含一些函数,可用于一步处理和格式化消息。以下是其中一些函数的列表:
模板系统包含一些函数,可用于一步处理和格式化消息。以下是其中一些函数的列表:
| 函数名 | 参数 | 可用于 | 用法 |
| 函数名 | 參數 | 可用于 | 用法 |
| ---------------- | ----------- | ---------- | ------------------------------------------------ |
| `AppUrl` | - | 任何地方 | Gitea 的 URL |
| `AppName` | - | 任何地方 | 从 `app.ini` 中设置,通常 "Gitea" |
| `AppName` | - | 任何地方 | 从 `app.ini` 中设置,通常 "Gitea" |
| `AppDomain` | - | 任何地方 | Gitea 的主机名 |
| `EllipsisString` | string, int | 任何地方 | 将字符串截断指定长度;根据需要添加省略号 |
| `SanitizeHTML` | string | 正文部分 | 通删除其中的危险 HTML 标签对文本行清理 |
| `SafeHTML` | string | 正文部分 | 将输入作 HTML 处理;可用于输出原始的 HTML 内容 |
| `EllipsisString` | string, int | 任何地方 | 将字符串截断指定长度;根据需要添加省略号 |
| `SanitizeHTML` | string | 正文部分 | 通删除其中的危险 HTML 標籤对文本行清理 |
| `SafeHTML` | string | 正文部分 | 将输入作 HTML 处理;可用于输出原始的 HTML 内容 |
这些都是 _函数_,而不是元数据,因此必按以下方式使用:
这些都是 _函数_,而不是元数据,因此必按以下方式使用:
```html
像这样使用: {{SanitizeHTML "Escape<my