From e87229c1b78aa33f00c77d3d8de08daac643398d Mon Sep 17 00:00:00 2001 From: kang Date: Wed, 27 May 2026 09:57:56 +0800 Subject: [PATCH] =?UTF-8?q?feat(i18n):=20=E6=9B=B4=E6=96=B0=E8=8B=B1?= =?UTF-8?q?=E6=96=87=E3=80=81=E5=B0=BC=E6=B3=8A=E5=B0=94=E8=AF=AD=E4=B8=8E?= =?UTF-8?q?=E4=B8=AD=E6=96=87=E7=9A=84=E6=B3=A8=E5=8D=95=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改多语言配置文件,将 success 统一替换为 placed,并新增 partial_failed 与 refunded 状态,以提升注单管理中的状态表达清晰度。 增强国际化支持,确保多语言间术语一致性,进一步优化后台管理界面的用户体验。 --- src/i18n/locales/en/tickets.json | 6 +- src/i18n/locales/ne/tickets.json | 6 +- src/i18n/locales/zh/tickets.json | 6 +- .../config/doc/play-config-doc-screen.tsx | 97 ---- src/modules/jackpot/jackpot-pools-console.tsx | 427 ++++++++++-------- .../tickets/player-tickets-console.tsx | 5 +- 6 files changed, 260 insertions(+), 287 deletions(-) diff --git a/src/i18n/locales/en/tickets.json b/src/i18n/locales/en/tickets.json index 436a67a..f0b9d92 100644 --- a/src/i18n/locales/en/tickets.json +++ b/src/i18n/locales/en/tickets.json @@ -33,12 +33,14 @@ "all": "All", "pending_confirm": "Pending confirmation", "partial_pending_confirm": "Partially pending confirmation", - "success": "Bet placed", + "placed": "Placed", "pending_draw": "Awaiting draw", + "partial_failed": "Partially failed", "failed": "Bet failed", "pending_payout": "Pending payout", "settled_win": "Settled win", - "settled_lose": "Settled loss" + "settled_lose": "Settled loss", + "refunded": "Refunded" }, "allTickets": "All tickets" } diff --git a/src/i18n/locales/ne/tickets.json b/src/i18n/locales/ne/tickets.json index c0eb568..c1014c3 100644 --- a/src/i18n/locales/ne/tickets.json +++ b/src/i18n/locales/ne/tickets.json @@ -32,12 +32,14 @@ "all": "सबै", "pending_confirm": "पुष्टि बाँकी", "partial_pending_confirm": "आंशिक पुष्टि बाँकी", - "success": "बेट सफल", + "placed": "बेट राखियो", "pending_draw": "ड्र पर्खँदै", + "partial_failed": "आंशिक असफल", "failed": "बेट असफल", "pending_payout": "भुक्तानी बाँकी", "settled_win": "जित सेटल भयो", - "settled_lose": "हार सेटल भयो" + "settled_lose": "हार सेटल भयो", + "refunded": "फिर्ता भयो" }, "allTickets": "सबै टिकट" } diff --git a/src/i18n/locales/zh/tickets.json b/src/i18n/locales/zh/tickets.json index efed0d8..3e8b69b 100644 --- a/src/i18n/locales/zh/tickets.json +++ b/src/i18n/locales/zh/tickets.json @@ -33,12 +33,14 @@ "all": "全部", "pending_confirm": "待确认", "partial_pending_confirm": "部分待确认", - "success": "已投注成功", + "placed": "已下单", "pending_draw": "待开奖", + "partial_failed": "部分失败", "failed": "投注失败", "pending_payout": "待派奖", "settled_win": "已中奖结算", - "settled_lose": "已未中奖结算" + "settled_lose": "已未中奖结算", + "refunded": "已退款" }, "allTickets": "全部注单" } diff --git a/src/modules/config/doc/play-config-doc-screen.tsx b/src/modules/config/doc/play-config-doc-screen.tsx index f88a33d..e033152 100644 --- a/src/modules/config/doc/play-config-doc-screen.tsx +++ b/src/modules/config/doc/play-config-doc-screen.tsx @@ -40,7 +40,6 @@ import { TableHeader, TableRow, } from "@/components/ui/table"; -import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { AdminStatusBadge } from "@/components/admin/admin-status-badge"; import { ConfigReadonlyValue } from "@/modules/config/config-readonly-value"; import { ConfigVersionActions } from "@/modules/config/config-version-actions"; @@ -156,12 +155,6 @@ export function PlayConfigDocScreen() { const [error, setError] = useState(null); const detailRequestSeq = useRef(0); - const [ruleDialogOpen, setRuleDialogOpen] = useState(false); - const [rulePlayCode, setRulePlayCode] = useState(null); - const [ruleDraftZh, setRuleDraftZh] = useState(""); - const [ruleDraftEn, setRuleDraftEn] = useState(""); - const [ruleDraftNe, setRuleDraftNe] = useState(""); - const refreshList = useCallback(async () => { setLoadingList(true); setError(null); @@ -361,29 +354,6 @@ export function PlayConfigDocScreen() { } } - function openRuleEditor(play_code: string) { - const item = draftRows.find((row) => row.play_code === play_code); - setRulePlayCode(play_code); - setRuleDraftZh(item?.rule_text_zh ?? ""); - setRuleDraftEn(item?.rule_text_en ?? ""); - setRuleDraftNe(item?.rule_text_ne ?? ""); - setRuleDialogOpen(true); - } - - function saveRuleDraft() { - if (!rulePlayCode) { - return; - } - updateConfigRow(rulePlayCode, { - rule_text_zh: ruleDraftZh.trim() || null, - rule_text_en: ruleDraftEn.trim() || null, - rule_text_ne: ruleDraftNe.trim() || null, - }); - setRuleDialogOpen(false); - setRulePlayCode(null); - toast.message(t("play.ruleSavedLocal", { ns: "config" })); - } - function renderDisplayNameReadonly(row: PlayConfigItemRow) { const name = row.display_name?.trim(); return {name || row.play_code}; @@ -580,7 +550,6 @@ export function PlayConfigDocScreen() { {t("play.table.order", { ns: "config" })} {t("play.table.minBet", { ns: "config" })} {t("play.table.maxBet", { ns: "config" })} - {t("play.table.actions", { ns: "config" })} @@ -712,78 +681,12 @@ export function PlayConfigDocScreen() { )} - - {isDraft ? ( - - ) : ( - - {t("play.states.readOnly", { ns: "config" })} - - )} - ))} )} - - - - {t("play.ruleDialog.title", { ns: "config" })} - - {t("play.ruleDialog.description", { ns: "config", playCode: rulePlayCode ?? "—" })} - - - - - {t("play.locales.zh", { ns: "config" })} - {t("play.locales.en", { ns: "config" })} - {t("play.locales.ne", { ns: "config" })} - - -