Files
unity/Docs/Production/LocalizationPlan.md
RCiBot 92623a1bc8 feat: establish mech extraction prototype with bilingual UI
Track Unity source, scenes, editable assets, licenses, tools and QA evidence. Exclude generated caches, Windows builds and raw runtime logs.
2026-11-12 12:28:40 +08:00

55 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 多语言实施计划
2026-11-12。范围:Windows PC 键鼠灰盒版本。首页以当前机库页为准;首批提供简体中文(`zh-Hans`)与 English(`en`),新增语言沿用同一套表与字体配置。
## 玩家可见行为
- 主页整个视口右下角固定语言按钮,独立于左侧机库内容。1920×1080 参考分辨率下距右、下各 32,按钮至少 240×48。文字采用 `语言 / Language · 简体中文` 或 `语言 / Language · English`。
- 点击展开向上的语言列表,以语言本名显示选项和当前选择。选择立即更新当前页面;点击外部或按 Esc 收起并将焦点还给按钮。支持 Tab、Enter 和 Space。
- 切换保留底盘、四槽配装、研究状态、已有结算报告与存档,不重建场景或重置出击。
- 首次启动按已保存选择 → 系统语言匹配 → English 回退。中文系统首批映射到简体中文。偏好独立于正式出击和试验场存档,重启仍生效。
- 覆盖机库、HUD、货仓、局内改装、路线、暂停、通知、结算、底盘与装备名称及说明、物资与蓝图名称、交互提示和世界标牌。IRONSPORE 与按键名称保留。
## 技术与目录
优先用 Unity 官方 Localization 包与 String Tables;通过 Unity MCP 查询兼容版本、安装、创建资产并检查离线构建。若当前包源不可用,记录实际失败后采用本地可扩展的表驱动适配层,在验收记录中说明最终选择。
运行时代码放在 `Assets/Game/Scripts/Localization/`;语言与表放在 `Assets/Game/Localization/`;项目派生字体和 UI 文本设置放在 `Assets/Game/UI/Fonts/`。第三方字体原件分别放在 `SourceAssets/ThirdParty/<发行方>/<字体>/` 与 `Assets/ThirdParty/<发行方>/<字体>/`,许可放在 `Docs/Production/Licenses/<发行方>/<字体>/`,来源、版本、日期、SHA-256 登记到素材台账。
文字用稳定键和完整句式,数字等动态内容使用参数。数据 ID、文件名、蓝图 ID、回收事件编号与存档版本保持稳定。报告和通知保存键及参数,显示时翻译。查表驻留内存,HUD 不逐帧异步加载资源。英文为缺词回退,开发检查覆盖缺键及参数不一致。
中文字体同时配置 UI Toolkit 的 PanelTextSettings 与世界 TextMesh 的 Font/material;沿用已有序列化 PanelSettings 及 ICU 引用。字体和语言表随 Windows 包离线提供。字体选用经核实许可的免费 CJK 字体,实际文件和许可一同归档。
## 执行顺序
| 编号 | 工作 | 完成条件 |
| --- | --- | --- |
| L1 | 核对 Unity MCP、包源及实际兼容版本;建立语言服务、双语表、初始化与偏好。 | 两种语言可离线取词;优先级与回退明确。 |
| L2 | 获取并登记中文字体,导入设置与 UI、世界字体引用。 | 中文无缺字;保留 PanelSettings 的 ICU;许可随包。 |
| L3 | 提取全部玩家文字并翻译,保留游戏数据 ID。 | 表键覆盖、占位参数一致;结算与提示可重新翻译。 |
| L4 | 首页右下角按钮与上弹列表,鼠标、键盘、收起、焦点及即时刷新。 | 选择后即时显示,重启记忆;机库选择保持。 |
| L5 | 其余页面与世界标牌绑定语言变化,保存当前 UI 上下文。 | 不重建玩法场景;改装比较、货物、倒计时和通知正确。 |
| L6 | 自动化与可视化回归。 | 语言优先级、全键与格式、旧存档不变、反复切换及不同分辨率通过。 |
| L7 | 通过 Unity MCP 构建并启动 Windows 版,归档截图与结果。 | 离线运行双语及重启偏好检查;产物与限制记录在 Docs/QA/Localization。 |
## 验收用例
1. 初次中文、英文及不支持的系统语言;有效、无效手动偏好的优先级。
2. 首页展开、当前标记、鼠标选择、外部点击与 Esc 收起、键盘 Tab/Enter/Space。
3. 修改底盘和四槽装备,切换 30 次;选择、蓝图、材料、回收记录不变,没有重复按钮或订阅。
4. 结算返航或机毁后切换语言,已有报告、通知和物资名称一起更新。
5. HUD、货仓、改装、路线、暂停、世界标牌均检查双语,参数不泄漏、中文不显示方块。
6. 1280×720、1920×1080、2560×1440 与超宽屏中按钮不被裁切,列表向上展开,机库内容可滚动。
7. 原有存档测试通过;语言选择不改写 profile.json、range.json 或任何货物/结算数据。
8. Windows 成品重启后保留选择,不依赖联网;记录 Console、测试、构建与实际截图。仅完成过的验证标记为通过。
## 实际实施选择
Unity MCP 查询到兼容包 `com.unity.localization@1.5.14`。安装请求被 Unity 包服务器拒绝,明确报告 Unity Hub 未登录、下载请求缺少认证。因此本轮采用 `LocalizationCatalog` 配置资产与 `en.json`、`zh-Hans.json` 两份本地表,不引入未安装的运行时依赖。共 134 个文本键;两份表启动时加载到内存,可离线使用。未来接入官方包时保留现有键和 `GameLocalization` 调用入口。
中文字体使用本机已有且未修改的 Noto Sans SC,已从二进制读取许可与版权并归档完整 OFL 文本。字体与派生图集的路径、版本和哈希见 [素材台账](AssetSources.md)。PanelSettings 保留原有 ICU 资源,并增加文本设置与字体引用。
UI Toolkit 的程序化控件同时接收界面键盘事件和 Input System 提交输入,并在同一帧去重;语言列表内 Tab / Shift+Tab 循环选择,Enter / Space 确认,Esc 收起。切换仅重建当前 UI,上下文、场景和游戏数据保持。
后续编辑文字以 `Tools/Localization/BuildTables.py` 为源生成双语 JSON,再由 Unity MCP 刷新并执行 `LocalizationBuilder.Configure()` 补齐新增字符。添加语言时追加同键表、配置 Catalog 与编辑器配置入口中的语言列表,并提供对应字体和布局检查。实际验证与成品见 [多语言验收记录](../QA/Localization/Acceptance.md)。