Files
mtgodot-poc/data/zh_40250/README.md
T
shenleiandClaude Opus 5.5 b7c215ee42 zh locale: translate all 40250 itemdesc descriptions, wrapped for the tooltip
itemdesc_translate_zh.tsv maps the English description/summary text to Chinese (1,788 entries,
every itemdesc row covered). build_zh_locale.py replaces the cells and wraps Chinese into
26-byte lines joined by ' |', which 40250's Western SplitDescription turns into forced line
breaks; the 50307 overlay row is wrapped the same way.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 11:17:21 +09:00

60 lines
4.5 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 服务端名称快照
2026-09-28 从 `192.168.21.203` 的 `player.item_proto` 与 `player.mob_proto` 只读导出
`vnum, HEX(gb2312name)`,按 GBK 解码为本目录的 UTF-8 TSV。导出时服务端配置为
`LOCALE=newcibn`、`DB_NAME_COLUMN=gb2312name`。客户端原型只修改 `szLocaleName`,
游戏属性和 VNUM 仍取自 40250 客户端原型。
| 文件 | 条数 | SHA-256 |
| --- | ---: | --- |
| `item_names_zh.txt` | 5,743 | `5604985d7f11039f3d3e38d4e2c07995e80ca3e4f6deb01fe57cd772e9cd0f70` |
| `mob_names_zh.txt` | 1,334 | `fdbfe4b3f3367d5842c0e9bbe0b5e5ea2dbe99fb6e566ef5789f65d3794eab5c` |
线上字段里的 1,608 个物品名及 346 个怪物/NPC 名不含汉字,本快照原样保留。
它们的审核译文(2026-09-28 确认)单独放在 `item_names_zh_overlay.txt`、
`mob_names_zh_overlay.txt`,界面回退键译文在 `locale_game_zh_overlay.txt`;
`scripts/build_zh_locale.py` 构建时以 overlay 覆盖快照同 VNUM / 同键的值。
旧的龙驹中文表与线上表有 21 个相同 VNUM 不同名;不把旧表覆盖到服务端。
服务端名称若再更新,需重新只读导出并核对差异后更新本快照。
## 任务文本(translate.lua)
40250 的任务文本都通过 `gameforge.<任务>.<键>` 引用。game 启动时从 `share/locale/<locale>/translate.lua` 读取这些文本(questlua.cpp),
所以换文件后重启即可生效,不用重新编译 quest。
- 译文放在 `quest_translate_zh.tsv`,每行一条:`<任务>.<键>`、制表符、中文,UTF-8 编码。
- 译文里的 `[ENTER]` 是有意的换行;构建时每行按 50 列(汉字算 2 列)重新折行。
- 英文原文相同的其他键会共用同一条译文。
- 还没有译文的键保留英文。
- 构建:`python3 scripts/build_zh_translate_lua.py build <输出>`,输出 GBK 编码。
- 构建逐行保留英文文件的结构(包括嵌套表),只替换字符串值。
- GBK 双字节字符的第二个字节可能是 0x5C(反斜杠),构建时会把它写成两个。
- 查看待译条目:`python3 scripts/build_zh_translate_lua.py todo <目录> --quests <命名空间,...>`。
- 部署到 203:覆盖 `/usr/metin2/server/share/locale/newcibn/translate.lua`,然后重启。英文原件备份在同目录的 `translate.lua.en-20260930`。
## 技能名称与说明(skilldesc.txt)
`scripts/build_zh_locale.py` 以 40250 的 `skilldesc.txt` 为底,逐行取龙驹同 VNUM 的名称、说明和条件列(2–8)
以及效果列(17/20/23)。客户端把效果列当作 `_snprintf` 格式串传入最小值、最大值,所以效果列只有在格式参数与英文一致时才替换。
`skilldesc_zh_overlay.txt` 按 `VNUM\t列号\t译文` 覆盖龙驹缺的或者不对的格。例如 126–128 在龙驹里叫吴/蜀/魏国方言,
这里改成盛唐语、秦皇语、汉武语;骑马技能的说明补上等级要求。
## 整行覆盖(item_list.txt、itemdesc.txt)
`item_list_zh_overlay.txt`、`itemdesc_zh_overlay.txt` 每行是目标文件的一整行(UTF-8,第一列 VNUM),
`build_zh_locale.py` 用它替换同 VNUM 的行(`ROW_FILES`),其余行字节不变;VNUM 不存在就报错。
用于服务端改了用途的物品,例如 50307 小狩猎套装礼包(`tools/server/hunt-set`)换成礼盒图标和中文说明。
## 物品说明(itemdesc_translate_zh.tsv)
40250 `itemdesc.txt` 的说明列(第 3 列)和摘要列(第 4 列,“Potion production”“Research”)按英文原文整句翻译,
一共 1,788 条,放在 `itemdesc_translate_zh.tsv`(英文、制表符、中文,UTF-8)。英文原文完全相同的物品共用同一条译文。
第 2 列物品名不改:客户端显示的名称来自 `item_proto`(见上文名称快照)。
- 客户端的 tooltip 走的是 40250 的西文路径(`uitooltip.SplitDescription`):只在空格处断行,每行最多 35 字节,
遇到 `|x` 这种词会另起一行。构建时会把中文折成东方路径的宽度,也就是每行 26 字节(一个汉字算 2 字节),再用 ` |` 连接各行。
- 断行优先放在标点后面,标点不放在行首;英文单词和数字不会被拆开。
- 如果最后一行只剩一两个字,会把前面的行收窄一些重新折。
- 表里没有的格子保留英文,`zh-locale-report.json` 里的 `itemdesc.txt translation.english_rows` 会列出这些 VNUM。
- `itemdesc_zh_overlay.txt` 的整行覆盖在翻译之后执行,它的说明列也用同样的方式折行。