diff --git a/src/app/globals.css b/src/app/globals.css index 5ccd892..8cea8b5 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -147,7 +147,7 @@ } .admin-list-toolbar { - @apply flex w-full flex-col gap-3 border-t border-border/60 pt-4 xl:flex-row xl:flex-wrap xl:items-center; + @apply flex w-full flex-row flex-wrap items-center gap-3 border-t border-border/60 pt-4; } .admin-list-field { @@ -159,7 +159,7 @@ } .admin-list-actions { - @apply flex shrink-0 flex-wrap items-center gap-2 xl:ml-auto xl:justify-end; + @apply ml-auto flex shrink-0 flex-wrap items-center justify-end gap-2; } .admin-table-shell { diff --git a/src/i18n/locales/en/config.json b/src/i18n/locales/en/config.json index ed44be1..b9324a2 100644 --- a/src/i18n/locales/en/config.json +++ b/src/i18n/locales/en/config.json @@ -94,10 +94,13 @@ "loadFailed": "Failed to load system settings", "saveSuccess": "System settings saved", "saveFailed": "Failed to save system settings", + "frontendConfig": "Front-end configuration", "fields": { "manualReview": "Require manual review for draw results", "cooldownMinutes": "Cooldown duration (minutes)", - "autoSettlement": "Run settlement automatically" + "autoSettlement": "Run settlement automatically", + "playRulesHtml": "Play rules HTML (i18n)", + "playRulesHtmlDesc": "Rendered on the player play-rules page per locale. Leave empty to fall back to another language or the default empty state." }, "hints": { "manualReview": "When enabled, RNG draw results enter pending review and must be published manually in admin.", @@ -169,7 +172,8 @@ "jackpot": "Jackpot" }, "validation": { - "minMaxInvalid": "{{playCode}}: min bet cannot exceed max bet" + "minMaxInvalid": "{{playCode}}: min bet cannot exceed max bet", + "nameZhRequired": "Chinese display name is required" }, "publishFailed": "Publish failed", "createDraftSuccess": "Created draft v{{version}}", @@ -186,7 +190,13 @@ "actions": { "enable": "Enable", "disable": "Disable", - "ruleText": "Rule text" + "ruleText": "Rule text", + "displayNames": "Display names" + }, + "locales": { + "zh": "Chinese", + "en": "English", + "ne": "Nepali" }, "table": { "playCode": "Play code", @@ -206,10 +216,15 @@ "aria": { "enablePlay": "Enable {{playCode}}" }, + "nameDialog": { + "title": "Display names (i18n)", + "description": "Play {{playCode}}. Chinese is required; English and Nepali are optional. The player site picks the label by locale after publish.", + "apply": "Apply to draft", + "savedLocal": "Display names were saved into the local draft. Save the draft to persist them." + }, "ruleDialog": { - "title": "Rule text (Chinese)", + "title": "Rule text (i18n)", "description": "Play {{playCode}}. Changes stay in the draft until you save and publish it.", - "fieldLabel": "rule_text_zh", "apply": "Apply to draft" } }, diff --git a/src/i18n/locales/ne/config.json b/src/i18n/locales/ne/config.json index b5401da..5528e06 100644 --- a/src/i18n/locales/ne/config.json +++ b/src/i18n/locales/ne/config.json @@ -94,10 +94,13 @@ "loadFailed": "प्रणाली सेटिङ लोड असफल भयो", "saveSuccess": "प्रणाली सेटिङ सुरक्षित भयो", "saveFailed": "प्रणाली सेटिङ सुरक्षित गर्न असफल", + "frontendConfig": "फ्रन्ट-एन्ड कन्फिग", "fields": { "manualReview": "ड्रअ परिणामका लागि म्यानुअल समीक्षा चाहिने", "cooldownMinutes": "कूलडाउन अवधि (मिनेट)", - "autoSettlement": "सेटलमेन्ट स्वतः चलाउने" + "autoSettlement": "सेटलमेन्ट स्वतः चलाउने", + "playRulesHtml": "खेल नियम HTML (बहुभाषी)", + "playRulesHtmlDesc": "खेलाडीको नियम पृष्ठमा भाषा अनुसार HTML देखिन्छ। खाली छोड्दा अर्को भाषा वा पूर्वनिर्धारित खाली सूचना देखिन्छ।" }, "hints": { "manualReview": "सक्रिय हुँदा RNG ड्रअ परिणाम pending review मा जान्छ र एडमिनबाट म्यानुअल रूपमा प्रकाशित गर्नुपर्छ।", @@ -169,7 +172,8 @@ "jackpot": "Jackpot" }, "validation": { - "minMaxInvalid": "{{playCode}}: न्यूनतम बेट अधिकतम बेटभन्दा ठूलो हुन सक्दैन" + "minMaxInvalid": "{{playCode}}: न्यूनतम बेट अधिकतम बेटभन्दा ठूलो हुन सक्दैन", + "nameZhRequired": "चिनियाँ प्रदर्शित नाम अनिवार्य छ" }, "publishFailed": "प्रकाशन असफल भयो", "createDraftSuccess": "ड्राफ्ट v{{version}} सिर्जना भयो", @@ -186,7 +190,13 @@ "actions": { "enable": "सक्रिय", "disable": "निष्क्रिय", - "ruleText": "नियम पाठ" + "ruleText": "नियम पाठ", + "displayNames": "बहुभाषी नाम" + }, + "locales": { + "zh": "चिनियाँ", + "en": "English", + "ne": "नेपाली" }, "table": { "playCode": "खेल कोड", @@ -206,10 +216,15 @@ "aria": { "enablePlay": "{{playCode}} सक्रिय गर्ने" }, + "nameDialog": { + "title": "प्रदर्शित नाम (बहुभाषी)", + "description": "खेल {{playCode}}। चिनियाँ अनिवार्य; अंग्रेजी र नेपाली वैकल्पिक। प्रकाशनपछि खेलाडीको भाषा अनुसार देखिन्छ।", + "apply": "ड्राफ्टमा लागू गर्नुहोस्", + "savedLocal": "प्रदर्शित नाम स्थानीय ड्राफ्टमा सुरक्षित भयो। स्थायी बनाउन ड्राफ्ट सेभ गर्नुहोस्।" + }, "ruleDialog": { - "title": "नियम पाठ (Chinese)", + "title": "नियम पाठ (बहुभाषी)", "description": "खेल {{playCode}}। परिवर्तनहरू सेभ र प्रकाशित नगरेसम्म ड्राफ्टमै रहन्छन्।", - "fieldLabel": "rule_text_zh", "apply": "ड्राफ्टमा लागू गर्नुहोस्" } }, diff --git a/src/i18n/locales/zh/config.json b/src/i18n/locales/zh/config.json index 0773347..6b98801 100644 --- a/src/i18n/locales/zh/config.json +++ b/src/i18n/locales/zh/config.json @@ -94,10 +94,13 @@ "loadFailed": "系统设置加载失败", "saveSuccess": "系统设置已保存", "saveFailed": "系统设置保存失败", + "frontendConfig": "前端配置", "fields": { "manualReview": "开奖结果必须人工审核", "cooldownMinutes": "冷静期时长(分钟)", - "autoSettlement": "自动执行结算" + "autoSettlement": "自动执行结算", + "playRulesHtml": "玩法规则 HTML(多语言)", + "playRulesHtmlDesc": "该内容将直接在玩家端的玩法规则页面作为 HTML 渲染。按语言分别配置;留空则回退其它语言或显示默认提示。" }, "hints": { "manualReview": "开启后,RNG 开奖结果会先进入待审核,必须由后台人工发布。", @@ -169,7 +172,8 @@ "jackpot": "奖池" }, "validation": { - "minMaxInvalid": "{{playCode}}:最小下注额不能大于最大下注额" + "minMaxInvalid": "{{playCode}}:最小下注额不能大于最大下注额", + "nameZhRequired": "中文显示名称不能为空" }, "publishFailed": "发布失败", "createDraftSuccess": "已创建草稿 v{{version}}", @@ -186,7 +190,13 @@ "actions": { "enable": "开启", "disable": "关闭", - "ruleText": "规则文案" + "ruleText": "规则文案", + "displayNames": "多语言名称" + }, + "locales": { + "zh": "中文", + "en": "English", + "ne": "नेपाली" }, "table": { "playCode": "玩法编码", @@ -206,10 +216,15 @@ "aria": { "enablePlay": "切换 {{playCode}} 启用状态" }, + "nameDialog": { + "title": "显示名称(多语言)", + "description": "玩法 {{playCode}};中文必填,英文与尼泊尔语可选。保存草稿并发布后,前台按玩家语言展示。", + "apply": "应用到草稿", + "savedLocal": "显示名称已写入本地草稿,记得保存草稿后再发布。" + }, "ruleDialog": { - "title": "规则文案(中文)", + "title": "规则文案(多语言)", "description": "玩法 {{playCode}};修改内容只会暂存到草稿,保存并发布后才会生效。", - "fieldLabel": "中文规则文案", "apply": "应用到草稿" } }, diff --git a/src/modules/audit/audit-logs-console.tsx b/src/modules/audit/audit-logs-console.tsx index 8f5c467..2509f29 100644 --- a/src/modules/audit/audit-logs-console.tsx +++ b/src/modules/audit/audit-logs-console.tsx @@ -86,11 +86,13 @@ export function AuditLogsConsole(): React.ReactElement { return ( - + {t("title")} -
-
-