diff --git a/src/components/settings/SettingsPage.tsx b/src/components/settings/SettingsPage.tsx index 2819738fd..6ccba2531 100644 --- a/src/components/settings/SettingsPage.tsx +++ b/src/components/settings/SettingsPage.tsx @@ -215,7 +215,7 @@ export function SettingsPage({ {t("settings.tabAdvanced")} - {t("usage.title", "使用统计")} + {t("usage.title")} {t("common.about")} @@ -254,10 +254,10 @@ export function SettingsPage({

- 配置文件目录 + {t("settings.advanced.configDir.title")}

- 管理 Claude、Codex 和 Gemini 的配置存储路径 + {t("settings.advanced.configDir.description")}

@@ -289,10 +289,10 @@ export function SettingsPage({

- 本地代理 + {t("settings.advanced.proxy.title")}

- 控制代理服务开关、查看状态与端口信息 + {t("settings.advanced.proxy.description")}

@@ -307,7 +307,7 @@ export function SettingsPage({ - {isRunning ? "运行中" : "已停止"} + {isRunning ? t("settings.advanced.proxy.running") : t("settings.advanced.proxy.stopped")}

- 模型测试配置 + {t("settings.advanced.modelTest.title")}

- 配置模型测试使用的默认模型和提示词 + {t("settings.advanced.modelTest.description")}

@@ -353,10 +353,10 @@ export function SettingsPage({

- 自动故障转移 + {t("settings.advanced.failover.title")}

- 配置故障转移队列和熔断策略 + {t("settings.advanced.failover.description")}

@@ -376,13 +376,10 @@ export function SettingsPage({

- {t("proxy.failoverQueue.title", "故障转移队列")} + {t("proxy.failoverQueue.title")}

- {t( - "proxy.failoverQueue.description", - "管理各应用的供应商故障转移顺序", - )} + {t("proxy.failoverQueue.description")}

@@ -432,10 +429,10 @@ export function SettingsPage({

- 成本定价 + {t("settings.advanced.pricing.title")}

- 管理各模型 Token 计费规则 + {t("settings.advanced.pricing.description")}

@@ -454,10 +451,10 @@ export function SettingsPage({

- 数据管理 + {t("settings.advanced.data.title")}

- 导入导出配置与备份恢复 + {t("settings.advanced.data.description")}

diff --git a/src/components/usage/ModelTestConfigPanel.tsx b/src/components/usage/ModelTestConfigPanel.tsx index d6c972705..998b954ad 100644 --- a/src/components/usage/ModelTestConfigPanel.tsx +++ b/src/components/usage/ModelTestConfigPanel.tsx @@ -47,12 +47,12 @@ export function ModelTestConfigPanel() { try { setIsSaving(true); await saveStreamCheckConfig(config); - toast.success(t("streamCheck.configSaved", "健康检查配置已保存"), { + toast.success(t("streamCheck.configSaved"), { closeButton: true, }); } catch (e) { toast.error( - t("streamCheck.configSaveFailed", "保存失败") + ": " + String(e), + t("streamCheck.configSaveFailed") + ": " + String(e), ); } finally { setIsSaving(false); @@ -78,12 +78,12 @@ export function ModelTestConfigPanel() { {/* 测试模型配置 */}

- {t("streamCheck.testModels", "测试模型")} + {t("streamCheck.testModels")}

- {t("streamCheck.checkParams", "检查参数")} + {t("streamCheck.checkParams")}

- {t("common.saving", "保存中...")} + {t("common.saving")} ) : ( <> - {t("common.save", "保存")} + {t("common.save")} )} diff --git a/src/components/usage/PricingConfigPanel.tsx b/src/components/usage/PricingConfigPanel.tsx index 85182221e..3a3cee317 100644 --- a/src/components/usage/PricingConfigPanel.tsx +++ b/src/components/usage/PricingConfigPanel.tsx @@ -63,7 +63,7 @@ export function PricingConfigPanel() {
- {t("usage.modelPricing", "模型定价")} + {t("usage.modelPricing")}
@@ -85,7 +85,7 @@ export function PricingConfigPanel() { )} - {t("usage.modelPricing", "模型定价")} + {t("usage.modelPricing")}
@@ -93,7 +93,7 @@ export function PricingConfigPanel() { - {t("usage.loadPricingError", "加载定价数据失败")}:{" "} + {t("usage.loadPricingError")}:{" "} {String(error)} @@ -107,7 +107,7 @@ export function PricingConfigPanel() {

- {t("usage.modelPricingDesc", "配置各模型的 Token 成本")} (每百万) + {t("usage.modelPricingDesc")} {t("usage.perMillion")}

@@ -125,10 +125,7 @@ export function PricingConfigPanel() { {!pricing || pricing.length === 0 ? ( - {t( - "usage.noPricingData", - '暂无定价数据。点击"新增"添加模型定价配置。', - )} + {t("usage.noPricingData")} ) : ( @@ -136,22 +133,22 @@ export function PricingConfigPanel() { - {t("usage.model", "模型")} - {t("usage.displayName", "显示名称")} + {t("usage.model")} + {t("usage.displayName")} - {t("usage.inputCost", "输入成本")} + {t("usage.inputCost")} - {t("usage.outputCost", "输出成本")} + {t("usage.outputCost")} - {t("usage.cacheReadCost", "缓存读取")} + {t("usage.cacheReadCost")} - {t("usage.cacheWriteCost", "缓存写入")} + {t("usage.cacheWriteCost")} - {t("common.actions", "操作")} + {t("common.actions")} @@ -183,7 +180,7 @@ export function PricingConfigPanel() { setIsAddingNew(false); setEditingModel(model); }} - title={t("common.edit", "编辑")} + title={t("common.edit")} > @@ -191,7 +188,7 @@ export function PricingConfigPanel() { variant="ghost" size="icon" onClick={() => setDeleteConfirm(model.modelId)} - title={t("common.delete", "删除")} + title={t("common.delete")} className="text-destructive hover:text-destructive" > @@ -224,18 +221,15 @@ export function PricingConfigPanel() { - {t("usage.deleteConfirmTitle", "确认删除")} + {t("usage.deleteConfirmTitle")} - {t( - "usage.deleteConfirmDesc", - "确定要删除此模型定价配置吗?此操作无法撤销。", - )} + {t("usage.deleteConfirmDesc")} diff --git a/src/components/usage/RequestLogTable.tsx b/src/components/usage/RequestLogTable.tsx index 69565c657..39d8d7169 100644 --- a/src/components/usage/RequestLogTable.tsx +++ b/src/components/usage/RequestLogTable.tsx @@ -84,11 +84,11 @@ export function RequestLogTable() { } > - + - {t("usage.allApps", { defaultValue: "全部应用" })} + {t("usage.allApps")} Claude Codex @@ -106,10 +106,10 @@ export function RequestLogTable() { } > - + - {t("common.all", "全部状态")} + {t("common.all")} 200 OK 400 Bad Request 401 Unauthorized @@ -122,10 +122,7 @@ export function RequestLogTable() {
@@ -137,7 +134,7 @@ export function RequestLogTable() { />
@@ -153,7 +150,7 @@ export function RequestLogTable() {
- {t("usage.timeRange", { defaultValue: "时间范围" })}: + {t("usage.timeRange")}: - {t("common.search", "查询")} + {t("common.search")}
@@ -382,7 +379,7 @@ export function RequestLogTable() { {total > 0 && (
- {t("usage.totalRecords", "共 {{total}} 条记录", { total })} + {t("usage.totalRecords", { total })}