[Feature/UI] 支持中英双语言版本:新增首页语言选择入口并进入对应语言的 acts HTML 页面 #503

Open
opened 2026-09-28 01:16:16 +00:00 by troytt · 0 comments
Owner

背景与问题描述 (Background & Problem Statement)

  1. 缺乏独立首页与语言选择入口:
    • 目前访问根路径 / 或 /index.html 时,vite.config.ts 中的 root-redirect 插件会直接 302 重定向(构建产物中通过 meta refresh / location.replace 跳转)至单一的 acts.html,无法在进入游戏前选择语言版本。
  2. 界面与游戏内文本语言单一或混排:
    • 当前 acts.html 的顶栏控制面板(职业、章节、场景、细分场景、光照、密度、精英、快捷键说明等)硬编码为中文。
    • 游戏内部分 UI 面板(属性面板、背包与储物箱、技能树、任务日志、传送小站、NPC 交互与商店、区域进入横幅、怪物血条、地面物品标签等)存在硬编码中文或中英括号混排(如 私人储物箱 (Private Stash)),尚未形成纯粹、独立的**中文版(CHI)与英文原版(ENG)**双语言体系。

核心需求与设计方案 (Requirements & Proposed Design)

1. 首页 (index.html) 语言选择入口

  • 在项目根目录提供正式的首页 index.html(替代原有的无条件自动跳转桩页面),呈现暗黑破坏神 II 哥特风格主视觉与双语入口按钮:
    • 中文版入口按钮(如「简体中文 / 进入暗黑破坏神 II 中文版」)→ 点击进入中文版 acts HTML 页面(如 acts.html / acts-zh.html)。
    • 英文版入口按钮(如「English / Enter Diablo II English Version」)→ 点击进入英文版 acts HTML 页面(如 acts-en.html 或对应英文 acts HTML 入口)。
  • 跳转时自动透传 URL 查询参数与 Hash(如 ?pack=..., ?base=..., ?arena=1 等)。
  • 更新 vite.config.ts 的开发服务器中间件与 rollupOptions.input,确保 index.html 及中英文 acts HTML 均被正确服务与打包。

2. 中/英双版本 acts HTML 页面与顶栏控件本地化

  • 中文版 acts HTML (lang="zh-CN"):
    • 保持完整的中文标题与顶栏控制器(职业、章节、场景、细分场景、光照、密度、精英、快捷键提示、状态加载提示)。
  • 英文版 acts HTML (lang="en"):
    • 提供全英文标题与顶栏控制器(Class, Act, Scene, Variant, Lighting, Density, Elite, Hotkey hints: I Inventory · A Character · T Skills · Q Quests · V Waypoints · ~ Belt · R Run/Walk · W Weapon Swap,以及英文状态提示)。
  • 在顶栏控制区提供便捷的语言版本切换按钮/链接,支持在中文版与英文版 acts 页面之间一键切换并保持当前章节与场景状态。

3. 游戏内全链路 1.13c 原版 .tbl 双语对齐 (In-Game Localization Parity)

基于已烘焙的 1.13c 官方字符串表(CANONICAL_ENG_TBL_DICT 与 CANONICAL_CHI_TBL_DICT,源自 string.tbl / expansionstring.tbl / patchstring.tbl)及官方 Excel 数据表,按当前进入的 acts 页面语言统一驱动:

  • 章节与 136 个关卡场景名 (level-names):
    • 中文版使用 ACT_NAMES_ZH / LEVEL_NAMES_ZH;
    • 英文版使用 Levels.txt / .tbl 原版英文名(Act I..Act V, Rogue Encampment, Blood Moor 等)及区域进入横幅(Entering ... vs 进入 ...)。
  • 物品、词缀、属性 Tooltip 与地面掉落标签 (item-names.ts, inventory.ts, ground-labels.ts):
    • 根据当前语言(CHI / ENG)解析底材、暗金、套装、符文、词缀名称及 ItemStatCost.txt 属性描述,消除伪双语拼接。
  • HUD 与左/右停靠面板 (hud-manager.ts, character-sheet.ts, skill-tree-panel.ts, world-panels.ts, control-bar.ts):
    • 角色属性面板(Strength / Dexterity / Vitality / Energy、攻防与四抗标签 vs 力量 / 敏捷 / 体力 / 精力);
    • 技能树选项卡、技能名称与详情计算描述(SkillDesc.txt 中英切换);
    • 任务日志(27 个任务的标题与目标说明)、小站传送菜单(各幕小站名称)、私人储物箱与赫拉迪克方块标题及按钮提示;
    • 城镇 NPC 头顶菜单(talk, trade, trade/repair, gamble, identify items, cancel vs 中文原版词条)、对话文本与商店标签页;
    • 怪物血条名称、精英词缀(Extra Strong, Cursed, Teleportation 等)及免疫标识(Immune to Physical / Magic / Fire / Cold / Lightning / Poison)。
  • 字体渲染对齐 (font.ts):
    • 英文版完整使用 1.13c 原版 DC6 位图字体(font6, font8, font16, font30, fontexocet10, fontformal12);中文版保持清晰的 CJK 字体渲染与描边对齐。

验收标准 (Acceptance Criteria)

  • 访问首页 / 或 /index.html 显示暗黑风格中英双语选择界面,点击对应按钮可进入中文版或英文版 acts HTML 页面。
  • vite.config.ts 打包构建(npm run build / npm run build:game)包含首页与中英双版本 acts HTML 入口。
  • 中文版与英文版 acts 页面的 DOM 顶栏控件及 Canvas 游戏内全套 HUD 面板、物品 Tooltip、技能提示、关卡名、NPC 菜单与怪物信息均严格对应所选语言,无硬编码跨语言残留。
  • npm run typecheck 0 errors,npx vitest run 全量单测通过,并通过无头浏览器验证首页跳转与双语界面渲染。
## 背景与问题描述 (Background & Problem Statement) 1. **缺乏独立首页与语言选择入口**: - 目前访问根路径 `/` 或 `/index.html` 时,`vite.config.ts` 中的 `root-redirect` 插件会直接 302 重定向(构建产物中通过 `meta refresh` / `location.replace` 跳转)至单一的 `acts.html`,无法在进入游戏前选择语言版本。 2. **界面与游戏内文本语言单一或混排**: - 当前 `acts.html` 的顶栏控制面板(职业、章节、场景、细分场景、光照、密度、精英、快捷键说明等)硬编码为中文。 - 游戏内部分 UI 面板(属性面板、背包与储物箱、技能树、任务日志、传送小站、NPC 交互与商店、区域进入横幅、怪物血条、地面物品标签等)存在硬编码中文或中英括号混排(如 `私人储物箱 (Private Stash)`),尚未形成纯粹、独立的**中文版(CHI)**与**英文原版(ENG)**双语言体系。 --- ## 核心需求与设计方案 (Requirements & Proposed Design) ### 1. 首页 (`index.html`) 语言选择入口 - 在项目根目录提供正式的首页 `index.html`(替代原有的无条件自动跳转桩页面),呈现暗黑破坏神 II 哥特风格主视觉与双语入口按钮: - **中文版入口按钮**(如「简体中文 / 进入暗黑破坏神 II 中文版」)→ 点击进入中文版 `acts` HTML 页面(如 `acts.html` / `acts-zh.html`)。 - **英文版入口按钮**(如「English / Enter Diablo II English Version」)→ 点击进入英文版 `acts` HTML 页面(如 `acts-en.html` 或对应英文 `acts` HTML 入口)。 - 跳转时自动透传 URL 查询参数与 Hash(如 `?pack=...`, `?base=...`, `?arena=1` 等)。 - 更新 `vite.config.ts` 的开发服务器中间件与 `rollupOptions.input`,确保 `index.html` 及中英文 `acts` HTML 均被正确服务与打包。 ### 2. 中/英双版本 `acts` HTML 页面与顶栏控件本地化 - **中文版 `acts` HTML (`lang="zh-CN"`)**: - 保持完整的中文标题与顶栏控制器(职业、章节、场景、细分场景、光照、密度、精英、快捷键提示、状态加载提示)。 - **英文版 `acts` HTML (`lang="en"`)**: - 提供全英文标题与顶栏控制器(Class, Act, Scene, Variant, Lighting, Density, Elite, Hotkey hints: `I Inventory · A Character · T Skills · Q Quests · V Waypoints · ~ Belt · R Run/Walk · W Weapon Swap`,以及英文状态提示)。 - 在顶栏控制区提供便捷的语言版本切换按钮/链接,支持在中文版与英文版 `acts` 页面之间一键切换并保持当前章节与场景状态。 ### 3. 游戏内全链路 1.13c 原版 `.tbl` 双语对齐 (In-Game Localization Parity) 基于已烘焙的 1.13c 官方字符串表(`CANONICAL_ENG_TBL_DICT` 与 `CANONICAL_CHI_TBL_DICT`,源自 `string.tbl` / `expansionstring.tbl` / `patchstring.tbl`)及官方 Excel 数据表,按当前进入的 `acts` 页面语言统一驱动: - **章节与 136 个关卡场景名 (`level-names`)**: - 中文版使用 `ACT_NAMES_ZH` / `LEVEL_NAMES_ZH`; - 英文版使用 `Levels.txt` / `.tbl` 原版英文名(`Act I`..`Act V`, `Rogue Encampment`, `Blood Moor` 等)及区域进入横幅(`Entering ...` vs `进入 ...`)。 - **物品、词缀、属性 Tooltip 与地面掉落标签 (`item-names.ts`, `inventory.ts`, `ground-labels.ts`)**: - 根据当前语言(`CHI` / `ENG`)解析底材、暗金、套装、符文、词缀名称及 `ItemStatCost.txt` 属性描述,消除伪双语拼接。 - **HUD 与左/右停靠面板 (`hud-manager.ts`, `character-sheet.ts`, `skill-tree-panel.ts`, `world-panels.ts`, `control-bar.ts`)**: - 角色属性面板(Strength / Dexterity / Vitality / Energy、攻防与四抗标签 vs 力量 / 敏捷 / 体力 / 精力); - 技能树选项卡、技能名称与详情计算描述(`SkillDesc.txt` 中英切换); - 任务日志(27 个任务的标题与目标说明)、小站传送菜单(各幕小站名称)、私人储物箱与赫拉迪克方块标题及按钮提示; - 城镇 NPC 头顶菜单(`talk`, `trade`, `trade/repair`, `gamble`, `identify items`, `cancel` vs 中文原版词条)、对话文本与商店标签页; - 怪物血条名称、精英词缀(`Extra Strong`, `Cursed`, `Teleportation` 等)及免疫标识(`Immune to Physical / Magic / Fire / Cold / Lightning / Poison`)。 - **字体渲染对齐 (`font.ts`)**: - 英文版完整使用 1.13c 原版 DC6 位图字体(`font6`, `font8`, `font16`, `font30`, `fontexocet10`, `fontformal12`);中文版保持清晰的 CJK 字体渲染与描边对齐。 --- ## 验收标准 (Acceptance Criteria) - [ ] 访问首页 `/` 或 `/index.html` 显示暗黑风格中英双语选择界面,点击对应按钮可进入中文版或英文版 `acts` HTML 页面。 - [ ] `vite.config.ts` 打包构建(`npm run build` / `npm run build:game`)包含首页与中英双版本 `acts` HTML 入口。 - [ ] 中文版与英文版 `acts` 页面的 DOM 顶栏控件及 Canvas 游戏内全套 HUD 面板、物品 Tooltip、技能提示、关卡名、NPC 菜单与怪物信息均严格对应所选语言,无硬编码跨语言残留。 - [ ] `npm run typecheck` 0 errors,`npx vitest run` 全量单测通过,并通过无头浏览器验证首页跳转与双语界面渲染。
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: troytt/diablo2-web#503
No description provided.