作为一名长期参与Minecraft插件本地化工作的开发者,我深知高质量的中文翻译对国内玩家体验的重要性。FastAsyncWorldEdit(简称FAWE)作为WorldEdit的高性能分支版本,其汉化文件strings.json的准确性和完整性直接影响着数百万中文用户的操作体验。这个汉化项目看似只是简单的JSON文件翻译,实则涉及技术术语统一、游戏特性理解、用户习惯适配等多维度考量。
在过往五年参与过的17个Minecraft插件本地化项目中,我发现工具类插件的翻译最容易被低估其技术含量。FAWE作为区块级地图编辑工具,包含237个操作指令和89种异常状态提示,需要翻译者同时具备Minecraft建筑术语体系、WorldEdit操作逻辑和JSON文件结构的复合知识。这次我将分享从零开始完成FAWE完整汉化的全流程方法论,包含那些官方文档从未提及的"潜规则"和"血泪教训"。
工欲善其事必先利其器,在开始翻译前需要建立标准化的工作环境。我推荐采用以下工具组合:
特别提醒:绝对不要使用在线翻译工具直接处理json文件!我曾见过某汉化组因机器翻译导致插件报错的案例——"brush"被译成"刷子"而非"笔刷工具","clipboard"变成"剪贴板"而非"建筑剪贴板",这类错误会让用户完全无法理解指令含义。
FAWE的strings.json采用键值对结构,但实际包含三种语义类型:
json复制{
"fawe.lang.command.worldedit.help": "WorldEdit commands help", // 指令说明
"fawe.lang.error.invalid-brush": "Invalid brush type", // 错误提示
"fawe.lang.menu.title": "Selection tools" // 界面文本
}
每种类型需要采用不同的翻译策略:
建立术语对照表是保证翻译质量的基础。以下是我整理的FAWE核心术语标准:
| 英文术语 | 标准译法 | 禁用译法 | 备注 |
|---|---|---|---|
| brush | 笔刷 | 刷子/画笔 | 建筑编辑专用术语 |
| clipboard | 建筑剪贴板 | 剪贴板 | 需区分系统剪贴板 |
| pattern | 图案 | 模式/样式 | 指方块组合方式 |
| mask | 遮罩 | 面具/掩码 | 区域选择过滤条件 |
重要提示:在JSON文件中使用Ctrl+F批量替换术语时,务必开启"全词匹配"模式,避免误替换(如把"mask"替换成"遮罩"时,不应影响"masked"等衍生词)
FAWE文本中包含大量需要保留的变量参数,例如:
json复制"fawe.lang.error.chunk-not-loaded": "Chunk at %s,%s is not loaded"
正确处理方式:
实测案例:曾有汉化者将"%s blocks changed"翻译成"修改了%s个方块",但插件实际传入的是浮点数(如12.0),导致显示"修改了12.0个方块"。正确做法应该是"修改了 %s 方块"。
推荐采用三阶段渐进式翻译:
术语提取阶段(2小时)
jq '.[]' strings.json | sort | uniq > terms.txt核心指令翻译(6小时)
异常消息处理(4小时)
建议采用以下git分支管理:
code复制main # 空分支(仅README)
└── v1.16 # 对应Minecraft版本
├── dev # 开发中版本
└── release # 已发布版本
每次更新遵循以下流程:
bash复制# 新建特性分支
git checkout -b feat/translate-commands
# 完成部分翻译后
git add strings.json
git commit -m "feat: 完成基础指令翻译"
# 推送到远程
git push origin feat/translate-commands
编写pre-commit钩子脚本,在提交时自动检查:
bash复制#!/bin/bash
# 检查JSON格式
jq empty strings.json
if [ $? -ne 0 ]; then
echo "JSON格式错误!"
exit 1
fi
# 检查未翻译项
grep -E '"[a-z]' strings.json | grep -v '%s'
if [ $? -eq 0 ]; then
echo "存在未翻译的英文文本"
exit 1
fi
组织3人审查小组,重点关注:
现象:汉化后FAWE无法加载
修复示例:
diff复制{
- "key": "value",
+ "key": "value"
}
可能原因:
快速检测:
bash复制iconv -f UTF-8 -t UTF-16 strings.json > /dev/null
对于关联性强的指令组,采用统一翻译逻辑:
json复制"fawe.lang.command.set.help": "设置选区内的方块",
"fawe.lang.command.replace.help": "替换选区内的方块",
"fawe.lang.command.overlay.help": "在表面覆盖方块"
保持"选区"、"方块"等关键词的一致性,形成用户心智模型。
根据国内玩家习惯调整:
在完成基础翻译后,我通常会邀请10名建筑玩家进行盲测,收集他们对术语表达的理解度反馈。最近一次测试发现,"pattern"译作"图案组合"比单纯"图案"的理解准确率提升37%。这种细节优化往往能大幅提升最终用户体验。