本文档介绍了 Gitea 的配置系统和国际化框架。这两个核心组件使管理员能够自定义 Gitea 的行为并支持多种语言的用户。
有关数据库配置的具体信息,请参阅数据库系统。
Gitea 使用一个灵活的配置系统,主要基于名为 app.ini 的 INI 格式文件,并通过环境变量和命令行标志支持覆盖。
来源:modules/setting/setting.go21-57 custom/conf/app.example.ini1-366
Gitea 启动时,它会按以下优先级顺序加载配置
app.ini)这种层次结构允许灵活的部署策略,从开发到容器化的生产环境。
配置系统在启动时确定几个重要路径
| 路径变量 | 描述 | 确定方法 |
|---|---|---|
| AppPath | Gitea 可执行文件路径 | 运行的 gitea 二进制文件的绝对路径 |
| AppWorkPath | 工作目录 | app.ini 中的 WORK_PATH、--work-path 标志、$GITEA_WORK_DIR 环境变量或编译时值 |
| CustomPath | 自定义文件目录 | --custom-path 标志、$GITEA_CUSTOM 环境变量或 AppWorkPath/custom |
| CustomConf | 配置文件路径 | --config 标志、编译时值或 CustomPath/conf/app.ini |
来源:modules/setting/setting.go36-45 cmd/web.go1-20 custom/conf/app.example.ini14-37
app.ini 文件按相关配置选项的组织方式分为几个部分
主要配置部分包括
[server] - Web 服务器设置(协议、域名、端口、URL)[database] - 数据库连接参数[repository] - 存储库处理配置[security] - 安全相关设置[service] - 服务相关选项[oauth2] - OAuth2 身份验证设置来源:custom/conf/app.example.ini40-366
app.ini 中的配置可以通过环境变量覆盖,使用此模式
GITEA__SECTION_NAME__KEY_NAME=value
例如,要覆盖 [server] 部分的 ROOT_URL
GITEA__SERVER__ROOT_URL=https://git.example.com/
此功能对于容器化部署或使用 Kubernetes 等编排工具特别有用。
来源:custom/conf/app.example.ini362-365
配置系统在 modules/setting 包中实现,并为不同的子系统提供了专门的文件
setting.go - 核心设置和初始化repository.go - 存储库特定设置service.go - 服务相关设置lfs.go - Git LFS 设置oauth2.go - OAuth2 设置security.go - 安全相关设置attachment.go - 附件设置actions.go - GitHub Actions 类似的 CI/CD 设置来源:modules/setting/setting.go1-57 modules/setting/repository.go1-20 modules/setting/service.go1-20 modules/setting/lfs.go1-13 modules/setting/oauth2.go1-10
来源:modules/setting/setting.go36-45 cmd/web.go1-20
来源:modules/setting/config_provider.go1-10 custom/conf/app.example.ini40-366
Gitea 的国际化 (i18n) 系统能够以多种语言显示用户界面。它使用本地化文件存储翻译,并根据用户偏好自动选择合适的语言。
来源:options/locale/locale_pt-PT.ini1-100
Gitea 支持多种语言,包括
翻译文件存储在 options/locale/ 目录中,命名约定为 locale_LANGUAGE-COUNTRY.ini。每个文件包含按部分组织的翻译。
所有语言文件都使用相同的键,这使得添加新语言或更新现有翻译更加容易。
来源:options/locale/locale_pt-PT.ini1-100 options/locale/locale_zh-CN.ini1-100
来源:options/locale/locale_pt-PT.ini1-100 options/locale/locale_zh-CN.ini1-100
处理请求时,Gitea 通过以下顺序确定要使用的语言
在模板和 Go 代码中,使用以下模式引用翻译的字符串
<!-- In templates -->
{{.i18n.Tr "key"}}
// In Go code
ctx.Locale.Tr("key")
翻译键按上下文或功能组织,例如
home、dashboard、explore)来源: options/locale/locale_pt-PT.ini493-513
来源: custom/conf/app.example.ini350-356
配置系统和国际化框架以多种方式集成
当用户在其个人资料设置中选择语言时,此偏好设置将存储在数据库中,并用于该用户将来发送的所有请求。
向 Gitea 添加新语言
options/locale/locale_fr-CA.ini)app.ini 的 LANGS 设置中添加语言代码更改所有用户的默认语言
限制用户可用的语言
使用特定于环境的配置文件:为不同的环境(开发、测试、生产)创建单独的 app.ini 文件。
使用环境变量存储敏感信息:将密码、API 密钥和其他敏感信息存储在环境变量中,而不是配置文件中。
记录您的配置更改:修改配置时,请记录您所做的更改以及原因。
备份您的配置:在进行更改之前,请务必备份您的配置文件,尤其是在生产环境中。
来源: custom/conf/app.example.ini1-10
在部署前完成翻译:在部署之前,确保所有支持的语言都有完整的翻译。
在上下文中测试翻译:在实际的 UI 上下文中查看翻译,以确保它们具有意义。
回馈社区:如果您改进了翻译,请考虑将它们贡献回 Gitea 项目。
保持翻译一致性:在应用程序的所有部分保持术语一致性。
来源: options/locale/locale_pt-PT.ini1-10
如果某些 UI 元素未翻译
如果配置更改未生效
app.ini 文件中的语法