Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions ui/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AITokenPool</title>
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0' stop-color='%234ecdc4'/%3E%3Cstop offset='1' stop-color='%232a9d8f'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect width='64' height='64' rx='14' fill='url(%23g)'/%3E%3Ctext x='32' y='43' font-family='-apple-system,Segoe UI,Arial,sans-serif' font-size='30' font-weight='800' text-anchor='middle' fill='%23062021'%3EAT%3C/text%3E%3C/svg%3E">
<link rel="stylesheet" href="css/style.css?v=20260911-9">
<link rel="stylesheet" href="css/style.css?v=20260911-10">
</head>
<body>

Expand Down Expand Up @@ -842,9 +842,9 @@ <h3 id="chat-title">使用模型</h3>
</div>
</div>

<script src="js/api.js?v=20260911-9"></script>
<script src="js/data.js?v=20260911-9"></script>
<script src="js/i18n.js?v=20260911-9"></script>
<script src="js/app.js?v=20260911-9"></script>
<script src="js/api.js?v=20260911-10"></script>
<script src="js/data.js?v=20260911-10"></script>
<script src="js/i18n.js?v=20260911-10"></script>
<script src="js/app.js?v=20260911-10"></script>
</body>
</html>
19 changes: 19 additions & 0 deletions ui/js/i18n.js
Original file line number Diff line number Diff line change
Expand Up @@ -815,6 +815,12 @@
"err.codeLocked": "验证码错误次数过多,请重新获取",
"err.badEmail": "邮箱格式不正确",
"err.weakPassword": "密码至少 8 位",
"err.emailNotRegistered": "该邮箱未注册",
"err.modelExists": "模型已存在(provider+model 唯一)",
"err.raisePending": "已有待审批的加额申请,请等待管理员处理",
"err.raiseHandled": "该申请已处理",
"err.codeSendFail": "验证码发送失败,请重试",
"err.negativePrice": "价格不能为负数",
};

var EN = {
Expand Down Expand Up @@ -1601,15 +1607,25 @@
"err.codeLocked": "Too many wrong attempts, please request a new code",
"err.badEmail": "Invalid email format",
"err.weakPassword": "Password must be at least 8 characters",
"err.emailNotRegistered": "This email is not registered",
"err.modelExists": "Model already exists (provider + model must be unique)",
"err.raisePending": "A raise request is already awaiting approval",
"err.raiseHandled": "This request has already been handled",
"err.codeSendFail": "Failed to send the verification code, please try again",
"err.negativePrice": "Price cannot be negative",
};

// 后端中文错误 → en 键(lang=en 时对已知错误做映射;未知原样返回)
// ⚠️ 顺序无关:mapErr 取**最长匹配**,不依赖本表次序。此处按字面量长度降序排列
// 只是为了让人读起来「最具体的在最前」,避免后续插条时又互相遮蔽(如
// 「不存在」遮蔽「验证码不存在或已过期」、「验证码错误」遮蔽「验证码错误次数过多」)。
var ERR_MAP = [
["模型已存在(provider+model 唯一)", "err.modelExists"],
["已有待审批的加额申请,请等待管理员处理", "err.raisePending"],
["网络不可用,请检查后端服务是否启动", "err.network"],
["该模型暂无可用 key", "err.noAvailableKey"],
["API Key 不存在", "err.keyNotFound"],
["验证码发送失败,请重试", "err.codeSendFail"],
["验证码不存在或已过期", "err.codeExpired"],
["验证码错误次数过多", "err.codeLocked"],
["密码至少 8 位", "err.weakPassword"],
Expand All @@ -1618,9 +1634,12 @@
["key 不存在", "err.keyNotFound"],
["服务器内部错误", "err.serverError"],
["邮箱格式不正确", "err.badEmail"],
["价格不能为负数", "err.negativePrice"],
["点数余额不足", "err.insufficient"],
["请求过于频繁", "err.rateLimit"],
["该邮箱已注册", "err.emailTaken"],
["该邮箱未注册", "err.emailNotRegistered"],
["该申请已处理", "err.raiseHandled"],
["邮箱未验证", "err.emailUnverified"],
["验证码错误", "err.badCode"],
["余额不足", "err.insufficient"],
Expand Down
Loading