4.9 KiB
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 客户端,也不是可分发包。可用以下命令启动:
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); 原英文测试中的名称断言及依赖英文布局的仓库点击断言不再适用,完整中文流程待专门验收。
后续验收
- 根据线上 40250 VNUM 及用途逐条翻译仍为英文的 1,608 个物品、346 个怪物/NPC;
同步更新服务端名称和客户端快照。
itemdesc、skilldesc也需按 40250 键和语义逐项合并。 - 补齐 46 个英文回退键,复核 12 个格式不兼容键。
- 在游戏窗口验证中文字符、字体、输入法、换行和 UI 宽度,再联机检查登录、背包、 商店、任务、公告及聊天。
- 完成后制作注册到
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 名称由此一致。