- Introduce Provider interface pattern for standard OAuth protocols - Create unified controller/oauth.go with common OAuth logic - Add OAuthError type for translatable error messages - Add i18n keys and translations (zh/en) for OAuth messages - Use common.ApiErrorI18n/ApiSuccessI18n for consistent responses - Preserve backward compatibility for existing routes and data
244 lines
11 KiB
YAML
244 lines
11 KiB
YAML
# Chinese (Simplified) translations
|
||
# 中文(简体)翻译文件
|
||
|
||
# Common messages
|
||
common.invalid_params: "无效的参数"
|
||
common.database_error: "数据库错误,请稍后重试"
|
||
common.retry_later: "请稍后重试"
|
||
common.generate_failed: "生成失败"
|
||
common.not_found: "未找到"
|
||
common.unauthorized: "未授权"
|
||
common.forbidden: "无权限"
|
||
common.invalid_id: "无效的ID"
|
||
common.id_empty: "ID 为空!"
|
||
common.feature_disabled: "该功能未启用"
|
||
common.operation_success: "操作成功"
|
||
common.operation_failed: "操作失败"
|
||
common.update_success: "更新成功"
|
||
common.update_failed: "更新失败"
|
||
common.create_success: "创建成功"
|
||
common.create_failed: "创建失败"
|
||
common.delete_success: "删除成功"
|
||
common.delete_failed: "删除失败"
|
||
common.already_exists: "已存在"
|
||
common.name_cannot_be_empty: "名称不能为空"
|
||
|
||
# Token messages
|
||
token.name_too_long: "令牌名称过长"
|
||
token.quota_negative: "额度值不能为负数"
|
||
token.quota_exceed_max: "额度值超出有效范围,最大值为 {{.Max}}"
|
||
token.generate_failed: "生成令牌失败"
|
||
token.get_info_failed: "获取令牌信息失败,请稍后重试"
|
||
token.expired_cannot_enable: "令牌已过期,无法启用,请先修改令牌过期时间,或者设置为永不过期"
|
||
token.exhausted_cannot_enable: "令牌可用额度已用尽,无法启用,请先修改令牌剩余额度,或者设置为无限额度"
|
||
token.invalid: "无效的令牌"
|
||
token.not_provided: "未提供令牌"
|
||
token.expired: "该令牌已过期"
|
||
token.exhausted: "该令牌额度已用尽 TokenStatusExhausted[sk-{{.Prefix}}***{{.Suffix}}]"
|
||
token.status_unavailable: "该令牌状态不可用"
|
||
token.db_error: "无效的令牌,数据库查询出错,请联系管理员"
|
||
|
||
# Redemption messages
|
||
redemption.name_length: "兑换码名称长度必须在1-20之间"
|
||
redemption.count_positive: "兑换码个数必须大于0"
|
||
redemption.count_max: "一次兑换码批量生成的个数不能大于 100"
|
||
redemption.create_failed: "创建兑换码失败,请稍后重试"
|
||
redemption.invalid: "无效的兑换码"
|
||
redemption.used: "该兑换码已被使用"
|
||
redemption.expired: "该兑换码已过期"
|
||
redemption.failed: "兑换失败,请稍后重试"
|
||
redemption.not_provided: "未提供兑换码"
|
||
redemption.expire_time_invalid: "过期时间不能早于当前时间"
|
||
|
||
# User messages
|
||
user.password_login_disabled: "管理员关闭了密码登录"
|
||
user.register_disabled: "管理员关闭了新用户注册"
|
||
user.password_register_disabled: "管理员关闭了通过密码进行注册,请使用第三方账户验证的形式进行注册"
|
||
user.username_or_password_empty: "用户名或密码为空"
|
||
user.username_or_password_error: "用户名或密码错误,或用户已被封禁"
|
||
user.email_or_password_empty: "邮箱地址或密码为空!"
|
||
user.exists: "用户名已存在,或已注销"
|
||
user.not_exists: "用户不存在"
|
||
user.disabled: "该用户已被禁用"
|
||
user.session_save_failed: "无法保存会话信息,请重试"
|
||
user.require_2fa: "请输入两步验证码"
|
||
user.email_verification_required: "管理员开启了邮箱验证,请输入邮箱地址和验证码"
|
||
user.verification_code_error: "验证码错误或已过期"
|
||
user.input_invalid: "输入不合法 {{.Error}}"
|
||
user.no_permission_same_level: "无权获取同级或更高等级用户的信息"
|
||
user.no_permission_higher_level: "无权更新同权限等级或更高权限等级的用户信息"
|
||
user.cannot_create_higher_level: "无法创建权限大于等于自己的用户"
|
||
user.cannot_delete_root_user: "不能删除超级管理员账户"
|
||
user.cannot_disable_root_user: "无法禁用超级管理员用户"
|
||
user.cannot_demote_root_user: "无法降级超级管理员用户"
|
||
user.already_admin: "该用户已经是管理员"
|
||
user.already_common: "该用户已经是普通用户"
|
||
user.admin_cannot_promote: "普通管理员用户无法提升其他用户为管理员"
|
||
user.original_password_error: "原密码错误"
|
||
user.invite_quota_insufficient: "邀请额度不足!"
|
||
user.transfer_quota_minimum: "转移额度最小为{{.Min}}!"
|
||
user.transfer_success: "划转成功"
|
||
user.transfer_failed: "划转失败 {{.Error}}"
|
||
user.topup_processing: "充值处理中,请稍后重试"
|
||
user.register_failed: "用户注册失败或用户ID获取失败"
|
||
user.default_token_failed: "生成默认令牌失败"
|
||
user.aff_code_empty: "affCode 为空!"
|
||
user.email_empty: "email 为空!"
|
||
user.github_id_empty: "GitHub id 为空!"
|
||
user.discord_id_empty: "discord id 为空!"
|
||
user.oidc_id_empty: "oidc id 为空!"
|
||
user.wechat_id_empty: "WeChat id 为空!"
|
||
user.telegram_id_empty: "Telegram id 为空!"
|
||
user.telegram_not_bound: "该 Telegram 账户未绑定"
|
||
user.linux_do_id_empty: "Linux DO id 为空!"
|
||
|
||
# Quota messages
|
||
quota.negative: "额度不能为负数!"
|
||
quota.exceed_max: "额度值超出有效范围"
|
||
quota.insufficient: "额度不足"
|
||
quota.warning_invalid: "无效的预警类型"
|
||
quota.threshold_gt_zero: "预警阈值必须大于0"
|
||
|
||
# Subscription messages
|
||
subscription.not_enabled: "套餐未启用"
|
||
subscription.title_empty: "套餐标题不能为空"
|
||
subscription.price_negative: "价格不能为负数"
|
||
subscription.price_max: "价格不能超过9999"
|
||
subscription.purchase_limit_negative: "购买上限不能为负数"
|
||
subscription.quota_negative: "总额度不能为负数"
|
||
subscription.group_not_exists: "升级分组不存在"
|
||
subscription.reset_cycle_gt_zero: "自定义重置周期需大于0秒"
|
||
subscription.purchase_max: "已达到该套餐购买上限"
|
||
subscription.invalid_id: "无效的订阅ID"
|
||
subscription.invalid_user_id: "无效的用户ID"
|
||
|
||
# Payment messages
|
||
payment.not_configured: "当前管理员未配置支付信息"
|
||
payment.method_not_exists: "支付方式不存在"
|
||
payment.callback_error: "回调地址配置错误"
|
||
payment.create_failed: "创建订单失败"
|
||
payment.start_failed: "拉起支付失败"
|
||
payment.amount_too_low: "套餐金额过低"
|
||
payment.stripe_not_configured: "Stripe 未配置或密钥无效"
|
||
payment.webhook_not_configured: "Webhook 未配置"
|
||
payment.price_id_not_configured: "该套餐未配置 StripePriceId"
|
||
payment.creem_not_configured: "该套餐未配置 CreemProductId"
|
||
|
||
# Topup messages
|
||
topup.not_provided: "未提供支付单号"
|
||
topup.order_not_exists: "充值订单不存在"
|
||
topup.order_status: "充值订单状态错误"
|
||
topup.failed: "充值失败,请稍后重试"
|
||
topup.invalid_quota: "无效的充值额度"
|
||
|
||
# Channel messages
|
||
channel.not_exists: "渠道不存在"
|
||
channel.id_format_error: "渠道ID格式错误"
|
||
channel.no_available_key: "没有可用的渠道密钥"
|
||
channel.get_list_failed: "获取渠道列表失败,请稍后重试"
|
||
channel.get_tags_failed: "获取标签失败,请稍后重试"
|
||
channel.get_key_failed: "获取渠道密钥失败"
|
||
channel.get_ollama_failed: "获取Ollama模型失败"
|
||
channel.query_failed: "查询渠道失败"
|
||
channel.no_valid_upstream: "无有效上游渠道"
|
||
channel.upstream_saturated: "当前分组上游负载已饱和,请稍后再试"
|
||
channel.get_available_failed: "获取分组 {{.Group}} 下模型 {{.Model}} 的可用渠道失败"
|
||
|
||
# Model messages
|
||
model.name_empty: "模型名称不能为空"
|
||
model.name_exists: "模型名称已存在"
|
||
model.id_missing: "缺少模型 ID"
|
||
model.get_list_failed: "获取模型列表失败,请稍后重试"
|
||
model.get_failed: "获取上游模型失败"
|
||
model.reset_success: "重置模型倍率成功"
|
||
|
||
# Vendor messages
|
||
vendor.name_empty: "供应商名称不能为空"
|
||
vendor.name_exists: "供应商名称已存在"
|
||
vendor.id_missing: "缺少供应商 ID"
|
||
|
||
# Group messages
|
||
group.name_type_empty: "组名称和类型不能为空"
|
||
group.name_exists: "组名称已存在"
|
||
group.id_missing: "缺少组 ID"
|
||
|
||
# Checkin messages
|
||
checkin.disabled: "签到功能未启用"
|
||
checkin.already_today: "今日已签到"
|
||
checkin.failed: "签到失败,请稍后重试"
|
||
checkin.quota_failed: "签到失败:更新额度出错"
|
||
|
||
# Passkey messages
|
||
passkey.create_failed: "无法创建 Passkey 凭证"
|
||
passkey.login_abnormal: "Passkey 登录状态异常"
|
||
passkey.update_failed: "Passkey 凭证更新失败"
|
||
passkey.invalid_user_id: "无效的用户 ID"
|
||
passkey.verify_failed: "Passkey 验证失败,请重试或联系管理员"
|
||
|
||
# 2FA messages
|
||
twofa.not_enabled: "用户未启用2FA"
|
||
twofa.user_id_empty: "用户ID不能为空"
|
||
twofa.already_exists: "用户已存在2FA设置"
|
||
twofa.record_id_empty: "2FA记录ID不能为空"
|
||
twofa.code_invalid: "验证码或备用码不正确"
|
||
|
||
# Rate limit messages
|
||
rate_limit.reached: "您已达到请求数限制:{{.Minutes}}分钟内最多请求{{.Max}}次"
|
||
rate_limit.total_reached: "您已达到总请求数限制:{{.Minutes}}分钟内最多请求{{.Max}}次,包括失败次数"
|
||
|
||
# Setting messages
|
||
setting.invalid_type: "无效的预警类型"
|
||
setting.webhook_empty: "Webhook地址不能为空"
|
||
setting.webhook_invalid: "无效的Webhook地址"
|
||
setting.email_invalid: "无效的邮箱地址"
|
||
setting.bark_url_empty: "Bark推送URL不能为空"
|
||
setting.bark_url_invalid: "无效的Bark推送URL"
|
||
setting.gotify_url_empty: "Gotify服务器地址不能为空"
|
||
setting.gotify_token_empty: "Gotify令牌不能为空"
|
||
setting.gotify_url_invalid: "无效的Gotify服务器地址"
|
||
setting.url_must_http: "URL必须以http://或https://开头"
|
||
setting.saved: "设置已更新"
|
||
|
||
# Deployment messages (io.net)
|
||
deployment.not_enabled: "io.net 模型部署功能未启用或 API 密钥缺失"
|
||
deployment.id_required: "deployment ID 为必填项"
|
||
deployment.container_id_required: "container ID 为必填项"
|
||
deployment.name_empty: "deployment 名称不能为空"
|
||
deployment.name_taken: "deployment 名称已被使用,请选择其他名称"
|
||
deployment.hardware_id_required: "hardware_id 参数为必填项"
|
||
deployment.hardware_invalid_id: "无效的 hardware_id 参数"
|
||
deployment.api_key_required: "api_key 为必填项"
|
||
deployment.invalid_payload: "无效的请求内容"
|
||
deployment.not_found: "未找到容器详情"
|
||
|
||
# Performance messages
|
||
performance.disk_cache_cleared: "不活跃的磁盘缓存已清理"
|
||
performance.stats_reset: "统计信息已重置"
|
||
performance.gc_executed: "GC 已执行"
|
||
|
||
# Ability messages
|
||
ability.db_corrupted: "数据库一致性被破坏"
|
||
ability.repair_running: "已经有一个修复任务在运行中,请稍后再试"
|
||
|
||
# OAuth messages
|
||
oauth.invalid_code: "无效的授权码"
|
||
oauth.get_user_error: "获取用户信息失败"
|
||
oauth.account_used: "该账户已被其他用户绑定"
|
||
oauth.unknown_provider: "未知的 OAuth 提供商"
|
||
oauth.state_invalid: "state 参数为空或不匹配"
|
||
oauth.not_enabled: "管理员未开启通过 {{.Provider}} 登录以及注册"
|
||
oauth.user_deleted: "用户已注销"
|
||
oauth.user_banned: "用户已被封禁"
|
||
oauth.bind_success: "绑定成功"
|
||
oauth.already_bound: "该 {{.Provider}} 账户已被绑定"
|
||
oauth.connect_failed: "无法连接至 {{.Provider}} 服务器,请稍后重试"
|
||
oauth.token_failed: "{{.Provider}} 获取 Token 失败,请检查设置"
|
||
oauth.user_info_empty: "{{.Provider}} 获取用户信息为空,请检查设置"
|
||
oauth.trust_level_low: "Linux DO 信任等级未达到管理员设置的最低信任等级"
|
||
|
||
# Model layer error messages
|
||
redeem.failed: "兑换失败,请稍后重试"
|
||
user.create_default_token_error: "创建默认令牌失败"
|
||
common.uuid_duplicate: "请重试,系统生成的 UUID 竟然重复了!"
|
||
common.invalid_input: "输入不合法"
|