zh locale: pack locale_zh and add reviewed Chinese names

eterpack_pack writes locale packs in the original format (COMPRESS
entries, LZO+TEA index), and build_zh_locale.py packs locale/zh into
locale_zh.eix/.epk registered in pack/Index instead of leaving loose
files.

The reviewed translations for names and keys still in English are
kept apart from the server snapshot in data/zh_40250/*_zh_overlay.txt
(1,607 items, 231 mobs/NPCs, 45 locale_game keys) and override it at
build time. Only YMIR, the coordinate-named warp markers and the empty
TOOLTIP_UNSEAL_LEFT_TIME remain English.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-28 18:45:58 +09:00
co-authored by Claude Opus 5.5
parent fd051cc3ed
commit a1ae69aa7a
9 changed files with 2180 additions and 45 deletions
+45 -20
View File
@@ -1,22 +1,42 @@
# 40250 简体中文适配(进行中)
# 40250 简体中文适配
## 当前可运行原型
先运行 `cmake --build build-release --target locale_proto_patch`,再运行
`python3 script/build_zh_locale.py`,在 `build/zh-locale/Client` 生成独立的测试客户端目录。
它复制 40250 `Eternexus/locale_en/locale/en` 的文件结构,配置 `locale.cfg` 为
`10002 936 zh`,并将中文内容按键合入 `locale_game.txt`、`locale_interface.txt`。
旧龙驹语言包中的占位符与 40250 不一致时保留英文原文;报告在
`build/zh-locale/zh-locale-report.json`。职业与帝国说明采用龙驹中文文本。
生成目录通过符号链接共用仓库 `Client` 的 pack 等资源,仅用于本机验证;
不会修改原始 40250 客户端,也不是可分发包。可用以下命令启动:
## 语言包(2026-09-28 起为正式 pack)
```sh
build-release/native_render/mt_native_render \
cmake --build build-native --target locale_proto_patch eterpack_pack
python3 script/build_zh_locale.py
```
生成器复制 40250 `Eternexus/locale_en/locale/en` 的文件结构到暂存目录
`build/zh-locale/locale-src/zh`,将中文内容按键合入 `locale_game.txt`、`locale_interface.txt`。
旧龙驹语言包缺失或占位符与 40250 不一致的键,改用 `data/zh_40250/locale_game_zh_overlay.txt`
中经审核的译文(同样校验占位符);报告在
`build/zh-locale/zh-locale-report.json`。职业与帝国说明采用龙驹中文文本。
暂存目录随后由 `eterpack_pack`(`extension/tests/eterpack_pack.cpp`,直接调用移植的 40250
`CEterPack::Put` / `EncryptIndexFile`)打成 `locale_zh.eix/.epk`,格式与原版 `locale_en` 等
相同:231 个文件全部为 COMPRESS(LZO),索引经 LZO + TEA 加密。工具写完后以只读方式
重新打开 pack,逐个经 `CEterPack::Get` 读回并与源文件比对。用同一工具重打原版
`locale_en` 源文件,文件名、类型、CRC 和解压内容与原版 pack 逐项一致。
输出客户端 `build/zh-locale/Client`:
- `pack/`:原版 pack 逐个符号链接,加上 `locale_zh.eix/.epk`,以及在 `locale/en/` 之前
注册 `locale/zh/` → `locale_zh` 的 `Index`(CRLF,与原版一致)。
- `locale.cfg` 与 `locale_zh.cfg`:`10002 936 zh`。
- 不留散装的 `locale/zh`:客户端默认先查散装文件,留着会绕过 pack。
仓库 `Client/` 是 `audit/assets/40250-client.json` 校验的原版资源,不做修改。
macOS 启动:
```sh
build-native/native_render/mt_native_render \
--live-client build/zh-locale/Client --login-screen --width 1024 --height 768
```
Android:`./push-android-client.sh --locale zh`(默认推送 `build/zh-locale/Client`,符号链接按
目标文件复制,并以 `locale_zh.cfg` 写入设备上的 `locale.cfg`)。
物品与怪物原型从 40250 原版解压,按线上 40250 服务端 `gb2312name` 的 VNUM 快照
只替换 `szLocaleName` 字段后按原格式
重新压缩加密;生成器验证记录数、结构大小、除名称外所有字节不变,以及写出后的
@@ -25,11 +45,15 @@ build-release/native_render/mt_native_render \
## 已核对的差异
- 40250 `locale_game.txt` 有 817 个键;当前 771 个安全替换为中文,46 个保留英文。
其中 12 个在龙驹文件中的格式占位符不一致,需逐条重译或验证。
- 40250 `locale_game.txt` 有 817 个键;771 个来自龙驹,45 个来自审核译文,
仅 `TOOLTIP_UNSEAL_LEFT_TIME` 保留英文原文(原文为空,40250 脚本未使用)。
- 40250 `locale_interface.txt` 的 326 个键均找到中文对应项。
- 40250 客户端物品原型 5,743 条、怪物/NPC 原型 1,334 条都已按 VNUM 写入
`data/zh_40250/` 中的服务端名称快照;其中分别有 1,608 和 346 个名称仍不含汉字。
`data/zh_40250/` 中的服务端名称快照;快照里分别有 1,608 和 346 个名称不含汉字。
2026-09-28 审核确认的译文放在 `item_names_zh_overlay.txt`(1,607 条)和
`mob_names_zh_overlay.txt`(231 条),构建时覆盖快照同 VNUM 的名称;快照本身保持服务端原样。
剩余英文仅为 vnum 2 占位物品 `YMIR` 和 115 个名称为地图坐标的传送点标记(游戏内不显示)。
客户端显示译名,服务端数据库仍为英文,服务端发出的含名称消息会显示英文。
- 40250 服务端(`192.168.21.203`,2026-09-27 只读 SSH 核对)当前数据库配置为
`LOCALE=newcibn`、`DB_NAME_COLUMN=gb2312name`,有 `newcibn` 语言目录。
因此客户端采用 CP936;服务端广播字典已在 2026-09-28 完成首轮补齐,名称与任务文本仍需核对。
@@ -40,12 +64,13 @@ build-release/native_render/mt_native_render \
## 后续验收
1. 根据线上 40250 VNUM 及用途逐条翻译仍为英文的 1,608 个物品、346 个怪物/NPC;
同步更新服务端名称和客户端快照。`itemdesc`、`skilldesc` 也需按 40250 键和语义逐项合并。
2. 补齐 46 个英文回退键,复核 12 个格式不兼容键。
1. 物品/怪物译名和界面回退键已在客户端补齐(overlay);是否同步写入服务端
`gb2312name` 需另行核对后决定。`itemdesc`、`skilldesc` 仍需按 40250 键和语义逐项合并。
2. (已完成)46 个英文回退键已补齐。
3. 在游戏窗口验证中文字符、字体、输入法、换行和 UI 宽度,再联机检查登录、背包、
商店、任务、公告及聊天。
4. 完成后制作注册到 `pack/Index` 的中文 pack,并在 macOS 和 Android 上分别测试。
4. 中文 pack 已注册到 `pack/Index`(见上);macOS 登录界面已确认从 pack 读取中文,
Android 真机/模拟器待测。
## 服务端适配进度(2026-09-28)