diff --git a/modules/git/commit.go b/modules/git/commit.go index 44e8725bbeae3..bfdcfe1f1f602 100644 --- a/modules/git/commit.go +++ b/modules/git/commit.go @@ -162,17 +162,25 @@ func AllCommitsCount(ctx context.Context, repoPath string, hidePRRefs bool, file // CommitsCountOptions the options when counting commits type CommitsCountOptions struct { - RepoPath string - Not string - Revision []string - RelPath []string - Since string - Until string + RepoPath string + Not string + Revision []string + RelPath []string + Since string + Until string + FollowRename bool } // CommitsCount returns number of total commits of until given revision. func CommitsCount(ctx context.Context, opts CommitsCountOptions) (int64, error) { - cmd := NewCommand("rev-list", "--count") + var cmd *Command + followRename := len(opts.RelPath) > 0 && opts.FollowRename + + if followRename { + cmd = NewCommand("--no-pager", "log", "--pretty=format:%H") + } else { + cmd = NewCommand("rev-list", "--count") + } cmd.AddDynamicArguments(opts.Revision...) @@ -181,6 +189,9 @@ func CommitsCount(ctx context.Context, opts CommitsCountOptions) (int64, error) } if len(opts.RelPath) > 0 { + if opts.FollowRename { + cmd.AddOptionValues("--follow") + } cmd.AddDashesAndList(opts.RelPath...) } @@ -188,7 +199,9 @@ func CommitsCount(ctx context.Context, opts CommitsCountOptions) (int64, error) if err != nil { return 0, err } - + if followRename { + return int64(len(strings.Split(stdout, "\n"))), nil + } return strconv.ParseInt(strings.TrimSpace(stdout), 10, 64) } diff --git a/modules/git/repo_commit.go b/modules/git/repo_commit.go index a44fd8c0e1a26..50633809dec8b 100644 --- a/modules/git/repo_commit.go +++ b/modules/git/repo_commit.go @@ -205,22 +205,29 @@ func (repo *Repository) FileChangedBetweenCommits(filename, id1, id2 string) (bo } // FileCommitsCount return the number of files at a revision -func (repo *Repository) FileCommitsCount(revision, file string) (int64, error) { +func (repo *Repository) FileCommitsCount(revision, file string, followRename ...bool) (int64, error) { + _followRename := false + if len(followRename) > 0 { + _followRename = followRename[0] + } + return CommitsCount(repo.Ctx, CommitsCountOptions{ - RepoPath: repo.Path, - Revision: []string{revision}, - RelPath: []string{file}, + RepoPath: repo.Path, + Revision: []string{revision}, + RelPath: []string{file}, + FollowRename: _followRename, }) } type CommitsByFileAndRangeOptions struct { - Revision string - File string - Not string - Page int - Since string - Until string + Revision string + File string + Not string + Page int + Since string + Until string + FollowRename bool } // CommitsByFileAndRange return the commits according revision file and the page @@ -232,9 +239,18 @@ func (repo *Repository) CommitsByFileAndRange(opts CommitsByFileAndRangeOptions) }() go func() { stderr := strings.Builder{} - gitCmd := NewCommand("rev-list"). - AddOptionFormat("--max-count=%d", setting.Git.CommitsRangeSize). + var gitCmd *Command + + if !opts.FollowRename { + gitCmd = NewCommand("rev-list") + } else { + gitCmd = NewCommand("--no-pager", "log"). + AddOptionFormat("--pretty=format:%%H"). + AddOptionFormat("--follow") + } + gitCmd.AddOptionFormat("--max-count=%d", setting.Git.CommitsRangeSize). AddOptionFormat("--skip=%d", (opts.Page-1)*setting.Git.CommitsRangeSize) + gitCmd.AddDynamicArguments(opts.Revision) if opts.Not != "" { @@ -253,7 +269,8 @@ func (repo *Repository) CommitsByFileAndRange(opts CommitsByFileAndRangeOptions) Stdout: stdoutWriter, Stderr: &stderr, }) - if err != nil { + + if err != nil && !(opts.FollowRename && err == io.ErrUnexpectedEOF) { _ = stdoutWriter.CloseWithError(ConcatenateError(err, (&stderr).String())) } else { _ = stdoutWriter.Close() @@ -270,7 +287,7 @@ func (repo *Repository) CommitsByFileAndRange(opts CommitsByFileAndRangeOptions) shaline := make([]byte, length+1) for { n, err := io.ReadFull(stdoutReader, shaline) - if err != nil || n < length { + if (err != nil && !(opts.FollowRename && err == io.ErrUnexpectedEOF)) || n < length { if err == io.EOF { err = nil } diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 8797ef4bc03d3..97d04efd51445 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1399,6 +1399,7 @@ editor.revert = Revert %s onto: commits.desc = Browse source code change history. commits.commits = Commits +commits.history_follow_rename = Include renames commits.no_commits = No commits in common. "%s" and "%s" have entirely different histories. commits.nothing_to_compare = These branches are equal. commits.search.tooltip = You can prefix keywords with "author:", "committer:", "after:", or "before:", e.g. "revert author:Alice before:2019-01-13". diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini index 42df483d8d741..da38ca30b0102 100644 --- a/options/locale/locale_uk-UA.ini +++ b/options/locale/locale_uk-UA.ini @@ -40,7 +40,7 @@ passcode=Код доступу webauthn_insert_key=Вставте ключ безпеки webauthn_sign_in=Натисніть кнопку на вашому ключі безпеки. Якщо ваш ключ без фізичної кнопки, поновно вставте ключ. webauthn_press_button=Будь ласка, натисніть кнопку на вашому ключі безпеки… -webauthn_use_twofa=Використовуйте дво-факторний код із Вашого телефона +webauthn_use_twofa=Використовуйте двофакторний код із Вашого телефона webauthn_error=Не вдалося прочитати ваш ключ безпеки. webauthn_unsupported_browser=Ваш браузер наразі не підтримує WebAuthn. webauthn_error_unknown=Сталася невідома помилка. Будь ласка, спробуйте ще раз. @@ -51,11 +51,11 @@ webauthn_error_empty=Ви повинні встановити назву для webauthn_error_timeout=Час очікування вичерпано, перш ніж ваш ключ було прочитано. Перезавантажте сторінку та спробуйте ще раз. webauthn_reload=Оновити -repository=Репозиторій +repository=Сховище organization=Організація mirror=Дзеркало issue_milestone=Етап -new_repo=Новий репозиторій +new_repo=Нове сховище new_migrate=Нова міграція new_mirror=Нове дзеркало new_org=Нова організація @@ -131,9 +131,9 @@ artifacts=Артефакти expired=Прострочено confirm_delete_artifact=Справді видалити артефакт '%s' ? -archived=Архівовані +archived=Архівовано -concept_code_repository=Репозиторій +concept_code_repository=Сховище concept_user_organization=Організація show_timestamps=Показувати часові мітки @@ -148,7 +148,7 @@ value=Значення filter=Фільтр filter.clear=Очистити фільтр -filter.is_archived=Архівовані +filter.is_archived=Архівовано filter.not_archived=Не архівовано filter.is_fork=Відгалужено filter.not_fork=Не відгалужено @@ -224,70 +224,68 @@ app_desc=Зручний власний сервіс хостингу репоз install=Легко встановити platform=Платформонезалежність lightweight=Невибагливість -lightweight_desc=Gitea має низькі вимоги до ресурсів та може працювати на недорогому Raspberry Pi. Збережіть свою машину енергію! license=Відкритий вихідний код [install] install=Встановлення installing_desc=Встановлення, будь ласка, зачекайте... title=Початкова конфігурація -docker_helper=Якщо ви запускаєте Gitea всередині Docker, будь ласка уважно прочитайте документацію перед тим, як щось змінити на цій сторінці. -require_db_desc=Gitea вимагає MySQL, PostgreSQL, MSSQL, SQLite3 або TiDB (протокол MySQL). +docker_helper=Якщо ви запускаєте Gitea у Docker, будь ласка, прочитайте документацію перед тим, як змінювати будь-які налаштування. +require_db_desc=Gitea потребує MySQL, PostgreSQL, MSSQL, SQLite3 або TiDB (протокол MySQL). db_title=Налаштування бази даних db_type=Тип бази даних host=Хост user=Ім'я кристувача password=Пароль -db_name=Ім'я бази даних +db_name=Назва бази даних db_schema=Схема -db_schema_helper=Залиште пустим для бази даних за замовчуванням ("публічна"). +db_schema_helper=Залиште пустим для типової схеми бази даних ("публічна"). ssl_mode=SSL path=Шлях -sqlite_helper=Шлях до файлу для бази даних SQLite3.Введіть абсолютний шлях, якщо ви запускаєте Gіtea як сервіс. +sqlite_helper=Шлях до файлу бази даних SQLite3.Введіть абсолютний шлях, якщо ви запускаєте Gіtea як сервіс. reinstall_error=Ви намагаєтеся встановити в наявну базу даних Gitea reinstall_confirm_message=Повторне встановлення в наявну базу даних Gitea може спричинити багато проблем. В більшості випадків, ви повинні використовувати свій наявний "app.ini" для запуску Gitea. Якщо ви знаєте, що робите, спробуйте наступне: -reinstall_confirm_check_1=Дані зашифровані з використанням SECRET_KEY з app.ini можуть бути втрачені: користувачі не зможуть увійти з 2FA/OTP і дзеркала можуть працювати некоректно. Встановлюючи цей прапорець, ви підтверджуєте, що в поточному файлі app.ini вказано правильне значення SECRET_KEY. -reinstall_confirm_check_2=Репозиторії та налаштування необхідно повторно синхронізувати. Встановлюючи цей прапорець, ви підтверджуєте, що ви синхронізуватимете хуки репозиторіїв та authorized_keys вручну. Ви підтверджуєте, що налаштування репозиторію і дзеркала є правильними. -reinstall_confirm_check_3=Ви підтверджуєте, що повністю впевнені в тому, що для цього екземпляра Gitea вказано правильне розташування app.ini та екземпляр слід встановити повторно. Ви підтверджуєте, що усвідомлюєте вищенаведені ризики. +reinstall_confirm_check_1=Дані, зашифровані за допомогою SECRET_KEY в app.ini, можуть бути втрачені: користувачі не зможуть увійти за допомогою 2FA/OTP, а дзеркала можуть працювати некоректно. Встановивши цей прапорець, ви підтверджуєте, що поточний файл app.ini містить правильний SECRET_KEY. +reinstall_confirm_check_2=Можливо, потрібно буде повторно синхронізувати сховища та налаштування. Встановивши цей прапорець, ви підтверджуєте, що будете ресинхронізувати хуки для сховищ і файл authorized_keys вручну. Ви підтверджуєте, що забезпечите правильність налаштувань сховища і дзеркала. +reinstall_confirm_check_3=Ви підтверджуєте, що абсолютно впевнені, що Gitea працює з правильним розташуванням файлу app.ini, і що вам потрібно перевстановити програму. Ви підтверджуєте, що усвідомлюєте вищевказані ризики. err_empty_db_path=Шлях до файлу бази даних SQLite3 не може бути порожнім. -no_admin_and_disable_registration=Ви не можете вимкнути реєстрацію до створення облікового запису адміністратора. +no_admin_and_disable_registration=Ви не можете вимкнути реєстрацію без створення облікового запису адміністратора. err_empty_admin_password=Пароль адміністратора не може бути порожнім. err_empty_admin_email=Електронна адреса адміністратора не може бути порожньою. -err_admin_name_is_reserved=Неправильне ім'я користувача-адміністратора - ім'я зарезервоване -err_admin_name_pattern_not_allowed=Ім'я адміністратора недійсне, це ім'я підпадає під зарезервований шаблон -err_admin_name_is_invalid=Неправильне ім'я користувача-адміністратора +err_admin_name_is_reserved=Неправильне ім'я користувача адміністратора - ім'я зарезервовано +err_admin_name_pattern_not_allowed=Ім'я користувача адміністратора недійсне, воно відповідає зарезервованому шаблону +err_admin_name_is_invalid=Недійсне ім'я користувача адміністратора general_title=Загальні налаштування app_name=Назва сайту app_name_helper=Тут ви можете ввести назву своєї компанії. -repo_path=Кореневий шлях репозиторія -repo_path_helper=Всі вилучені Git репозиторії будуть збережені в цей каталог. -lfs_path=Кореневої шлях Git LFS -lfs_path_helper=У цій папці будуть зберігатися файли Git LFS. Залиште порожнім, щоб вимкнути LFS. -run_user=Запуск від імені Користувача +repo_path=Кореневий шлях сховища +repo_path_helper=До цього каталогу буде збережено віддалені сховища Git. +lfs_path=Кореневий шлях Git LFS +lfs_path_helper=У цій теці будуть зберігатися файли Git LFS. Залиште порожнім, щоб вимкнути. +run_user=Виконати як domain=Домен сервера -domain_helper=Домен або адреса хоста сервера. +domain_helper=Домен або хост-адреса сервера. ssh_port=Порт SSH сервера ssh_port_helper=Номер порту, який використовує SSH сервер. Залиште порожнім, щоб вимкнути SSH. http_port=Gitea HTTP порт -http_port_helper=Номер порту, який буде прослуховуватися Giteas веб-сервером. +http_port_helper=Номер порту, який буде прослуховуватися сервером Giteas. app_url=Базова URL-адреса Gitea -app_url_helper=Базова адреса для HTTP(S) клонування через URL та повідомлень електронної пошти. -log_root_path=Шлях до лог файлу -log_root_path_helper=Файли журналу будуть записані в цей каталог. - -optional_title=Додаткові налаштування -email_title=Налаштування Email -smtp_addr=SMTP хост -smtp_port=SMTP порт -smtp_from=Відправляти Email від імені +app_url_helper=Базова адреса для URL-адрес клонів HTTP(S) та сповіщень електронною поштою. +log_root_path=Шлях до журналу +log_root_path_helper=Файли журналу будуть записані в цю теку. + +optional_title=Необов'язкові налаштування +email_title=Налаштування електронної пошти +smtp_addr=Сервер SMTP +smtp_port=Порт SMTP smtp_from_invalid=Адреса "Надіслати листа як" недійсна -smtp_from_helper=Електронна пошта для використання в Gіtea. Введіть звичайну електронну адресу або використовуйте формат: "Ім'я" . -mailer_user=SMTP Ім'я кристувача -mailer_password=SMTP Пароль -register_confirm=Потрібно підтвердити електронну пошту для реєстрації +smtp_from_helper=Адреса електронної пошти, яку буде використовувати Gitea. Введіть звичайну адресу електронної пошти або використовуйте формат «Ім'я» . +mailer_user=Ім'я користувача SMTP +mailer_password=Пароль SMTP +register_confirm=Вимагати підтвердження електронною поштою для реєстрації mail_notify=Увімкнути сповіщення електронною поштою -server_service_title=Сервер і налаштування зовнішніх служб +server_service_title=Налаштування сервера і сторонніх сервісів offline_mode=Увімкнути локальний режим offline_mode_popup=Відключити сторонні мережі доставки контенту і обслуговувати всі ресурси локально. disable_gravatar=Вимкнути Gravatar diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 285ce7666f65d..9593e9d442dd6 100644 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -4,14 +4,14 @@ explore=探索 help=帮助 logo=徽标 sign_in=登录 -sign_in_with_provider=使用 %s 登录 +sign_in_with_provider=使用「%s」登录 sign_in_or=或 sign_out=退出 sign_up=注册 link_account=链接账户 register=注册 -version=当前版本 -powered_by=Powered by %s +version=版本 +powered_by=由 %s 强力驱动 page=页面 template=模板 language=语言选项 @@ -28,7 +28,7 @@ return_to_gitea=返回 Gitea more_items=更多选项 username=用户名 -email=电子邮件地址 +email=邮箱地址 password=密码 access_token=访问令牌(Access Token) re_type=确认密码 @@ -42,7 +42,7 @@ webauthn_sign_in=按下安全密钥上的按钮。如果安全密钥没有按钮 webauthn_press_button=请按下安全密钥上的按钮… webauthn_use_twofa=使用来自手机中的两步验证码 webauthn_error=无法读取安全密钥。 -webauthn_unsupported_browser=你的浏览器目前不支持 WebAuthn。 +webauthn_unsupported_browser=您的浏览器目前不支持 WebAuthn。 webauthn_error_unknown=发生未知错误。请重试。 webauthn_error_insecure=WebAuthn 仅支持安全连接。如果要在 HTTP 协议上进行测试,请使用 "localhost" 或 "127.0.0.1" 作为访问来源 webauthn_error_unable_to_process=服务器无法处理您的请求。 @@ -58,11 +58,11 @@ issue_milestone=里程碑 new_repo=创建仓库 new_migrate=迁移外部仓库 new_mirror=创建新的镜像 -new_fork=新的仓库Fork +new_fork=派生新仓库 new_org=创建组织 new_project=创建项目 new_project_column=创建列 -manage_org=管理我的组织 +manage_org=管理组织 admin_panel=管理后台 account_settings=帐户设置 settings=设置 @@ -78,7 +78,7 @@ forks=派生 activities=最近活动 pull_requests=合并请求 -issues=工单管理 +issues=工单 milestones=里程碑 ok=确定 @@ -91,7 +91,7 @@ add=添加 add_all=添加所有 remove=移除 remove_all=移除所有 -remove_label_str=`删除标签 "%s"` +remove_label_str=删除标签「%s」 edit=编辑 view=查看 test=测试 @@ -129,9 +129,9 @@ rss_feed=RSS 订阅源 pin=固定 unpin=取消置顶 -artifacts=制品 +artifacts=产物 expired=已过期 -confirm_delete_artifact=您确定要删除制品'%s'吗? +confirm_delete_artifact=您确定要删除产物「%s」吗? archived=已归档 @@ -165,7 +165,7 @@ filter.public=公开 filter.private=私有 no_results_found=未找到结果 -internal_error_skipped=发生内部错误,但已被跳过: %s +internal_error_skipped=发生内部错误,但已跳过: %s [search] search=搜索... @@ -184,14 +184,14 @@ org_kind=搜索组织... team_kind=搜索团队... code_kind=搜索代码... code_search_unavailable=代码搜索当前不可用。请与网站管理员联系。 -code_search_by_git_grep=当前代码搜索结果由“git grep”提供。如果站点管理员启用仓库索引器,可能会有更好的结果。 +code_search_by_git_grep=当前代码搜索结果由「git grep」提供。如果站点管理员启用仓库索引器,可能会有更好的结果。 package_kind=搜索软件包... project_kind=搜索项目... branch_kind=搜索分支... tag_kind=搜索标签... -tag_tooltip=搜索匹配的标签。使用“%”来匹配任何序列的数字 +tag_tooltip=搜索匹配的标签。使用「%」来匹配任何序列的数字。 commit_kind=搜索提交记录... -runner_kind=搜索runners... +runner_kind=搜索运行器... no_results=未找到匹配结果 issue_kind=搜索工单... pull_kind=搜索合并请求... @@ -268,14 +268,14 @@ ssl_mode=SSL path=数据库文件路径 sqlite_helper=SQLite3 数据库的文件路径。如果以服务的方式运行 Gitea,请输入绝对路径。 reinstall_error=您正在尝试安装到一个已经有 Gitea 数据的数据库中 -reinstall_confirm_message=使用现有的 Gitea 数据库重新安装可能会导致多个问题。在大多数情况下,你应该使用你现有的 “app.ini” 来运行 Gitea。如果你知道自己在做什么,请确认以下内容: +reinstall_confirm_message=使用现有的 Gitea 数据库重新安装可能会导致多个问题。在大多数情况下,您应该使用您现有的「app.ini」来运行 Gitea。如果您知道自己在做什么,请确认以下内容: reinstall_confirm_check_1=使用 app.ini 中 SECRET KEY 加密的数据可能会丢失:用户可能无法使用 2FA/OTP 登录,仓库镜像可能无法正常工作。勾选此框,表示您确认当前 app.ini 文件包含正确的 SECRET KEY。 reinstall_confirm_check_2=代码仓库和设置可能需要重新同步。勾选此框,表示您确认将手动重新同步仓库和 SSH authorized_keys 的钩子。您确认您将确保代码仓库和镜像设置是正确的。 -reinstall_confirm_check_3=你确认你绝对肯定这个 Gitea 在正确的 app.ini 位置上运行,而且你确定你必须重新安装。你确认你知晓上述风险。 +reinstall_confirm_check_3=您确认您绝对肯定这个 Gitea 在正确的 app.ini 位置上运行,而且您确定您必须重新安装。您确认您知晓上述风险。 err_empty_db_path=SQLite 数据库文件路径不能为空。 no_admin_and_disable_registration=您不能够在未创建管理员用户的情况下禁止注册。 err_empty_admin_password=管理员密码不能为空。 -err_empty_admin_email=管理员电子邮件不能为空。 +err_empty_admin_email=管理员邮箱不能为空。 err_admin_name_is_reserved=管理员用户名无效,用户名是保留的 err_admin_name_pattern_not_allowed=管理员用户名无效,用户名是保留字 err_admin_name_is_invalid=管理员用户名无效 @@ -296,7 +296,7 @@ ssh_port_helper=SSH 服务器的端口号,为空则禁用它。 http_port=HTTP 服务端口 http_port_helper=Giteas web 服务器将侦听的端口号。 app_url=基础URL -app_url_helper=用于 HTTP (S) 克隆和电子邮件通知的基本地址。 +app_url_helper=用于 HTTP (S) 克隆和邮件通知的基本地址。 log_root_path=日志路径 log_root_path_helper=日志文件将写入此目录。 @@ -304,12 +304,12 @@ optional_title=可选设置 email_title=电子邮箱设置 smtp_addr=SMTP 主机地址 smtp_port=SMTP 端口 -smtp_from=电子邮件发件人 -smtp_from_invalid=`"发送电子邮件为"地址无效` -smtp_from_helper=请输入一个用于 Gitea 的电子邮件地址,或者使用完整格式:"名称" +smtp_from=邮件发件人 +smtp_from_invalid=「邮件发件人」地址无效 +smtp_from_helper=请输入一个用于 Gitea 的邮箱地址,或者使用完整格式:「名称」。 mailer_user=SMTP 用户名 mailer_password=SMTP 密码 -register_confirm=需要发电子邮件确认注册 +register_confirm=需要邮件确认注册 mail_notify=启用邮件通知提醒 server_service_title=服务器和第三方服务设置 offline_mode=启用本地模式 @@ -334,12 +334,12 @@ admin_title=管理员帐号设置 admin_name=管理员用户名 admin_password=管理员密码 confirm_password=确认密码 -admin_email=电子邮件地址 +admin_email=邮箱地址 install_btn_confirm=立即安装 test_git_failed=无法识别 'git' 命令:%v sqlite3_not_available=您所使用的发行版不支持 SQLite3,请从 %s 下载官方构建版,而不是 gobuild 版本。 invalid_db_setting=数据库设置无效: %v -invalid_db_table=数据库表 '%s' 无效: %v +invalid_db_table=数据库表「%s」无效:%v invalid_repo_path=仓库根目录设置无效:%v invalid_app_data_path=应用数据路径无效: %v run_user_not_match=运行用户名不是当前的用户名:%s -> %s @@ -348,14 +348,14 @@ 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_keep_email_private=默认情况下隐藏邮箱地址 +default_keep_email_private_popup=默认情况下,隐藏新用户帐户的邮箱地址。 default_allow_create_organization=默认情况下允许创建组织 default_allow_create_organization_popup=默认情况下, 允许新用户帐户创建组织。 default_enable_timetracking=默认情况下启用时间跟踪 default_enable_timetracking_popup=默认情况下启用新仓库的时间跟踪。 -no_reply_address=隐藏电子邮件 -no_reply_address_helper=具有隐藏电子邮件地址的用户的域名。例如, 用户名 "joe" 将以 "joe@noreply.example.org" 的身份登录到 Git 中. 如果隐藏的电子邮件域设置为 "noreply.example.org"。 +no_reply_address=隐藏邮件域 +no_reply_address_helper=具有隐藏邮箱地址的用户的域名。例如,如果隐藏邮箱域名设置为「noreply.example.org」,那么用户名「joe」在 Git 中将显示为「joe@noreply.example.org」。 password_algorithm=密码哈希算法 invalid_password_algorithm=无效的密码哈希算法 password_algorithm_helper=设置密码散列算法。算法有不同的要求和强度。 argon2 算法相当安全,但使用大量内存,因此可能不适合小型系统。 @@ -378,7 +378,7 @@ my_mirrors=我的镜像 view_home=访问 %s filter=其他过滤器 filter_by_team_repositories=按团队仓库筛选 -feed_of=`"%s"的源` +feed_of=「%s」的源 show_archived=已归档 show_both_archived_unarchived=显示已归档和未归档的 @@ -414,7 +414,7 @@ create_new_account=注册帐号 already_have_account=已有账号? sign_in_now=立即登录 disable_register_prompt=对不起,注册功能已被关闭。请联系网站管理员。 -disable_register_mail=已禁用注册的电子邮件确认。 +disable_register_mail=已禁用注册邮件确认。 manual_activation_only=请联系您的站点管理员来完成激活。 remember_me=记住此设备 remember_me.compromised=登录令牌不再有效,因为它可能表明帐户已被破坏。请检查您的帐户是否有异常活动。 @@ -423,34 +423,34 @@ forgot_password=忘记密码? need_account=需要一个帐户? sign_up_now=还没账号?马上注册。 sign_up_successful=帐户创建成功。欢迎! -confirmation_mail_sent_prompt_ex=一封新的确认邮件已经发送到 %s请在下一个 %s 中检查您的收件箱以完成注册过程。 如果您的注册电子邮件地址不正确,您可以重新登录并更改它。 +confirmation_mail_sent_prompt_ex=一封新的确认邮件已经发送到 %s。请在下一个 %s 中检查您的收件箱以完成注册流程。 如果您的注册邮箱地址不正确,您可以重新登录并更改它。 must_change_password=更新您的密码 allow_password_change=要求用户更改密码(推荐) -reset_password_mail_sent_prompt=确认电子邮件已被发送到 %s。请您在 %s 内检查您的收件箱 ,完成密码重置过程。 +reset_password_mail_sent_prompt=确认邮件已被发送到 %s。请您在 %s 内检查您的收件箱 ,完成密码重置流程。 active_your_account=激活您的帐户 account_activated=帐户已激活 prohibit_login=禁止登录 prohibit_login_desc=您的帐户被禁止登录,请与网站管理员联系。 resent_limit_prompt=您请求发送激活邮件过于频繁,请等待 3 分钟后再试! has_unconfirmed_mail=%s 您好,系统检测到您有一封发送至 %s 但未被确认的邮件。如果您未收到激活邮件,或需要重新发送,请单击下方的按钮。 -change_unconfirmed_mail_address=如果您的注册电子邮件地址不正确,您可以在此更改并重新发送新的确认电子邮件。 +change_unconfirmed_mail_address=如果您的注册邮箱地址不正确,您可以在此更改并重新发送新的确认邮件。 resend_mail=单击此处重新发送确认邮件 email_not_associate=您输入的邮箱地址未被关联到任何帐号! send_reset_mail=发送账户恢复邮件 reset_password=账户恢复 invalid_code=此确认密钥无效或已过期。 -invalid_code_forgot_password=你的确认码无效或者已过期,点击 这里 开始新的会话。 +invalid_code_forgot_password=您的确认码无效或已过期,点击 这里 开始新的会话。 invalid_password=您的密码与用于创建账户的密码不匹配。 reset_password_helper=恢复账户 reset_password_wrong_user=您以 %s 登录,但恢复账号链接是用于 %s。 password_too_short=密码长度不能少于 %d 位。 -non_local_account=非本地帐户不能通过 Gitea 的 web 界面更改密码。 +non_local_account=非本地帐户不能通过 Gitea 的 Web 界面更改密码。 verify=验证 scratch_code=验证口令 use_scratch_code=使用验证口令 -twofa_scratch_used=你已经使用了你的验证口令。你将会转到两步验证设置页面以便移除你的注册设备或者重新生成新的验证口令。 -twofa_passcode_incorrect=你的验证码不正确。如果你丢失了你的设备,请使用你的验证口令。 -twofa_scratch_token_incorrect=你的验证口令不正确。 +twofa_scratch_used=您已经使用了您的验证口令。您将会转到两步验证设置页面以便移除您的注册设备或者重新生成新的验证口令。 +twofa_passcode_incorrect=您的验证码不正确。如果您丢失了您的设备,请使用您的验证口令。 +twofa_scratch_token_incorrect=您的验证口令不正确。 twofa_required=您必须设置两步验证来访问仓库,或者尝试重新登录。 login_userpass=登录 login_openid=OpenID @@ -470,14 +470,14 @@ openid_connect_desc=所选的 OpenID URI 未知。在这里关联一个新帐户 openid_register_title=创建新帐户 openid_register_desc=所选的 OpenID URI 未知。在这里关联一个新帐户。 openid_signin_desc=输入您的OpenID地址。例如:alice.openid.example.org 或 https://openid.example.org/alice. -disable_forgot_password_mail=由于未设置电子邮件,帐户恢复被禁用。 请联系您的站点管理员。 -disable_forgot_password_mail_admin=帐户恢复仅在设置电子邮件后可用。 请设置电子邮件以启用帐户恢复。 -email_domain_blacklisted=您不能使用您的电子邮件地址注册。 +disable_forgot_password_mail=由于未设置邮箱,帐户恢复被禁用。 请联系您的站点管理员。 +disable_forgot_password_mail_admin=帐户恢复仅在设置邮箱后可用。 请设置邮箱以启用帐户恢复。 +email_domain_blacklisted=您不能使用您的邮箱地址注册。 authorize_application=应用授权 authorize_redirect_notice=如果您授权此应用,您将会被重定向到 %s。 -authorize_application_created_by=此应用由%s创建。 +authorize_application_created_by=此应用由 %s 创建。 authorize_application_description=如果您允许,它将能够读取和修改您的所有帐户信息,包括私人仓库和组织。 -authorize_application_with_scopes=范围: %s +authorize_application_with_scopes=范围:%s authorize_title=授权 %s 访问您的帐户? authorization_failed=授权失败 authorization_failed_desc=因为检测到无效请求,授权失败。请尝试联系您授权应用的管理员。 @@ -501,17 +501,17 @@ activate_account.text_2=请在 %s 时间内,点击以下链接激活您 activate_email=请验证您的邮箱地址 activate_email.title=%s,请验证您的邮箱 -activate_email.text=请在 %s 时间内,点击以下链接,以验证你的电子邮件地址: +activate_email.text=请在 %s 时间内,点击以下链接,以验证您的邮箱地址: register_notify=欢迎来到 %s register_notify.title=%[1]s,欢迎来到 %[2]s -register_notify.text_1=这是您的 %s 注册确认电子邮件 ! +register_notify.text_1=这是您的 %s 注册确认邮件 ! register_notify.text_2=您现在可以以用户名 %s 登录。 register_notify.text_3=如果此账户已为您创建,请先 设置您的密码。 reset_password=恢复您的账户 reset_password.title=%s,您已请求恢复您的帐户 -reset_password.text=请在 %s 时间内,点击以下链接,恢复你的账户: +reset_password.text=请在 %s 时间内,点击以下链接,以恢复您的账户: register_success=注册成功 @@ -533,26 +533,26 @@ issue.action.ready_for_review=@%[1]s 标记此合并请求已评审通过 issue.action.new=@%[1]s 创建了 #%[2]d. issue.in_tree_path=在 %s 中: -release.new.subject=%[2]s 中的 %[1]s 发布了 +release.new.subject=%[2]s 中的 %[1]s 已发布 release.new.text=@%[1]s 于 %[3]s 发布了 %[2]s -release.title=标题: %s +release.title=标题:%s release.note=注释: release.downloads=下载: -release.download.zip=源代码 (ZIP) -release.download.targz=源代码 (TAR.GZ) +release.download.zip=源代码(ZIP) +release.download.targz=源代码(TAR.GZ) -repo.transfer.subject_to=%s 想要将 "%s" 转让给 %s -repo.transfer.subject_to_you=%s 想要将 "%s" 转让给你 -repo.transfer.to_you=你 +repo.transfer.subject_to=%s 想要将「%s」转移给 %s +repo.transfer.subject_to_you=%s 想要将「%s」转移给您 +repo.transfer.to_you=您 repo.transfer.body=访问 %s 以接受或拒绝转移,亦可忽略此邮件。 -repo.collaborator.added.subject=%s 把你添加到了 %s -repo.collaborator.added.text=您已被添加为代码库的协作者: +repo.collaborator.added.subject=%s 把您添加到了 %s +repo.collaborator.added.text=您已被添加为仓库的协作者: team_invite.subject=%[1]s 邀请您加入组织 %[2]s team_invite.text_1=%[1]s 邀请您加入组织 %[3]s 中的团队 %[2]s。 team_invite.text_2=请点击下面的链接加入团队: -team_invite.text_3=注意:这是发送给 %[1]s 的邀请。如果您未曾收到过此类邀请,请忽略这封电子邮件。 +team_invite.text_3=注意:此邀请是发送给 %[1]s 的。如果您未预期收到此邀请,请忽略这封邮件。 [modal] yes=确认操作 @@ -592,9 +592,9 @@ size_error=长度必须为 %s。 min_size_error=长度最小为 %s 个字符。 max_size_error=长度最大为 %s 个字符。 email_error=不是一个有效的邮箱地址。 -url_error=`'%s' 不是一个有效的 URL。` -include_error=`必须包含子字符串 "%s"。` -glob_pattern_error=`匹配模式无效:%s.` +url_error=`「%s」不是一个有效的 URL。` +include_error=`必须包含子字符串「%s」。` +glob_pattern_error=`匹配表达式无效:%s.` regex_pattern_error=`正则表达式无效:%s.` username_error=` 只能包含字母数字字符('0-9','a-z','A-Z'), 破折号 ('-'), 下划线 ('_') 和点 ('.'). 不能以非字母数字字符开头或结尾,并且不允许连续的非字母数字字符。` invalid_group_team_map_error=`映射无效: %s` @@ -603,26 +603,26 @@ captcha_incorrect=验证码不正确。 password_not_match=密码不匹配。 lang_select_error=从列表中选出语言 -username_been_taken=用户名已被使用。 +username_been_taken=用户名已使用。 username_change_not_local_user=非本地用户不允许更改用户名。 -change_username_disabled=更改用户名已被禁用。 +change_username_disabled=更改用户名已禁用。 change_full_name_disabled=更改用户全名已禁用 username_has_not_been_changed=用户名未更改 -repo_name_been_taken=仓库名称已被使用。 -repository_force_private=“强制私有”已启用:私有仓库不能被公开。 +repo_name_been_taken=仓库名称已使用。 +repository_force_private=「强制私有」已启用:私有仓库不能被公开。 repository_files_already_exist=此仓库已存在文件。请联系系统管理员。 repository_files_already_exist.adopt=此仓库已存在文件,只能被收录。 repository_files_already_exist.delete=此仓库已存在文件,必须先删除他们。 repository_files_already_exist.adopt_or_delete=此仓库已存在文件,要么删除他们,要么收录他们。 visit_rate_limit=远程访问达到速度限制。 2fa_auth_required=远程访问需要双重验证。 -org_name_been_taken=组织名称已被使用。 -team_name_been_taken=团队名称已被使用。 +org_name_been_taken=组织名称已使用。 +team_name_been_taken=团队名称已使用。 team_no_units_error=至少选择一项仓库单元。 -email_been_used=该电子邮件地址已在使用中。 +email_been_used=该邮箱地址已在使用中。 email_invalid=此邮箱地址无效。 email_domain_is_not_allowed=用户 %s 与EMAIL_DOMAIN_ALLOWLIT 或 EMAIL_DOMAIN_BLOCKLIT 冲突。请确保您的操作是预期的。 -openid_been_used=OpenID 地址 "%s" 已被使用。 +openid_been_used=OpenID 地址「%s」已被使用。 username_password_incorrect=用户名或密码不正确。 password_complexity=密码未达到复杂程度要求: password_lowercase_one=至少一个小写字符 @@ -638,13 +638,13 @@ unsupported_login_type=此登录类型不支持手动删除帐户。 user_not_exist=该用户不存在 team_not_exist=团队不存在 last_org_owner=您不能从 "所有者" 团队中删除最后一个用户。组织中必须至少有一个所有者。 -cannot_add_org_to_team=组织不能被加入到团队中。 +cannot_add_org_to_team=组织不能加入到团队中。 duplicate_invite_to_team=此用户已被邀请为团队成员。 organization_leave_success=您已成功离开组织 %s。 -invalid_ssh_key=无法验证您的 SSH 密钥: %s -invalid_gpg_key=无法验证您的 GPG 密钥: %s -invalid_ssh_principal=无效的规则: %s +invalid_ssh_key=无法验证您的 SSH 密钥:%s +invalid_gpg_key=无法验证您的 GPG 密钥:%s +invalid_ssh_principal=无效的规则:%s must_use_public_key=您提供的密钥是私钥。不要在任何地方上传您的私钥,请改用您的公钥。 unable_verify_ssh_key=无法验证 SSH 密钥,请仔细检查是否有错误。 auth_failed=授权验证失败:%v @@ -677,27 +677,27 @@ follow=关注 unfollow=取消关注 user_bio=简历 disabled_public_activity=该用户已隐藏活动记录。 -email_visibility.limited=所有已认证用户均可看到您的电子邮件地址 -email_visibility.private=只有你本人和管理员可以看到你的电子邮件地址 +email_visibility.limited=所有已认证用户均可看到您的邮箱地址 +email_visibility.private=只有您本人和管理员可以看到您的邮箱地址 show_on_map=在地图上显示这个位置 settings=用户设置 -form.name_reserved=用户名 "%s" 被保留。 -form.name_pattern_not_allowed=用户名中不允许使用 "%s" 格式。 -form.name_chars_not_allowed=用户名 "%s" 包含无效字符。 +form.name_reserved=用户名「%s」被保留。 +form.name_pattern_not_allowed=用户名中不允许使用「%s」格式。 +form.name_chars_not_allowed=用户名「%s」包含无效字符。 block.block=屏蔽 block.block.user=屏蔽用户 block.block.org=屏蔽用户访问组织 -block.block.failure=屏蔽用户失败: %s +block.block.failure=屏蔽用户失败:%s block.unblock=取消屏蔽 -block.unblock.failure=屏蔽用户失败: %s +block.unblock.failure=取消屏蔽用户失败:%s block.blocked=您已屏蔽此用户。 block.title=屏蔽一个用户 block.info=屏蔽用户会阻止他们与仓库进行交互,例如打开或评论合并请求或出现问题。了解更多关于屏蔽用户的信息。 block.info_1=阻止用户在您的帐户和仓库中进行以下操作: -block.info_2=关注你的账号 -block.info_3=通过@提及您的用户名向您发送通知 +block.info_2=关注您的账号 +block.info_3=通过 @ 提及您的用户名向您发送通知 block.info_4=邀请您作为协作者到他们的仓库中 block.info_5=在仓库中点赞、派生或关注 block.info_6=打开和评论工单或合并请求 @@ -730,18 +730,18 @@ uid=UID webauthn=两步验证(安全密钥) public_profile=公开信息 -biography_placeholder=告诉我们一点您自己! (您可以使用Markdown) -location_placeholder=与他人分享你的大概位置 -profile_desc=控制您的个人资料对其他用户的显示方式。您的主要电子邮件地址将用于通知、密码恢复和基于网页界面的 Git 操作 -password_username_disabled=您不被允许更改你的用户名。更多详情请联系您的系统管理员。 -password_full_name_disabled=您不被允许更改你的全名。请联系您的站点管理员了解更多详情。 +biography_placeholder=告诉我们一点您自己! (您可以使用 Markdown) +location_placeholder=与他人分享您的大概位置 +profile_desc=控制您的个人资料对其他用户的显示方式。您的主邮箱地址将用于通知、密码恢复和基于网页的 Git 操作。 +password_username_disabled=您不被允许更改您的用户名。更多详情请联系您的系统管理员。 +password_full_name_disabled=您不被允许更改您的全名。请联系您的站点管理员了解更多详情。 full_name=自定义名称 website=个人网站 location=所在地区 update_theme=更新主题 update_profile=更新信息 update_language=更新语言 -update_language_not_found=语言 %s 不可用。 +update_language_not_found=语言「%s」不可用。 update_language_success=语言已更新。 update_profile_success=您的资料信息已经更新 change_username=您的用户名已更改。 @@ -752,7 +752,7 @@ cancel=取消操作 language=界面语言 ui=主题 hidden_comment_types=隐藏的评论类型 -hidden_comment_types_description=此处选中的注释类型不会显示在问题页面中。比如,勾选”标签“删除所有 " 添加/删除的 " 注释。 +hidden_comment_types_description=此处选中的注释类型不会显示在工单页面中。比如,勾选「标签」删除所有「{user} 添加/删除的 {label}」注释。 hidden_comment_types.ref_tooltip=注释此问题在何处被提及过,如另一个问题、代码提交等 hidden_comment_types.issue_ref_tooltip=注释用户在何处更改了与此问题相关联的分支/标签 comment_type_group_reference=引用 @@ -774,7 +774,7 @@ privacy=隐私设置 keep_activity_private=隐藏个人资料页面中的活动 keep_activity_private_popup=使活动仅对您和管理员可见 -lookup_avatar_by_mail=从电子邮箱地址查找头像 +lookup_avatar_by_mail=从邮箱地址查找头像 federated_avatar_lookup=Federated Avatar 查找 enable_custom_avatar=启动自定义头像 choose_new_avatar=选择新的头像 @@ -798,45 +798,45 @@ emails=邮箱地址 manage_emails=管理邮箱地址 manage_themes=选择默认主题 manage_openid=管理 OpenID 地址 -email_desc=您的主要电子邮件地址将用于通知、密码恢复,基于网页界面的Git操作(只要它不是设置为隐藏的)。 +email_desc=您的主邮箱地址将用于通知、密码恢复以及基于网页的 Git 操作(如果它未设为隐藏)。 theme_desc=这将是您在整个网站上的默认主题。 theme_colorblindness_help=颜色障碍主题支持 theme_colorblindness_prompt=Gitea 只能获得一些基本的颜色障碍支持,这些主题只定义了少数颜色。 这项工作仍在进行中,可以通过在主题的 CSS 文件中定义更多颜色来做更多的改进。 primary=主要 activated=已激活 requires_activation=需要激活 -primary_email=设为主要邮件地址 +primary_email=设为主邮箱 activate_email=发送激活邮件 activations_pending=等待激活 -can_not_add_email_activations_pending=有一个待处理的激活请求,请稍等几分钟后再尝试添加新的电子邮件地址。 +can_not_add_email_activations_pending=有一个待处理的激活请求,请稍等几分钟后再尝试添加新的邮箱地址。 delete_email=移除 -email_deletion=移除电子邮件地址 -email_deletion_desc=电子邮箱地址和相关信息将会被删除。使用此电子邮箱地址发送的Git提交将会保留,继续? -email_deletion_success=您的电子邮箱地址已被移除。 +email_deletion=移除邮箱地址 +email_deletion_desc=邮箱地址和相关信息将会被删除。使用此邮箱地址发送的Git提交将会保留,继续? +email_deletion_success=您的邮箱地址已移除。 theme_update_success=您的主题已更新。 theme_update_error=所选主题不存在。 openid_deletion=移除 OpenID 地址 -openid_deletion_desc=删除此 OpenID 地址将会阻止你使用它进行登录。你确定要继续吗? -openid_deletion_success=OpenID地址已被移除。 +openid_deletion_desc=删除此 OpenID 地址将会阻止您使用它进行登录。您确定要继续吗? +openid_deletion_success=OpenID地址已移除。 add_new_email=添加新的邮箱地址 add_new_openid=添加新的 OpenID URI -add_email=增加电子邮件地址 +add_email=新增邮箱地址 add_openid=添加 OpenID URI -add_email_confirmation_sent=一封确认邮件已经被发送至 %s,请检查您的收件箱并在 %s 内完成确认注册操作。 -add_email_success=新的电子邮件地址已添加。 -email_preference_set_success=电子邮件首选项已成功设置。 +add_email_confirmation_sent=一封确认邮件已经发送至「%s」,请检查您的收件箱并在 %s 内完成确认注册操作。 +add_email_success=新邮箱地址已添加。 +email_preference_set_success=邮件首选项已成功设置。 add_openid_success=新的 OpenID 地址已添加。 -keep_email_private=隐藏电子邮件地址 -keep_email_private_popup=这将会隐藏您的电子邮件地址,不仅在您的个人资料中,还在您使用Web界面创建合并请求或编辑文件时。已推送的提交将不会被修改。在提交中使用 %s 以和您的账号关联。 -openid_desc=OpenID 让你可以将认证转发到外部服务。 +keep_email_private=隐藏邮箱地址 +keep_email_private_popup=这将会隐藏您的邮箱地址,不仅在您的个人资料中,还在您使用 Web 界面创建合并请求或编辑文件时。已推送的提交将不会被修改。在提交中使用 %s 以和您的账号关联。 +openid_desc=OpenID 让您可以将认证转发到外部服务。 manage_ssh_keys=管理 SSH 密钥 manage_ssh_principals=管理SSH证书规则 manage_gpg_keys=管理 GPG 密钥 add_key=增加密钥 -ssh_desc=这些 SSH 公钥已经关联到你的账号。相应的私钥拥有完全操作你的仓库的权限。 -principal_desc=这些SSH证书规则已关联到你的账号将允许完全访问你的所有仓库。 -gpg_desc=这些 GPG 公钥已经关联到你的账号。请妥善保管你的私钥因为他们将被用于认证提交。 +ssh_desc=这些 SSH 公钥已经关联到您的账号。相应的私钥拥有完全操作您仓库的权限。 +principal_desc=这些SSH证书规则已关联到您的账号将允许完全访问您所有仓库。 +gpg_desc=这些 GPG 公钥已经关联到您的账号。请妥善保管您的私钥因为他们将被用于认证提交。 ssh_helper=需要帮助? 请查看有关 如何生成 SSH 密钥 或 常见 SSH 问题 寻找答案。 gpg_helper=需要帮助吗?看一看 GitHub 关于GPG 的指导。 add_new_key=增加 SSH 密钥 @@ -848,11 +848,11 @@ ssh_key_been_used=此 SSH 密钥已添加到服务器。 ssh_key_name_used=使用相同名称的SSH公钥已经存在! ssh_principal_been_used=此规则已经加入到了服务器。 gpg_key_id_used=使用相同名称的GPG公钥已经存在! -gpg_no_key_email_found=此 GPG 密钥与您帐户关联的任何已激活电子邮件地址均不匹配。如果您在提供的令牌上签名,它仍然可以被添加。 +gpg_no_key_email_found=此 GPG 密钥与您帐户关联的任何已激活邮箱地址均不匹配。如果您已对提供的令牌进行签名,仍可添加该密钥。 gpg_key_matched_identities=匹配的身份: -gpg_key_matched_identities_long=此密钥中包含的身份信息与下面这个该用户已激活电子邮件地址是相匹配的。因此,能与这些电子邮件地址相匹配的提交可以通过此密钥进行验证。 +gpg_key_matched_identities_long=此密钥中包含的身份信息与以下此用户已激活邮箱地址匹配。与这些邮箱地址相匹配的提交可通过此密钥进行验证。 gpg_key_verified=已验证的密钥 -gpg_key_verified_long=密钥已经用令牌进行了验证,并且可以用来验证匹配此用户任何已激活电子邮件地址的提交,以及匹配此密钥的任何身份。 +gpg_key_verified_long=密钥已通过令牌验证,除与此密钥匹配的任何身份外,还可用于验证与该用户任何已激活邮箱地址匹配的提交。 gpg_key_verify=验证 gpg_invalid_token_signature=提供的 GPG 密钥、签名和令牌不匹配或过期。 gpg_token_required=您必须为下面的令牌提供签名 @@ -860,9 +860,9 @@ gpg_token=令牌 gpg_token_help=您可以使用以下方式生成签名: gpg_token_signature=GPG 增强签名 key_signature_gpg_placeholder=以 '-----BEGIN PGP PUBLIC KEY BLOCK-----' 开头 -verify_gpg_key_success=GPG 密钥 %s 已被验证。 +verify_gpg_key_success=GPG 密钥「%s」已验证。 ssh_key_verified=已验证的密钥 -ssh_key_verified_long=密钥已经用令牌进行了验证,并且可以用来验证匹配此用户任何已激活电子邮件地址的提交。 +ssh_key_verified_long=密钥已通过令牌验证,可用于验证与该用户任何已激活邮箱地址匹配的提交。 ssh_key_verify=验证 ssh_invalid_token_signature=提供的 SSH 密钥、签名或令牌不匹配或令牌已过期。 ssh_token_required=您必须为下面的令牌提供签名 @@ -870,24 +870,24 @@ ssh_token=令牌 ssh_token_help=您可以使用以下方式生成签名: ssh_token_signature=增强 SSH 签名 key_signature_ssh_placeholder=以 '-----BEGIN SSH SIGNATURE -----' 开头 -verify_ssh_key_success=SSH 密钥 %s 已被验证。 +verify_ssh_key_success=SSH 密钥「%s」已验证。 subkeys=子项 key_id=键ID key_name=密钥名称 key_content=密钥内容 principal_content=内容 -add_key_success=SSH 密钥 %s 添加成功。 -add_gpg_key_success=GPG 密钥 %s 添加成功。 -add_principal_success=SSH证书规则 %s 添加成功。 +add_key_success=SSH 密钥「%s」添加成功。 +add_gpg_key_success=GPG 密钥「%s」添加成功。 +add_principal_success=SSH证书规则「%s」添加成功。 delete_key=删除 ssh_key_deletion=删除 SSH 密钥 gpg_key_deletion=删除 GPG 密钥 ssh_principal_deletion=删除 SSH 证书规则 ssh_key_deletion_desc=删除 SSH 公钥将取消对应的私钥对您的 Gitea 帐户的访问权限。继续? -gpg_key_deletion_desc=删除 GPG 公钥将无法认知使用对应私钥签名的提交,继续? +gpg_key_deletion_desc=删除 GPG 公钥将无法认证对应私钥签名的提交,继续? ssh_principal_deletion_desc=删除此 SSH 证书规则将取消它对您的账户的访问权限。继续? -ssh_key_deletion_success=GPG 密钥已被删除。 -gpg_key_deletion_success=GPG 密钥已被删除。 +ssh_key_deletion_success=SSH 密钥已删除。 +gpg_key_deletion_success=GPG 密钥已删除。 ssh_principal_deletion_success=此规则删除成功。 added_on=添加于 %s valid_until_date=有效期至 %s @@ -901,7 +901,7 @@ token_state_desc=7 天内使用过该密钥 principal_state_desc=7 天内使用过该规则 show_openid=在个人信息上显示 hide_openid=在个人信息上隐藏 -ssh_disabled=SSH 被禁用 +ssh_disabled=SSH 已禁用 ssh_signonly=SSH 目前已禁用,因此这些密钥仅用于提交签名验证。 ssh_externally_managed=此 SSH 密钥是由外部管理的 manage_social=管理关联社交帐户 @@ -921,7 +921,7 @@ access_token_deletion=删除 Access Token access_token_deletion_cancel_action=取消 access_token_deletion_confirm_action=刪除 access_token_deletion_desc=删除令牌将撤销程序对您账户的访问权限。此操作无法撤消。是否继续? -delete_token_success=令牌已经被删除。使用该令牌的应用将不再能够访问你的账号。 +delete_token_success=令牌已经被删除。使用该令牌的应用将不再能够访问您的账号。 repo_and_org_access=仓库和组织访问权限 permissions_public_only=仅公开 permissions_access_all=全部(公开、私有和受限) @@ -933,7 +933,7 @@ permission_anonymous_read=匿名读 permission_everyone_read=所有人可读 permission_everyone_write=所有人可写 access_token_desc=所选令牌权限仅限于对应的 API 路由的授权。阅读 文档 以获取更多信息。 -at_least_one_permission=你需要选择至少一个权限才能创建令牌 +at_least_one_permission=您需要选择至少一个权限才能创建令牌 permissions_list=权限: manage_oauth2_applications=管理 OAuth2 应用程序 @@ -941,13 +941,13 @@ edit_oauth2_application=编辑 OAuth2 应用程序 oauth2_applications_desc=OAuth2 应用允许第三方应用程序在此 Gitea 实例中安全验证用户。 remove_oauth2_application=删除 OAuth2 应用程序 remove_oauth2_application_desc=删除 OAuth2 应用将撤销所有签名的访问令牌。继续吗? -remove_oauth2_application_success=该应用已被删除。 +remove_oauth2_application_success=该应用已删除。 create_oauth2_application=创建新的 OAuth2 应用程序 create_oauth2_application_button=创建应用 create_oauth2_application_success=您已成功创建了一个新的 OAuth2 应用。 update_oauth2_application_success=您已成功更新了此 OAuth2 应用。 oauth2_application_name=应用名称 -oauth2_confidential_client=机密客户端。是否是能够维持凭据机密性的应用,比如网页应用程序。如果是本地应用程序请不要勾选,包括桌面和移动端应用。 +oauth2_confidential_client=机密客户端。对于需要保密的应用(例如 Web 应用),请选择此选项。对于包括桌面和移动应用在内的本机应用,请勿选择此选项。 oauth2_skip_secondary_authorization=首次授权后允许公共客户端跳过授权步骤。 可能会带来安全风险。 oauth2_redirect_uris=重定向 URI。每行一个 URI。 save_application=保存 @@ -959,7 +959,7 @@ oauth2_client_secret_hint=您离开或刷新此页面后将不会再显示此密 oauth2_application_edit=编辑 oauth2_application_create_description=OAuth2 应用允许您的第三方应用程序访问此实例的用户帐户。 oauth2_application_remove_description=移除一个OAuth2应用将会阻止它访问此实例上的已授权用户账户。是否继续? -oauth2_application_locked=如果配置启用,Gitea预注册一些OAuth2应用程序。 为了防止意外的行为, 这些应用既不能编辑也不能删除。请参阅OAuth2文档以获取更多信息。 +oauth2_application_locked=如果配置启用,Gitea 将在启动时预注册一些 OAuth2 应用程序。 为了防止意外的行为, 这些应用既不能编辑也不能删除。请参阅 OAuth2 文档以获取更多信息。 authorized_oauth2_applications=已授权的 OAuth2 应用 authorized_oauth2_applications_description=您已授予这些第三方应用程序访问您的个人 Gitea 账户的权限。请撤销那些您不再需要的应用程序的访问权限。 @@ -968,10 +968,10 @@ revoke_oauth2_grant=撤回权限 revoke_oauth2_grant_description=确定撤销此三方应用程序的授权,并阻止此应用程序访问您的数据? revoke_oauth2_grant_success=成功撤销了访问权限。 -twofa_desc=为保护你的账号密码安全,你可以使用智能手机或其它设备来接收时间强相关的一次性密码(TOTP)。 +twofa_desc=为保护您的账号密码安全,您可以使用智能手机或其它设备来接收时间强相关的一次性密码(TOTP)。 twofa_recovery_tip=如果您丢失了您的设备,您将能够使用一次性恢复密钥来重新获得对您账户的访问。 -twofa_is_enrolled=你的账号已启用了两步验证。 -twofa_not_enrolled=你的账号未开启两步验证。 +twofa_is_enrolled=您的账号已启用了两步验证。 +twofa_not_enrolled=您的账号未开启两步验证。 twofa_disable=禁用两步认证 twofa_scratch_token_regenerate=重新生成初始令牌 twofa_scratch_token_regenerated=您的初始令牌现在是 %s。将其存放在安全的地方,它将不会再次显示。 @@ -979,12 +979,12 @@ twofa_enroll=启用两步验证 twofa_disable_note=如果需要, 可以禁用双因素身份验证。 twofa_disable_desc=关掉两步验证会使得您的账号不安全,继续执行? regenerate_scratch_token_desc=如果您丢失了您的恢复密钥或已经使用它登录, 您可以在这里重置它。 -twofa_disabled=两步验证已被禁用。 +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=安全密钥是包含加密密钥的硬件设备。它们可以用于双因素身份验证。安全密钥必须支持 WebAuthn 身份验证器 标准。 @@ -1006,11 +1006,11 @@ remove_account_link_success=已取消绑定帐户。 hooks.desc=添加 Webhooks,它们将会在您拥有的所有仓库上触发 orgs_none=您现在还不是任何组织的成员。 -repos_none=你并不拥有任何仓库。 +repos_none=您并不拥有任何仓库。 delete_account=删除当前帐户 delete_prompt=此操作将永久删除您的用户帐户。它 不能 被撤消。 -delete_with_all_comments=你的帐户年龄小于 %s。为了避免幽灵评论,所有工单/合并请求的评论都将与它一起被删除。 +delete_with_all_comments=您的帐户年龄小于 %s。为了避免幽灵评论,所有工单/合并请求的评论都将与它一起被删除。 confirm_delete_account=确认删除帐户 delete_account_title=删除当前帐户 delete_account_desc=确实要永久删除此用户帐户吗? @@ -1034,8 +1034,8 @@ new_repo_helper=代码仓库包含了所有的项目文件,包括版本历史 owner=拥有者 owner_helper=由于最大仓库数量限制,一些组织可能不会显示在下拉列表中。 repo_name=仓库名称 -repo_name_profile_public_hint=.profile 是一个特殊的存储库,您可以使用它将 README.md 添加到您的公共组织资料中,任何人都可以看到。请确保它是公开的,并使用个人资料目录中的 README 对其进行初始化以开始使用。 -repo_name_profile_private_hint=.profile-private 是一个特殊的存储库,您可以使用它向您的组织成员个人资料添加 README.md,仅对组织成员可见。请确保它是私有的,并使用个人资料目录中的 README 对其进行初始化以开始使用。 +repo_name_profile_public_hint=.profile 是一个特殊的仓库,您可以使用它将 README.md 添加到您的公共组织资料中,任何人都可以看到。请确保它是公开的,并使用个人资料目录中的 README 对其进行初始化以开始使用。 +repo_name_profile_private_hint=.profile-private 是一个特殊的仓库,您可以使用它向您的组织成员个人资料添加 README.md,仅对组织成员可见。请确保它是私有的,并使用个人资料目录中的 README 对其进行初始化以开始使用。 repo_name_helper=理想的仓库名称应由简短、有意义和独特的关键词组成。".profile" 和 ".profile-private" 可用于为用户/组织添加 README.md。 repo_size=仓库大小 template=模板 @@ -1050,7 +1050,7 @@ visibility_fork_helper=(修改该值将会影响到所有派生仓库) clone_helper=不知道如何克隆?查看帮助 。 fork_repo=派生仓库 fork_from=派生自 -already_forked=你已经派生过 %s +already_forked=您已经派生过 %s fork_to_different_account=派生到其他账号 fork_visibility_helper=无法更改派生仓库的可见性。 fork_branch=要克隆到 Fork 的分支 @@ -1076,7 +1076,7 @@ issue_labels=工单标签 issue_labels_helper=选择一个工单标签集 license=授权许可 license_helper=选择授权许可文件。 -license_helper_desc=许可证说明了其他人可以和不可以用您的代码做什么。不确定哪一个适合你的项目?见 选择一个许可证 +license_helper_desc=许可证说明了其他人可以和不可以用您的代码做什么。不确定哪一个适合您的项目?见 选择一个许可证 multiple_licenses=多许可证 object_format=对象格式 object_format_helper=仓库的对象格式。之后无法更改。SHA1 是最兼容的。 @@ -1084,7 +1084,7 @@ readme=自述 readme_helper=选择自述文件模板。 readme_helper_desc=这是您可以为您的项目撰写完整描述的地方。 auto_init=初始化仓库(添加. gitignore、许可证和自述文件) -trust_model_helper=选择签名验证的“信任模型”。可能的选项是: +trust_model_helper=选择签名验证的信任模型。可能的选项是: trust_model_helper_collaborator=协作者:信任协作者的签名 trust_model_helper_committer=提交者:信任与提交者相符的签名 trust_model_helper_collaborator_committer=协作者+提交者:信任协作者同时是提交者的签名 @@ -1106,13 +1106,13 @@ mirror_address_protocol_invalid=提供的URL无效。只能使用http(s)://或gi mirror_lfs=大文件存储 (LFS) mirror_lfs_desc=镜像 LFS 数据。 mirror_lfs_endpoint=LFS 网址 -mirror_lfs_endpoint_desc=同步将尝试使用克隆网址来 确定 LFS 服务器。如果仓库 LFS 数据存储在其他位置,你还可以指定自定义网址。 +mirror_lfs_endpoint_desc=同步将尝试使用克隆网址来 确定 LFS 服务器。如果仓库 LFS 数据存储在其他位置,您还可以指定自定义网址。 mirror_last_synced=上次同步 mirror_password_placeholder=(未更改) mirror_password_blank_placeholder=(未设置) mirror_password_help=更改用户名以删除已储存的密码。 watchers=关注者 -stargazers=称赞者 +stargazers=已赞者 stars_remove_warning=这将清除此仓库的所有点赞数。 forks=派生仓库 stars=点赞数 @@ -1136,11 +1136,11 @@ user_search_tooltip=最多显示30名用户 tree_path_not_found=%[2]s 中不存在路径 %[1]s transfer.accept=接受转移 -transfer.accept_desc=`转移到 "%s"` +transfer.accept_desc=转移到「%s」 transfer.reject=拒绝转移 -transfer.reject_desc=`取消转移到 "%s"` -transfer.no_permission_to_accept=您没有权限接受此转让。 -transfer.no_permission_to_reject=您没有权限拒绝此转让。 +transfer.reject_desc=取消转移到「%s」 +transfer.no_permission_to_accept=您没有权限接受此转移。 +transfer.no_permission_to_reject=您没有权限拒绝此转移。 desc.private=私有库 desc.public=公开 @@ -1153,7 +1153,7 @@ desc.sha256=SHA256 template.items=模板选项 template.git_content=Git数据(默认分支) template.git_hooks=Git 钩子 -template.git_hooks_tooltip=你目前无法修改或删除被添加过的 Git Hook。仅当你信任模板仓库时才可以选择此项。 +template.git_hooks_tooltip=您目前无法修改或删除被添加过的 Git Hook。仅当您信任模板仓库时才可以选择此项。 template.webhooks=Web 钩子 template.topics=主题 template.avatar=头像 @@ -1166,9 +1166,9 @@ archive.title_date=该仓库已于 %s 归档。您可以查看文件或克隆它 archive.issue.nocomment=此仓库已存档,您不能在此工单添加评论。 archive.pull.nocomment=此仓库已存档,您不能在此合并请求添加评论。 -form.reach_limit_of_creation_1=你已经达到了 %d 仓库的上限。 -form.reach_limit_of_creation_n=你已经达到了 %d 个仓库的上限。 -form.name_reserved=仓库名称 %s 是被保留的。 +form.reach_limit_of_creation_1=您已经达到了 %d 仓库的上限。 +form.reach_limit_of_creation_n=您已经达到了 %d 个仓库的上限。 +form.name_reserved=仓库名称 %s 是保留的。 form.name_pattern_not_allowed=仓库名称中不允许使用 %s 格式。 need_auth=授权 @@ -1177,7 +1177,7 @@ migrate_service=迁移服务 migrate_options_mirror_helper=该仓库将是一个镜像 migrate_options_lfs=迁移 LFS 文件 migrate_options_lfs_endpoint.label=LFS 网址 -migrate_options_lfs_endpoint.description=迁移将尝试使用你的 Git remote 来 确定 LFS 服务器。如果仓库 LFS 数据存储在其他位置,你还可以指定自定义网址。 +migrate_options_lfs_endpoint.description=迁移将尝试使用您的 Git remote 来 确定 LFS 服务器。如果仓库 LFS 数据存储在其他位置,您还可以指定自定义网址。 migrate_options_lfs_endpoint.description.local=支持本地服务器路径。 migrate_options_lfs_endpoint.placeholder=如果留空,网址将从克隆 URL 中得到 migrate_items=迁移项目 @@ -1187,7 +1187,7 @@ migrate_items_labels=标签 migrate_items_issues=工单 migrate_items_pullrequests=合并请求 migrate_items_merge_requests=合并请求 -migrate_items_releases=版本发布 +migrate_items_releases=发布 migrate_repo=迁移仓库 migrate.clone_address=从 URL 迁移/克隆 migrate.clone_address_desc=现有仓库的 HTTP(s) 或 Git "clone" URL @@ -1268,7 +1268,7 @@ issues=工单 pulls=合并请求 projects=项目 packages=软件包 -actions=Actions +actions=工作流 labels=标签 org_labels_desc=组织级别的标签,可以被本组织下的 所有仓库 使用 org_labels_desc_manage=管理 @@ -1277,8 +1277,8 @@ milestone=里程碑 milestones=里程碑 commits=提交 commit=提交 -release=版本发布 -releases=版本发布 +release=发布 +releases=发布 tag=Git标签 released_this=发布 tagged_this=已标记 @@ -1339,7 +1339,7 @@ editor.must_be_on_a_branch=您必须在某个分支上才能对此文件进行 editor.fork_before_edit=您必须在派生这个仓库才能对此文件进行修改操作 editor.delete_this_file=删除文件 editor.must_have_write_access=您必须具有写权限才能对此文件进行修改操作。 -editor.file_delete_success=文件 %s 已被删除。 +editor.file_delete_success=文件「%s」已删除。 editor.name_your_file=命名文件... editor.filename_help=通过键入名称后跟斜线 ("/") 来添加目录。通过在输入框的开头键入 "退格" 来删除目录。 editor.or=或 @@ -1352,7 +1352,7 @@ editor.update=更新 %s editor.delete=删除 %s editor.patch=应用补丁 editor.patching=打补丁: -editor.fail_to_apply_patch=无法应用补丁 %s +editor.fail_to_apply_patch=无法应用补丁「%s」 editor.new_patch=新补丁 editor.commit_message_desc=添加一个可选的扩展描述... editor.signoff_desc=在提交日志消息末尾添加签署人信息。 @@ -1364,42 +1364,42 @@ editor.new_branch_name=为这次提交的新分支命名 editor.new_branch_name_desc=新的分支名称... editor.cancel=取消 editor.filename_cannot_be_empty=文件名不能为空。 -editor.filename_is_invalid=文件名 %s 无效 +editor.filename_is_invalid=文件名无效:「%s」。 editor.commit_email=提交邮箱地址 editor.invalid_commit_email=提交的邮箱地址无效。 -editor.branch_does_not_exist=此仓库中不存在名为 %s 的分支。 -editor.branch_already_exists=此仓库已存在名为 %s 的分支。 -editor.directory_is_a_file=%s 已经作为文件名在此仓库中存在。 -editor.file_is_a_symlink=`"%s" 是一个符号链接,无法在 web 编辑器中编辑` -editor.filename_is_a_directory=此仓库中已存在名为“%s” 的目录。 -editor.file_editing_no_longer_exists=正在编辑的文件 %s 已不存在。 -editor.file_deleting_no_longer_exists=正在删除的文件 %s 已不存在。 +editor.branch_does_not_exist=此仓库中不存在名为「%s」的分支。 +editor.branch_already_exists=此仓库已存在名为「%s」的分支。 +editor.directory_is_a_file=目录名「%s」已作为文件名在此仓库中存在。 +editor.file_is_a_symlink=`「%s」是一个符号链接,无法在 Web 编辑器中编辑` +editor.filename_is_a_directory=文件名「%s」已作为目录名在此仓库中存在。 +editor.file_editing_no_longer_exists=正在编辑的文件「%s」已不存在于此仓库。 +editor.file_deleting_no_longer_exists=正在删除的文件「%s」已不存在于此仓库。 editor.file_changed_while_editing=文件内容在您进行编辑时已经发生变动。单击此处 查看变动的具体内容,或者 再次提交 覆盖已发生的变动。 -editor.file_already_exists=此仓库已经存在名为 %s 的文件。 +editor.file_already_exists=此仓库已经存在名为「%s」的文件。 editor.commit_id_not_matching=提交ID与您开始编辑时的ID不匹配。请提交到补丁分支然后合并。 editor.push_out_of_date=推送似乎已经过时。 editor.commit_empty_file_header=提交一个空文件 editor.commit_empty_file_text=您要提交的文件是空的,继续吗? editor.no_changes_to_show=没有可以显示的变更。 -editor.fail_to_update_file=更新/创建文件 %s 失败。 +editor.fail_to_update_file=更新/创建文件「%s」失败。 editor.fail_to_update_file_summary=错误信息: editor.push_rejected_no_message=此修改被服务器拒绝并且没有反馈消息。请检查 Git Hook。 editor.push_rejected=此修改被服务器拒绝。请检查 Git Hook。 editor.push_rejected_summary=详细拒绝信息: editor.add_subdir=添加目录 -editor.unable_to_upload_files=上传文件至 %s 时发生错误:%v -editor.upload_file_is_locked=文件 %s 被 %s 锁定。 -editor.upload_files_to_dir=上传文件至 %s -editor.cannot_commit_to_protected_branch=不可以提交到受保护的分支 %s。 +editor.unable_to_upload_files=上传文件至「%s」失败:%v +editor.upload_file_is_locked=文件「%s」被 %s 锁定。 +editor.upload_files_to_dir=上传文件至「%s」 +editor.cannot_commit_to_protected_branch=不可以提交到受保护的分支「%s」。 editor.no_commit_to_branch=无法直接提交分支,因为: editor.user_no_push_to_branch=用户不能推送到分支 editor.require_signed_commit=分支需要签名提交 -editor.cherry_pick=Cherry-pick %s 到: +editor.cherry_pick=拣选提交 %s 到: editor.revert=将 %s 还原到: commits.desc=浏览代码修改历史 commits.commits=次代码提交 -commits.no_commits=没有共同的提交。%s 和 %s 的历史完全不同。 +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_branch=此分支 @@ -1419,11 +1419,11 @@ commits.view_file_diff=查看提交中的文件更改 commit.operations=操作 commit.revert=还原 -commit.revert-header=还原: %s +commit.revert-header=还原:%s commit.revert-content=选择要还原的分支: -commit.cherry-pick=Cherry-pick -commit.cherry-pick-header=Cherry-pick: %s -commit.cherry-pick-content=选择 cherry-pick 的目标分支: +commit.cherry-pick=拣选提交 +commit.cherry-pick-header=拣选提交:%s +commit.cherry-pick-content=选择要拣选提交的目标分支: commitstatus.error=错误 commitstatus.failure=失败 @@ -1440,14 +1440,14 @@ projects.create=创建项目 projects.title=标题 projects.new=创建项目 projects.new_subheader=在一个地方协调、跟踪和更新您的工作,让项目保持透明并按计划进行。 -projects.create_success=项目 %s 创建成功。 +projects.create_success=项目「%s」创建成功。 projects.deletion=删除项目 projects.deletion_desc=删除项目会从所有相关的工单中移除它。是否继续? -projects.deletion_success=该项目已被删除。 +projects.deletion_success=该项目已删除。 projects.edit=编辑项目 projects.edit_subheader=项目用于组织工单和跟踪进展情况。 projects.modify=更新项目 -projects.edit_success=项目 %s 更新成功。 +projects.edit_success=项目「%s」更新成功。 projects.type.none=无 projects.type.basic_kanban=基础看板 projects.type.bug_triage=Bug分类看板 @@ -1461,7 +1461,7 @@ projects.column.new=创建列 projects.column.set_default=设为默认 projects.column.set_default_desc=设置此列为未分类问题和合并请求的默认值 projects.column.delete=删除列 -projects.column.deletion_desc=删除项目列会将所有相关问题移到“未分类”。是否继续? +projects.column.deletion_desc=删除项目列会将所有相关问题移至默认列。是否继续? projects.column.color=颜色 projects.open=开启 projects.close=关闭 @@ -1516,9 +1516,9 @@ issues.label_templates.title=加载预定义的标签模板 issues.label_templates.info=还没有任何标签。您可以使用'创建标签'按钮或者加载预定义的标签集创建标签 issues.label_templates.helper=选择标签模板 issues.label_templates.use=使用标签集 -issues.label_templates.fail_to_load_file=加载标签模板文件 %s 时发生错误:%v +issues.label_templates.fail_to_load_file=加载标签模板文件「%s」时发生错误:%v issues.add_label=于 %[2]s 添加了标签 %[1]s -issues.add_labels=于 %s 添加 %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 @@ -1532,7 +1532,7 @@ issues.remove_project_at=`于 %[2]s 将此工单从项目 %[1]s 中删 issues.deleted_milestone=(已删除) issues.deleted_project=`(已删除)` issues.self_assign_at=`于 %s 指派给自己` -issues.add_assignee_at=`于 %[2]s 被 %[1]s 指派` +issues.add_assignee_at=`于 %[2]s 由 %[1]s 指派` issues.remove_assignee_at=`%s 取消了指派在 %s` issues.remove_self_assignment=`于 %s 取消了指派` issues.change_title_at=`于 %[3]s 修改标题 %[1]s 为 %[2]s` @@ -1589,11 +1589,11 @@ issues.action_assignee_no_select=未指派 issues.action_check=选中/取消选中 issues.action_check_all=选中/取消选中所有项目 issues.opened_by=由 %[3]s 于 %[1]s创建 -pulls.merged_by=由 %[3]s 创建,被合并于 %[1]s -pulls.merged_by_fake=由 %[2]s 创建,被合并于 %[1]s -issues.closed_by=由 %[3]s 创建,被关闭于 %[1]s +pulls.merged_by=由 %[3]s 创建,合并于 %[1]s +pulls.merged_by_fake=由 %[2]s 创建,合并于 %[1]s +issues.closed_by=由 %[3]s 创建,关闭于 %[1]s issues.opened_by_fake=由 %[2]s 于 %[1]s 打开 -issues.closed_by_fake=由 %[2]s 创建,被关闭于 %[1]s +issues.closed_by_fake=由 %[2]s 创建,关闭于 %[1]s issues.previous=上一页 issues.next=下一页 issues.open_title=开启中 @@ -1668,23 +1668,23 @@ issues.label_delete=删除 issues.label_modify=编辑标签 issues.label_deletion=删除标签 issues.label_deletion_desc=删除标签会将其从所有问题中删除。继续? -issues.label_deletion_success=该标签已被删除。 +issues.label_deletion_success=该标签已删除。 issues.label.filter_sort.alphabetically=按字母顺序排序 issues.label.filter_sort.reverse_alphabetically=按字母逆序排序 issues.label.filter_sort.by_size=最小尺寸 issues.label.filter_sort.reverse_by_size=最大尺寸 issues.num_participants=%d 名参与者 -issues.attachment.open_tab=`在新的标签页中查看 '%s'` -issues.attachment.download=`点击下载 '%s'` +issues.attachment.open_tab=`在新的标签页中查看「%s」` +issues.attachment.download=`点击下载「%s」` issues.subscribe=订阅 issues.unsubscribe=取消订阅 issues.unpin=取消置顶 issues.max_pinned=您不能置顶更多工单 -issues.pin_comment=于 %s 被置顶 +issues.pin_comment=于 %s 置顶 issues.unpin_comment=于 %s 取消置顶 issues.lock=锁定对话 issues.unlock=解锁对话 -issues.lock_duplicate=一个工单不能被锁定两次。 +issues.lock_duplicate=一个工单不能锁定两次。 issues.unlock_error=无法解锁一个未锁定的工单。 issues.lock_with_reason=因为 %s 而锁定,并将对话限制为协作者 %s issues.lock_no_reason=锁定并限制仅协作者 %s @@ -1711,13 +1711,13 @@ issues.timetracker_timer_discard=删除计时器 issues.timetracker_timer_manually_add=添加时间 issues.time_estimate_set=设置预计时间 -issues.time_estimate_display=预计: %s +issues.time_estimate_display=预估:%s issues.change_time_estimate_at=预估时间已修改为 %[1]s %[2]s -issues.remove_time_estimate_at=删除预计时间 %s +issues.remove_time_estimate_at=删除预估时间 %s issues.time_estimate_invalid=预计时间格式无效 issues.start_tracking_history=`开始工作 %s` issues.tracker_auto_close=当此工单关闭时,自动停止计时器 -issues.tracking_already_started=`你已经开始对 另一个工单 进行时间跟踪!` +issues.tracking_already_started=`您已经开始对 另一个工单 进行时间跟踪!` issues.stop_tracking=停止计时器 issues.stop_tracking_history=工作 %[1]s 于 %[2]s 停止 issues.cancel_tracking=取消 @@ -1776,7 +1776,7 @@ issues.dependency.remove_header=删除依赖项 issues.dependency.issue_remove_text=此操作将从工单中删除依赖。是否要继续? issues.dependency.pr_remove_text=此操作将从合并请求中删除依赖。是否要继续? issues.dependency.setting=为工单和合并请求启用依赖 -issues.dependency.add_error_same_issue=你不能让一个工单依赖于自己。 +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=依赖项已存在。 @@ -1818,9 +1818,9 @@ issues.review.stale=批准后已更新 issues.review.unofficial=非官方审批数 issues.assignee.error=因为未知原因,并非所有的指派都成功。 issues.reference_issue.body=内容 -issues.content_history.deleted=删除于 -issues.content_history.edited=最后编辑于 -issues.content_history.created=创建于 +issues.content_history.deleted=已删除 +issues.content_history.edited=已编辑 +issues.content_history.created=已创建 issues.content_history.delete_from_history=从历史记录中删除 issues.content_history.delete_from_history_confirm=从历史记录中删除吗? issues.content_history.options=选项 @@ -1874,7 +1874,7 @@ pulls.merged=已合并 pulls.merged_success=合并请求已成功合并和关闭 pulls.closed=合并请求已关闭 pulls.manually_merged=已手动合并 -pulls.merged_info_text=分支 %s 现在可以被删除了。 +pulls.merged_info_text=分支 %s 现在可以删除了。 pulls.is_closed=合并请求已经关闭。 pulls.title_wip_desc=`标题以 %s 开头以免合并请求意外合并。` pulls.cannot_merge_work_in_progress=此合并请求被标记为正在进行的工作。 @@ -1909,7 +1909,7 @@ pulls.waiting_count_1=%d 个正在等待审核 pulls.waiting_count_n=%d 个正在等待审核 pulls.wrong_commit_id=提交 id 必须在目标分支 上 -pulls.no_merge_desc=由于未启用合并选项,此合并请求无法被合并。 +pulls.no_merge_desc=由于未启用合并选项,此合并请求无法合并。 pulls.no_merge_helper=在仓库设置中启用合并选项或者手工合并请求。 pulls.no_merge_wip=这个合并请求无法合并,因为被标记为尚未完成的工作。 pulls.no_merge_not_ready=此合并请求尚未准备好合并,请检查审核状态和状态检查。 @@ -1923,7 +1923,7 @@ pulls.merge_manually=手动合并 pulls.merge_commit_id=合并提交 ID pulls.require_signed_wont_sign=分支需要签名的提交,但这个合并将不会被签名 -pulls.invalid_merge_option=你可以在此合并请求中使用合并选项。 +pulls.invalid_merge_option=您可以在此合并请求中使用合并选项。 pulls.merge_conflict=合并失败:合并时有冲突发生。提示:采用其它合并策略 pulls.merge_conflict_summary=错误信息 pulls.rebase_conflict=合并失败:变基提交有冲突:%[1]s。提示:采用其它合并策略 @@ -1931,7 +1931,7 @@ pulls.rebase_conflict_summary=错误信息 pulls.unrelated_histories=合并失败:两个分支没有共同历史。提示:尝试不同的策略 pulls.merge_out_of_date=合并失败:在生成合并时,主分支已更新。提示:再试一次。 pulls.head_out_of_date=合并失败:在生成合并时,head 已更新。提示:再试一次。 -pulls.has_merged=失败:合并请求已经被合并,您不能再次合并或更改目标分支。 +pulls.has_merged=失败:合并请求已经合并,您不能再次合并或更改目标分支。 pulls.push_rejected=推送失败:推送被拒绝。审查此仓库的 Git 钩子。 pulls.push_rejected_summary=详细拒绝信息 pulls.push_rejected_no_message=推送失败:此推送被拒绝但未提供其他信息。请检查此仓库的 Git 钩子。 @@ -1955,12 +1955,12 @@ pulls.closed_at=`于 %[2]s 关闭此合并请求 pulls.reopened_at=`重新打开此合并请求 %[2]s` pulls.cmd_instruction_hint=查看命令行提示 pulls.cmd_instruction_checkout_title=检出 -pulls.cmd_instruction_checkout_desc=从你的仓库中检出一个新的分支并测试变更。 +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 …”。 +pulls.clear_merge_message_hint=清除合并消息只会删除提交消息内容,并保留生成的 Git 附加内容,如「Co-Authored-By …」。 pulls.auto_merge_button_when_succeed=(当检查成功时) pulls.auto_merge_when_succeed=在所有检查成功后自动合并 @@ -1975,7 +1975,7 @@ pulls.auto_merge_newly_scheduled_comment=`已于 %[1]s 设置此合并请求在 pulls.auto_merge_canceled_schedule_comment=`已于 %[1]s 取消了自动合并设置 ` pulls.delete.title=删除此合并请求? -pulls.delete.text=你真的要删除这个合并请求吗? (这将永久删除所有内容。如果你打算将内容存档,请考虑关闭它) +pulls.delete.text=您真的要删除这个合并请求吗? (这将永久删除所有内容。如果您打算将内容存档,请考虑关闭它) pulls.recently_pushed_new_branches=您已经于%[2]s推送了分支 %[1]s pulls.upstream_diverging_prompt_behind_1=该分支落后于 %[2]s %[1]d 个提交 @@ -1984,7 +1984,7 @@ pulls.upstream_diverging_prompt_base_newer=基础分支 %s 有新的更改 pulls.upstream_diverging_merge=同步派生 pulls.upstream_diverging_merge_confirm=要将 %[1]s 合并到 %[2]s 吗? -pull.deleted_branch=(已删除): %s +pull.deleted_branch=(已删除):%s pull.agit_documentation=查看有关 AGit 的文档 comments.edit.already_changed=无法保存对评论的更改。其内容似乎已被其他用户更改。 请刷新页面并重新编辑以避免覆盖他们的更改 @@ -2003,15 +2003,15 @@ milestones.desc=描述 milestones.due_date=截止日期(可选) milestones.clear=清除 milestones.invalid_due_date_format=到期时间的格式必须是 'yyyy-mm-dd' 的形式。 -milestones.create_success=里程碑 %s 创建成功。 +milestones.create_success=里程碑「%s」创建成功。 milestones.edit=编辑里程碑 milestones.edit_subheader=里程碑组织工单,合并请求和跟踪进度。 milestones.cancel=取消 milestones.modify=更新里程碑 -milestones.edit_success=里程碑 %s 已经更新。 +milestones.edit_success=里程碑「%s」更新成功。 milestones.deletion=删除里程碑 milestones.deletion_desc=删除该里程碑将会移除所有工单中相关的信息。是否继续? -milestones.deletion_success=里程碑已被删除。 +milestones.deletion_success=里程碑已删除。 milestones.filter_sort.name=名称 milestones.filter_sort.earliest_due_data=到期日从远到近 milestones.filter_sort.latest_due_date=到期日从近到远 @@ -2020,7 +2020,7 @@ milestones.filter_sort.most_complete=完成度从高到低 milestones.filter_sort.most_issues=工单从多到少 milestones.filter_sort.least_issues=工单从少到多 -signing.will_sign=这个提交将用密钥 "%s" 签名。 +signing.will_sign=这个提交将用密钥 「%s」签名。 signing.wont_sign.error=在检查提交是否可以被签名时出错。 signing.wont_sign.nokey=没有可用的密钥来签署这个提交。 signing.wont_sign.never=提交从未签名。 @@ -2039,7 +2039,7 @@ ext_wiki.desc=链接到外部 wiki。 wiki=百科 wiki.welcome=欢迎来到百科! -wiki.welcome_desc=百科允许你撰写和与协作者分享文档 +wiki.welcome_desc=百科允许您撰写和与协作者分享文档。 wiki.desc=撰写和与协作者分享文档 wiki.create_first_page=创建第一个页面 wiki.page=页面 @@ -2056,15 +2056,15 @@ wiki.file_revision=页面历史 wiki.wiki_page_revisions=页面历史 wiki.back_to_wiki=返回百科 wiki.delete_page_button=删除页面 -wiki.delete_page_notice_1=百科页面 %s 删除后无法恢复,是否继续? +wiki.delete_page_notice_1=百科页面「%s」删除后无法恢复,是否继续? wiki.page_already_exists=相同名称的 Wiki 页面已经存在。 -wiki.reserved_page=百科页面名称 %s 是被保留的。 +wiki.reserved_page=百科页面名称「%s」是保留的。 wiki.pages=所有页面 wiki.last_updated=最后更新于 %s wiki.page_name_desc=输入此 Wiki 页面的名称。特殊名称有:'Home', '_Sidebar' 和 '_Footer'。 wiki.original_git_entry_tooltip=查看原始的 Git 文件而不是使用友好链接。 -activity=动态 +activity=活动 activity.navbar.pulse=活动 activity.navbar.code_frequency=代码频率 activity.navbar.contributors=贡献者 @@ -2078,27 +2078,27 @@ activity.period.quarterly=3个月 activity.period.semiyearly=6 个月 activity.period.yearly=1年 activity.overview=概览 -activity.active_prs_count_1=%d 合并请求 -activity.active_prs_count_n=%d 合并请求 +activity.active_prs_count_1=%d 个合并请求 +activity.active_prs_count_n=%d 个合并请求 activity.merged_prs_count_1=合并请求 activity.merged_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.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_opened_by=%[2]s 创建了 %[1]s activity.merged_prs_label=已合并 activity.opened_prs_label=已创建 -activity.active_issues_count_1=%d 工单 -activity.active_issues_count_n=%d 工单 +activity.active_issues_count_1=%d 张工单 +activity.active_issues_count_n=%d 张工单 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_1=%d 张工单 +activity.title.issues_n=%d 张工单 +activity.title.issues_closed_from=%s 从 %s 关闭 activity.title.issues_created_by=%[2]s 创建了 %[1]s activity.closed_issue_label=已关闭 activity.new_issues_count_1=创建工单 @@ -2108,23 +2108,23 @@ 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=在此期间没有任何提交活动。 activity.git_stats_exclude_merges=排除合并, -activity.git_stats_author_1=%d 作者 -activity.git_stats_author_n=%d 作者 +activity.git_stats_author_1=%d 位作者 +activity.git_stats_author_n=%d 位作者 activity.git_stats_pushed_1=已经推送 activity.git_stats_pushed_n=已经推送 -activity.git_stats_commit_1=%d 提交 -activity.git_stats_commit_n=%d 提交 +activity.git_stats_commit_1=%d 次提交 +activity.git_stats_commit_n=%d 次提交 activity.git_stats_push_to_branch=到 %s 和 activity.git_stats_push_to_all_branches=到所有分支。 activity.git_stats_on_default_branch=在 %s 上, -activity.git_stats_file_1=%d 文件 -activity.git_stats_file_n=%d 文件 +activity.git_stats_file_1=%d 个文件 +activity.git_stats_file_n=%d 个文件 activity.git_stats_files_changed_1=已经改变 activity.git_stats_files_changed_n=已经改变 activity.git_stats_additions=而且 @@ -2136,15 +2136,15 @@ activity.git_stats_deletion_n=删除 %d 行 contributors.contribution_type.filter_label=贡献类型: contributors.contribution_type.commits=提交 -contributors.contribution_type.additions=更多 +contributors.contribution_type.additions=新增 contributors.contribution_type.deletions=删除 settings=设置 -settings.desc=设置是你可以管理仓库设置的地方 +settings.desc=设置是您可以管理仓库设置的地方 settings.options=仓库 settings.public_access=公开访问 -settings.public_access_desc=配置公共访客访问权限以覆盖此存储库的默认值。 -settings.public_access.docs.not_set=未设置:没有额外的公共访问权限。访客权限遵循存储库的可见性和成员权限。 +settings.public_access_desc=配置公共访客访问权限以覆盖此仓库的默认值。 +settings.public_access.docs.not_set=未设置:没有额外的公共访问权限。访客权限遵循仓库的可见性和成员权限。 settings.public_access.docs.anonymous_read=匿名可读:未登录的用户可以通过读取权限访问单元。 settings.public_access.docs.everyone_read=所有人可读:所有登录用户都可以通过读取权限访问单元。读取问题/拉取请求单元的权限也意味着用户可以创建新的问题/拉取请求。 settings.public_access.docs.everyone_write=所有人可写:所有登录用户都有写入权限。只有百科支持此权限。 @@ -2161,14 +2161,14 @@ 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.disabled_push_mirror.pull_mirror_warning=现在,这只能在“迁移外部仓库”菜单中完成。欲了解更多信息,请咨询: +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=您的仓库将镜像同步另一个仓库的更改。请注意,您现在不能创建任何新的镜像。 settings.mirror_settings.docs.can_still_use=虽然您不能修改现有镜像或创建新镜像,但您仍然可以使用已存在的镜像。 settings.mirror_settings.docs.pull_mirror_instructions=要创建一个拉取镜像,请参阅: settings.mirror_settings.docs.more_information_if_disabled=您可以在这里找到更多关于推送和拉取镜像的信息: settings.mirror_settings.docs.doc_link_title=如何镜像仓库? -settings.mirror_settings.docs.doc_link_pull_section=文档中的 “从远程仓库拉取” 部分。 +settings.mirror_settings.docs.doc_link_pull_section=文档中的「从远程仓库拉取」部分。 settings.mirror_settings.docs.pulling_remote_title=从远程仓库拉取代码 settings.mirror_settings.mirrored_repository=镜像库 settings.mirror_settings.pushed_repository=推送仓库 @@ -2198,13 +2198,13 @@ settings.failed_to_change_default_wiki_branch=更改百科默认分支失败。 settings.use_external_wiki=使用外部百科 settings.external_wiki_url=外部 Wiki 链接 settings.external_wiki_url_error=外部百科链接无效 -settings.external_wiki_url_desc=当点击百科标签时,访问者将被重定向到外部百科系统的URL。 +settings.external_wiki_url_desc=当点击百科标签时,访问者将被重定向到外部百科系统的 URL。 settings.issues_desc=启用工单系统 settings.use_internal_issue_tracker=使用内置的轻量级工单管理系统 settings.use_external_issue_tracker=使用外部的工单管理系统 settings.external_tracker_url=外部工单系统 URL settings.external_tracker_url_error=外部百科链接无效 -settings.external_tracker_url_desc=当点击工单标签时,访问者将被重定向到外部工单系统的URL。 +settings.external_tracker_url_desc=当点击工单标签时,访问者将被重定向到外部工单系统的 URL。 settings.tracker_url_format=外部工单管理系统的 URL 格式 settings.tracker_url_format_error=外部工单链接无效 settings.tracker_issue_style=外部工单管理系统的编号格式 @@ -2222,14 +2222,14 @@ 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=默认开启允许维护者编辑 -settings.releases_desc=启用发布 +settings.releases_desc=启用仓库发布 settings.packages_desc=启用仓库软件包注册中心 settings.projects_desc=启用项目 settings.projects_mode_desc=项目模式 (要显示的项目类型) settings.projects_mode_repo=仅仓库项目 settings.projects_mode_owner=仅限用户或组织项目 settings.projects_mode_all=所有项目 -settings.actions_desc=启用 Actions +settings.actions_desc=启用仓库工作流 settings.admin_settings=管理员设置 settings.admin_enable_health_check=启用仓库健康检查 (git fsck) settings.admin_code_indexer=代码索引器 @@ -2252,23 +2252,23 @@ settings.convert_fork_notices_1=该操作会将派生仓库转换为普通仓库 settings.convert_fork_confirm=转换仓库 settings.convert_fork_succeed=此派生仓库已经转换为普通仓库。 settings.transfer=转移仓库所有权 -settings.transfer.rejected=代码库转移被拒绝。 -settings.transfer.success=代码库转移成功。 -settings.transfer.blocked_user=无法传输仓库,因为您被新的所有者屏蔽。 +settings.transfer.rejected=仓库转移被拒绝。 +settings.transfer.success=仓库转移成功。 +settings.transfer.blocked_user=无法转移仓库,因为您已被新所有者屏蔽。 settings.transfer_abort=取消转移 -settings.transfer_abort_invalid=你不能取消不存在的代码库转移。 -settings.transfer_abort_success=成功取消了将代码库转让给 %s。 +settings.transfer_abort_invalid=您不能取消不存在的仓库转移。 +settings.transfer_abort_success=成功取消将仓库转移给 %s。 settings.transfer_desc=您可以将仓库转移至您拥有管理员权限的帐户或组织。 settings.transfer_form_title=输入仓库名称以做确认: -settings.transfer_in_progress=当前正在进行转让。 如果你想将此代码库转让给另一个用户,请取消它。 -settings.transfer_notices_1=- 如果将此仓库转移给其他用户, 您将失去对此仓库的访问权限。 -settings.transfer_notices_2=-如果将其转移到您 (共同) 拥有的组织,您可以继续访问该仓库。 -settings.transfer_notices_3=- 如果仓库是私有的并且被转移给某个用户,那么此操作可以确保该用户至少具有读权限(以及必要时的更改权限)。 -settings.transfer_notices_4=- 如果存储库属于某个组织,而您将其转移给另一个组织或个人,那么您将失去存储库工单与其组织项目系统之间的链接。 +settings.transfer_in_progress=当前正在进行转移。 如果您想将此仓库转移给另一个用户,请取消它。 +settings.transfer_notices_1=- 如果将此仓库转移给其他用户,您将失去对此仓库的访问权限。 +settings.transfer_notices_2=- 如果将其转移到您(共同)拥有的组织,您可以继续访问该仓库。 +settings.transfer_notices_3=- 如果仓库是私有的并且被转移给某个用户,那么此操作可以确保该用户至少具有读权限(以及必要时的更改权限)。 +settings.transfer_notices_4=- 如果仓库属于某个组织,而您将其转移给另一个组织或个人,那么您将失去仓库工单与其组织项目系统之间的链接。 settings.transfer_owner=新拥有者 -settings.transfer_perform=执行转让 -settings.transfer_started=该代码库已被标记为转让并等待来自 %s 的确认 -settings.transfer_succeed=仓库已被转移。 +settings.transfer_perform=执行转移 +settings.transfer_started=该仓库已标记为转移并等待来自 %s 的确认 +settings.transfer_succeed=仓库已转移。 settings.signing_settings=签名验证设置 settings.trust_model=签名信任模型 settings.trust_model.default=默认信任模型 @@ -2278,7 +2278,7 @@ settings.trust_model.collaborator.long=协作者:信任协作者的签名 settings.trust_model.collaborator.desc=此仓库中协作者的有效签名将被标记为「可信」(无论它们是否是提交者),签名只符合提交者时将标记为「不可信」,都不匹配时标记为「不匹配」。 settings.trust_model.committer=提交者 settings.trust_model.committer.long=提交者: 信任与提交者相符的签名 (此特性类似 GitHub,这会强制采用 Gitea 作为提交者和签名者) -settings.trust_model.committer.desc=有效签名只有和提交者相匹配才会被标记为“受信任”,否则它们将被标记为“不匹配”。这强制 Gitea 成为签名提交的提交者,而实际提交者被加上 Co-authored-by: 和 Co-committed-by: 的标记。 默认的 Gitea 密钥必须匹配数据库中的一名用户。 +settings.trust_model.committer.desc=有效签名只有和提交者相匹配才会被标记为「受信任」,否则它们将被标记为「不匹配」。这强制 Gitea 成为签名提交的提交者,而实际提交者被加上 Co-authored-by: 和 Co-committed-by: 的标记。 默认的 Gitea 密钥必须匹配数据库中的一名用户。 settings.trust_model.collaboratorcommitter=协作者+提交者 settings.trust_model.collaboratorcommitter.long=协作者+提交者:信任协作者同时是提交者的签名 settings.trust_model.collaboratorcommitter.desc=此仓库中协作者的有效签名在他同时是提交者时将被标记为「可信」,签名只匹配了提交者时将标记为「不可信」,都不匹配时标记为「不匹配」。这会强制 Gitea 成为签名者和提交者,实际的提交者将被标记于提交消息结尾处的「Co-Authored-By:」和「Co-Committed-By:」。默认的 Gitea 签名密钥必须匹配数据库中的一个用户密钥。 @@ -2292,16 +2292,16 @@ settings.delete_desc=删除仓库是永久性的, 无法撤消。 settings.delete_notices_1=- 此操作 不可以 被回滚。 settings.delete_notices_2=- 此操作将永久删除仓库 %s,包括 Git 数据、 工单、评论、百科和协作者的操作权限。 settings.delete_notices_fork_1=- 在此仓库删除后,它的派生仓库将变成独立仓库。 -settings.deletion_success=仓库已被删除。 +settings.deletion_success=仓库已删除。 settings.update_settings_success=仓库设置已更新。 -settings.update_settings_no_unit=该代码库应该至少允许某种形式的交互。 +settings.update_settings_no_unit=该仓库应至少允许某种形式的交互。 settings.confirm_delete=删除本仓库 settings.add_collaborator=增加协作者 settings.add_collaborator_success=协作者添加成功! settings.add_collaborator_inactive_user=无法添加未激活的用户作为合作者。 settings.add_collaborator_owner=不能将所有者添加为协作者。 -settings.add_collaborator_duplicate=合作者已经被添加到本仓库。 -settings.add_collaborator.blocked_user=此写作者被仓库所有者屏蔽,反之亦然。 +settings.add_collaborator_duplicate=协作者已经添加到本仓库。 +settings.add_collaborator.blocked_user=此协作者被仓库所有者屏蔽,反之亦然。 settings.delete_collaborator=删除 settings.collaborator_deletion=删除协作者 settings.collaborator_deletion_desc=删除协作者后他将无法再对此仓库的访问。继续? @@ -2315,24 +2315,24 @@ settings.add_team_duplicate=团队已经拥有仓库 settings.add_team_success=团队现在可以访问仓库。 settings.change_team_permission_tip=团队权限设置于团队设置页面,不能根据仓库更改 settings.delete_team_tip=该团队仍有仓库, 无法删除 -settings.remove_team_success=团队访问仓库的权限已被删除。 +settings.remove_team_success=团队访问仓库的权限已删除。 settings.add_webhook=添加 Web 钩子 -settings.add_webhook.invalid_channel_name=Webhook 通道名称不能为空且不能仅包含一个 # 字符。 -settings.hooks_desc=当Gitea事件发生时,Web钩子自动发出HTTP POST请求。在 指南 中阅读更多内容。 +settings.add_webhook.invalid_channel_name=Web 钩子通道名称不能为空且不能仅包含一个 # 字符。 +settings.hooks_desc=当 Gitea 事件发生时,Web 钩子自动发出 HTTP POST 请求。在 指南 中阅读更多内容。 settings.webhook_deletion=删除 Web 钩子 -settings.webhook_deletion_desc=删除 web钩子 将删除其设置和历史记录。继续? +settings.webhook_deletion_desc=删除 Web 钩子将删除其设置和历史记录。继续? settings.webhook_deletion_success=Web 钩子删除成功! settings.webhook.test_delivery=测试推送 -settings.webhook.test_delivery_desc=用假事件测试这个 web钩子。 -settings.webhook.test_delivery_desc_disabled=要用 虚假事件 测试这个Webhook,请激活它。 +settings.webhook.test_delivery_desc=用假事件测试这个 Web 钩子。 +settings.webhook.test_delivery_desc_disabled=要用假事件测试这个 Web钩子,请激活它。 settings.webhook.request=请求内容 settings.webhook.response=响应内容 settings.webhook.headers=头信息 settings.webhook.payload=内容 settings.webhook.body=响应体 settings.webhook.replay.description=重放此 webhook。 -settings.webhook.replay.description_disabled=若要重播此 WebHook,请激活它。 -settings.webhook.delivery.success=一个事件已被添加到推送队列。可能需要过几秒钟才会显示在推送记录中。 +settings.webhook.replay.description_disabled=若要重新运行此 Web 钩子,请激活它。 +settings.webhook.delivery.success=一个事件已添加到推送队列。可能需要过几秒钟才会显示在推送记录中。 settings.githooks_desc=Git Hook 是 Git 本身提供的功能。您可以在下方编辑 hook 文件以设置自定义操作。 settings.githook_edit_desc=如果钩子未启动,则会显示样例文件中的内容。如果想要删除某个钩子,则提交空白文本即可。 settings.githook_name=钩子名称 @@ -2342,7 +2342,7 @@ settings.add_webhook_desc=Gitea 将向目标 URL 发送具有指定内容类型 settings.payload_url=目标 URL settings.http_method=HTTP 方法 settings.content_type=POST Content Type -settings.secret=密钥文本 +settings.secret=密钥 settings.slack_username=服务名称 settings.slack_icon_url=图标 URL settings.slack_color=颜色 @@ -2358,12 +2358,12 @@ settings.event_create_desc=创建分支或标签 settings.event_delete=刪除 settings.event_delete_desc=分支或标签已删除。 settings.event_fork=派生 -settings.event_fork_desc=仓库被派生。 +settings.event_fork_desc=仓库已派生。 settings.event_wiki=百科 settings.event_wiki_desc=创建、重命名、编辑或删除了百科页面。 settings.event_statuses=状态 settings.event_statuses_desc=已从 API 更新提交状态。 -settings.event_release=版本发布 +settings.event_release=发布 settings.event_release_desc=发布、更新或删除版本时。 settings.event_push=推送 settings.event_force_push=强制推送 @@ -2374,43 +2374,43 @@ settings.event_header_issue=工单事件 settings.event_issues=工单 settings.event_issues_desc=工单已打开、已关闭、已重新打开或已编辑。 settings.event_issue_assign=工单已指派 -settings.event_issue_assign_desc=工单已被指派或取消指派。 +settings.event_issue_assign_desc=工单已指派或取消指派。 settings.event_issue_label=已标记工单 -settings.event_issue_label_desc=工单标签被更新或清除。 -settings.event_issue_milestone=工单被收入里程碑中 -settings.event_issue_milestone_desc=工单被收入或取消收入里程碑中。 +settings.event_issue_label_desc=工单标签已更新或清除。 +settings.event_issue_milestone=工单已收入里程碑中 +settings.event_issue_milestone_desc=工单已收入或取消收入里程碑中。 settings.event_issue_comment=工单评论 -settings.event_issue_comment_desc=工单评论被创建、编辑或删除 +settings.event_issue_comment_desc=工单评论已创建、编辑或删除。 settings.event_header_pull_request=合并请求事件 settings.event_pull_request=合并请求 -settings.event_pull_request_desc=合并请求被打开、被关闭、被重新打开或被编辑。 -settings.event_pull_request_assign=合并请求被指派 -settings.event_pull_request_assign_desc=合并请求被指派或取消指派。 -settings.event_pull_request_label=合并请求被贴上标签 -settings.event_pull_request_label_desc=合并请求的标签被更新或清除。 -settings.event_pull_request_milestone=合并请求被记录于里程碑中 -settings.event_pull_request_milestone_desc=合并请求被记录或取消记录于里程碑中。 -settings.event_pull_request_comment=合并请求被评论 -settings.event_pull_request_comment_desc=合并请求评论被创建、编辑或删除。 +settings.event_pull_request_desc=合并请求已打开、关闭、重新打开或编辑。 +settings.event_pull_request_assign=合并请求已指派 +settings.event_pull_request_assign_desc=合并请求已指派或取消指派。 +settings.event_pull_request_label=合并请求已贴上标签 +settings.event_pull_request_label_desc=合并请求的标签已更新或清除。 +settings.event_pull_request_milestone=合并请求已记录于里程碑中 +settings.event_pull_request_milestone_desc=合并请求已记录或取消记录于里程碑中。 +settings.event_pull_request_comment=合并请求已评论 +settings.event_pull_request_comment_desc=合并请求评论已创建、编辑或删除。 settings.event_pull_request_review=已审核的合并请求 -settings.event_pull_request_review_desc=合并请求被批准、拒绝或提出审查意见 -settings.event_pull_request_sync=合并请求被同步 -settings.event_pull_request_sync_desc=合并请求被同步。 +settings.event_pull_request_review_desc=合并请求已批准、拒绝或提出审查意见。 +settings.event_pull_request_sync=合并请求已同步 +settings.event_pull_request_sync_desc=合并请求已同步。 settings.event_pull_request_review_request=发起合并请求评审 settings.event_pull_request_review_request_desc=合并请求评审已请求或已取消 settings.event_pull_request_approvals=合并请求批准 settings.event_pull_request_merge=合并请求合并 settings.event_header_workflow=工作流程事件 settings.event_workflow_job=工作流任务 -settings.event_workflow_job_desc=Gitea Actions 工作流队列中、等待中、正在进行或已完成任务。 +settings.event_workflow_job_desc=Gitea 工作流队列中、等待中、正在进行或已完成的任务。 settings.event_package=软件包 -settings.event_package_desc=软件包已在仓库中被创建或删除。 +settings.event_package_desc=软件包在仓库中已创建或删除。 settings.branch_filter=分支过滤 settings.branch_filter_desc=推送、创建,删除分支事件的分支白名单,使用 glob 模式匹配指定。若为空或 *,则将报告所有分支的事件。语法文档见 %[2]s。示例:master,{master,release*}。 settings.authorization_header=授权标头 settings.authorization_header_desc=当存在时将被作为授权标头包含在内。例如: %s。 settings.active=激活 -settings.active_helper=触发事件的信息将发送到此 webhook 网址。 +settings.active_helper=触发事件的信息将发送到此 Web 钩子 URL。 settings.add_hook_success=Web 钩子添加成功! settings.update_webhook=更新 Web 钩子 settings.update_hook_success=Web 钩子更新成功! @@ -2420,7 +2420,7 @@ settings.hook_type=钩子类型 settings.slack_token=令牌 settings.slack_domain=域名 settings.slack_channel=频道 -settings.add_web_hook_desc=将 %s集成到您的代码库。 +settings.add_web_hook_desc=将 %s 集成到您的仓库。 settings.web_hook_name_gitea=Gitea settings.web_hook_name_gogs=Gogs settings.web_hook_name_slack=Slack @@ -2447,7 +2447,7 @@ settings.title=标题 settings.deploy_key_content=密钥文本 settings.key_been_used=具有相同内容的部署密钥已在使用中。 settings.key_name_used=使用相同名称的部署密钥已经存在! -settings.add_key_success=部署密钥 %s 添加成功。 +settings.add_key_success=部署密钥「%s」添加成功。 settings.deploy_key_deletion=删除部署密钥 settings.deploy_key_deletion_desc=删除部署密钥将取消此密钥对此仓库的访问权限。继续? settings.deploy_key_deletion_success=部署密钥已删除。 @@ -2456,9 +2456,9 @@ settings.protected_branch=分支保护 settings.protected_branch.save_rule=保存规则 settings.protected_branch.delete_rule=删除规则 settings.protected_branch_can_push=是否允许推送? -settings.protected_branch_can_push_yes=你可以推 -settings.protected_branch_can_push_no=你不能推送 -settings.branch_protection=分支 '%s' 的保护规则 +settings.protected_branch_can_push_yes=您可以推送 +settings.protected_branch_can_push_no=您不能推送 +settings.branch_protection=分支「%s」的保护规则 settings.protect_this_branch=启用分支保护 settings.protect_this_branch_desc=阻止删除并限制Git推送和合并到分支。 settings.protect_disable_push=禁用推送 @@ -2491,7 +2491,7 @@ settings.protect_status_check_patterns_desc=输入模式,指定哪些状态检 settings.protect_check_status_contexts_desc=要求状态检查通过才能合并。如果启用,提交必须先推送到另一个分支,然后再合并或推送到匹配这些保护规则的分支。如果没有选择具体的状态检查上下文,则所有的状态检查都通过才能合并。 settings.protect_check_status_contexts_list=此仓库上周进行过的状态检查 settings.protect_status_check_matched=匹配 -settings.protect_invalid_status_check_pattern=无效的状态检查规则:“%s”。 +settings.protect_invalid_status_check_pattern=无效的状态检查规则:「%s」。 settings.protect_no_valid_status_check_patterns=没有有效的状态检查规则。 settings.protect_required_approvals=所需的批准: settings.protect_required_approvals_desc=只允许合并有足够审核的合并请求。要求的审核必须来自白名单或者有权限的用户或团队。 @@ -2514,9 +2514,9 @@ settings.protect_unprotected_file_patterns=不受保护的文件模式(使用分 settings.protect_unprotected_file_patterns_desc=如果用户有写权限,则允许直接更改的不受保护的文件,以绕过推送限制。可以使用分号分隔多个模式 (';')。 见 %[2]s 文档了解模式语法。例如: .drone.yml, /docs/**/*.txt settings.add_protected_branch=启用保护 settings.delete_protected_branch=禁用保护 -settings.update_protect_branch_success=分支保护规则 %s 更新成功。 -settings.remove_protected_branch_success=移除分支保护规则"%s"成功。 -settings.remove_protected_branch_failed=移除分支保护规则"%s"失败。 +settings.update_protect_branch_success=分支保护规则「%s」更新成功。 +settings.remove_protected_branch_success=分支保护规则「%s」移除成功。 +settings.remove_protected_branch_failed=分支保护规则「%s」移除失败。 settings.protected_branch_deletion=删除分支保护 settings.protected_branch_deletion_desc=禁用分支保护允许具有写入权限的用户推送提交到此分支。继续? settings.block_rejected_reviews=拒绝审核阻止了此合并 @@ -2545,7 +2545,7 @@ settings.tags.protection.allowed.teams=允许的团队 settings.tags.protection.allowed.noone=无 settings.tags.protection.create=保护Git标签 settings.tags.protection.none=没有受保护的Git标签 -settings.tags.protection.pattern.description=你可以使用单个名称或 glob 模式匹配或正则表达式来匹配多个标签。了解详情请访问 保护Git标签指南。 +settings.tags.protection.pattern.description=您可以使用单个名称或 glob 模式匹配或正则表达式来匹配多个标签。了解详情请访问 保护 Git 标签指南。 settings.bot_token=Bot 令牌 settings.chat_id=聊天 ID settings.thread_id=线程 ID @@ -2566,13 +2566,13 @@ settings.visibility.error=试图更改仓库可见性时出错。 settings.visibility.fork_error=无法更改派生仓库的可见性。 settings.archive.button=归档仓库 settings.archive.header=归档此仓库 -settings.archive.text=归档仓库将使其完全只读。它将在首页隐藏。没有人(甚至你!)能够进行新的提交,或打开工单及合并请求。 +settings.archive.text=归档仓库将使其完全只读。它将在首页隐藏。没有人(包括您)能够进行新的提交,或打开工单及合并请求。 settings.archive.success=仓库已成功归档。 settings.archive.error=仓库在归档时出现异常。请通过日志获取详细信息。 settings.archive.error_ismirror=请不要对镜像仓库归档,谢谢! settings.archive.branchsettings_unavailable=已归档仓库无法进行分支设置。 settings.archive.tagsettings_unavailable=已归档仓库的Git标签设置不可用。 -settings.archive.mirrors_unavailable=如果仓库已被归档,镜像将不可用。 +settings.archive.mirrors_unavailable=如果仓库已归档,镜像将不可用。 settings.unarchive.button=撤销仓库归档 settings.unarchive.header=撤销此仓库归档 settings.unarchive.text=撤销归档将恢复仓库接收提交、推送,以及新工单和合并请求的能力。 @@ -2626,7 +2626,7 @@ diff.whitespace_show_everything=显示所有更改 diff.whitespace_ignore_all_whitespace=比较行时忽略空白符号 diff.whitespace_ignore_amount_changes=忽略空白符号数量的变化 diff.whitespace_ignore_at_eol=忽略行末空白符号的更改 -diff.stats_desc=共有 %d 个文件被更改,包括 %d 次插入 和 %d 次删除 +diff.stats_desc=共修改 %d 个文件,包含 %d 行新增和 %d 行删除 diff.stats_desc_file=变更 %d 行:新增 %d 行,删除 %d 行 diff.bin=二进制 diff.bin_not_shown=二进制文件未显示。 @@ -2670,22 +2670,22 @@ diff.submodule_deleted=子模块 %[1]s 已从 %[2]s 中删除 diff.submodule_updated=子模块 %[1]s 已更新:%[2]s releases.desc=跟踪项目版本和下载。 -release.releases=版本发布 +release.releases=发布 release.detail=发布详情 release.tags=Git标签 release.new_release=发布新版 release.draft=草稿 -release.prerelease=预发行 +release.prerelease=预发布 release.stable=稳定 -release.latest=最新版本 +release.latest=最新 release.compare=比较 release.edit=编辑 release.ahead.commits=%d 次提交 -release.ahead.target=在此版本发布后被加入到 %s +release.ahead.target=在此版本发布后已加入到 %s tag.ahead.target=自此标签到 %s release.source_code=源代码 -release.new_subheader=版本发布组织项目的版本。 -release.edit_subheader=版本发布组织项目的版本。 +release.new_subheader=发布组织项目的版本。 +release.edit_subheader=发布组织项目的版本。 release.tag_name=标签名称 release.target=目标分支 release.tag_helper=选择一个存在的标签或者创建新标签。 @@ -2694,7 +2694,7 @@ release.tag_helper_existing=现有标签。 release.title=发布标题 release.title_empty=标题不能为空。 release.message=描述这个版本 -release.prerelease_desc=标记为预发行 +release.prerelease_desc=标记为预发布 release.prerelease_helper=标记此版本不适合生产使用。 release.cancel=取消 release.publish=发布版本 @@ -2704,64 +2704,64 @@ release.delete_release=删除发布 release.delete_tag=删除 Git标签 release.deletion=删除发布 release.deletion_desc=删除版本发布只会从 Gitea 中移除。这不会影响 Git 的标签以及您仓库的内容和历史。是否继续? -release.deletion_success=Release已被删除。 +release.deletion_success=该发布已删除。 release.deletion_tag_desc=将从仓库中删除此 Git标签。仓库内容和历史记录保持不变。继续吗? -release.deletion_tag_success=该 Git标签 已经被删除 -release.tag_name_already_exist=使用此标签名称的发布版本已经存在。 +release.deletion_tag_success=该 Git标签已删除。 +release.tag_name_already_exist=使用此标签名称的发布已经存在。 release.tag_name_invalid=标签名称无效。 release.tag_name_protected=Git标签名称已受保护。 -release.tag_already_exist=此 Git标签 名称已存在 +release.tag_already_exist=此 Git标签名称已存在。 release.downloads=下载附件 release.download_count=下载:%s release.add_tag_msg=使用发布的标题和内容作为标签消息。 release.add_tag=仅创建标签 -release.releases_for=%s 的版本发布 +release.releases_for=%s 的发布 release.tags_for=%s 的标签 branch.name=分支名称 -branch.already_exists=名为 %s 的分支已存在。 +branch.already_exists=名为「%s」的分支已存在。 branch.delete_head=刪除 -branch.delete=删除分支 %s +branch.delete=删除分支「%s」 branch.delete_html=删除分支 branch.delete_desc=删除分支是永久的。虽然已删除的分支在实际被删除前有可能会短时间存在,但这在大多数情况下无法撤销。是否继续? -branch.deletion_success=分支 %s 已被删除。 -branch.deletion_failed=删除分支 %s 失败。 -branch.delete_branch_has_new_commits=因为合并之后有新的提交,分支 %s 无法被删除。 +branch.deletion_success=分支「%s」删除成功。 +branch.deletion_failed=分支「%s」删除失败。 +branch.delete_branch_has_new_commits=因为合并之后有新的提交,分支「%s」无法删除。 branch.create_branch=创建分支 %s -branch.create_from=从 %s -branch.create_success=分支 '%s' 已创建。 -branch.branch_already_exists=此仓库已存在名为 %s 的分支。 -branch.branch_name_conflict=分支名称"%s"与已存在的分支"%s"冲突。 -branch.tag_collision=分支 %s 不能被创建因为同名的标签已经存在。 +branch.create_from=从「%s」 +branch.create_success=分支「%s」已创建。 +branch.branch_already_exists=此仓库已存在名为「%s」的分支。 +branch.branch_name_conflict=分支名称「%s」与已存在的分支「%s」冲突。 +branch.tag_collision=分支「%s」无法创建,因为同名的标签已经存在。 branch.deleted_by=删除人:%s -branch.restore_success=分支 "%s"已还原。 -branch.restore_failed=还原分支 "%s"失败。 -branch.protected_deletion_failed=不能删除受保护的分支 "%s"。 -branch.default_deletion_failed=不能删除默认分支"%s"。 -branch.default_branch_not_exist=默认分支 %s 不存在。 -branch.restore=`还原分支 "%s"` -branch.download=`下载分支 "%s"` -branch.rename=`重命名分支 "%s"` +branch.restore_success=分支「%s」已还原。 +branch.restore_failed=分支「%s」还原失败。 +branch.protected_deletion_failed=不能删除受保护的分支「%s」。 +branch.default_deletion_failed=不能删除默认分支「%s」。 +branch.default_branch_not_exist=默认分支「%s」不存在。 +branch.restore=还原分支「%s」 +branch.download=下载分支「%s」 +branch.rename=重命名分支「%s」 branch.included_desc=此分支是默认分支的一部分 branch.included=已包含 branch.create_new_branch=从下列分支创建分支: branch.confirm_create_branch=创建分支 branch.warning_rename_default_branch=您正在重命名默认分支。 -branch.rename_branch_to=重命名 %s 为: +branch.rename_branch_to=重命名「%s」为: branch.confirm_rename_branch=重命名分支 branch.create_branch_operation=创建分支 branch.new_branch=创建新分支 -branch.new_branch_from=基于"%s"创建新分支 -branch.renamed=分支 %s 被重命名为 %s。 +branch.new_branch_from=基于「%s」创建新分支 +branch.renamed=分支 %s 已重命名为 %s。 branch.rename_default_or_protected_branch_error=只有管理员能重命名默认分支和受保护的分支。 branch.rename_protected_branch_failed=此分支受到 glob 语法规则的保护。 tag.create_tag=创建标签 %s tag.create_tag_operation=创建标签 tag.confirm_create_tag=创建标签 -tag.create_tag_from=基于"%s"创建新标签 +tag.create_tag_from=基于「%s」创建新标签 -tag.create_success=标签"%s"已存在 +tag.create_success=标签「%s」已存在。 topic.manage_topics=管理主题 topic.done=保存 @@ -2808,14 +2808,14 @@ team_permission_desc=权限 team_unit_desc=允许访问仓库单元 team_unit_disabled=(已禁用) -form.name_reserved=组织名称 '%s' 是被保留的。 -form.name_pattern_not_allowed=仓库名称中不允许使用 "%s"。 +form.name_reserved=组织名称「%s」是保留的。 +form.name_pattern_not_allowed=仓库名称中不允许使用「%s」。 form.create_org_not_allowed=此账号禁止创建组织 settings=组织设置 settings.options=组织 settings.full_name=组织全名 -settings.email=联系电子邮件 +settings.email=联系邮箱 settings.website=网站 settings.location=所在地区 settings.permission=权限 @@ -2837,7 +2837,7 @@ settings.delete_account=删除当前组织 settings.delete_prompt=删除操作会永久清除该组织的信息,并且 不可恢复! settings.confirm_delete_account=确认删除组织 settings.delete_org_title=删除组织 -settings.delete_org_desc=此组织将会被永久删除,确认继续吗? +settings.delete_org_desc=此组织将会永久删除,确认继续吗? settings.hooks_desc=在此处添加的 Web 钩子将会应用到该组织下的 所有仓库。 settings.labels_desc=添加能够被该组织下的 所有仓库 的工单使用的标签。 @@ -2883,7 +2883,7 @@ teams.invite_team_member=邀请加入 %s teams.invite_team_member.list=待处理的邀请 teams.delete_team_title=删除团队 teams.delete_team_desc=删除一个团队将删除团队成员的访问权限,继续? -teams.delete_team_success=该团队已被删除。 +teams.delete_team_success=该团队已删除。 teams.read_permission_desc=该团队拥有对所属仓库的 读取 权限,团队成员可以进行查看和克隆等只读操作。 teams.write_permission_desc=该团队拥有对所属仓库的 读取 和 写入 的权限。 teams.admin_permission_desc=该团队拥有一定的 管理 权限,团队成员可以读取、克隆、推送以及添加其它仓库协作者。 @@ -2934,7 +2934,7 @@ repositories=仓库管理 hooks=Web 钩子 integrations=集成 authentication=认证源 -emails=用户邮件 +emails=用户邮箱 config=应用配置 config_summary=摘要 config_settings=设置 @@ -2953,7 +2953,7 @@ dashboard.operation_name=操作名称 dashboard.operation_switch=开关 dashboard.operation_run=执行 dashboard.clean_unbind_oauth=清理未绑定的 OAuth 连接 -dashboard.clean_unbind_oauth_success=所有未绑定的 OAuth 连接已被删除。 +dashboard.clean_unbind_oauth_success=所有未绑定的 OAuth 连接已删除。 dashboard.task.started=已开始任务:%[1]s dashboard.task.process=任务: %[1]s dashboard.task.cancelled=任务: %[1]s 已取消: %[3]s @@ -2967,13 +2967,13 @@ dashboard.cron.error=任务中的错误: %s: %[3]s dashboard.cron.finished=任务:%[1]s 已经完成 dashboard.delete_inactive_accounts=删除所有未激活的帐户 dashboard.delete_inactive_accounts.started=删除所有未激活的账户任务已启动。 -dashboard.delete_repo_archives=删除所有代码库的存档 (ZIP、 TAR、GZ, 等...) +dashboard.delete_repo_archives=删除所有仓库的存档(ZIP、TAR、GZ等) dashboard.delete_repo_archives.started=删除所有仓库存档任务已启动。 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_branches=将缺少的分支从 Git 数据同步到数据库 +dashboard.sync_repo_tags=从 Git 数据同步标签到数据库 dashboard.update_mirrors=更新镜像仓库 dashboard.repo_health_check=健康检查所有仓库 dashboard.check_repo_stats=检查所有仓库统计 @@ -2988,11 +2988,11 @@ dashboard.reinit_missing_repos=重新初始化所有丢失的 Git 仓库存在 dashboard.sync_external_users=同步外部用户数据 dashboard.cleanup_hook_task_table=清理 hook_task 表 dashboard.cleanup_packages=清理过期的软件包 -dashboard.cleanup_actions=清理过期的 Actions 资源 +dashboard.cleanup_actions=清理过期的工作流资源 dashboard.server_uptime=服务运行时间 dashboard.current_goroutine=当前 Goroutines 数量 dashboard.current_memory_usage=当前内存使用量 -dashboard.total_memory_allocated=所有被分配的内存 +dashboard.total_memory_allocated=所有已分配的内存 dashboard.memory_obtained=内存占用量 dashboard.pointer_lookup_times=指针查找次数 dashboard.memory_allocate_times=内存分配次数 @@ -3001,36 +3001,36 @@ dashboard.current_heap_usage=当前 Heap 内存使用量 dashboard.heap_memory_obtained=Heap 内存占用量 dashboard.heap_memory_idle=Heap 内存空闲量 dashboard.heap_memory_in_use=正在使用的 Heap 内存 -dashboard.heap_memory_released=被释放的 Heap 内存 +dashboard.heap_memory_released=已释放的 Heap 内存 dashboard.heap_objects=Heap 对象数量 dashboard.bootstrap_stack_usage=启动 Stack 使用量 -dashboard.stack_memory_obtained=被分配的 Stack 内存 +dashboard.stack_memory_obtained=已分配的 Stack 内存 dashboard.mspan_structures_usage=MSpan 结构内存使用量 -dashboard.mspan_structures_obtained=被分配的 MSpan 结构内存 +dashboard.mspan_structures_obtained=已分配的 MSpan 结构内存 dashboard.mcache_structures_usage=MCache 结构内存使用量 -dashboard.mcache_structures_obtained=被分配的 MCache 结构内存 -dashboard.profiling_bucket_hash_table_obtained=被分配的剖析哈希表内存 -dashboard.gc_metadata_obtained=被分配的 GC 元数据内存 -dashboard.other_system_allocation_obtained=其它被分配的系统内存 +dashboard.mcache_structures_obtained=已分配的 MCache 结构内存 +dashboard.profiling_bucket_hash_table_obtained=已分配的剖析哈希表内存 +dashboard.gc_metadata_obtained=已分配的 GC 元数据内存 +dashboard.other_system_allocation_obtained=其它已分配的系统内存 dashboard.next_gc_recycle=下次 GC 内存回收量 dashboard.last_gc_time=距离上次 GC 时间 dashboard.total_gc_time=GC 暂停时间总量 dashboard.total_gc_pause=GC 暂停时间总量 dashboard.last_gc_pause=上次 GC 暂停时间 dashboard.gc_times=GC 执行次数 -dashboard.delete_old_actions=从数据库中删除所有旧操作记录 -dashboard.delete_old_actions.started=已开始从数据库中删除所有旧操作记录。 +dashboard.delete_old_actions=从数据库中删除所有旧工作流记录 +dashboard.delete_old_actions.started=已开始从数据库中删除所有旧工作流记录。 dashboard.update_checker=更新检查器 dashboard.delete_old_system_notices=从数据库中删除所有旧系统通知 dashboard.gc_lfs=垃圾回收 LFS 元数据 dashboard.stop_zombie_tasks=停止僵尸任务 -dashboard.stop_endless_tasks=停止无法停止的任务 -dashboard.cancel_abandoned_jobs=取消丢弃的任务 -dashboard.start_schedule_tasks=开始Actions调度任务 +dashboard.stop_endless_tasks=停止无限循环的工作流 +dashboard.cancel_abandoned_jobs=取消已放弃的工作流 +dashboard.start_schedule_tasks=启动工作流计划任务 dashboard.sync_branch.started=分支同步已开始 dashboard.sync_tag.started=标签同步已开始 dashboard.rebuild_issue_indexer=重建工单索引 -dashboard.sync_repo_licenses=重新仓库许可证探测 +dashboard.sync_repo_licenses=重新探测仓库许可证 users.user_manage_panel=用户帐户管理 users.new_account=创建新帐户 @@ -3048,33 +3048,33 @@ users.created=创建时间 users.last_login=上次登录 users.never_login=从未登录 users.send_register_notify=发送注册通知 -users.new_success=用户账户 '%s' 已被创建。 +users.new_success=用户账户「%s」已创建。 users.edit=修改 users.auth_source=认证源 users.local=本地 users.auth_login_name=认证登录名称 users.password_helper=保持密码为空将不更改密码。 -users.update_profile_success=该帐户已被更新。 +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=受限 users.allow_git_hook=允许创建 Git 钩子 -users.allow_git_hook_tooltip=Git 钩子将会被以操作系统用户运行,将会拥有同样的主机访问权限。因此,拥有此特殊的Git 钩子权限将能够访问合修改所有的 Gitea 仓库或者Gitea的数据库。同时也能获得Gitea的管理员权限。 +users.allow_git_hook_tooltip=Git 钩子将会以操作系统用户运行,拥有同样的主机访问权限。因此,拥有此特殊的 Git 钩子权限将能够访问合修改所有的 Gitea 仓库或者 Gitea 的数据库。同时也能获得 Gitea 的管理员权限。 users.allow_import_local=允许导入本地仓库 users.allow_create_organization=允许创建组织 users.update_profile=更新帐户 users.delete_account=删除帐户 -users.cannot_delete_self=你不能删除自己 -users.still_own_repo=此用户仍然拥有一个或多个仓库。必须首先删除或转让这些仓库。 +users.cannot_delete_self=您不能删除自己 +users.still_own_repo=此用户仍然拥有一个或多个仓库。必须首先删除或转移这些仓库。 users.still_has_org=此用户是组织的成员。必须先从组织中删除用户。 users.purge=清理用户 -users.purge_help=强制删除用户和用户拥有的任何仓库、组织和软件包。所有评论也将被删除。 +users.purge_help=强制删除用户和用户拥有的任何仓库、组织和软件包。所有评论也将删除。 users.still_own_packages=此用户仍然拥有一个或多个软件包,请先删除这些软件包。 -users.deletion_success=用户帐户已被删除。 +users.deletion_success=用户帐户已删除。 users.reset_2fa=重置两步验证 users.list_status_filter.menu_text=过滤 users.list_status_filter.reset=重置 @@ -3093,19 +3093,19 @@ users.details=用户详细信息 emails.email_manage_panel=邮件管理 emails.primary=主要的 emails.activated=已激活 -emails.filter_sort.email=电子邮件 -emails.filter_sort.email_reverse=电子邮件(逆序) +emails.filter_sort.email=邮箱 +emails.filter_sort.email_reverse=邮箱(倒序) emails.filter_sort.name=用户名 emails.filter_sort.name_reverse=用户名(倒序) -emails.updated=电子邮件已更新 -emails.not_updated=无法更新请求的电子邮件地址: %v -emails.duplicate_active=此电子邮件地址已被另一个用户激活使用。 -emails.change_email_header=更新电子邮件属性 -emails.change_email_text=您确定要更新该电子邮件地址吗? -emails.delete=删除电子邮件 -emails.delete_desc=您确定要删除该电子邮件地址? -emails.deletion_success=电子邮件地址已被删除。 -emails.delete_primary_email_error=您不能删除主电子邮件。 +emails.updated=邮箱已更新 +emails.not_updated=无法更新请求的邮箱地址: %v +emails.duplicate_active=此邮箱地址已被另一个用户激活使用。 +emails.change_email_header=更新邮箱属性 +emails.change_email_text=您确定要更新该邮箱地址吗? +emails.delete=删除邮箱 +emails.delete_desc=您确定要删除该邮箱地址? +emails.deletion_success=邮箱地址已删除。 +emails.delete_primary_email_error=您不能删除主邮箱。 orgs.org_manage_panel=组织管理 orgs.name=名称 @@ -3125,7 +3125,7 @@ repos.lfs_size=LFS 大小 packages.package_manage_panel=软件包管理 packages.total_size=总大小:%s -packages.unreferenced_size=未引用大小: %s +packages.unreferenced_size=未引用大小:%s packages.cleanup=清理过期数据 packages.cleanup.success=清理过期数据成功 packages.owner=所有者 @@ -3137,13 +3137,13 @@ packages.repository=仓库 packages.size=大小 packages.published=已发布 -defaulthooks=默认Web钩子 +defaulthooks=默认 Web 钩子 defaulthooks.desc=当某些 Gitea 事件触发时,Web 钩子自动向服务器发出 HTTP POST 请求。这里定义的 Web 钩子是默认配置,将被复制到所有新的仓库中。详情请访问 Web 钩子指南。 -defaulthooks.add_webhook=添加默认Web 钩子 +defaulthooks.add_webhook=添加默认 Web 钩子 defaulthooks.update_webhook=更新默认 Web 钩子 systemhooks=系统 Web 钩子 -systemhooks.desc=当某些 Gitea 事件触发时,Web 钩子自动向服务器发出HTTP POST请求。这里定义的 Web 钩子将作用于系统上的所有仓库,所以请考虑这可能带来的任何性能影响。了解详情请访问 Web 钩子指南。 +systemhooks.desc=当某些 Gitea 事件触发时,Web 钩子自动向服务器发出 HTTP POST 请求。这里定义的 Web 钩子将作用于系统上的所有仓库,所以请考虑这可能带来的任何性能影响。了解详情请访问 Web 钩子指南。 systemhooks.add_webhook=添加系统 Web 钩子 systemhooks.update_webhook=更新系统 Web 钩子 @@ -3165,7 +3165,7 @@ auths.bind_password=绑定密码 auths.user_base=用户搜索基准 auths.user_dn=用户 DN auths.attribute_username=用户名属性 -auths.attribute_username_placeholder=置空将使用Gitea的用户名。 +auths.attribute_username_placeholder=置空将使用 Gitea 的用户名。 auths.attribute_name=名字属性 auths.attribute_surname=姓氏属性 auths.attribute_mail=电子邮箱属性 @@ -3199,7 +3199,7 @@ auths.helo_hostname=HELO 主机名 auths.helo_hostname_helper=用 HELO 发送的主机名。 留空发送当前主机名。 auths.disable_helo=禁用 HELO auths.pam_service_name=PAM 服务名称 -auths.pam_email_domain=PAM 电子邮件域(可选) +auths.pam_email_domain=PAM 邮件域(可选) auths.oauth2_provider=OAuth2 提供程序 auths.oauth2_icon_url=图标 URL auths.oauth2_clientID=客户端 ID (键) @@ -3209,7 +3209,7 @@ auths.oauth2_use_custom_url=使用自定义的 URL 而不是默认的 URL auths.oauth2_tokenURL=令牌 URL auths.oauth2_authURL=授权 URL auths.oauth2_profileURL=Profile URL -auths.oauth2_emailURL=电子邮件 URL +auths.oauth2_emailURL=邮件 URL auths.skip_local_two_fa=跳过本地两步验证 auths.skip_local_two_fa_helper=不设置意味着设置了两步验证的本地用户仍然需要通过两步验证才能登录 auths.oauth2_tenant=租户 @@ -3229,31 +3229,31 @@ auths.sspi_auto_create_users_helper=允许 SSPI 认证在用户第一次登录 auths.sspi_auto_activate_users=自动激活用户 auths.sspi_auto_activate_users_helper=允许 SSPI 认证自动激活新用户 auths.sspi_strip_domain_names=从用户名中删除域名部分 -auths.sspi_strip_domain_names_helper=如果选中此项,域名将从登录名中删除(例如,"DOMAIN\user"和"user@example.org",两者都将变成只是“用户”)。 +auths.sspi_strip_domain_names_helper=如果选中此项,域名将从登录名中删除(例如,「DOMAIN\user」和「user@example.org」,两者都将变成只是「用户」)。 auths.sspi_separator_replacement=要使用的分隔符代替\, / 和 @ -auths.sspi_separator_replacement_helper=用于替换下级登录名称分隔符的字符 (例如 "DOMAIN\user") 中的 \ 和用户主名字(如"user@example.org"中的 @)。 +auths.sspi_separator_replacement_helper=用于替换下级登录名称分隔符的字符(例如「DOMAIN\user」)中的 \ 和用户主名字(如「user@example.org」中的 @)。 auths.sspi_default_language=默认语言 auths.sspi_default_language_helper=SSPI 认证方法为用户自动创建的默认语言。如果您想要自动检测到语言,请留空。 auths.tips=帮助提示 auths.tips.oauth2.general=OAuth2 认证 auths.tips.oauth2.general.tip=当注册新的 OAuth2 身份验证时,回调/重定向 URL 应该是: auths.tip.oauth2_provider=OAuth2 提供程序 -auths.tip.bitbucket=在 %s 注册新的 OAuth 使用者同时添加权限“账号”-“读取” -auths.tip.nextcloud=使用下面的菜单“设置(Settings) -> 安全(Security) -> OAuth 2.0 client”在您的实例上注册一个新的 OAuth 客户端。 +auths.tip.bitbucket=在 %s 注册新的 OAuth 使用者同时添加权限「账号」-「读取」 +auths.tip.nextcloud=使用下面的菜单「设置 -> 安全 -> OAuth 2.0 客户端」在您的实例上注册一个新的 OAuth 客户端 auths.tip.dropbox=在 %s 上创建一个新的应用程序 -auths.tip.facebook=`在 %s 注册一个新的应用,并添加产品"Facebook 登录"` +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.twitter=访问 %s,创建应用并确保启用了"允许此应用程序用于登录 Twitter"的选项。 +auths.tip.twitter=访问 %s,创建应用并确保启用了「允许此应用程序使用 Twitter 登录」的选项 auths.tip.discord=在 %s 上注册新应用程序 auths.tip.gitea=注册一个新的 OAuth2 应用程序。可以访问 %s 查看帮助 -auths.tip.yandex=在 %s 上创建一个新的应用程序。在“ Yandex.Passport API”这部分中选择以下权限:“访问电子邮件地址(Access to email address)”,“访问用户头像(Access to user avatar)”和“访问用户名,名字和姓氏,性别(Access to username, first name and surname, genderAccess to username, first name and surname, gender)” +auths.tip.yandex=在 %s 上创建一个新的应用。在「Yandex.Passport API」这部分中选择以下权限:「访问邮箱地址」,「访问用户头像」和「访问用户名,名字和姓氏,性别」 auths.tip.mastodon=输入您想要认证的 mastodon 实例的自定义 URL (或使用默认值) auths.edit=修改认证源 auths.activated=该认证源已经启用 -auths.new_success=已添加身份验证 '%s'。 +auths.new_success=已添加身份验证「%s」。 auths.update_success=认证源已经更新。 auths.update=更新认证源 auths.delete=删除认证源 @@ -3261,9 +3261,9 @@ auths.delete_auth_title=删除身份验证源 auths.delete_auth_desc=删除一个认证源将阻止使用它进行登录。确认? auths.still_in_used=认证源仍在使用。请先解除或者删除使用此认证源的用户。 auths.deletion_success=认证源已经更新。 -auths.login_source_exist=认证源 '%s' 已经存在。 +auths.login_source_exist=认证源「%s」已经存在。 auths.login_source_of_type_exist=此类型的认证源已存在。 -auths.unable_to_initialize_openid=无法初始化 OpenID Connect 提供商: %s +auths.unable_to_initialize_openid=无法初始化 OpenID Connect 提供商:%s auths.invalid_openIdConnectAutoDiscoveryURL=无效的 Auto Discovery URL (这必须是一个以 http:// 或 https://开头的有效的 URL) config.server_config=服务器配置 @@ -3310,9 +3310,9 @@ config.db_ssl_mode=SSL config.db_path=数据库路径 config.service_config=服务配置 -config.register_email_confirm=需要电子邮件确认注册 +config.register_email_confirm=需要邮件确认注册 config.disable_register=禁止用户注册 -config.allow_only_internal_registration=只允许通过 Gitea 进行注册 +config.allow_only_internal_registration=仅允许通过 Gitea 进行注册 config.allow_only_external_registration=仅允许通过外部服务注册 config.enable_openid_signup=启用 OpenID 自注册 config.enable_openid_signin=启用 OpenID 登录 @@ -3322,12 +3322,12 @@ config.mail_notify=启用邮件通知 config.enable_captcha=启用登录验证码 config.active_code_lives=激活用户链接有效期 config.reset_password_code_lives=恢复账户验证码过期时间 -config.default_keep_email_private=默认情况下隐藏电子邮件地址 +config.default_keep_email_private=默认隐藏邮箱地址 config.default_allow_create_organization=默认情况下允许创建组织 config.enable_timetracking=启用时间跟踪 config.default_enable_timetracking=默认情况下启用时间跟踪 config.default_allow_only_contributors_to_track_time=仅允许成员跟踪时间 -config.no_reply_address=隐藏电子邮件域 +config.no_reply_address=隐藏邮件域 config.default_visibility_organization=新组织的默认可见性 config.default_enable_dependencies=默认情况下启用工单依赖 @@ -3338,7 +3338,7 @@ config.skip_tls_verify=跳过 TLS 验证 config.mailer_config=Mailer 配置 config.mailer_enabled=启用服务 -config.mailer_enable_helo=启用HELO +config.mailer_enable_helo=启用 HELO config.mailer_name=任务名称 config.mailer_protocol=协议 config.mailer_smtp_addr=SMTP 地址 @@ -3352,8 +3352,8 @@ config.mailer_use_dummy=Dummy config.test_email_placeholder=电子邮址 (例如,test@example.com) config.send_test_mail=发送测试邮件 config.send_test_mail_submit=发送 -config.test_mail_failed=发送测试邮件至 '%s' 时失败:%v -config.test_mail_sent=测试邮件已经发送至 '%s'。 +config.test_mail_failed=发送测试邮件至「%s」失败:%v +config.test_mail_sent=测试邮件已经发送至「%s」。 config.oauth_config=OAuth 配置 config.oauth_enabled=启用 @@ -3365,7 +3365,7 @@ config.cache_conn=Cache 连接字符串 config.cache_item_ttl=缓存项目 TTL config.cache_test=测试缓存 config.cache_test_failed=缓存测试失败: %v。 -config.cache_test_slow=缓存测试成功,但响应缓慢: %s。 +config.cache_test_slow=缓存测试成功,但响应缓慢:%s。 config.cache_test_succeeded=缓存测试成功,在 %s 时间内得到响应。 config.session_config=Session 配置 @@ -3427,7 +3427,7 @@ monitor.process.cancel_desc=中止一个进程可能导致数据丢失 monitor.process.children=子进程 monitor.queues=队列 -monitor.queue=队列: %s +monitor.queue=队列:%s monitor.queue.name=名称 monitor.queue.type=类型 monitor.queue.exemplar=数据类型 @@ -3444,7 +3444,7 @@ monitor.queue.settings.maxnumberworkers.error=最大工作者数必须是数字 monitor.queue.settings.submit=更新设置 monitor.queue.settings.changed=设置已更新 monitor.queue.settings.remove_all_items=移除全部 -monitor.queue.settings.remove_all_items_done=队列中的所有项目已被移除。 +monitor.queue.settings.remove_all_items_done=队列中的所有项目已移除。 notices.system_notice_list=系统提示管理 notices.view_detail_header=查看提示详情 @@ -3459,16 +3459,16 @@ notices.type_1=仓库 notices.type_2=任务 notices.desc=提示描述 notices.op=操作 -notices.delete_success=系统通知已被删除。 +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_fix_mysql=对于MySQL/MariaDB用户,您可以使用“gitea doctor convert”命令来解决校验问题。 或者您也可以通过 "ALTER ... COLLATE ..." 这样的SQL 来手动解决这个问题。 -self_check.database_fix_mssql=对于MSSQL用户,您现在只能通过"ALTER ... COLLATE ..."SQLs手动解决这个问题。 -self_check.location_origin_mismatch=当前 URL (%[1]s) 与 Gitea 的 URL (%[2]s) 不匹配 。 如果您正在使用反向代理,请确保设置正确的“主机”和“X-转发-原始”标题。 +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」标头。 [action] create_repo=创建了仓库 %s @@ -3547,7 +3547,7 @@ no_subscriptions=无订阅 default_key=使用默认密钥签名 error.extract_sign=无法提取签名 error.generate_hash=无法生成提交的哈希 -error.no_committer_account=没有帐户链接到提交者的电子邮件 +error.no_committer_account=没有帐户链接到提交者的邮箱 error.no_gpg_keys_found=找不到此签名对应的密钥 error.not_signed_commit=未签名的提交 error.failed_retrieval_gpg_keys=找不到任何与该提交者账号相关的密钥 @@ -3673,11 +3673,11 @@ rubygems.dependencies.development=开发依赖 rubygems.required.ruby=需要 Ruby 版本 rubygems.required.rubygems=需要 RubyGem 版本 swift.registry=从命令行设置此注册中心: -swift.install=在你的 Package.swift文件中添加该包: +swift.install=在您的 Package.swift文件中添加该包: swift.install2=并运行以下命令: vagrant.install=若要添加一个 Vagrant box,请运行以下命令: settings.link=将此软件包链接到仓库 -settings.link.description=如果您将一个软件包与一个代码库链接起来,软件包将显示在代码库的软件包列表中。 +settings.link.description=如果您将一个软件包与一个仓库链接起来,软件包将显示在仓库的软件包列表中。 settings.link.select=选择仓库 settings.link.button=更新仓库链接 settings.link.success=仓库链接已成功更新。 @@ -3685,11 +3685,11 @@ settings.link.error=更新仓库链接失败。 settings.delete=删除软件包 settings.delete.description=删除软件包是永久性的,无法撤消。 settings.delete.notice=您将要删除 %s (%s)。此操作是不可逆的,您确定吗? -settings.delete.success=软件包已被删除。 +settings.delete.success=软件包已删除。 settings.delete.error=删除软件包失败。 owner.settings.cargo.title=Cargo 注册中心索引 owner.settings.cargo.initialize=初始化索引 -owner.settings.cargo.initialize.description=使用 Cargo 注册中心时需要一个特殊索引的 Git 仓库。使用此选项将(重新)创建存储库并自动配置它。 +owner.settings.cargo.initialize.description=使用 Cargo 注册中心时需要一个特殊索引的 Git 仓库。使用此选项将(重新)创建仓库并自动配置它。 owner.settings.cargo.initialize.error=初始化Cargo索引失败: %v owner.settings.cargo.initialize.success=Cargo索引已经成功创建。 owner.settings.cargo.rebuild=重建索引 @@ -3722,30 +3722,30 @@ owner.settings.chef.keypair.description=需要密钥对才能向 Chef 注册中 [secrets] secrets=密钥 -description=Secrets 将被传给特定的 Actions,其它情况将不能读取 +description=密钥将被传给特定的工作流,其它情况无法读取。 none=还没有密钥。 ; These keys are also for "edit secret", the keys are kept as-is to avoid unnecessary re-translation creation.description=组织描述 -creation.name_placeholder=不区分大小写,字母数字或下划线不能以GITEA_ 或 GITHUB_ 开头。 +creation.name_placeholder=不区分大小写,字母数字或下划线不能以 GITEA_ 或 GITHUB_ 开头。 creation.value_placeholder=输入任何内容,开头和结尾的空白都会被省略 -creation.description_placeholder=输入简短描述(可选)。 +creation.description_placeholder=输入简短描述(可选)。 -save_success=密钥 '%s' 保存成功。 +save_success=密钥「%s」保存成功。 save_failed=密钥保存失败。 add_secret=添加密钥 edit_secret=编辑密钥 deletion=删除密钥 deletion.description=删除密钥是永久性的,无法撤消。继续吗? -deletion.success=此Secret已被删除。 +deletion.success=此密钥已被删除。 deletion.failed=删除密钥失败。 management=密钥管理 [actions] -actions=Actions +actions=工作流 -unit.desc=管理Actions +unit.desc=管理工作流 status.unknown=未知 status.waiting=等待中 @@ -3756,9 +3756,9 @@ status.cancelled=已取消 status.skipped=已忽略 status.blocked=阻塞中 -runners=Runners -runners.runner_manage_panel=Runners管理 -runners.new=创建 Runner +runners=运行器 +runners.runner_manage_panel=运行器管理 +runners.new=创建新运行器 runners.new_notice=如何启动一个运行器 runners.status=状态 runners.id=ID @@ -3767,9 +3767,9 @@ runners.owner_type=类型 runners.description=描述 runners.labels=标签 runners.last_online=上次在线时间 -runners.runner_title=Runner -runners.task_list=最近在此runner上的任务 -runners.task_list.no_tasks=还没有任务。 +runners.runner_title=运行器 +runners.task_list=最近在此运行器上的任务 +runners.task_list.no_tasks=目前还没有任务。 runners.task_list.run=执行 runners.task_list.status=状态 runners.task_list.repository=仓库 @@ -3778,13 +3778,13 @@ runners.task_list.done_at=完成于 runners.edit_runner=编辑运行器 runners.update_runner=更新更改 runners.update_runner_success=运行器更新成功 -runners.update_runner_failed=更新运行器失败 -runners.delete_runner=删除运行器 +runners.update_runner_failed=运行器更新失败 +runners.delete_runner=删除此运行器 runners.delete_runner_success=运行器删除成功 -runners.delete_runner_failed=删除运行器失败 +runners.delete_runner_failed=运行器删除失败 runners.delete_runner_header=确认要删除此运行器 runners.delete_runner_notice=如果一个任务正在运行在此运行器上,它将被终止并标记为失败。它可能会打断正在构建的工作流。 -runners.none=无可用的 Runner +runners.none=无可用运行器 runners.status.unspecified=未知 runners.status.idle=空闲 runners.status.active=启用 @@ -3798,8 +3798,8 @@ runs.all_workflows=所有工作流 runs.commit=提交 runs.scheduled=已计划的 runs.pushed_by=推送者 -runs.invalid_workflow_helper=工作流配置文件无效。请检查您的配置文件: %s -runs.no_matching_online_runner_helper=没有匹配标签的在线 runner: %s +runs.invalid_workflow_helper=工作流配置文件无效。请检查您的配置文件:%s +runs.no_matching_online_runner_helper=没有匹配 %s 标签的在线运行器 runs.no_job_without_needs=工作流必须包含至少一个没有依赖关系的作业。 runs.no_job=工作流必须包含至少一个作业 runs.actor=操作者 @@ -3808,27 +3808,27 @@ runs.actors_no_select=所有操作者 runs.status_no_select=所有状态 runs.no_results=没有匹配的结果。 runs.no_workflows=目前还没有工作流。 -runs.no_workflows.quick_start=不知道如何使用 Gitea Actions吗?请查看 快速启动指南。 -runs.no_workflows.documentation=关于Gitea Actions的更多信息,请参阅 文档。 +runs.no_workflows.quick_start=不知道如何使用 Gitea 工作流吗?请查看快速开始指南。 +runs.no_workflows.documentation=关于 Gitea 工作流的更多信息,请参阅文档。 runs.no_runs=工作流尚未运行过。 -runs.empty_commit_message=(空白的提交消息) -runs.expire_log_message=旧的日志已被清除 +runs.empty_commit_message=(空白的提交消息) +runs.expire_log_message=旧的日志已清除。 runs.delete=删除工作流运行 runs.delete.description=您确定要永久删除此工作流运行吗?此操作无法撤消。 -runs.not_done=此工作流运行未完成。 +runs.not_done=此工作流运行尚未完成。 runs.view_workflow_file=查看工作流文件 workflow.disable=禁用工作流 -workflow.disable_success=工作流 '%s' 已成功禁用。 +workflow.disable_success=工作流「%s」已成功禁用。 workflow.enable=启用工作流 -workflow.enable_success=工作流 '%s' 已成功启用。 +workflow.enable_success=工作流「%s」已成功启用。 workflow.disabled=工作流已禁用。 workflow.run=运行工作流 -workflow.not_found=工作流 %s 未找到。 -workflow.run_success=工作流 %s 已成功运行。 +workflow.not_found=工作流「%s」未找到。 +workflow.run_success=工作流「%s」已成功运行。 workflow.from_ref=使用工作流从 -workflow.has_workflow_dispatch=此 Workflow 有一个 Workflow_dispatch 事件触发器。 -workflow.has_no_workflow_dispatch=工作流 %s 没有 workflow_dispatch 事件的触发器。 +workflow.has_workflow_dispatch=此工作流有一个 workflow_dispatch 事件触发器。 +workflow.has_no_workflow_dispatch=工作流「%s」没有 workflow_dispatch 事件触发器。 need_approval_desc=该工作流由派生仓库的合并请求所触发,需要批准方可运行。 @@ -3838,15 +3838,15 @@ variables.creation=添加变量 variables.none=目前还没有变量。 variables.deletion=删除变量 variables.deletion.description=删除变量是永久性的,无法撤消。继续吗? -variables.description=变量将被传给特定的 Actions,其它情况将不能读取 +variables.description=变量将被传给特定的工作流,其它情况下无法读取。 variables.id_not_exist=ID为 %d 的变量不存在。 variables.edit=编辑变量 -variables.deletion.failed=删除变量失败。 -variables.deletion.success=变量已被删除。 -variables.creation.failed=添加变量失败。 -variables.creation.success=变量 “%s” 添加成功。 -variables.update.failed=编辑变量失败。 -variables.update.success=该变量已被编辑。 +variables.deletion.failed=变量删除失败。 +variables.deletion.success=变量已删除。 +variables.creation.failed=变量添加失败。 +variables.creation.success=变量「%s」添加成功。 +variables.update.failed=变量编辑失败。 +variables.update.success=变量已编辑。 logs.always_auto_scroll=总是自动滚动日志 logs.always_expand_running=总是展开运行日志 diff --git a/routers/web/repo/commit.go b/routers/web/repo/commit.go index 9dd6988825c2e..2b45c535d5a2f 100644 --- a/routers/web/repo/commit.go +++ b/routers/web/repo/commit.go @@ -216,12 +216,14 @@ func SearchCommits(ctx *context.Context) { // FileHistory show a file's reversions func FileHistory(ctx *context.Context) { + followRename := strings.Contains(ctx.Req.RequestURI, "history_follow_rename=true") + if ctx.Repo.TreePath == "" { Commits(ctx) return } - commitsCount, err := ctx.Repo.GitRepo.FileCommitsCount(ctx.Repo.RefFullName.ShortName(), ctx.Repo.TreePath) + commitsCount, err := ctx.Repo.GitRepo.FileCommitsCount(ctx.Repo.RefFullName.ShortName(), ctx.Repo.TreePath, followRename) if err != nil { ctx.ServerError("FileCommitsCount", err) return @@ -237,9 +239,10 @@ func FileHistory(ctx *context.Context) { commits, err := ctx.Repo.GitRepo.CommitsByFileAndRange( git.CommitsByFileAndRangeOptions{ - Revision: ctx.Repo.RefFullName.ShortName(), // FIXME: legacy code used ShortName - File: ctx.Repo.TreePath, - Page: page, + Revision: ctx.Repo.RefFullName.ShortName(), // FIXME: legacy code used ShortName + File: ctx.Repo.TreePath, + Page: page, + FollowRename: followRename, }) if err != nil { ctx.ServerError("CommitsByFileAndRange", err) diff --git a/services/convert/pull.go b/services/convert/pull.go index 7798bebb08b32..8f9679f649788 100644 --- a/services/convert/pull.go +++ b/services/convert/pull.go @@ -419,6 +419,9 @@ func ToAPIPullRequests(ctx context.Context, baseRepo *repo_model.Repository, prs if baseBranch != nil { apiPullRequest.Base.Sha = baseBranch.CommitID } + if pr.HeadRepoID == pr.BaseRepoID { + apiPullRequest.Head.Repository = apiPullRequest.Base.Repository + } // pull request head branch, both repository and branch could not exist if pr.HeadRepo != nil { @@ -431,22 +434,19 @@ func ToAPIPullRequests(ctx context.Context, baseRepo *repo_model.Repository, prs if exist { apiPullRequest.Head.Ref = pr.HeadBranch } + if pr.HeadRepoID != pr.BaseRepoID { + p, err := access_model.GetUserRepoPermission(ctx, pr.HeadRepo, doer) + if err != nil { + log.Error("GetUserRepoPermission[%d]: %v", pr.HeadRepoID, err) + p.AccessMode = perm.AccessModeNone + } + apiPullRequest.Head.Repository = ToRepo(ctx, pr.HeadRepo, p) + } } if apiPullRequest.Head.Ref == "" { apiPullRequest.Head.Ref = pr.GetGitRefName() } - if pr.HeadRepoID == pr.BaseRepoID { - apiPullRequest.Head.Repository = apiPullRequest.Base.Repository - } else { - p, err := access_model.GetUserRepoPermission(ctx, pr.HeadRepo, doer) - if err != nil { - log.Error("GetUserRepoPermission[%d]: %v", pr.HeadRepoID, err) - p.AccessMode = perm.AccessModeNone - } - apiPullRequest.Head.Repository = ToRepo(ctx, pr.HeadRepo, p) - } - if pr.Flow == issues_model.PullRequestFlowAGit { apiPullRequest.Head.Name = "" } diff --git a/services/convert/pull_test.go b/services/convert/pull_test.go index cd86283c8a121..dfbe24d184631 100644 --- a/services/convert/pull_test.go +++ b/services/convert/pull_test.go @@ -46,4 +46,11 @@ func TestPullRequest_APIFormat(t *testing.T) { assert.NotNil(t, apiPullRequest) assert.Nil(t, apiPullRequest.Head.Repository) assert.EqualValues(t, -1, apiPullRequest.Head.RepoID) + + apiPullRequests, err := ToAPIPullRequests(git.DefaultContext, pr.BaseRepo, []*issues_model.PullRequest{pr}, nil) + assert.NoError(t, err) + assert.Len(t, apiPullRequests, 1) + assert.NotNil(t, apiPullRequests[0]) + assert.Nil(t, apiPullRequests[0].Head.Repository) + assert.EqualValues(t, -1, apiPullRequests[0].Head.RepoID) } diff --git a/templates/repo/commits_table.tmpl b/templates/repo/commits_table.tmpl index a0c5eacdd4b00..e6be1d40c03d1 100644 --- a/templates/repo/commits_table.tmpl +++ b/templates/repo/commits_table.tmpl @@ -8,6 +8,10 @@ {{ctx.Locale.Tr "repo.commits.no_commits" $.BaseBranch $.HeadBranch}} {{end}} + + + {{ctx.Locale.Tr "repo.commits.history_follow_rename"}} + {{if .IsDiffCompare}} {{if not .BaseIsCommit}}{{if .BaseIsBranch}}{{svg "octicon-git-branch"}}{{else if .BaseIsTag}}{{svg "octicon-tag"}}{{end}}{{.BaseBranch}}{{else}}{{ShortSha .BaseBranch}}{{end}} diff --git a/web_src/js/components/DashboardRepoList.vue b/web_src/js/components/DashboardRepoList.vue index 6b16ff9efb603..6573633227730 100644 --- a/web_src/js/components/DashboardRepoList.vue +++ b/web_src/js/components/DashboardRepoList.vue @@ -429,7 +429,7 @@ export default defineComponent({ - + diff --git a/web_src/js/features/repo-commit.ts b/web_src/js/features/repo-commit.ts index 98ec2328ec5f4..81ba3f5784cb4 100644 --- a/web_src/js/features/repo-commit.ts +++ b/web_src/js/features/repo-commit.ts @@ -24,3 +24,20 @@ export function initCommitStatuses() { }); }); } + +export function initCommitFileHistoryFollowRename() { + const checkbox : HTMLInputElement | null = document.querySelector('input[name=history-enable-follow-renames]'); + + if (!checkbox) { + return; + } + const url = new URL(window.location.toString()); + checkbox.checked = url.searchParams.has('history_follow_rename', 'true'); + + checkbox.addEventListener('change', () => { + const url = new URL(window.location); + + url.searchParams.set('history_follow_rename', `${checkbox.checked}`); + window.location.replace(url); + }); +} diff --git a/web_src/js/index.ts b/web_src/js/index.ts index 7e84773bc18fa..603d2718fdc0f 100644 --- a/web_src/js/index.ts +++ b/web_src/js/index.ts @@ -22,7 +22,7 @@ import {initMarkupContent} from './markup/content.ts'; import {initPdfViewer} from './render/pdf.ts'; import {initUserAuthOauth2, initUserCheckAppUrl} from './features/user-auth.ts'; import {initRepoPullRequestAllowMaintainerEdit, initRepoPullRequestReview, initRepoIssueSidebarDependency, initRepoIssueFilterItemLabel} from './features/repo-issue.ts'; -import {initRepoEllipsisButton, initCommitStatuses} from './features/repo-commit.ts'; +import {initRepoEllipsisButton, initCommitStatuses, initCommitFileHistoryFollowRename} from './features/repo-commit.ts'; import {initRepoTopicBar} from './features/repo-home.ts'; import {initAdminCommon} from './features/admin/common.ts'; import {initRepoCodeView} from './features/repo-code.ts'; @@ -151,6 +151,7 @@ onDomReady(() => { initRepoRecentCommits, initCommitStatuses, + initCommitFileHistoryFollowRename, initCaptcha, initUserCheckAppUrl,
*
master
{master,release*}
.drone.yml
/docs/**/*.txt
Package.swift