response.success=成功
response.success.read=获取成功
response.success.created=创建成功
response.success.updated=更新成功
response.success.deleted=删除成功
response.success.published=发布成功
response.success.revoked=撤销成功
response.success.health=服务正常

validation.namespace.slug.notBlank=slug 不能为空
validation.namespace.slug.size=slug 长度必须在 2 到 64 个字符之间
validation.namespace.displayName.notBlank=显示名称不能为空
validation.namespace.displayName.size=显示名称长度不能超过 128 个字符
validation.namespace.description.size=描述长度不能超过 512 个字符
validation.member.userId.notNull=用户 ID 不能为空
validation.member.role.notNull=角色不能为空
validation.auth.local.username.notBlank=用户名不能为空
validation.auth.local.password.notBlank=密码不能为空
validation.auth.local.email.notBlank=邮箱不能为空
validation.auth.local.currentPassword.notBlank=当前密码不能为空
validation.auth.local.newPassword.notBlank=新密码不能为空
validation.auth.local.email.invalid=邮箱格式不正确
validation.token.name.notBlank=Token 名称不能为空
validation.token.name.size=Token 名称最多 64 个字符
validation.token.expiresAt.invalid=过期时间格式不正确
validation.token.expiresAt.future=过期时间必须晚于当前时间
error.token.name.duplicate=你已经有同名 Token
error.token.notFound=Token 不存在：{0}

error.auth.required=需要先登录
error.auth.local.username.exists=用户名已存在
error.auth.local.email.exists=邮箱已存在
error.auth.local.password.tooShort=密码至少需要 8 位
error.auth.local.password.tooLong=密码长度不能超过 128 位
error.auth.local.password.tooWeak=密码至少需要包含 3 种字符类型
error.auth.local.username.invalid=用户名需为 3-64 位，且只能包含字母、数字或下划线
error.auth.local.invalidCredentials=用户名或密码错误
error.auth.local.notEnabled=当前用户未启用本地账号登录
error.auth.local.accountDisabled=该账号已被禁用
error.auth.local.accountPending=该账号尚未激活
error.auth.local.accountMerged=该账号已合并，不能再用于登录
error.auth.local.locked=连续失败次数过多，请在 {0} 分钟后重试
error.auth.login.throttled=登录尝试过于频繁，请在 {0} 分钟后重试
error.auth.direct.disabled=直连认证兼容层未启用
error.auth.direct.providerUnsupported=不支持的直连认证提供方：{0}
error.auth.sessionBootstrap.disabled=会话引导能力未启用
error.auth.sessionBootstrap.providerUnsupported=不支持的会话引导提供方：{0}
error.auth.sessionBootstrap.notAuthenticated=未检测到已认证的外部会话
error.badRequest=请求参数不合法
error.forbidden=没有权限执行该操作
error.request.timeout=请求超时
error.rateLimit.exceeded=请求过于频繁，请稍后再试
error.storage.unavailable=对象存储暂时不可用，请稍后再试
error.internal=服务器内部错误
error.slug.blank=slug 不能为空
error.slug.length=slug 长度必须在 {0} 到 {1} 个字符之间
error.slug.pattern=slug 只能包含小写字母、数字和连字符，且必须以字母或数字开头和结尾
error.slug.doubleHyphen=slug 不能包含连续连字符
error.slug.reserved=slug ''{0}'' 是保留字，不能使用
label.definition.too_many=标签定义数量已达到上限（{0}）
label.sort_order.empty=排序更新请求不能为空
label.translation.empty=至少需要一个标签翻译
label.translation.locale.blank=标签翻译 locale 不能为空
label.translation.display_name.blank=标签翻译显示名不能为空
label.translation.locale.duplicate=标签翻译 locale 重复：{0}
label.translation.locale.conflict=标签翻译 locale 重复
error.namespace.slug.exists=命名空间 slug ''{0}'' 已存在
error.namespace.id.notFound=未找到命名空间：{0}
error.namespace.slug.notFound=未找到命名空间：{0}
error.namespace.membership.required=需要先加入该命名空间
error.namespace.global.members.platformAdmin.required=只有平台用户管理员可以查看 global 命名空间成员
error.namespace.admin.required=需要命名空间管理员或所有者权限
error.namespace.owner.required=需要命名空间所有者权限
error.namespace.create.platformAdminRequired=只有 SKILL_ADMIN 或 SUPER_ADMIN 可以创建命名空间
error.namespace.delete.hasDependencies=命名空间下仍有技能或治理记录，暂时不能删除
error.namespace.member.owner.assignDirect=不能直接分配 OWNER 角色
error.namespace.member.alreadyExists=用户已经是该命名空间成员
error.namespace.member.notFound=未找到命名空间成员
error.namespace.member.owner.remove=不能移除命名空间 OWNER
error.namespace.member.owner.setDirect=不能直接设置 OWNER 角色，请使用所有权转移
error.namespace.member.search.tooShort=搜索关键词至少需要 2 个字符
error.namespace.owner.current.notFound=未找到当前所有者
error.namespace.owner.current.invalid=当前用户不是命名空间所有者
error.namespace.owner.new.notFound=新所有者不是该命名空间成员
error.skill.metadata.content.empty=SKILL.md 内容不能为空
error.skill.metadata.frontmatter.missingStart=缺少 frontmatter 起始标记 --- 
error.skill.metadata.frontmatter.missingContent=frontmatter 起始标记后缺少内容
error.skill.metadata.frontmatter.missingEnd=缺少 frontmatter 结束标记 ---
error.skill.metadata.yaml.notMap=frontmatter 必须是 YAML 对象
error.skill.metadata.yaml.invalid=frontmatter YAML 非法：{0}
error.skill.metadata.requiredField.missing=缺少必填字段：{0}
error.skill.publish.publisher.notMember=发布者不是命名空间成员：{0}
error.skill.publish.package.invalid=技能包校验失败：{0}
error.skill.publish.skillMd.notFound=未找到 SKILL.md
error.skill.publish.precheck.confirmRequired=预发布发现以下风险提醒，确认后仍可继续发布：\n{0}
error.skill.publish.precheck.failed=预发布校验失败：{0}
error.security.scanner.required=发布公开或命名空间可见技能前必须启用安全扫描器
error.skill.publish.archived=该技能已归档，请先恢复后再发布：{0}
review.withdraw.not_pending=只有待审核版本才能撤销审核：{0}
review.withdraw.not_submitter=只有提交人本人可以撤销此次审核
review.approve.scan_in_progress=安全扫描仍在进行中，扫描完成前暂不能通过审核
review_task.not_found_for_version=未找到该版本对应的待审核记录：{0}
error.skill.publish.summary.tooLong=技能描述长度不能超过 {0} 个字符
error.skill.notFound=未找到技能：{0}
error.skill.access.denied=没有权限访问技能：{0}
error.skill.status.notActive=技能未处于 ACTIVE 状态
error.skill.lifecycle.noPermission=只有技能所有者或命名空间管理员可以管理该技能
error.skill.version.exists=版本已存在：{0}
error.skill.version.notFound=未找到版本：{0}
error.skill.version.notPublished=版本未发布：{0}
error.skill.version.delete.unsupported=只有 DRAFT、UPLOADED、REJECTED 或 SCAN_FAILED 版本可以删除：{0}
error.skill.version.delete.lastVersion=无法删除最后一个版本：{0}
error.skill.version.compare.same=无法对同一版本进行对比
error.skill.report.reason.required=请填写举报原因
error.skill.report.unavailable=当前无法举报该技能：{0}
error.skill.report.self=不能举报自己发布的技能
error.skill.report.duplicate=你已经提交过该技能的待处理举报
error.skill.report.notFound=未找到技能举报：{0}
error.skill.report.alreadyHandled=该技能举报已经处理过
error.skill.report.status.invalid=不支持的技能举报状态：{0}
error.skill.version.latest.unavailable=技能没有可下载的已发布版本：{0}
error.skill.version.latest.notFound=未找到最新已发布版本
error.skill.file.notFound=未找到文件：{0}
error.skill.tag.latest.reserved=标签 latest 为系统保留标签
error.skill.tag.latest.delete=标签 latest 为系统保留标签，不能删除
error.skill.tag.notFound=未找到标签：{0}
error.skill.tag.targetVersion.notPublished=目标版本必须已发布
error.skill.tag.version.missing=标签未指向具体版本：{0}
error.skill.tag.version.notFound=未找到标签指向的版本：{0}
error.skill.bundle.notFound=对象存储中未找到已发布技能包
error.skill.resolve.versionTag.conflict=version 和 tag 参数不能同时传入
error.deviceAuth.userCode.invalid=无效或已过期的用户验证码
error.deviceAuth.deviceCode.expired=设备验证码已过期
error.deviceAuth.deviceCode.invalid=设备验证码无效或已过期
error.deviceAuth.deviceCode.used=设备验证码已被使用
error.admin.user.notFound=用户不存在：{0}
error.admin.user.role.invalid=无效的角色：{0}
error.admin.user.role.superAdmin.assignDenied=只有 SUPER_ADMIN 可以修改 SUPER_ADMIN 角色状态
error.admin.user.systemAccount.immutable=系统账号不能在用户管理中修改
error.admin.user.status.invalid=无效的用户状态：{0}
error.admin.user.status.unsupported=这里只允许管理 ACTIVE 或 DISABLED 状态的用户
error.skill.publish.nameConflict=该命名空间下已存在名为"{0}"的已发布技能，无法提交
error.skill.publish.nameConflict.private=该命名空间下已存在名为"{0}"的已发布私有技能，无法提交
error.skill.approve.nameConflict=无法通过审核：该命名空间下已存在名为"{0}"的已发布技能
error.skill.version.submit.notUploaded=版本"{0}"不在 UPLOADED 状态，无法提交审核
error.skill.version.confirm.notUploaded=版本"{0}"不在 UPLOADED 状态，无法确认发布
error.skill.confirm.notPrivate=只有 PRIVATE 技能可以使用确认发布功能
error.skill.version.notDownloadable=版本"{0}"不可下载

# 用户资料修改
error.profile.displayName.length=昵称长度需在 2-32 个字符之间
error.profile.displayName.pattern=昵称仅允许中文、英文、数字、空格、下划线和连字符
error.profile.noChanges=至少需要提供一个修改字段
response.profile.updated=资料已更新
response.profile.pendingReview=资料变更已提交审核

error.profileReview.notFound=资料变更工单不存在
error.profileReview.notPending=该工单已审核完毕
error.profileReview.commentRequired=拒绝原因不能为空
error.profileReview.commentTooLong=拒绝原因不能超过 500 个字符
error.profileReview.status.invalid=无效的审核状态：{0}
error.profileReview.userDisabled=无法应用变更——用户账号已被禁用

# Password reset
response.auth.password.reset.requested=如果账号符合条件，密码重置验证码已发送。
response.auth.password.reset.confirmed=密码已重置成功，请使用新密码登录。
error.auth.password.reset.invalid.code=验证码无效或已过期。
error.auth.password.reset.not.eligible=该账号不符合密码重置条件。
error.auth.password.reset.no.credential=该账号没有本地凭证。
error.auth.password.reset.email.failed=发送密码重置验证码失败，请稍后重试。
validation.auth.password.reset.email.notBlank=邮箱不能为空
validation.auth.password.reset.email.invalid=邮箱格式不正确
validation.auth.password.reset.code.notBlank=验证码不能为空
validation.auth.password.reset.code.invalid=验证码必须为 6 位数字
validation.auth.password.reset.newPassword.notBlank=新密码不能为空
promotion.target_skill_conflict=目标全局技能“{0}”已存在
promotion.status.invalid=不支持的提升审核状态：{0}
promotion.sort.field.invalid=不支持的提升审核排序字段：{0}
promotion.sort.direction.invalid=不支持的提升审核排序方向：{0}
promotion.sort.pending_unsupported=待审核提升请求不支持按处理时间排序
