diff options
-rw-r--r-- | Dockerfile | 2 | ||||
-rw-r--r-- | Dockerfile.rootless | 2 | ||||
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | flake.lock | 6 | ||||
-rw-r--r-- | flake.nix | 68 | ||||
-rw-r--r-- | options/locale/locale_zh-CN.ini | 448 | ||||
-rw-r--r-- | services/migrations/github.go | 3 | ||||
-rw-r--r-- | snap/snapcraft.yaml | 2 |
8 files changed, 273 insertions, 260 deletions
diff --git a/Dockerfile b/Dockerfile index f852cf4235..014eed9d46 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Build stage -FROM docker.io/library/golang:1.24-alpine3.22 AS build-env +FROM docker.io/library/golang:1.25-alpine3.22 AS build-env ARG GOPROXY ENV GOPROXY=${GOPROXY:-direct} diff --git a/Dockerfile.rootless b/Dockerfile.rootless index f955edc667..677d36bbcc 100644 --- a/Dockerfile.rootless +++ b/Dockerfile.rootless @@ -1,5 +1,5 @@ # Build stage -FROM docker.io/library/golang:1.24-alpine3.22 AS build-env +FROM docker.io/library/golang:1.25-alpine3.22 AS build-env ARG GOPROXY ENV GOPROXY=${GOPROXY:-direct} @@ -23,7 +23,7 @@ SHASUM ?= shasum -a 256 HAS_GO := $(shell hash $(GO) > /dev/null 2>&1 && echo yes) COMMA := , -XGO_VERSION := go-1.24.x +XGO_VERSION := go-1.25.x AIR_PACKAGE ?= github.com/air-verse/air@v1 EDITORCONFIG_CHECKER_PACKAGE ?= github.com/editorconfig-checker/editorconfig-checker/v3/cmd/editorconfig-checker@v3 diff --git a/flake.lock b/flake.lock index 67f87dfaf6..16a487ba13 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1752480373, - "narHash": "sha256-JHQbm+OcGp32wAsXTE/FLYGNpb+4GLi5oTvCxwSoBOA=", + "lastModified": 1755186698, + "narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "62e0f05ede1da0d54515d4ea8ce9c733f12d9f08", + "rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c", "type": "github" }, "original": { @@ -15,41 +15,53 @@ with pkgs; let # only bump toolchain versions here - go = go_1_24; + go = go_1_25; nodejs = nodejs_24; python3 = python312; + + # Platform-specific dependencies + linuxOnlyInputs = lib.optionals pkgs.stdenv.isLinux [ + glibc.static + ]; + + linuxOnlyEnv = lib.optionalAttrs pkgs.stdenv.isLinux { + CFLAGS = "-I${glibc.static.dev}/include"; + LDFLAGS = "-L ${glibc.static}/lib"; + }; in - pkgs.mkShell { - buildInputs = [ - # generic - git - git-lfs - gnumake - gnused - gnutar - gzip + pkgs.mkShell ( + { + buildInputs = [ + # generic + git + git-lfs + gnumake + gnused + gnutar + gzip - # frontend - nodejs + # frontend + nodejs - # linting - python3 - uv + # linting + python3 + uv - # backend - go - glibc.static - gofumpt - sqlite - ]; - CFLAGS = "-I${glibc.static.dev}/include"; - LDFLAGS = "-L ${glibc.static}/lib"; - GO = "${go}/bin/go"; - GOROOT = "${go}/share/go"; + # backend + go + gofumpt + sqlite + ] + ++ linuxOnlyInputs; + + GO = "${go}/bin/go"; + GOROOT = "${go}/share/go"; - TAGS = "sqlite sqlite_unlock_notify"; - STATIC = "true"; - }; + TAGS = "sqlite sqlite_unlock_notify"; + STATIC = "true"; + } + // linuxOnlyEnv + ); } ); } diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 36b975ba36..bb67c763cb 100644 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -112,7 +112,7 @@ copy_type_unsupported=无法复制此类型的文件内容 write=撰写 preview=预览 -loading=正在加载... +loading=正在加载… files=文件 error=错误 @@ -126,7 +126,7 @@ unknown=未知 rss_feed=RSS 订阅源 -pin=固定 +pin=置顶 unpin=取消置顶 artifacts=产物 @@ -168,7 +168,7 @@ no_results_found=未找到结果 internal_error_skipped=发生内部错误,但已跳过: %s [search] -search=搜索... +search=搜索… type_tooltip=搜索类型 fuzzy=模糊 fuzzy_tooltip=包含近似匹配搜索词的结果 @@ -178,23 +178,23 @@ regexp=正则表达式 regexp_tooltip=仅包含匹配正则表达式搜索词的结果 exact=精确 exact_tooltip=仅包含精确匹配搜索词的结果 -repo_kind=搜索仓库... -user_kind=搜索用户... -org_kind=搜索组织... -team_kind=搜索团队... -code_kind=搜索代码... +repo_kind=搜索仓库… +user_kind=搜索用户… +org_kind=搜索组织… +team_kind=搜索团队… +code_kind=搜索代码… code_search_unavailable=代码搜索当前不可用。请与网站管理员联系。 code_search_by_git_grep=当前代码搜索结果由「git grep」提供。如果站点管理员启用仓库索引器,可能会有更好的结果。 -package_kind=搜索软件包... -project_kind=搜索项目... -branch_kind=搜索分支... -tag_kind=搜索Git标签... -tag_tooltip=搜索匹配的标签。使用「%」来匹配任何序列的数字。 -commit_kind=搜索提交记录... -runner_kind=搜索运行器... +package_kind=搜索软件包… +project_kind=搜索项目… +branch_kind=搜索分支… +tag_kind=搜索 Git 标签… +tag_tooltip=搜索匹配的 Git 标签。使用「%」来匹配任何序列的数字。 +commit_kind=搜索提交记录… +runner_kind=搜索运行器… no_results=未找到匹配结果 -issue_kind=搜索工单... -pull_kind=搜索合并请求... +issue_kind=搜索工单… +pull_kind=搜索合并请求… keyword_search_unavailable=按关键字搜索当前不可用。请联系站点管理员。 [aria] @@ -252,7 +252,7 @@ license_desc=所有的代码都开源在 <a target="_blank" rel="noopener norefe [install] install=安装页面 -installing_desc=正在安装,请稍候... +installing_desc=正在安装,请稍候… title=初始配置 docker_helper=如果您正在使用 Docker 容器运行 Gitea,请务必先仔细阅读 <a target="_blank" rel="noopener noreferrer" href="%s">官方文档</a> 后再对本页面进行填写。 require_db_desc=Gitea 需要使用 MySQL、PostgreSQL、MSSQL、SQLite3 或 TiDB (MySQL协议) 等数据库 @@ -315,9 +315,9 @@ server_service_title=服务器和第三方服务设置 offline_mode=启用本地模式 offline_mode_popup=禁用第三方 CDN 并在本地服务所有资源。 disable_gravatar=禁用 Gravatar 头像 -disable_gravatar_popup=禁用 Gravatar 和第三方头像源。除非用户在本地上传头像, 否则将使用默认的头像。 +disable_gravatar_popup=禁用 Gravatar 和第三方头像源。除非用户在本地上传头像,否则将使用默认头像。 federated_avatar_lookup=启用 Federated 头像 -federated_avatar_lookup_popup=启用 Federated Avatars 查找以使用开源的 Libravatar 服务。 +federated_avatar_lookup_popup=启用 Federated 头像查找以使用开源的 Libravatar 服务。 disable_registration=禁止用户自助注册 disable_registration_popup=禁用用户自助注册。只有管理员才能创建新的用户帐户。 allow_only_external_registration_popup=仅允许通过外部服务注册 @@ -343,15 +343,15 @@ invalid_db_table=数据库表「%s」无效:%v invalid_repo_path=仓库根目录设置无效:%v invalid_app_data_path=应用数据路径无效: %v run_user_not_match=运行用户名不是当前的用户名:%s -> %s -internal_token_failed=生成内部令牌失败: %v -secret_key_failed=生成密钥失败: %v +internal_token_failed=生成内部令牌失败:%v +secret_key_failed=生成密钥失败:%v save_config_failed=应用配置保存失败:%v invalid_admin_setting=管理员帐户设置无效: %v invalid_log_root_path=日志路径无效: %v default_keep_email_private=默认情况下隐藏邮箱地址 default_keep_email_private_popup=默认情况下,隐藏新用户帐户的邮箱地址。 default_allow_create_organization=默认情况下允许创建组织 -default_allow_create_organization_popup=默认情况下, 允许新用户帐户创建组织。 +default_allow_create_organization_popup=默认情况下,允许新用户帐户创建组织。 default_enable_timetracking=默认情况下启用时间跟踪 default_enable_timetracking_popup=默认情况下启用新仓库的时间跟踪。 no_reply_address=隐藏邮件域 @@ -547,7 +547,7 @@ repo.transfer.subject_to_you=%s 想要将「%s」转移给您 repo.transfer.to_you=您 repo.transfer.body=访问 %s 以接受或拒绝转移,亦可忽略此邮件。 -repo.collaborator.added.subject=%s 把您添加到了 %s +repo.collaborator.added.subject=%s 把您添加到 %s repo.collaborator.added.text=您已被添加为仓库的协作者: team_invite.subject=%[1]s 邀请您加入组织 %[2]s @@ -586,8 +586,8 @@ SSPISeparatorReplacement=分隔符 SSPIDefaultLanguage=默认语言 require_error=不能为空。 -alpha_dash_error=应该只包含字母数字、破折号 ('-') 和下划线 ('_') 字符。 -alpha_dash_dot_error=` 应该只包含字母数字, 破折号 ('-'), 下划线 ('_') 和点 ('. ') 。` +alpha_dash_error=`应该只包含字母数字、破折号('-')和下划线('_')。` +alpha_dash_dot_error=`应该只包含字母数字、破折号('-')、下划线('_')和点('.')。` git_ref_name_error=` 必须是格式良好的 git 引用名称。` size_error=长度必须为 %s。 min_size_error=长度最小为 %s 个字符。 @@ -597,7 +597,7 @@ url_error=`「%s」不是一个有效的 URL。` include_error=`必须包含子字符串「%s」。` glob_pattern_error=`匹配表达式无效:%s.` regex_pattern_error=`正则表达式无效:%s.` -username_error=`只能包含字母数字字符('0-9'、'a-z'、'A-Z')破折号('-')下划线('_')和点('.')。不能以非字母数字字符开头和结尾且不允许连续的非字母数字字符。` +username_error=`只能包含字母数字('0-9'、'a-z'、'A-Z')破折号('-')下划线('_')和点('.')。不能以非字母数字字符开头和结尾且不允许连续的非字母数字字符。` invalid_group_team_map_error=`映射无效: %s` unknown_error=未知错误: captcha_incorrect=验证码不正确。 @@ -754,8 +754,8 @@ language=界面语言 ui=主题 hidden_comment_types=隐藏的评论类型 hidden_comment_types_description=此处选中的注释类型不会显示在工单页面上。比如,勾选「标签」删除所有「{user} 添加/删除的 {label}」注释。 -hidden_comment_types.ref_tooltip=注释此问题在何处被提及过,如另一个问题、代码提交等 -hidden_comment_types.issue_ref_tooltip=注释用户在何处更改了与此问题相关联的分支/标签 +hidden_comment_types.ref_tooltip=注释此工单在何处被提及过,如另一个工单、提交… +hidden_comment_types.issue_ref_tooltip=注释用户在何处更改了与此工单相关联的分支 / Git 标签 comment_type_group_reference=引用 comment_type_group_label=标签 comment_type_group_milestone=里程碑 @@ -776,13 +776,13 @@ keep_activity_private=隐藏个人资料页面中的活动 keep_activity_private_popup=使活动仅对您和管理员可见 lookup_avatar_by_mail=从邮箱地址查找头像 -federated_avatar_lookup=Federated Avatar 查找 -enable_custom_avatar=启动自定义头像 +federated_avatar_lookup=查找 Federated 头像 +enable_custom_avatar=使用自定义头像 choose_new_avatar=选择新的头像 update_avatar=更新头像 delete_current_avatar=删除当前头像 uploaded_avatar_not_a_image=上传的文件不是一张图片。 -uploaded_avatar_is_too_big=上传的文件大小(%d KiB) 超过最大限制(%d KiB)。 +uploaded_avatar_is_too_big=上传的文件大小(%d KiB)超过最大限制(%d KiB)。 update_avatar_success=您的头像已更新。 update_user_avatar_success=用户头像已更新。 cropper_prompt=您可以在保存前编辑图像。编辑的图像将被保存为 PNG 格式。 @@ -803,7 +803,7 @@ email_desc=您的主邮箱地址将用于通知、密码恢复以及基于网页 theme_desc=这将是您在整个网站上的默认主题。 theme_colorblindness_help=颜色障碍主题支持 theme_colorblindness_prompt=Gitea 仅有少数主题存在基本的颜色障碍支持,这些主题只定义了少数颜色。这项工作仍在进行中,可以通过在主题的 CSS 文件中定义更多颜色来实现更多改进。 -primary=主要 +primary=主 activated=已激活 requires_activation=需要激活 primary_email=设为主邮箱 @@ -812,7 +812,7 @@ activations_pending=等待激活 can_not_add_email_activations_pending=有一个待处理的激活请求,请稍等几分钟后再尝试添加新的邮箱地址。 delete_email=移除 email_deletion=移除邮箱地址 -email_deletion_desc=邮箱地址和相关信息将会被删除。使用此邮箱地址发送的Git提交将会保留,继续? +email_deletion_desc=邮箱地址和相关信息将会被删除。使用此邮箱地址发送的 Git 提交将会保留,继续? email_deletion_success=您的邮箱地址已移除。 theme_update_success=您的主题已更新。 theme_update_error=所选主题不存在。 @@ -847,7 +847,7 @@ key_content_gpg_placeholder=以 '-----BEGIN PGP PUBLIC KEY BLOCK-----' 开头 add_new_principal=添加规则 ssh_key_been_used=此 SSH 密钥已添加到服务器。 ssh_key_name_used=使用相同名称的 SSH 公钥已经存在。 -ssh_principal_been_used=此规则已经加入到了服务器。 +ssh_principal_been_used=此规则已经加入到服务器。 gpg_key_id_used=使用相同名称的 GPG 公钥已经存在。 gpg_no_key_email_found=此 GPG 密钥与您帐户关联的任何已激活邮箱地址均不匹配。如果您已对提供的令牌进行签名,仍可添加该密钥。 gpg_key_matched_identities=匹配的身份: @@ -945,8 +945,8 @@ remove_oauth2_application_desc=删除 OAuth2 应用将撤销所有签名的访 remove_oauth2_application_success=该应用已删除。 create_oauth2_application=创建新的 OAuth2 应用程序 create_oauth2_application_button=创建应用 -create_oauth2_application_success=您已成功创建了一个新的 OAuth2 应用。 -update_oauth2_application_success=您已成功更新了此 OAuth2 应用。 +create_oauth2_application_success=您已成功创建一个新的 OAuth2 应用。 +update_oauth2_application_success=您已成功更新此 OAuth2 应用。 oauth2_application_name=应用名称 oauth2_confidential_client=机密客户端。对于需要保密的应用(例如 Web 应用),请选择此选项。对于包括桌面和移动应用在内的本机应用,请勿选择此选项。 oauth2_skip_secondary_authorization=首次授权后允许公共客户端跳过授权步骤。 <strong>可能会带来安全风险。</strong> @@ -967,7 +967,7 @@ authorized_oauth2_applications_description=您已授予这些第三方应用程 revoke_key=撤销 revoke_oauth2_grant=撤回权限 revoke_oauth2_grant_description=确定撤销此三方应用程序的授权,并阻止此应用程序访问您的数据? -revoke_oauth2_grant_success=成功撤销了访问权限。 +revoke_oauth2_grant_success=成功撤销访问权限。 twofa_desc=为保护您的账号密码安全,您可以使用智能手机或其它设备来接收时间强相关的一次性密码(TOTP)。 twofa_recovery_tip=如果您丢失了您的设备,您将能够使用一次性恢复密钥来重新获得对您账户的访问。 @@ -977,15 +977,15 @@ twofa_disable=禁用两步认证 twofa_scratch_token_regenerate=重新生成初始令牌 twofa_scratch_token_regenerated=您的初始令牌现在是 %s。将其存放在安全的地方,它将不会再次显示。 twofa_enroll=启用两步验证 -twofa_disable_note=如果需要, 可以禁用双因素身份验证。 +twofa_disable_note=如果需要,您可以禁用两步验证。 twofa_disable_desc=关掉两步验证会使得您的账号不安全,继续执行? -regenerate_scratch_token_desc=如果您丢失了您的恢复密钥或已经使用它登录, 您可以在这里重置它。 +regenerate_scratch_token_desc=如果您丢失了您的恢复密钥或已经使用它登录,您可以在这里重置它。 twofa_disabled=两步验证已禁用。 scan_this_image=使用您的授权应用扫描这张图片: or_enter_secret=或者输入密钥:%s then_enter_passcode=并输入应用程序中显示的密码: passcode_invalid=密码不正确。再试一次。 -twofa_enrolled=您的账号已经启用了两步验证。请保存初始令牌(%s)到一个安全的地方,此令牌仅显示一次。 +twofa_enrolled=您的账号已经启用两步验证。请保存初始令牌(%s)到一个安全的地方,此令牌仅显示一次。 twofa_failed_get_secret=获取 secret 失败。 webauthn_desc=安全密钥是包含加密密钥的硬件设备。它们可以用于双因素身份验证。安全密钥必须支持 <a rel="noreferrer" target="_blank" href="%s">WebAuthn 身份验证器</a> 标准。 @@ -1011,7 +1011,7 @@ repos_none=您并不拥有任何仓库。 delete_account=删除当前帐户 delete_prompt=此操作将永久删除您的用户帐户。它 <strong>无法</strong> 被撤消。 -delete_with_all_comments=您的帐户年龄小于 %s。为了避免幽灵评论,所有工单/合并请求的评论都将与它一起被删除。 +delete_with_all_comments=您的帐户年龄小于 %s。为了避免幽灵评论,所有工单 / 合并请求的评论都将与它一起被删除。 confirm_delete_account=确认删除帐户 delete_account_title=删除当前帐户 delete_account_desc=确实要永久删除此用户帐户吗? @@ -1021,7 +1021,7 @@ email_notifications.onmention=仅被提及时通知 email_notifications.disable=停用邮件通知 email_notifications.submit=设置邮件通知 email_notifications.andyourown=仅与您相关的通知 -email_notifications.actions.desc=设置了 <a target="_blank" href="%s">Gitea 工作流</a> 的仓库中工作流运行的通知。 +email_notifications.actions.desc=已设置 <a target="_blank" href="%s">Gitea 工作流</a> 的仓库中工作流运行的通知。 email_notifications.actions.failure_only=仅在工作流运行失败时通知 visibility=用户可见性 @@ -1059,7 +1059,7 @@ fork_visibility_helper=无法更改派生仓库的可见性。 fork_branch=要克隆为派生的分支 all_branches=所有分支 view_all_branches=查看所有分支 -view_all_tags=查看所有标签 +view_all_tags=查看所有 Git 标签 fork_no_valid_owners=这个代码仓库无法被派生,因为没有有效的所有者。 fork.blocked_user=无法克隆仓库,因为您被仓库所有者屏蔽。 use_template=使用此模板 @@ -1099,7 +1099,7 @@ default_branch_label=默认 default_branch_helper=默认分支是用于合并请求和代码提交的基础分支。 mirror_prune=修剪 mirror_prune_desc=删除过时的远程跟踪引用 -mirror_interval=镜像间隔 (有效的时间单位是 'h', 'm', 's')。0 禁用自动定期同步 (最短间隔: %s) +mirror_interval=镜像间隔(有效的时间单位是 'h'、'm'、's')。0 禁用自动定期同步(最短间隔: %s) mirror_interval_invalid=镜像间隔无效。 mirror_sync=已同步 mirror_sync_on_commit=推送提交时同步 @@ -1206,7 +1206,7 @@ migrate.migrate_items_options=需要访问令牌来迁移额外的内容 migrated_from=从 <a href="%[1]s">%[2]s</a> 迁移 migrated_from_fake=从 %[1]s 迁移成功 migrate.migrate=从 %s 迁移 -migrate.migrating=正在从 <b>%s</b> 迁移... +migrate.migrating=正在从 <b>%s</b> 迁移… migrate.migrating_failed=从 <b>%s</b> 迁移失败。 migrate.migrating_failed.error=迁移失败:%s migrate.migrating_failed_no_addr=迁移失败。 @@ -1264,10 +1264,10 @@ code.desc=查看源码、文件、提交和分支。 branch=分支 tree=目录树 clear_ref=`清除当前引用` -filter_branch_and_tag=过滤分支或标签 -find_tag=查找标签 +filter_branch_and_tag=过滤分支或 Git 标签 +find_tag=查找 Git 标签 branches=分支列表 -tags=标签列表 +tags=Git 标签列表 issues=工单 pulls=合并请求 projects=项目 @@ -1283,8 +1283,8 @@ commits=提交 commit=提交 release=发布 releases=发布 -tag=标签 -released_this=发布 +tag=Git 标签 +released_this=发布于 tagged_this=已标记 file.title=%s 位于 %s file_raw=原始文件 @@ -1322,7 +1322,7 @@ commit_graph.monochrome=黑白 commit_graph.color=彩色 commit.contained_in=这个提交包含在: commit.contained_in_default_branch=此提交是默认分支的一部分 -commit.load_referencing_branches_and_tags=加载引用该提交的分支和标签 +commit.load_referencing_branches_and_tags=加载引用该提交的分支和 Git 标签 commit.merged_in_pr=此提交已合并在合并请求 %s 中。 blame=Blame download_file=下载文件 @@ -1347,7 +1347,7 @@ editor.fork_before_edit=您必须派生这个仓库才能对此文件进行修 editor.delete_this_file=删除文件 editor.must_have_write_access=您必须具有写权限才能对此文件进行修改操作。 editor.file_delete_success=文件「%s」已删除。 -editor.name_your_file=命名文件... +editor.name_your_file=命名文件… editor.filename_help=通过键入名称后跟斜线 ("/") 来添加目录。通过在输入框的开头键入「退格」来删除目录。 editor.or=或 editor.cancel_lower=取消 @@ -1361,14 +1361,14 @@ editor.patch=应用补丁 editor.patching=打补丁: editor.fail_to_apply_patch=无法应用补丁 editor.new_patch=新补丁 -editor.commit_message_desc=添加一个可选的扩展描述... +editor.commit_message_desc=添加一个可选的扩展描述… editor.signoff_desc=在提交日志消息末尾添加签署人信息。 editor.commit_directly_to_this_branch=直接提交至 <strong class="branch-name">%s</strong> 分支。 editor.create_new_branch=为此提交创建一个 <strong>新的分支</strong> 并发起合并请求。 editor.create_new_branch_np=为此提交创建 <strong>新分支</strong>。 editor.propose_file_change=建议文件更改 editor.new_branch_name=为这次提交的新分支命名 -editor.new_branch_name_desc=新的分支名称... +editor.new_branch_name_desc=新的分支名称… editor.cancel=取消 editor.filename_cannot_be_empty=文件名不能为空。 editor.filename_is_invalid=文件名无效:「%s」。 @@ -1390,7 +1390,7 @@ editor.no_changes_to_show=没有可以显示的变更。 editor.push_rejected_no_message=此修改被服务器拒绝并且没有反馈消息。请检查 Git 钩子。 editor.push_rejected=此修改被服务器拒绝。请检查 Git 钩子。 editor.push_rejected_summary=详细拒绝信息: -editor.add_subdir=添加目录 +editor.add_subdir=添加目录… editor.unable_to_upload_files=上传文件至「%s」失败:%v editor.upload_file_is_locked=文件「%s」被 %s 锁定。 editor.upload_files_to_dir=上传文件至「%s」 @@ -1414,7 +1414,7 @@ commits.desc=浏览代码修改历史 commits.commits=次代码提交 commits.no_commits=没有共同的提交。「%s」和「%s」的历史完全不同。 commits.nothing_to_compare=这些分支是相同的。 -commits.search.tooltip=`您可以在关键词前加上前缀,如"author:", "committer:", "after:", 或"before:", 例如 "retrin author:Alice before:2019-01-13"` +commits.search.tooltip=您可以在关键词前加上前缀,如「author:」、「committer:」、「after:」或「before:」,例如「retrin author:Alice before:2019-01-13」。 commits.search_branch=此分支 commits.search_all=所有分支 commits.author=作者 @@ -1510,7 +1510,7 @@ issues.new.clear_assignees=取消指派成员 issues.new.no_assignees=未指派成员 issues.new.no_reviewers=无评审人 issues.new.blocked_user=无法创建工单,因为您已被仓库所有者屏蔽。 -issues.edit.already_changed=无法保存对工单的更改。其内容似乎已被其他用户更改。 请刷新页面并重新编辑以避免覆盖他们的更改。 +issues.edit.already_changed=无法保存对工单的更改。其内容似乎已被其他用户更改。请刷新页面并重新编辑以避免覆盖他们的更改。 issues.edit.blocked_user=无法编辑内容,因为您已被仓库所有者或工单创建者屏蔽。 issues.choose.get_started=开始 issues.choose.open_external_link=开启 @@ -1519,7 +1519,7 @@ issues.choose.blank_about=从默认模板创建一个工单。 issues.choose.ignore_invalid_templates=已忽略无效模板 issues.choose.invalid_templates=发现了 %v 个无效模板 issues.choose.invalid_config=问题配置包含错误: -issues.no_ref=分支/Git标签未指定 +issues.no_ref=分支 / Git 标签未指定 issues.create=创建工单 issues.new_label=创建标签 issues.new_label_placeholder=标签名称 @@ -1530,29 +1530,29 @@ issues.label_templates.info=还没有任何标签。您可以使用「创建标 issues.label_templates.helper=选择标签模板 issues.label_templates.use=使用标签集 issues.label_templates.fail_to_load_file=加载标签模板文件「%s」时发生错误:%v -issues.add_label=于 %[2]s 添加了标签 %[1]s -issues.add_labels=于 %[2]s 添加了标签 %[1]s -issues.remove_label=于 %[2]s 删除了标签 %[1]s -issues.remove_labels=于 %[2]s 删除了标签 %[1]s -issues.add_remove_labels=于 %[3]s 添加了标签 %[1]s ,删除了标签 %[2]s -issues.add_milestone_at=`于 %[2]s 添加了里程碑 <b>%[1]s</b>` -issues.add_project_at=`于 %[2]s 将此添加到 <b>%[1]s</b> 项目` -issues.move_to_column_of_project=`将此对象移至 %s 的 %s 中在 %s 上` -issues.change_milestone_at=`%[3]s 修改了里程碑从 <b>%[1]s</b> 到 <b>%[2]s</b>` -issues.change_project_at=于 %[3]s 将此从项目 <b>%[1]s</b> 移到 <b>%[2]s</b> -issues.remove_milestone_at=`%[2]s 删除了里程碑 <b>%[1]s</b>` -issues.remove_project_at=`于 %[2]s 将此工单从项目 <b>%[1]s</b> 中删除` +issues.add_label=于 %[2]s 添加标签 %[1]s +issues.add_labels=于 %[2]s 添加标签 %[1]s +issues.remove_label=于 %[2]s 移除标签 %[1]s +issues.remove_labels=于 %[2]s 移除标签 %[1]s +issues.add_remove_labels=于 %[3]s 添加标签 %[1]s 移除标签 %[2]s +issues.add_milestone_at=`于 %[2]s 添加里程碑 <b>%[1]s</b>` +issues.add_project_at=`于 %[2]s 将此工单添加到 <b>%[1]s</b> 项目` +issues.move_to_column_of_project=`将 %[3]s 上的 %[2]s 移至 %[1]s` +issues.change_milestone_at=`于 %[3]s 修改里程碑从 <b>%[1]s</b> 到 <b>%[2]s</b>` +issues.change_project_at=于 %[3]s 将项目从 <b>%[1]s</b> 移至 <b>%[2]s</b> +issues.remove_milestone_at=`于 %[2]s 删除里程碑 <b>%[1]s</b>` +issues.remove_project_at=`于 %[2]s 将此工单从项目 <b>%[1]s</b> 中移除` issues.deleted_milestone=(已删除) issues.deleted_project=`(已删除)` issues.self_assign_at=`于 %s 指派给自己` issues.add_assignee_at=`于 %[2]s 由 <b>%[1]s</b> 指派` -issues.remove_assignee_at=`<b>%s</b> 取消了指派在 %s` -issues.remove_self_assignment=`于 %s 取消了指派` +issues.remove_assignee_at=`于 %[2]s 由 <b>%[1]s</b> 取消指派` +issues.remove_self_assignment=`于 %s 取消指派` issues.change_title_at=`于 %[3]s 修改标题 <b><strike>%[1]s</strike></b> 为 <b>%[2]s</b>` -issues.change_ref_at=`将引用从 <b><strike>%s</strike></b> 更改为了 <b>%s</b> %s` -issues.remove_ref_at=`删除了引用 <b>%s</b> %s` -issues.add_ref_at=`添加了引用 <b>%s</b> %s` -issues.delete_branch_at=`于 %[2]s 删除了分支 <b>%[1]s</b>` +issues.change_ref_at=`于 %[3]s 修改引用 <b><strike>%[1]s</strike></b> 为 <b>%[2]s</b>` +issues.remove_ref_at=`于 %[2]s 删除引用 <b>%[1]s</b>` +issues.add_ref_at=`于 %[2]s 添加引用 <b>%[1]s</b>` +issues.delete_branch_at=`于 %[2]s 删除分支 <b>%[1]s</b>` issues.filter_label=标签筛选 issues.filter_label_exclude=`使用 <code>alt</code> + <code>鼠标左键 / 回车</code> 排除标签` issues.filter_label_no_select=所有标签 @@ -1578,7 +1578,7 @@ issues.filter_type.assigned_to_you=指派给您的 issues.filter_type.created_by_you=由您创建的 issues.filter_type.mentioning_you=提及您的 issues.filter_type.review_requested=已请求评审 -issues.filter_type.reviewed_by_you=您评审过的 +issues.filter_type.reviewed_by_you=您已评审的 issues.filter_sort=排序 issues.filter_sort.latest=最新创建 issues.filter_sort.oldest=最早创建 @@ -1623,29 +1623,29 @@ issues.context.edit=编辑 issues.context.delete=刪除 issues.no_content=没有提供说明。 issues.close=关闭工单 -issues.comment_pull_merged_at=已合并提交 %[1]s 到 %[2]s %[3]s -issues.comment_manually_pull_merged_at=手动合并提交 %[1]s 到 %[2]s %[3]s +issues.comment_pull_merged_at=于 %[3]s 合并提交 %[1]s 到 %[2]s +issues.comment_manually_pull_merged_at=于 %[3]s 手动合并提交 %[1]s 到 %[2]s issues.close_comment_issue=评论并关闭 issues.reopen_issue=重新打开 issues.reopen_comment_issue=评论并重新打开 issues.create_comment=评论 issues.comment.blocked_user=无法创建或编辑评论,因为您已被仓库所有者或工单创建者屏蔽。 issues.closed_at=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> 关闭此工单` -issues.reopened_at=`重新打开此问题 <a id="%[1]s" href="#%[1]s">%[2]s</a>` -issues.commit_ref_at=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> 在代码提交中引用了该工单` -issues.ref_issue_from=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">引用了工单 %[4]s</a> ` -issues.ref_pull_from=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">引用了合并请求 %[4]s</a> ` -issues.ref_closing_from=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">引用了合并请求 %[4]s 将关闭此工单</a>` -issues.ref_reopening_from=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s"> 引用了合并请求 %[4]s 将重新讨论此工单</a> ` -issues.ref_closed_from=`<a href="%[3]s">关闭了这个工单 %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>` -issues.ref_reopened_from=`<a href="%[3]s">重新打开这个工单 %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>` +issues.reopened_at=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> 重新打开此工单` +issues.commit_ref_at=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> 在代码提交中引用该工单` +issues.ref_issue_from=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">引用工单 %[4]s</a> ` +issues.ref_pull_from=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">引用合并请求 %[4]s</a> ` +issues.ref_closing_from=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">引用合并请求 %[4]s 将关闭此工单</a>` +issues.ref_reopening_from=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">引用合并请求 %[4]s 将重新打开此工单</a> ` +issues.ref_closed_from=`<a href="%[3]s">关闭此工单 %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>` +issues.ref_reopened_from=`<a href="%[3]s">重新打开此工单 %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>` issues.ref_from=`来自 %[1]s` issues.author=作者 issues.author_helper=此用户是作者。 issues.role.owner=所有者 -issues.role.owner_helper=该用户是该仓库的所有者。 +issues.role.owner_helper=该用户是此仓库的所有者。 issues.role.member=成员 -issues.role.member_helper=该用户是拥有该仓库的组织成员。 +issues.role.member_helper=该用户是拥有此仓库的组织的成员。 issues.role.collaborator=协作者 issues.role.collaborator_helper=该用户已被邀请在仓库上进行协作。 issues.role.first_time_contributor=首次贡献者 @@ -1675,7 +1675,7 @@ issues.label_exclusive_warning=在编辑工单或合并请求的标签时,任 issues.label_exclusive_order=排序顺序 issues.label_exclusive_order_tooltip=在同一个范围内的互斥标签将按照这个数字进行排序 issues.label_count=%d 个标签 -issues.label_open_issues=%d 个开启的工单/合并请求 +issues.label_open_issues=%d 个开启中工单 / 合并请求 issues.label_edit=编辑 issues.label_delete=删除 issues.label_modify=编辑标签 @@ -1699,7 +1699,7 @@ issues.lock=锁定对话 issues.unlock=解锁对话 issues.lock_duplicate=一个工单不能锁定两次。 issues.unlock_error=无法解锁一个未锁定的工单。 -issues.lock_with_reason=因为 <strong>%s</strong> 而锁定,并将对话限制为协作者 %s +issues.lock_with_reason=于 %s 锁定为 <strong>%s</strong>,并将对话限制为协作者 issues.lock_no_reason=锁定并限制仅协作者 %s issues.unlock_comment=解锁此对话 %s issues.lock_confirm=锁定 @@ -1708,10 +1708,10 @@ issues.lock.notice_1=- 其他用户不能对这个工单添加新的评论。 issues.lock.notice_2=- 您和仓库其他协作者仍可评论并可见。 issues.lock.notice_3=- 您可以在未来再次解锁这个工单。 issues.unlock.notice_1=- 每个人都可以再次就这一工单发表评论。 -issues.unlock.notice_2=- 您可以在未来再次解锁这个工单。 +issues.unlock.notice_2=- 您可以在未来再次锁定这个工单。 issues.lock.reason=锁定原因 -issues.lock.title=锁定有关此问题的对话。 -issues.unlock.title=解锁有关此问题的对话。 +issues.lock.title=锁定有关此工单的对话。 +issues.unlock.title=解锁有关此工单的对话。 issues.comment_on_locked=您不能对锁定的问题发表评论。 issues.delete=删除 issues.delete.title=是否删除工单? @@ -1738,49 +1738,49 @@ issues.stop_tracking_history=工作 <b>%[1]s</b> 于 %[2]s 停止 issues.cancel_tracking=取消 issues.cancel_tracking_history=`取消时间跟踪 %s` issues.del_time=删除此时间跟踪日志 -issues.add_time_history=已于 %[2]s 添加计时 <b>%[1]</b> +issues.add_time_history=于 %[2]s 添加计时 <b>%[1]</b> issues.del_time_history=`已删除时间 %s` issues.add_time_manually=手动添加时间 issues.add_time_hours=小时 issues.add_time_minutes=分钟 issues.add_time_sum_to_small=没有输入时间。 issues.time_spent_total=总用时 -issues.time_spent_from_all_authors=`总花费时间:%s` - -issues.due_date=到期时间 -issues.invalid_due_date_format=到期时间的格式必须是「yyyy-mm-dd」的形式。 -issues.error_modifying_due_date=修改到期时间失败。 -issues.error_removing_due_date=删除到期时间失败。 -issues.push_commit_1=于 %[2]s 推送了 %[1]d 个提交 -issues.push_commits_n=于 %[2]s 推送了 %[1]d 个提交 -issues.force_push_codes=`于 %[6]s 强制推送 %[1]s,从 <a class="ui sha" href="%[3]s"><code>%[2]s</code></a>,至 <a class="ui sha" href="%[5]s"><code>%[4]s</code></a>` +issues.time_spent_from_all_authors=`总用时:%s` + +issues.due_date=截止日期 +issues.invalid_due_date_format=截止日期的格式必须是「yyyy-mm-dd」的形式。 +issues.error_modifying_due_date=修改截止日期失败。 +issues.error_removing_due_date=删除截止日期失败。 +issues.push_commit_1=于 %[2]s 推送 %[1]d 个提交 +issues.push_commits_n=于 %[2]s 推送 %[1]d 个提交 +issues.force_push_codes=`于 %[6]s 强制推送 %[1]s,从 <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> 至 <a class="ui sha" href="%[5]s"><code>%[4]s</code></a>` issues.force_push_compare=比较 issues.due_date_form=yyyy年mm月dd日 -issues.due_date_form_add=设置到期时间 +issues.due_date_form_add=设置截止日期 issues.due_date_form_edit=编辑 issues.due_date_form_remove=删除 -issues.due_date_not_writer=您需要该仓库的写权限以更新工单的到期日期。 -issues.due_date_not_set=未设置到期时间。 -issues.due_date_added=于 %[2]s 设置到期时间为 %[1]s -issues.due_date_modified=将到期日从 %[2]s 修改为 %[1]s %[3]s -issues.due_date_remove=于 %[2]s 删除了到期时间 %[1]s +issues.due_date_not_writer=您需要该仓库的写权限以更新工单的截止日期。 +issues.due_date_not_set=未设置截止日期。 +issues.due_date_added=于 %[2]s 设置截止日期为 %[1]s +issues.due_date_modified=于 %[3]s 将截止日期从 %[2]s 修改为 %[1]s +issues.due_date_remove=于 %[2]s 删除截止日期 %[1]s issues.due_date_overdue=过期 -issues.due_date_invalid=到期日期无效或超出范围。请使用 'yyyy-mm-dd' 格式。 +issues.due_date_invalid=截止日期无效或超出范围。请使用「yyyy-mm-dd」格式。 issues.dependency.title=依赖工单 issues.dependency.issue_no_dependencies=未设置依赖工单。 issues.dependency.pr_no_dependencies=未设置依赖工单。 issues.dependency.no_permission_1=您没有读取 %d 依赖关系的权限 issues.dependency.no_permission_n=您没有读取 %d 依赖关系的权限 issues.dependency.no_permission.can_remove=您没有读取此依赖关系的权限,但可以删除此依赖关系 -issues.dependency.add=添加依赖工单... +issues.dependency.add=添加依赖工单… issues.dependency.cancel=取消 issues.dependency.remove=删除 issues.dependency.remove_info=删除此依赖项 -issues.dependency.added_dependency=`添加了一个新的依赖项 %s` +issues.dependency.added_dependency=`添加了一个新依赖项 %s` issues.dependency.removed_dependency=`移除了一个依赖项 %s` -issues.dependency.pr_closing_blockedby=以下工单阻止了关闭此合并请求 +issues.dependency.pr_closing_blockedby=以下工单阻止关闭此合并请求 issues.dependency.issue_closing_blockedby=关闭此工单被以下工单阻止 -issues.dependency.issue_close_blocks=此工单阻止了以下工单的关闭 +issues.dependency.issue_close_blocks=此工单阻止以下工单的关闭 issues.dependency.pr_close_blocks=此合并请求阻止以下工单的关闭 issues.dependency.issue_close_blocked=您需要关闭所有阻止此工单的工单后才能关闭它。 issues.dependency.issue_batch_close_blocked=无法批量关闭您所选择的工单,因为 #%d 工单仍然有处于打开状态的依赖工单 @@ -1788,28 +1788,28 @@ issues.dependency.pr_close_blocked=您需要关闭所有阻止此合并请求的 issues.dependency.blocks_short=阻止 issues.dependency.blocked_by_short=依赖于 issues.dependency.remove_header=删除依赖项 -issues.dependency.issue_remove_text=此操作将从工单中删除依赖。是否要继续? -issues.dependency.pr_remove_text=此操作将从合并请求中删除依赖。是否要继续? +issues.dependency.issue_remove_text=此操作将从工单中删除依赖。是否要继续? +issues.dependency.pr_remove_text=此操作将从合并请求中删除依赖。是否要继续? issues.dependency.setting=为工单和合并请求启用依赖 issues.dependency.add_error_same_issue=您不能让一个工单依赖于自身。 issues.dependency.add_error_dep_issue_not_exist=依赖项不存在。 issues.dependency.add_error_dep_not_exist=依赖项不存在。 issues.dependency.add_error_dep_exists=依赖项已存在。 -issues.dependency.add_error_cannot_create_circular=您无法在相互阻塞的问题之间建立依赖关系。 +issues.dependency.add_error_cannot_create_circular=您无法在相互阻塞的工单之间建立依赖关系。 issues.dependency.add_error_dep_not_same_repo=这两个工单必须在同一仓库。 issues.review.self.approval=您不能批准您自己的合并请求。 issues.review.self.rejection=您不能请求对您自己的合并请求进行更改。 issues.review.approve=于 %s 批准此合并请求 -issues.review.comment=评审于 %s -issues.review.dismissed=于 %[2]s 取消了 %[1]s 的评审 +issues.review.comment=于 %s 评审 +issues.review.dismissed=于 %[2]s 取消 %[1]s 的评审 issues.review.dismissed_label=已取消 issues.review.left_comment=留下了一条评论 issues.review.content.empty=您需要留下一个注释,表明需要的更改。 issues.review.reject=请求变更 %s -issues.review.wait=已请求 %s 审核 +issues.review.wait=已请求 %s 评审 issues.review.add_review_request=于 %[2]s 请求 %[1]s 评审 issues.review.remove_review_request=取消对 %s 的评审请求 %s -issues.review.remove_review_request_self=拒绝审核 %s +issues.review.remove_review_request_self=拒绝评审 %s issues.review.pending=待定 issues.review.pending.tooltip=此评论目前对其他用户不可见。 若要提交您的待定评论,请在页面顶部选择 %s -> %s/%s/%s。 issues.review.review=评审 @@ -1839,7 +1839,7 @@ issues.content_history.created=已创建 issues.content_history.delete_from_history=从历史记录中删除 issues.content_history.delete_from_history_confirm=从历史记录中删除吗? issues.content_history.options=选项 -issues.reference_link=参考:%s +issues.reference_link=引用:%s compare.compare_base=基准分支 compare.compare_head=比较 @@ -1848,7 +1848,7 @@ pulls.desc=启用合并请求和代码评审。 pulls.new=创建合并请求 pulls.new.blocked_user=无法创建合并请求,因为您已被仓库所有者屏蔽。 pulls.new.must_collaborator=您必须是仓库的协作者才能创建合并请求。 -pulls.edit.already_changed=无法保存对合并请求的更改。其内容似乎已被其他用户更改。 请刷新页面并重新编辑以避免覆盖他们的更改。 +pulls.edit.already_changed=无法保存对合并请求的更改。其内容似乎已被其他用户更改。请刷新页面并重新编辑以避免覆盖他们的更改。 pulls.view=查看合并请求 pulls.compare_changes=创建合并请求 pulls.allow_edits_from_maintainers=允许维护者编辑 @@ -1873,9 +1873,9 @@ pulls.select_commit_hold_shift_for_range=选择提交。按住 Shift + 单击选 pulls.review_only_possible_for_full_diff=只有在查看全部差异时才能进行审核 pulls.filter_changes_by_commit=按提交筛选 pulls.nothing_to_compare=分支内容相同,无需创建合并请求。 -pulls.nothing_to_compare_have_tag=所选分支/标签相同。 +pulls.nothing_to_compare_have_tag=所选分支 / Git 标签相同。 pulls.nothing_to_compare_and_allow_empty_pr=这些分支是相等的,此合并请求将为空。 -pulls.has_pull_request=这些分支之间的合并请求已存在: <a href="%[1]s">%[2]s#%[3]d</a> +pulls.has_pull_request=这些分支之间的合并请求已存在:<a href="%[1]s">%[2]s#%[3]d</a> pulls.create=创建合并请求 pulls.title_desc=请求将 %[1]d 次代码提交从 <code>%[2]s</code> 合并至 <code id="branch_target">%[3]s</code> pulls.merged_title_desc=于 %[4]s 将 %[1]d 次代码提交从 <code>%[2]s</code>合并至 <code>%[3]s</code> @@ -1886,11 +1886,11 @@ pulls.tab_files=文件变动 pulls.reopen_to_merge=请重新创建此合并请求。 pulls.cant_reopen_deleted_branch=无法重新打开此合并请求,因为分支已删除。 pulls.merged=已合并 -pulls.merged_success=合并请求已成功合并和关闭 +pulls.merged_success=合并请求已成功合并并关闭 pulls.closed=合并请求已关闭 pulls.manually_merged=已手动合并 pulls.merged_info_text=分支 %s 现在可以删除了。 -pulls.is_closed=合并请求已经关闭。 +pulls.is_closed=合并请求已关闭。 pulls.title_wip_desc=`<a href="#">标题以 <strong>%s</strong> 开头</a>以免合并请求意外合并。` pulls.cannot_merge_work_in_progress=此合并请求被标记为正在进行的工作。 pulls.still_in_progress=仍在进行中? @@ -1898,7 +1898,7 @@ pulls.add_prefix=添加 <strong>%s</strong> 前缀 pulls.remove_prefix=删除 <strong>%s</strong> 前缀 pulls.data_broken=此合并请求因为派生仓库信息缺失而中断。 pulls.files_conflicted=此合并请求有变更与目标分支冲突。 -pulls.is_checking=正在进行合并冲突检测 ... +pulls.is_checking=正在进行合并冲突检查… pulls.is_ancestor=此分支已经包含在目标分支中,没有什么可以合并。 pulls.is_empty=此分支上的更改已经在目标分支上。这将是一个空提交。 pulls.required_status_check_failed=一些必要的检查没有成功 @@ -1950,9 +1950,9 @@ pulls.has_merged=失败:合并请求已经合并。您不能再次合并或更 pulls.push_rejected=推送失败:推送被拒绝。审查此仓库的 Git 钩子。 pulls.push_rejected_summary=详细拒绝信息 pulls.push_rejected_no_message=推送失败:此推送被拒绝但未提供其他信息。请检查此仓库的 Git 钩子。 -pulls.open_unmerged_pull_exists=`您不能执行重新打开操作, 因为已经存在相同的合并请求 (#%d)。` -pulls.status_checking=一些检测仍在等待运行 -pulls.status_checks_success=所有检测均成功 +pulls.open_unmerged_pull_exists=`您不能执行重新打开操作,因为已经存在相同的合并请求 (#%d)。` +pulls.status_checking=一些检查仍在等待运行 +pulls.status_checks_success=所有检查均成功 pulls.status_checks_warning=一些检查报告了警告 pulls.status_checks_failure=一些检查失败了 pulls.status_checks_error=一些检查报告了错误 @@ -1967,13 +1967,13 @@ pulls.update_not_allowed=您无权更新分支 pulls.outdated_with_base_branch=此分支相比基础分支已过期 pulls.close=关闭合并请求 pulls.closed_at=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> 关闭此合并请求 ` -pulls.reopened_at=`重新打开此合并请求 <a id="%[1]s" href="#%[1]s">%[2]s</a>` +pulls.reopened_at=`于 <a id="%[1]s" href="#%[1]s">%[2]s</a> 重新打开此合并请求` pulls.cmd_instruction_hint=查看命令行提示 pulls.cmd_instruction_checkout_title=检出 pulls.cmd_instruction_checkout_desc=从您的仓库中检出一个新的分支并测试变更。 pulls.cmd_instruction_merge_title=合并 pulls.cmd_instruction_merge_desc=合并变更并更新到 Gitea 上 -pulls.cmd_instruction_merge_warning=警告:此操作不能合并该合并请求,因为「自动检测手动合并」未启用 +pulls.cmd_instruction_merge_warning=警告:此操作不能合并该合并请求,因为「自动检查手动合并」未启用。 pulls.clear_merge_message=清除合并信息 pulls.clear_merge_message_hint=清除合并消息只会删除提交消息内容,并保留生成的 Git 附加内容,如「Co-Authored-By…」。 @@ -1987,12 +1987,12 @@ pulls.auto_merge_not_scheduled=此合并请求没有计划自动合并。 pulls.auto_merge_canceled_schedule=此合并请求的自动合并已取消。 pulls.auto_merge_newly_scheduled_comment=`已于 %[1]s 设置此合并请求在所有检查成功后自动合并` -pulls.auto_merge_canceled_schedule_comment=`已于 %[1]s 取消了自动合并设置 ` +pulls.auto_merge_canceled_schedule_comment=`已于 %[1]s 取消自动合并设置 ` pulls.delete.title=删除此合并请求? pulls.delete.text=您真的要删除这个合并请求吗?(这将永久删除所有内容。如果您打算将内容存档,请考虑关闭它) -pulls.recently_pushed_new_branches=您已经于%[2]s推送了分支 <strong>%[1]s</strong> +pulls.recently_pushed_new_branches=您已经于 %[2]s 推送分支 <strong>%[1]s</strong> pulls.upstream_diverging_prompt_behind_1=该分支落后于 %[2]s %[1]d 个提交 pulls.upstream_diverging_prompt_behind_n=该分支落后于 %[2]s %[1]d 个提交 pulls.upstream_diverging_prompt_base_newer=基础分支 %s 有新的更改 @@ -2017,7 +2017,7 @@ milestones.title=标题 milestones.desc=描述 milestones.due_date=截止日期(可选) milestones.clear=清除 -milestones.invalid_due_date_format=到期时间的格式必须是「yyyy-mm-dd」的形式。 +milestones.invalid_due_date_format=截止日期的格式必须是「yyyy-mm-dd」的形式。 milestones.create_success=里程碑「%s」创建成功。 milestones.edit=编辑里程碑 milestones.edit_subheader=里程碑组织工单,合并请求和跟踪进度。 @@ -2054,7 +2054,7 @@ ext_wiki.desc=链接到外部百科。 wiki=百科 wiki.welcome=欢迎来到百科。 -wiki.welcome_desc=百科允许您撰写和与协作者分享文档。 +wiki.welcome_desc=百科允许您撰写并与协作者分享文档。 wiki.desc=撰写和与协作者分享文档 wiki.create_first_page=创建第一个页面 wiki.page=页面 @@ -2072,11 +2072,11 @@ wiki.wiki_page_revisions=页面历史 wiki.back_to_wiki=返回百科 wiki.delete_page_button=删除页面 wiki.delete_page_notice_1=百科页面「%s」删除后无法恢复,是否继续? -wiki.page_already_exists=相同名称的 Wiki 页面已经存在。 +wiki.page_already_exists=相同名称的百科页面已经存在。 wiki.reserved_page=百科页面名称「%s」是保留的。 wiki.pages=所有页面 wiki.last_updated=最后更新于 %s -wiki.page_name_desc=输入此百科页面的名称。特殊名称有:「Home」,「_Sidebar」和「_Footer」。 +wiki.page_name_desc=输入此百科页面的名称。特殊名称有:「Home」、「_Sidebar」和「_Footer」。 wiki.original_git_entry_tooltip=查看原始的 Git 文件而不是使用友好链接。 activity=活动 @@ -2097,13 +2097,13 @@ activity.active_prs_count_1=<strong>%d</strong> 个合并请求 activity.active_prs_count_n=<strong>%d</strong> 个合并请求 activity.merged_prs_count_1=已合并的合并请求 activity.merged_prs_count_n=已合并的合并请求 -activity.opened_prs_count_1=创建的合并请求 -activity.opened_prs_count_n=创建的合并请求 +activity.opened_prs_count_1=已创建的合并请求 +activity.opened_prs_count_n=已创建的合并请求 activity.title.user_1=%d 位用户 activity.title.user_n=%d 位用户 activity.title.prs_1=%d 个合并请求 activity.title.prs_n=%d 个合并请求 -activity.title.prs_merged_by=%[2]s 由 %[1]s 合并 +activity.title.prs_merged_by=%[2]s 合并了 %[1]s activity.title.prs_opened_by=%[2]s 创建了 %[1]s activity.merged_prs_label=已合并 activity.opened_prs_label=已创建 @@ -2113,7 +2113,7 @@ activity.closed_issues_count_1=已关闭的工单 activity.closed_issues_count_n=已关闭的工单 activity.title.issues_1=%d 张工单 activity.title.issues_n=%d 张工单 -activity.title.issues_closed_from=%s 从 %s 关闭 +activity.title.issues_closed_from=%[2]s 关闭了 %[1]s activity.title.issues_created_by=%[2]s 创建了 %[1]s activity.closed_issue_label=已关闭 activity.new_issues_count_1=开启的工单 @@ -2123,8 +2123,8 @@ activity.title.unresolved_conv_1=%d 未解决的会话 activity.title.unresolved_conv_n=%d 未解决的会话 activity.unresolved_conv_desc=这些最近更新的工单和合并请求还没有解决。 activity.unresolved_conv_label=打开 -activity.title.releases_1=%d 个发布 -activity.title.releases_n=%d 个发布 +activity.title.releases_1=%d 个版本 +activity.title.releases_n=%d 个版本 activity.title.releases_published_by=%[2]s 发布了 %[1]s activity.published_release_label=已发布 activity.no_git_activity=在此期间没有任何提交活动。 @@ -2174,9 +2174,9 @@ settings.hooks=Web 钩子 settings.githooks=管理 Git 钩子 settings.basic_settings=基本设置 settings.mirror_settings=镜像设置 -settings.mirror_settings.docs=将您的仓库设置为自动同步另一个仓库的提交、标签和分支。 -settings.mirror_settings.docs.disabled_pull_mirror.instructions=将您的项目设置为自动将提交、标签和分支推送到另一个仓库。您的站点管理员已禁用了拉取镜像。 -settings.mirror_settings.docs.disabled_push_mirror.instructions=将您的项目设置为自动从一个仓库拉取提交、标签和分支。 +settings.mirror_settings.docs=将您的仓库设置为自动同步另一个仓库的提交、Git 标签和分支。 +settings.mirror_settings.docs.disabled_pull_mirror.instructions=将您的项目设置为自动将提交、Git 标签和分支推送到另一个仓库。您的站点管理员已禁用了拉取镜像。 +settings.mirror_settings.docs.disabled_push_mirror.instructions=将您的项目设置为自动从一个仓库拉取提交、Git 标签和分支。 settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning=现在,这只能在「迁移外部仓库」菜单中完成。欲了解更多信息,请参考: settings.mirror_settings.docs.disabled_push_mirror.info=您的站点管理员已禁用推送镜像。 settings.mirror_settings.docs.no_new_mirrors=您的仓库将镜像同步另一个仓库的更改。请注意,您目前无法创建任何新的镜像。 @@ -2229,12 +2229,12 @@ settings.tracker_issue_style.alphanumeric=英文字母数字组合形式 settings.tracker_issue_style.regexp=正则表达式 settings.tracker_issue_style.regexp_pattern=正则表达式 settings.tracker_issue_style.regexp_pattern_desc=第一个被捕获的组将取代 <code>{index}</code>。 -settings.tracker_url_format_desc=使用占位符 <code>{user}</code>, <code>{repo}</code> 和 <code>{index}</code> 作为用户名、仓库名和工单索引。 +settings.tracker_url_format_desc=使用占位符 <code>{user}</code>、<code>{repo}</code> 和 <code>{index}</code> 作为用户名、仓库名和工单索引。 settings.enable_timetracker=启用时间跟踪 settings.allow_only_contributors_to_track_time=仅允许成员跟踪时间 settings.pulls_desc=启用合并请求 settings.pulls.ignore_whitespace=忽略空白冲突 -settings.pulls.enable_autodetect_manual_merge=启用自动检测手动合并 (注意:在某些特殊情况下可能发生错误判断) +settings.pulls.enable_autodetect_manual_merge=启用自动检查手动合并(注意:在某些特殊情况下可能会出现误判) settings.pulls.allow_rebase_update=允许通过变基更新合并请求分支 settings.pulls.default_delete_branch_after_merge=默认合并后删除合并请求分支 settings.pulls.default_allow_edits_from_maintainers=默认允许维护者编辑 @@ -2304,7 +2304,7 @@ settings.wiki_delete_notices_1=- 这将永久删除和禁用 %s 的百科。 settings.confirm_wiki_delete=删除百科数据 settings.wiki_deletion_success=仓库百科数据删除成功! settings.delete=删除本仓库 -settings.delete_desc=删除仓库是永久性的, 无法撤消。 +settings.delete_desc=删除仓库是永久性的,无法撤消。 settings.delete_notices_1=- 此操作 <strong>无法</strong> 被回滚。 settings.delete_notices_2=- 此操作将永久删除仓库 <strong>%s</strong>,包括代码、 工单、评论、百科数据和协作者设置。 settings.delete_notices_fork_1=- 在此仓库删除后,它的派生仓库将变成独立仓库。 @@ -2330,7 +2330,7 @@ settings.add_team=添加团队 settings.add_team_duplicate=团队已经拥有仓库 settings.add_team_success=团队现在可以访问仓库。 settings.change_team_permission_tip=团队权限设置于团队设置页面,不能根据仓库更改 -settings.delete_team_tip=该团队仍有仓库, 无法删除 +settings.delete_team_tip=该团队仍有仓库,无法删除 settings.remove_team_success=团队访问仓库的权限已删除。 settings.add_webhook=添加 Web 钩子 settings.add_webhook.invalid_channel_name=Web 钩子通道名称不能为空且不能仅包含一个 # 字符。 @@ -2368,12 +2368,12 @@ settings.discord_icon_url=图标 URL settings.event_desc=触发条件: settings.event_push_only=推送事件 settings.event_send_everything=所有事件 -settings.event_choose=自定义事件... +settings.event_choose=自定义事件… settings.event_header_repository=仓库事件 settings.event_create=创建 -settings.event_create_desc=创建分支或标签 +settings.event_create_desc=分支或 Git 标签已创建。 settings.event_delete=刪除 -settings.event_delete_desc=分支或标签已删除。 +settings.event_delete_desc=分支或 Git 标签已删除。 settings.event_fork=派生 settings.event_fork_desc=仓库已派生。 settings.event_wiki=百科 @@ -2425,7 +2425,7 @@ settings.event_workflow_job_desc=Gitea 工作流队列中、等待中、正在 settings.event_package=软件包 settings.event_package_desc=软件包在仓库中已创建或删除。 settings.branch_filter=分支过滤 -settings.branch_filter_desc=推送、创建,删除分支事件的分支白名单,使用 glob 表达式匹配指定。若为空或 <code>*</code>,则会报告所有分支的事件。语法文档见 <a href="%[1]s">%[2]s</a>。示例:<code>master</code>,<code>{master,release*}</code>。 +settings.branch_filter_desc=推送、创建,删除分支事件的分支白名单,使用 glob 表达式匹配指定。若为空或 <code>*</code>,则会报告所有分支的事件。语法文档见 <a href="%[1]s">%[2]s</a>。示例:<code>master</code>、<code>{master,release*}</code>。 settings.authorization_header=授权标头 settings.authorization_header_desc=当存在时将被作为授权标头包含在内。例如: %s。 settings.active=激活 @@ -2528,9 +2528,9 @@ settings.protect_branch_name_pattern=受保护的分支名称表达式 settings.protect_branch_name_pattern_desc=分支保护的名称匹配表达式。语法请参阅 <a href="%s">文档</a> 。如:main, release/** settings.protect_patterns=表达式 settings.protect_protected_file_patterns=受保护的文件表达式(使用分号「;」分隔): -settings.protect_protected_file_patterns_desc=即使用户有权添加、编辑或删除此分支中的文件,也不允许直接更改受保护的文件。 可以使用分号「;」分隔多个表达式。 见<a href='%[1]s'>%[2]s</a>文档了解表达式语法。例如: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>。 +settings.protect_protected_file_patterns_desc=即使用户有权添加、编辑或删除此分支中的文件,也不允许直接更改受保护的文件。可以使用分号(';')分隔多个表达式。见 <a href='%[1]s'>%[2]s</a> 文档了解表达式语法。例如:<code>.drone.yml</code>、<code>/docs/**/*.txt</code>。 settings.protect_unprotected_file_patterns=不受保护的文件表达式(使用分号「;」分隔): -settings.protect_unprotected_file_patterns_desc=如果用户有写权限,则允许直接更改的不受保护的文件,以绕过推送限制。可以使用分号分隔多个表达式「;」。 见 <a href='%[1]s'>%[2]s</a> 文档了解表达式语法。例如: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>。 +settings.protect_unprotected_file_patterns_desc=如果用户具有写权限则允许直接更改的不受保护文件,可绕过推送限制。可使用分号(';')分隔多个表达式。见 <a href='%[1]s'>%[2]s</a> 文档了解表达式语法。例如:<code>.drone.yml</code>、<code>/docs/**/*.txt</code>。 settings.add_protected_branch=启用保护 settings.delete_protected_branch=禁用保护 settings.update_protect_branch_success=分支保护规则「%s」更新成功。 @@ -2549,22 +2549,22 @@ settings.block_admin_merge_override_desc=管理员须遵守分支保护规则, settings.default_branch_desc=请选择一个默认的分支用于合并请求和提交: settings.merge_style_desc=合并方式 settings.default_merge_style_desc=默认合并风格 -settings.choose_branch=选择一个分支... +settings.choose_branch=选择一个分支… settings.no_protected_branch=没有受保护的分支 settings.edit_protected_branch=编辑 settings.protected_branch_required_rule_name=必须填写规则名称 settings.protected_branch_duplicate_rule_name=规则名称已存在 settings.protected_branch_required_approvals_min=所需的审批数不能为负数。 -settings.tags=标签 -settings.tags.protection=标签保护 -settings.tags.protection.pattern=标签表达式 +settings.tags=Git 标签 +settings.tags.protection=Git 标签保护 +settings.tags.protection.pattern=Git 标签表达式 settings.tags.protection.allowed=允许列表 settings.tags.protection.allowed.users=允许的账号 settings.tags.protection.allowed.teams=允许的团队 settings.tags.protection.allowed.noone=无 -settings.tags.protection.create=保护标签 -settings.tags.protection.none=没有受保护的标签。 -settings.tags.protection.pattern.description=您可以使用单个名称或 glob 表达式匹配或正则表达式来匹配多个标签。了解详情请访问 <a target="_blank" rel="noopener" href="%s">保护标签指南</a>。 +settings.tags.protection.create=保护 Git 标签 +settings.tags.protection.none=没有受保护的 Git 标签。 +settings.tags.protection.pattern.description=您可以使用单个名称或 glob 表达式匹配或正则表达式来匹配多个 Git 标签。了解详情请访问 <a target="_blank" rel="noopener" href="%s">保护标签指南</a>。 settings.bot_token=Bot 令牌 settings.chat_id=聊天 ID settings.thread_id=线程 ID @@ -2590,7 +2590,7 @@ settings.archive.success=仓库已成功归档。 settings.archive.error=仓库在归档时出现异常。请通过日志获取详细信息。 settings.archive.error_ismirror=请不要对镜像仓库归档,谢谢! settings.archive.branchsettings_unavailable=已归档仓库无法进行分支设置。 -settings.archive.tagsettings_unavailable=已归档仓库的标签设置不可用。 +settings.archive.tagsettings_unavailable=已归档仓库的 Git 标签设置不可用。 settings.archive.mirrors_unavailable=如果仓库已归档,镜像将不可用。 settings.unarchive.button=撤销仓库归档 settings.unarchive.header=撤销此仓库归档 @@ -2616,7 +2616,7 @@ settings.lfs_lock_path=要锁定的文件路径… settings.lfs_locks_no_locks=无锁定 settings.lfs_lock_file_no_exist=锁定的文件在默认分支中不存在 settings.lfs_force_unlock=强制解锁 -settings.lfs_pointers.found=找到 %d 个块指针 - %d 个关联, %d 个未关联(%d 个从仓库丢失) +settings.lfs_pointers.found=找到 %d 个块指针 — %d 个关联, %d 个未关联(%d 个从仓库丢失) settings.lfs_pointers.sha=Blob SHA settings.lfs_pointers.oid=OID settings.lfs_pointers.inRepo=在仓库中 @@ -2689,9 +2689,9 @@ diff.submodule_deleted=子模块 %[1]s 已从 %[2]s 中删除 diff.submodule_updated=子模块 %[1]s 已更新:%[2]s releases.desc=跟踪项目版本和下载。 -release.releases=发布 +release.releases=版本发布 release.detail=发布详情 -release.tags=标签 +release.tags=Git 标签 release.new_release=发布新版 release.draft=草稿 release.prerelease=预发布 @@ -2700,16 +2700,16 @@ release.latest=最新 release.compare=比较 release.edit=编辑 release.ahead.commits=<strong>%d</strong> 次提交 -release.ahead.target=在此版本发布后已加入到 %s -tag.ahead.target=自此标签到 %s +release.ahead.target=在此版本后已推送到 %s +tag.ahead.target=自此 Git 标签到 %s release.source_code=源代码 release.new_subheader=发布组织项目的版本。 release.edit_subheader=发布组织项目的版本。 -release.tag_name=标签名称 +release.tag_name=Git 标签名称 release.target=目标分支 -release.tag_helper=选择一个存在的标签或者创建新标签。 -release.tag_helper_new=新标签。此标签将从目标创建。 -release.tag_helper_existing=现有标签。 +release.tag_helper=选择一个存在的 Git 标签或者创建新 Git 标签。 +release.tag_helper_new=新 Git 标签。此 Git 标签将从目标创建。 +release.tag_helper_existing=现有 Git 标签。 release.title=发布标题 release.title_empty=标题不能为空。 release.message=描述这个版本 @@ -2720,22 +2720,22 @@ release.publish=发布版本 release.save_draft=保存草稿 release.edit_release=保存此次发布 release.delete_release=删除发布 -release.delete_tag=删除标签 +release.delete_tag=删除 Git 标签 release.deletion=删除发布 release.deletion_desc=删除发布只会从 Gitea 中移除发布。这不会影响 Git 的标签以及您仓库的内容和历史。是否继续? release.deletion_success=该发布已删除。 -release.deletion_tag_desc=将从仓库中删除此标签。仓库内容和历史记录保持不变。继续吗? -release.deletion_tag_success=该标签已删除。 -release.tag_name_already_exist=使用此标签名称的发布已经存在。 -release.tag_name_invalid=标签名称无效。 -release.tag_name_protected=标签名已受保护。 -release.tag_already_exist=此标签名已存在。 +release.deletion_tag_desc=将从仓库中删除此 Git 标签。仓库内容和历史记录保持不变。继续吗? +release.deletion_tag_success=该 Git 标签已删除。 +release.tag_name_already_exist=使用此 Git 标签名称的发布已经存在。 +release.tag_name_invalid=Git 标签名称无效。 +release.tag_name_protected=Git 标签名已受保护。 +release.tag_already_exist=此 Git 标签名已存在。 release.downloads=下载附件 release.download_count=下载:%s -release.add_tag_msg=使用发布的标题和内容作为标签消息。 -release.add_tag=仅创建标签 +release.add_tag_msg=使用发布的标题和内容作为 Git 标签消息。 +release.add_tag=仅创建 Git 标签 release.releases_for=%s 的发布 -release.tags_for=%s 的标签 +release.tags_for=%s 的 Git 标签 branch.name=分支名称 branch.already_exists=名为「%s」的分支已存在。 @@ -2751,7 +2751,7 @@ branch.create_from=从「%s」 branch.create_success=分支「%s」已创建。 branch.branch_already_exists=此仓库已存在名为「%s」的分支。 branch.branch_name_conflict=分支名称「%s」与已存在的分支「%s」冲突。 -branch.tag_collision=分支「%s」无法创建,因为同名的标签已经存在。 +branch.tag_collision=分支「%s」无法创建,因为同名的 Git 标签已经存在。 branch.deleted_by=删除人:%s branch.restore_success=分支「%s」已还原。 branch.restore_failed=分支「%s」还原失败。 @@ -2777,12 +2777,12 @@ branch.rename_protected_branch_failed=此分支受到 glob 语法规则的保护 branch.commits_divergence_from=提交分歧:落后 %[3]s %[1]d 个提交,领先 %[2]d 个提交 branch.commits_no_divergence=与分支 %[1]s 相同 -tag.create_tag=创建标签 %s -tag.create_tag_operation=创建标签 -tag.confirm_create_tag=创建标签 -tag.create_tag_from=基于「%s」创建新标签 +tag.create_tag=创建 Git 标签 %s +tag.create_tag_operation=创建 Git 标签 +tag.confirm_create_tag=创建 Git 标签 +tag.create_tag_from=基于「%s」创建新 Git 标签 -tag.create_success=标签「%s」已存在。 +tag.create_success=Git 标签「%s」已存在。 topic.manage_topics=管理主题 topic.done=保存 @@ -2799,7 +2799,7 @@ error.csv.invalid_field_count=无法渲染此文件,因为它在第 %d 行中 error.broken_git_hook=此仓库的 Git 钩子似乎已损坏。 请按照 <a target="_blank" rel="noreferrer" href="%s">文档</a> 来修复它们,然后推送一些提交来刷新状态。 [graphs] -component_loading=正在加载 %s... +component_loading=正在加载 %s… component_loading_failed=无法加载 %s component_loading_info=这可能需要一点时间… component_failed_to_load=意外的错误发生了。 @@ -3009,7 +3009,7 @@ dashboard.delete_missing_repos=删除所有丢失 Git 文件的仓库 dashboard.delete_missing_repos.started=删除所有丢失 Git 文件的仓库任务已启动。 dashboard.delete_generated_repository_avatars=删除生成的仓库头像 dashboard.sync_repo_branches=将缺少的分支从 Git 数据同步到数据库 -dashboard.sync_repo_tags=从 Git 数据同步标签到数据库 +dashboard.sync_repo_tags=从 Git 数据同步 Git 标签到数据库 dashboard.update_mirrors=更新镜像仓库 dashboard.repo_health_check=健康检查所有仓库 dashboard.check_repo_stats=检查所有仓库统计 @@ -3064,7 +3064,7 @@ dashboard.stop_endless_tasks=停止无限循环的工作流任务 dashboard.cancel_abandoned_jobs=取消已放弃的工作流任务 dashboard.start_schedule_tasks=启动工作流计划任务 dashboard.sync_branch.started=分支同步已开始 -dashboard.sync_tag.started=标签同步已开始 +dashboard.sync_tag.started=Git 标签同步已开始 dashboard.rebuild_issue_indexer=重建工单索引 dashboard.sync_repo_licenses=重新探测仓库许可证 @@ -3094,7 +3094,7 @@ users.update_profile_success=该帐户已更新。 users.edit_account=编辑帐号 users.max_repo_creation=最大仓库数 users.max_repo_creation_desc=(设置为 -1 表示使用全局默认值) -users.is_activated=该用户已激活 +users.is_activated=用户已激活 users.prohibit_login=禁用登录 users.is_admin=是管理员 users.is_restricted=受限 @@ -3127,7 +3127,7 @@ users.list_status_filter.not_2fa_enabled=未启用 2FA users.details=用户详细信息 emails.email_manage_panel=邮件管理 -emails.primary=主要的 +emails.primary=主 emails.activated=已激活 emails.filter_sort.email=邮箱 emails.filter_sort.email_reverse=邮箱(倒序) @@ -3257,9 +3257,9 @@ auths.oauth2_required_claim_value_helper=设置此值,只有拥有对应的声 auths.oauth2_group_claim_name=用于提供用户组名称的 Claim 声明名称。(可选) auths.oauth2_full_name_claim_name=全名声明名称。(可选,如果设置,用户的全名将始终与此声明同步) auths.oauth2_ssh_public_key_claim_name=SSH 公钥声明名称 -auths.oauth2_admin_group=管理员用户组的 Claim 声明值。(可选 - 需要上面的声明名称) -auths.oauth2_restricted_group=受限用户组的 Claim 声明值。(可选 - 需要上面的声明名称) -auths.oauth2_map_group_to_team=映射声明的组到组织团队。(可选 - 要求在上面填写声明的名字) +auths.oauth2_admin_group=管理员用户组的 Claim 声明值。(可选 — 需要上面的声明名称) +auths.oauth2_restricted_group=受限用户组的 Claim 声明值。(可选 — 需要上面的声明名称) +auths.oauth2_map_group_to_team=映射声明的组到组织团队。(可选 — 要求在上面填写声明的名字) auths.oauth2_map_group_to_team_removal=如果用户不属于相应的组,从已同步团队中移除用户 auths.enable_auto_register=允许用户自动注册 auths.sspi_auto_create_users=自动创建用户 @@ -3271,7 +3271,7 @@ auths.sspi_strip_domain_names_helper=如果选中此项,域名将从登录名 auths.sspi_separator_replacement=要使用的分隔符代替\, / 和 @ auths.sspi_separator_replacement_helper=用于替换下级登录名称分隔符的字符(例如「DOMAIN\user」)中的 \ 和用户主名字(如「user@example.org」中的 @)。 auths.sspi_default_language=默认语言 -auths.sspi_default_language_helper=SSPI 认证方法为用户自动创建的默认语言。如果您想要自动检测到语言,请留空。 +auths.sspi_default_language_helper=通过 SSPI 身份验证方式自动创建的用户的默认语言。如果您希望自动检测语言,请留空。 auths.tips=帮助提示 auths.tips.oauth2.general=OAuth2 认证 auths.tips.oauth2.general.tip=当注册新的 OAuth2 身份验证时,回调/重定向 URL 应该是: @@ -3283,11 +3283,11 @@ auths.tip.facebook=在 %s 注册一个新的应用,并添加产品「Facebook auths.tip.github=在 %s 注册一个 OAuth 应用程序 auths.tip.gitlab_new=在 %s 注册一个新的应用 auths.tip.google_plus=从谷歌 API 控制台 %s 获得 OAuth2 客户端凭据 -auths.tip.openid_connect=使用 OpenID 连接发现 URL ({server}/.well-known/openid-configuration) 来指定终点 +auths.tip.openid_connect=使用 OpenID 连接发现 URL「{server}/.well-known/openid-configuration」来指定终点 auths.tip.twitter=访问 %s,创建应用并确保启用了「允许此应用程序使用 Twitter 登录」的选项 auths.tip.discord=在 %s 上注册新应用程序 auths.tip.gitea=注册一个新的 OAuth2 应用程序。可以访问 %s 查看帮助 -auths.tip.yandex=在 %s 上创建一个新的应用。在「Yandex.Passport API」这部分中选择以下权限:「访问邮箱地址」,「访问用户头像」和「访问用户名,名字和姓氏,性别」 +auths.tip.yandex=在 %s 上创建一个新的应用。在「Yandex.Passport API」这部分中选择以下权限:「访问邮箱地址」、「访问用户头像」和「访问用户名,名字和姓氏,性别」 auths.tip.mastodon=输入您想要认证的 mastodon 实例的自定义 URL (或使用默认值) auths.edit=修改认证源 auths.activated=该认证源已经启用 @@ -3306,7 +3306,7 @@ auths.invalid_openIdConnectAutoDiscoveryURL=无效的自动发现 URL(这必 config.server_config=服务器配置 config.app_name=站点名称 -config.app_ver=Gitea版本 +config.app_ver=Gitea 版本 config.app_url=Gitea 基本 URL config.custom_conf=配置文件路径 config.custom_file_root_path=自定义文件根路径 @@ -3402,23 +3402,23 @@ config.cache_interval=缓存周期 config.cache_conn=缓存连接字符串 config.cache_item_ttl=缓存项目 TTL config.cache_test=测试缓存 -config.cache_test_failed=缓存测试失败: %v。 +config.cache_test_failed=缓存测试失败:%v。 config.cache_test_slow=缓存测试成功,但响应缓慢:%s。 config.cache_test_succeeded=缓存测试成功,在 %s 时间内得到响应。 -config.session_config=Session 配置 -config.session_provider=Session 提供者 +config.session_config=会话配置 +config.session_provider=会话提供者 config.provider_config=提供者配置 config.cookie_name=Cookie 名称 config.gc_interval_time=GC 周期 -config.session_life_time=Session 生命周期 +config.session_life_time=会话生命周期 config.https_only=仅限 HTTPS config.cookie_life_time=Cookie 生命周期 config.picture_config=图片和头像配置 config.picture_service=图片服务 config.disable_gravatar=禁用 Gravatar 头像 -config.enable_federated_avatar=启用 Federated Avatars +config.enable_federated_avatar=启用 Federated 头像 config.open_with_editor_app_help=用于克隆菜单的编辑器。如果为空将使用默认值。展开可以查看默认值。 config.git_config=Git 配置 @@ -3434,7 +3434,7 @@ config.git_pull_timeout=拉取操作超时 config.git_gc_timeout=GC 操作超时 config.log_config=日志配置 -config.logger_name_fmt=日志:%s +config.logger_name_fmt=%s 日志 config.disabled_logger=禁用 config.access_log_mode=访问日志模式 config.access_log_template=访问日志模板 @@ -3502,16 +3502,16 @@ notices.delete_success=系统通知已删除。 self_check.no_problem_found=尚未发现问题。 self_check.startup_warnings=启动警告: self_check.database_collation_mismatch=期望数据库使用的校验方式:%s -self_check.database_collation_case_insensitive=数据库正在使用一个校验 %s,这是一个不敏感的校验。虽然 Gitea 可以与它合作,但可能有一些罕见的情况不如预期的那样起作用。 -self_check.database_inconsistent_collation_columns=数据库正在使用 %s 的排序规则,但是这些列使用了不匹配的排序规则。这可能会造成一些意外问题。 +self_check.database_collation_case_insensitive=数据库正在使用一个排序规则 %s,这是一个不区分大小写的排序规则。虽然 Gitea 可以在此环境下工作,但可能存在一些无法按预期工作的罕见情况。 +self_check.database_inconsistent_collation_columns=数据库正在使用排序规则 %s,但这些列使用了不匹配的排序规则。这可能会导致一些意外问题。 self_check.database_fix_mysql=对于 MySQL/MariaDB 用户,您可以使用「gitea doctor convert」命令来解决校验问题。 或者您也可以通过「ALTER ... COLLATE ...」这样的 SQL 来手动解决这个问题。 self_check.database_fix_mssql=对于 MSSQL 用户,您现在只能通过「ALTER ... COLLATE ...」SQL 手动解决这个问题。 -self_check.location_origin_mismatch=当前 URL(%[1]s)与 Gitea 的 URL(%[2]s)不匹配 。 如果您正在使用反向代理,请确保设置正确的「Host」和「X-Forwarded-Proto」标头。 +self_check.location_origin_mismatch=当前 URL(%[1]s)与 Gitea 的 URL(%[2]s)不匹配。如果您正在使用反向代理,请确保设置正确的「Host」和「X-Forwarded-Proto」标头。 [action] create_repo=创建了仓库 <a href="%s">%s</a> -rename_repo=重命名仓库 <code>%[1]s</code> 为 <a href="%[2]s">%[3]s</a> -commit_repo=推送到了仓库 <a href="%[1]s">%[4]s</a> 的 <a href="%[2]s">%[3]s</a> 分支 +rename_repo=重命名了仓库 <code>%[1]s</code> 为 <a href="%[2]s">%[3]s</a> +commit_repo=推送了仓库 <a href="%[1]s">%[4]s</a> 的 <a href="%[2]s">%[3]s</a> 分支 create_issue=`创建了工单 <a href="%[1]s">%[3]s#%[2]s</a>` close_issue=`关闭了工单 <a href="%[1]s">%[3]s#%[2]s</a>` reopen_issue=`重新打开了工单 <a href="%[1]s">%[3]s#%[2]s</a>` @@ -3523,9 +3523,9 @@ comment_pull=`评论了合并请求 <a href="%[1]s">%[3]s#%[2]s</a>` merge_pull_request=`合并了合并请求 <a href="%[1]s">%[3]s#%[2]s</a>` auto_merge_pull_request=`自动合并了合并请求 <a href="%[1]s">%[3]s#%[2]s</a>` transfer_repo=将仓库 <code>%s</code> 转移至 <a href="%s">%s</a> -push_tag=推送了标签 <a href="%[2]s">%[3]s</a> 至仓库 <a href="%[1]s">%[4]s</a> -delete_tag=从<a href="%[1]s">%[3]s</a> 删除了标签 %[2]s -delete_branch=从 <a href="%[1]s">%[3]s</a> 删除分支 %[2]s +push_tag=推送了 Git 标签 <a href="%[2]s">%[3]s</a> 至仓库 <a href="%[1]s">%[4]s</a> +delete_tag=从 <a href="%[1]s">%[3]s</a> 删除了 Git 标签 %[2]s +delete_branch=从 <a href="%[1]s">%[3]s</a> 删除了分支 %[2]s compare_branch=比较 compare_commits=比较 %d 提交 compare_commits_general=比较提交 @@ -3533,13 +3533,13 @@ mirror_sync_push=从镜像同步了提交至仓库 <a href="%[1]s">%[4]s</a> 的 mirror_sync_create=从镜像同步了引用 <a href="%[2]s">%[3]s</a> 至仓库 <a href="%[1]s">%[4]s</a> mirror_sync_delete=从镜像同步并从 <a href="%[1]s">%[3]s</a> 删除了引用 <code>%[2]s</code> approve_pull_request=`批准了 <a href="%[1]s">%[3]s#%[2]s</a>` -reject_pull_request=`建议变更 <a href="%[1]s">%[3]s#%[2]s</a>` +reject_pull_request=`建议了变更 <a href="%[1]s">%[3]s#%[2]s</a>` publish_release=`在 <a href="%[1]s">%[3]s</a> 发布了 <a href="%[2]s"> %[4]s </a>` -review_dismissed=`取消了 <b>%[4]s</b> 对 <a href="%[1]s">%[3]s#%[2]s</a> 的变更请求` +review_dismissed=`取消了 <b>%[4]s</b> 对 <a href="%[1]s">%[3]s#%[2]s</a> 的评审` review_dismissed_reason=原因: create_branch=于 <a href="%[1]s">%[4]s</a> 创建了分支 <a href="%[2]s">%[3]s</a> starred_repo=点赞了 <a href="%[1]s">%[2]s</a> -watched_repo=开始关注 <a href="%[1]s">%[2]s</a> +watched_repo=关注了 <a href="%[1]s">%[2]s</a> [tool] now=现在 @@ -3711,7 +3711,7 @@ rubygems.dependencies.development=开发依赖 rubygems.required.ruby=需要 Ruby 版本 rubygems.required.rubygems=需要 RubyGem 版本 swift.registry=从命令行设置此仓库: -swift.install=在您的 <code>Package.swift</code>文件中添加该包: +swift.install=在您的 <code>Package.swift</code> 文件中添加该包: swift.install2=并运行以下命令: vagrant.install=若要添加一个 Vagrant box,请运行以下命令: settings.link=将此软件包链接到仓库 @@ -3728,7 +3728,7 @@ settings.delete.error=删除软件包失败。 owner.settings.cargo.title=Cargo 注册中心索引 owner.settings.cargo.initialize=初始化索引 owner.settings.cargo.initialize.description=使用 Cargo 注册中心时需要一个特殊索引的 Git 仓库。使用此选项将(重新)创建仓库并自动配置它。 -owner.settings.cargo.initialize.error=初始化 Cargo 索引失败: %v +owner.settings.cargo.initialize.error=初始化 Cargo 索引失败:%v owner.settings.cargo.initialize.success=Cargo 索引已经成功创建。 owner.settings.cargo.rebuild=重建索引 owner.settings.cargo.rebuild.description=如果索引与存储的 Cargo 包不同步,重建可能会有用。 diff --git a/services/migrations/github.go b/services/migrations/github.go index c6cd6ea173..a8a89dce0b 100644 --- a/services/migrations/github.go +++ b/services/migrations/github.go @@ -354,7 +354,8 @@ func (g *GithubDownloaderV3) convertGithubRelease(ctx context.Context, rel *gith // Prevent open redirect if !hasBaseURL(redirectURL, g.baseURL) && - !hasBaseURL(redirectURL, "https://objects.githubusercontent.com/") { + !hasBaseURL(redirectURL, "https://objects.githubusercontent.com/") && + !hasBaseURL(redirectURL, "https://release-assets.githubusercontent.com/") { WarnAndNotice("Unexpected AssetURL for assetID[%d] in %s: %s", asset.GetID(), g, redirectURL) return io.NopCloser(strings.NewReader(redirectURL)), nil diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 596f703131..46900f7b85 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -44,7 +44,7 @@ parts: source: . stage-packages: [ git, sqlite3, openssh-client ] build-packages: [ git, libpam0g-dev, libsqlite3-dev, build-essential] - build-snaps: [ go/1.24/stable, node/22/stable ] + build-snaps: [ go/1.25/stable, node/22/stable ] build-environment: - LDFLAGS: "" override-pull: | |