Files
mtgodot-poc/docs/ZH-LOCALE.md
T
2026-09-28 00:18:37 -07:00

72 lines
4.9 KiB
Markdown
Raw 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.
# 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 客户端,也不是可分发包。可用以下命令启动:
```sh
build-release/native_render/mt_native_render \
--live-client build/zh-locale/Client --login-screen --width 1024 --height 768
```
物品与怪物原型从 40250 原版解压,按线上 40250 服务端 `gb2312name` 的 VNUM 快照
只替换 `szLocaleName` 字段后按原格式
重新压缩加密;生成器验证记录数、结构大小、除名称外所有字节不变,以及写出后的
解压往返一致。`itemdesc.txt`、`skilldesc.txt`、`skilltable.txt`、地图坐标、UI 脚本和图像
仍为 40250 原版。龙驹版本的原型不能整份覆盖。
## 已核对的差异
- 40250 `locale_game.txt` 有 817 个键;当前 771 个安全替换为中文,46 个保留英文。
其中 12 个在龙驹文件中的格式占位符不一致,需逐条重译或验证。
- 40250 `locale_interface.txt` 的 326 个键均找到中文对应项。
- 40250 客户端物品原型 5,743 条、怪物/NPC 原型 1,334 条都已按 VNUM 写入
`data/zh_40250/` 中的服务端名称快照;其中分别有 1,608 和 346 个名称仍不含汉字。
- 40250 服务端(`192.168.21.203`,2026-09-27 只读 SSH 核对)当前数据库配置为
`LOCALE=newcibn`、`DB_NAME_COLUMN=gb2312name`,有 `newcibn` 语言目录。
因此客户端采用 CP936;服务端广播字典已在 2026-09-28 完成首轮补齐,名称与任务文本仍需核对。
- 文本阶段的 `port_login_flow_test` 使用生成目录通过完整离线登录、进场、移动、战斗、
商店及仓库流程;macOS 原生窗口的登录服务器选择文字已目视确认显示中文。
名称原型加入后,测试运行确认原生客户端已加载中文的物品 19(武士刀+9);
原英文测试中的名称断言及依赖英文布局的仓库点击断言不再适用,完整中文流程待专门验收。
## 后续验收
1. 根据线上 40250 VNUM 及用途逐条翻译仍为英文的 1,608 个物品、346 个怪物/NPC;
同步更新服务端名称和客户端快照。`itemdesc`、`skilldesc` 也需按 40250 键和语义逐项合并。
2. 补齐 46 个英文回退键,复核 12 个格式不兼容键。
3. 在游戏窗口验证中文字符、字体、输入法、换行和 UI 宽度,再联机检查登录、背包、
商店、任务、公告及聊天。
4. 完成后制作注册到 `pack/Index` 的中文 pack,并在 macOS 和 Android 上分别测试。
## 服务端适配进度(2026-09-28)
服务端 `newcibn/locale_string.txt` 原有 733 个中文键,和 40250 英文参考字典的
762 个键比对后缺少 36 个。`script/build_zh_server_locale.py` 保留原字典的 733 个键
及其原始 GBK 译文,补齐 36 个 40250 键,并修复两条丢失 `%d` 参数的译文;旧字典
特有的 7 个键继续保留。生成文件有 769 个键,全部译文按 GBK 编码,格式参数与
韩文调用键逐条一致。生成产物在 `build/zh-locale/server/newcibn/locale_string.txt`;
`python3 script/test_build_zh_server_locale.py` 验证键和旧译文保持不变。
已将该文件部署到 `/usr/metin2/server/share/locale/newcibn/locale_string.txt`,远端
SHA-256 为 `7f16a8c7b9d08774ec90c4a86b80b17364b072c0af9e2b76a0ea9df027adaef8`。
原文件保存在同目录的 `locale_string.txt.pre-zh-20260928`。在确认没有外部玩家连接后,
仅重启了第 1 频道的三个 `game` 进程和 `game99`,认证及数据库进程未重启;四个
游戏进程和对应监听端口均已恢复。服务端日志中还存在此前就有的
`new_quest_lv52` 缺少 `is_destination_village` 函数错误,本轮没有修改任务脚本。
只读导出的线上数据库中,`item_proto` 有 5,743 条、`mob_proto` 有 1,334 条,
`gb2312name` 全部能按 GBK 解码,但分别有 1,608 和 346 个名称不含汉字。
`script/audit_zh_server_names.py` 将线上 VNUM 与旧中文名称表比对,发现物品 1 处、
怪物/NPC 20 处同 VNUM 不同名(例如 VNUM 101 在线上是 `Wild Dog`,旧表是`幼狼`)。
旧表并非完整的 40250 名称表,因此本轮没有批量修改数据库。客户端已改用本次
只读导出的服务端名称快照,见 `data/zh_40250/README.md`,两侧 VNUM 名称由此一致。