恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Among Us Revamped 繁体中文汉化实战:从语言文件到字体替换的全流程
首页
资讯中心
/
Among Us Revamped 繁体中文汉化实战:从语言文件到字体替换的全流程
Among Us Revamped 繁体中文汉化实战:从语言文件到字体替换的全流程
发布时间:2026/9/7 14:44:48
今天我们要聊的是一个挺有意思的实战方向给 Among Us Revamped 做繁体中文汉化本地化。不少玩家和开发者在接触 Among Us 的 Revamped 版本时会发现英文界面用起来还是有点门槛尤其是给队友报任务、讨论投票结果的时候英文不熟练很容易误操作。网上关于这个游戏汉化的资料比较零散大多是直接丢一个成品包很少有人讲清楚“汉化包到底做了什么”“语言文件长什么样”“为什么有些汉化补丁会乱码或漏字”。这篇文章我会围绕 Among Us Revamped 繁体中文汉化这个主题从本地化工程的视角做一次系统拆解。内容包含语言文件结构、中文编码处理、字体替换思路、文本溢出问题、打包与验证流程以及常见踩坑点。不论你是想自己做一份汉化包还是想了解游戏本地化的通用流程这篇都能给你一条完整可执行的路线。1. 背景与核心概念1.1 Among Us Revamped 是什么Among Us 是一款由 Innersloth 开发的多人社交推理游戏玩家在一艘太空飞船中分成船员和冒充者两个阵营通过完成任务和投票找出冒充者。Revamped 通常指社区改造版本或增强版本这类版本在视觉表现、游戏机制、地图细节上做了大量调整体验上比原版更丰富。由于游戏原版界面是英文中文玩家在体验时经常会遇到几个问题任务描述看不懂、紧急会议里表达不清楚、设置项不知道每个开关是什么意思。因此一个高质量的繁体中文语言包对中文玩家来说几乎是刚需。1.2 游戏本地化到底是什么游戏本地化Game Localization不只是“翻译文本”而是一套完整的工程流程。技术层面至少包括提取游戏内所有需要翻译的字符串。将英文资源替换为目标语言资源。处理编码格式、字符集和字体支持。调整 UI 布局以适配不同语言文本长度。在目标语言环境下做完整回归测试。一个好的本地化包不只是让文字变成中文还要保证中文在游戏里显示正常、不溢出、不乱码。这背后涉及的字符编码、字体资源、资源打包等知识才是本地化工程真正的核心。1.3 为什么选择繁体中文而不是简体有一部分玩家习惯阅读繁体中文尤其是在港台地区的玩家社群中繁体中文的接受度更高。此外Among Us 的社区模组生态中不少国际模组默认支持繁体中文而未必支持简体。从制作成本来说繁体中文与简体中文共享同一套中文字符处理逻辑做了繁体版本之后再生成简体版本只需要做一次简繁转换工程上并不重复。这篇教程会以繁体中文为目标语言展开但所有方法对简体中文同样适用。2. 环境准备与版本说明2.1 环境要求本地化工程本身不依赖特定操作系统但不同平台的文件处理方式略有差异。推荐使用以下环境工具用途说明Windows 10/11 或 macOS宿主操作系统也可使用 Linux差异不大Python 3.8批处理脚本用来做文本转换、文件批处理VS Code 或 Notepad文本编辑必须能识别 UTF-8 编码Beyond Compare 或 Diff 工具文件对比用来对比原版与汉化版差异7-Zip资源打包处理模组资源文件游戏本体Among Us Revamped测试环境版本需要根据你手中的模组确定这里特别提醒Among Us Revamped 的版本非常多不同的 Revamped 版本资源结构可能存在差异。本文的示例以常见资源结构为例重点演示本地化的思路和处理流程具体路径需要根据你的实际版本调整。2.2 目录结构认识大多数 Among Us 模组版本在安装后会有一个模组目录。以常见的 Among Us 模组安装结构为例Among Us/ ├── Among Us.exe ├── BepInEx/ │ ├── config/ │ ├── core/ │ └── plugins/ ├── Among Us_Data/ │ ├── Managed/ │ ├── Resources/ │ └── StreamingAssets/ └── language/其中语言相关文件通常出现在Among Us_Data/StreamingAssets或模组自定义的language目录中。Revamped 版本为了支持多语言往往会使用 JSON 格式的语言文件这是一种可读性很强、也容易替换格式。如果测试时发现路径不一致建议先打开目录浏览一遍找到包含语言代码如 en、zh-TW或语言名称的 JSON 文件再做后续操作。3. 核心语法、配置或原理拆解3.1 JSON 语言文件结构Among Us Revamped 的语言文件通常是一个 JSON 文件。JSONJavaScript Object Notation是一种轻量级的数据交换格式用键值对保存字符串内容。一个典型条目如下{ menu: { play: Play, settings: Settings, quit: Quit }, task: { swipe_card: Swipe Card, fix_wiring: Fix Wiring, download_data: Download Data } }这里的menu和task是命名空间用来对字符串分组。play是键名表示某个 UI 元素对应的标识Play是它在英文环境下显示的值。汉化时你不需要改动键名只需要改动值{ menu: { play: 開始遊戲, settings: 設定, quit: 退出遊戲 }, task: { swipe_card: 刷卡, fix_wiring: 修復電路, download_data: 下載資料 } }关键点键名是游戏代码读取的标识符绝对不能改值才是显示在界面上的文本。新手最容易犯的错误就是把键名也翻译了导致游戏读取不到对应文本最终界面显示默认英文甚至报错。3.2 编码问题UTF-8 与 BOM编码问题是中文汉化中最常见的坑点。JSON 文件本身没有强制指定编码但 Among Us 基于 Unity 引擎开发Unity 的资源读取默认以 UTF-8 作为首选字符串编码。中文文本必须保存为 UTF-8 编码否则会出现乱码。这里有一个容易被忽略的细节UTF-8 编码的文件可以带 BOMByte Order Mark字节序标记也可以不带。BOM 是文件开头的一段不可见字符用来标识文件的编码方式。对于 JSON 文件绝大多数解析器能同时兼容带 BOM 和不带 BOM 的情况但有些严格模式的解析器遇到 BOM 会解析失败。因此建议使用 VS Code 或 Notepad 编辑语言文件。保存时统一选择“UTF-8”不带 BOM。不要用 Windows 自带的记事本直接保存中文文件因为老版本记事本默认保存为 ANSI 编码会导致中文乱码。VS Code 中可以通过右下角的编码按钮切换编码模式UTF-8 - 通过“重新打开”和“保存编码”选项调整3.3 简繁转换的工程化处理做繁体中文语言包时你可能已经拿到了一个简体汉化包或者需要把英文直接翻译成繁体。手动逐条翻译效率极低而且容易漏项。推荐在 Python 中使用 OpenCC 库完成批量简繁转换。OpenCCOpen Chinese Convert是一个开源的中文简繁转换库支持多种转换标准。安装命令如下pip install opencc-python-reimplemented基础用法# -*- coding: utf-8 -*- from opencc import OpenCC # 使用台湾标准的繁体转换 cc OpenCC(s2twp) text 我们在飞船上完成了刷卡任务 converted cc.convert(text) print(converted)运行结果我們在飛船上完成了刷卡任務s2twp是 OpenCC 中的一个转换配置代表“简体到台湾繁体并转换为台湾常用词汇”。例如“软件”会转换为“軟體”“鼠标”会转换为“滑鼠”。如果你的目标读者是香港玩家可以考虑使用s2hk。需要注意的是简繁转换不是简单的字符映射同一个简体字在不同语境下可能对应不同的繁体字比如“发”可以对应“發”和“髮”“后”可以对应“後”和“后”。所以转换之后对游戏内的关键文本必须做人工审校。3.4 中文字体支持原理这一步是整个汉化工程里最容易“翻车”的地方。英文游戏默认使用的字体通常只包含 ASCII 字符集也就是英文字母、数字、常见符号并不包含中文字符。当你把语言文件里的文本替换成中文后游戏渲染字体时找不到对应的字形就会出现两种情况中文文本显示为方框豆腐块。中文文本完全不可见。中文文本正常但与其他英文字符混排时高低不一。原理是游戏 UI 渲染时每个字符会查询字体文件中的字形索引。中文字符数以万计而英文字体文件通常只有几百个字形庞大数据量的中文字符不可能在英文通用字体里找到对应位置。因此汉化包必须附带一个支持中文的字体文件并在游戏配置或代码中指定该字体。常见的做法有两种使用开源中文字体例如思源黑体、思源宋体、Noto Sans CJK。从其他支持中文的 Unity 游戏中提取字体文件但需要注意许可协议。本文推荐使用思源黑体Source Han Sans或 Noto Sans CJK这两者本质上是同一款字体系列开源免费字形完整简体繁体都能正确显示并且屏幕阅读效果较好。字体文件通常为.ttf或.otf格式。Among Us 的模组资源目录中一般会有一个fonts或resources文件夹将中文字体文件复制进去并按照模组路径的配置方式替换即可。4. 完整实战案例下面我们从零开始完整演示如何制作一个 Among Us Revamped 繁体中文语言包。4.1 创建项目结构首先在工作目录下创建一个本地化工程目录among-us-zh-tw/ ├── original/ │ └── language/ │ └── en.json ├── translated/ │ └── language/ │ └── zh-TW.json ├── fonts/ │ └── SourceHanSansTW-Regular.otf ├── scripts/ │ ├── convert_to_traditional.py │ ├── merge_language.py │ └── check_json.py └── output/各目录的用途original/保存从游戏模组中提取的原始英文语言文件。translated/保存转换后的繁体中文语言文件。fonts/存放中文字体文件。scripts/存放批处理脚本。output/存放最终打包好的汉化包。4.2 提取原始语言文件打开 Among Us Revamped 的安装目录找到语言文件所在的文件夹。常见位置是Among Us_Data/StreamingAssets/language/或BepInEx/plugins/AmongUsRevamped/language/将原版英文语言文件en.json文件名可能略有不同复制到工作目录的original/language/下。提取后先用文本编辑器打开确认结构。以常见的任务名称为例{ tasks: { admin_card: Admin Card, align_engine: Align Engine, asteroids: Clear Asteroids, calibrate: Calibrate Distributor, chart: Chart Course }, ui: { start: Start, stop: Stop, report: Report!, vote: Vote, skip: Skip, emergencyMeeting: Emergency Meeting } }4.3 编写简繁转换脚本如果已有简体汉化版本可以直接用 OpenCC 做简繁转换。假设你已经有一份简体语言文件zh-CN.json内容如下{ tasks: { admin_card: 管理员卡, align_engine: 对准引擎, asteroids: 清除小行星, calibrate: 校准分配器, chart: 规划航线 }, ui: { start: 开始, stop: 停止, report: 报告, vote: 投票, skip: 跳过, emergencyMeeting: 紧急会议 } }编写转换脚本# -*- coding: utf-8 -*- # 文件路径scripts/convert_to_traditional.py import json import os from opencc import OpenCC def convert_json_file(input_path, output_path, conversions2twp): with open(input_path, r, encodingutf-8) as f: data json.load(f) cc OpenCC(conversion) def convert_obj(obj): if isinstance(obj, dict): return {k: convert_obj(v) for k, v in obj.items()} elif isinstance(obj, list): return [convert_obj(item) for item in obj] elif isinstance(obj, str): return cc.convert(obj) else: return obj converted_data convert_obj(data) # 确保输出目录存在 os.makedirs(os.path.dirname(output_path), exist_okTrue) with open(output_path, w, encodingutf-8) as f: json.dump(converted_data, f, ensure_asciiFalse, indent2) print(f转换完成{input_path} - {output_path}) if __name__ __main__: convert_json_file( input_pathtranslated/language/zh-CN.json, output_pathtranslated/language/zh-TW.json, conversions2twp )运行命令cd among-us-zh-tw python scripts/convert_to_traditional.py运行后检查translated/language/zh-TW.json内容应该是{ tasks: { admin_card: 管理員卡, align_engine: 對準引擎, asteroids: 清除小行星, calibrate: 校準分配器, chart: 規劃航線 }, ui: { start: 開始, stop: 停止, report: 報告, vote: 投票, skip: 跳過, emergencyMeeting: 緊急會議 } }4.4 校验 JSON 文件合法性JSON 文件只要多一个逗号或少一个引号游戏读取时就会失败导致汉化不生效或游戏无法启动。一个稳妥的做法是写一个校验脚本检查所有语言文件是否符合 JSON 格式。# -*- coding: utf-8 -*- # 文件路径scripts/check_json.py import json import sys def check_json(file_path): try: with open(file_path, r, encodingutf-8) as f: data json.load(f) print(f[OK] {file_path} 是合法的 JSON包含 {len(data)} 个顶层键) return True except json.JSONDecodeError as e: print(f[FAIL] {file_path} 解析失败{e}) return False except Exception as e: print(f[FAIL] {file_path} 读取失败{e}) return False if __name__ __main__: files [ original/language/en.json, translated/language/zh-TW.json ] all_ok True for f in files: if not check_json(f): all_ok False sys.exit(0 if all_ok else 1)运行python scripts/check_json.py预期输出[OK] original/language/en.json 是合法的 JSON包含 2 个顶层键 [OK] translated/language/zh-TW.json 是合法的 JSON包含 2 个顶层键4.5 处理字体文件将下载好的思源黑体繁体版本放入fonts/目录。字体文件名建议修改为不包含空格的格式例如SourceHanSansTW-Regular.otf接下来需要将字体文件放入游戏模组的资源目录。根据模组不同有几种常见路径Among Us_Data/Resources/fonts/ BepInEx/plugins/AmongUsRevamped/assets/fonts/ Among Us_Data/StreamingAssets/fonts/如果你使用的是支持自定义语言的 Revamped 版本语言配置文件中通常有一个font字段。在zh-TW.json中追加{ meta: { language: zh-TW, name: 繁體中文, font: SourceHanSansTW-Regular.otf }, tasks: { admin_card: 管理員卡 } }这里的meta区块是自定义内容具体字段名需要以你手上的模组实际配置为准。有些模组支持全局字体配置有些则需要单独修改配置文件。如果模板有文档优先以文档为准。4.6 复制文件到游戏目录将翻译好的zh-TW.json复制到游戏的语言文件夹中cp translated/language/zh-TW.json Among Us/Among Us_Data/StreamingAssets/language/zh-TW.json将字体文件复制到对应资源文件夹cp fonts/SourceHanSansTW-Regular.otf Among Us/Among Us_Data/Resources/fonts/SourceHanSansTW-Regular.otf如果你的模组是通过 BepInEx 加载插件的方式运行的复制路径要相应调整。这一步完成后启动游戏。4.7 运行与验证启动 Among Us Revamped进入主菜单后打开设置界面找到语言切换选项选择“繁體中文”或“zh-TW”。验证重点主菜单文字是否全部显示为中文。任务列表中的任务名称是否正常显示。中文是否存在乱码或方框。中英文混排时行高是否压迫、文字是否重叠。输入中文昵称时是否能正常显示。如果发现文字显示为方框说明字体文件没有被正确加载需要检查字体路径和配置文件中的字体名。5. 常见问题与排查思路以下是在 Among Us Revamped 汉化过程中最常见的几类问题按出现频率排序。5.1 中文显示为方框问题现象常见原因解决思路中文显示为方框或空白游戏当前使用的字体不支持中文确认字体文件已放入资源目录并确认字体名称与配置文件一致某个菜单页正常其他页面方框只有部分弹窗使用了自定义字体检查弹窗或特定 UI 的字体绑定配置换行后字符消失字体字形缺失更换为更完整的中文字体推荐 Noto Sans CJK5.2 汉化后游戏启动失败问题现象常见原因解决思路启动时黑屏闪退语言 JSON 文件语法错误用校验脚本检查 JSON 合法性加载到某个界面时崩溃语言文件中存在空值或类型错误对照原版语言文件结构逐项比对字体文件格式不兼容字体文件损坏或版本不支持重新下载字体确认后缀为 ttf/otf5.3 部分文本没有翻译成功问题现象常见原因解决思路大部分是中文个别英文未翻译原语言文件里存在重复键名游戏读取优先级不同检查模组是否有多个语言文件同时加载新增内容仍为英文模组版本更新后新增了字符串汉化包未同步将最新 en.json 与汉化文件做 diff补齐缺失键控制台指令 / 弹窗提示没翻译这部分字符串可能硬编码在程序代码中不在语言文件里需要修改程序资源或接受保留英文5.4 繁体转换结果不准确问题现象常见原因解决思路“里” 转换为 “裡” 或 “裏” 不符合游戏语境简繁一对多导致 OpenCC 判断错误手动修正游戏常用词香港与台湾用语习惯不同使用s2twp后会偏向台湾用法面向香港玩家时改用s2hk或人工审校人名、地名转换错误OpenCC 无法判断专有名词在转换脚本中加入自定义替换表6. 最佳实践与工程建议6.1 不要修改键名这是本地化的铁律。键名是游戏代码读取资源的索引修改后游戏无法匹配到对应文本轻则汉化不生效重则引发异常。所有翻译工作只在“值”上进行。6.2 保留一份可追溯的原版文件在制作汉化包时保留一份没有修改过的原版英文语言文件。不要直接在原文件上修改而是复制一份出来再操作。这样做的原因有两个一是后续模组版本更新时可以快速用 diff 工具找出新增字符串二是测试时如果出错可以随时对照原版确认是不是格式问题。6.3 对语言文件做版本管理汉化包不是一次性的工作。Among Us Revamped 每隔一段时间会更新更新后通常会增加新任务、新地图或新设置项。建议把汉化工程目录放到 Git 仓库中管理每次更新时提交一次记录这样能清晰看到每次改动的内容也方便多人协作。6.4 使用脚本做自动化检查人工检查容易遗漏建议至少做两层自动化检查JSON 语法检查确保文件可被正确解析。键一致性检查确保汉化文件里的键名与英文原版完全一致。下面是一个补充的键一致性检查示例# -*- coding: utf-8 -*- # 文件路径scripts/compare_keys.py import json def flatten_keys(obj, prefix): keys set() if isinstance(obj, dict): for k, v in obj.items(): new_prefix f{prefix}.{k} if prefix else k keys.add(new_prefix) keys.update(flatten_keys(v, new_prefix)) return keys with open(original/language/en.json, r, encodingutf-8) as f: en_data json.load(f) with open(translated/language/zh-TW.json, r, encodingutf-8) as f: zh_data json.load(f) en_keys flatten_keys(en_data) zh_keys flatten_keys(zh_data) missing_in_zh en_keys - zh_keys extra_in_zh zh_keys - en_keys if missing_in_zh: print(以下键在中文文件中缺失) for k in sorted(missing_in_zh): print(f {k}) if extra_in_zh: print(以下键在中文文件中多余) for k in sorted(extra_in_zh): print(f {k}) if not missing_in_zh and not extra_in_zh: print(键一致性检查通过)6.5 注意字体文件体积中文字体文件通常比较大一个完整的思源黑体文件可能达到十几 MB甚至更大。在打包发布汉化包时建议对字体文件做裁剪只保留游戏中用到的字符。可以使用 fonttools 库实现pip install fonttools裁剪脚本示例# -*- coding: utf-8 -*- # 文件路径scripts/subset_font.py from fontTools import subset # 指定需要的字符集合 text_file needed_chars.txt with open(text_file, r, encodingutf-8) as f: text f.read() # 去除换行和空格 text text.replace(\n, ).replace( , ) options { text: text, output_file: fonts/SourceHanSansTW-Regular-Subset.otf } subset.main([ fonts/SourceHanSansTW-Regular.otf, f--text{text}, --output-filefonts/SourceHanSansTW-Regular-Subset.otf, --font-number0, --layout-features*, --glyph-names, --symbol-cmap, --legacy-cmap, --notdef-glyph, --notdef-outline, --recommended-glyphs, --name-IDs*, --name-legacy, --name-languages* ])这里需要先在needed_chars.txt中放入汉化文本中包含的全部字符。如果后续游戏更新添加了新文本需要重新生成裁剪字体。实际操作中很多汉化发布者通常直接使用完整字体文件以避免字符缺失。是否裁剪取决于你的发布渠道和体量要求。6.6 UI 溢出问题处理繁体中文文本通常比英文短吗并不一定。比如英文中的 “Emergency Meeting” 在繁体中文中是“緊急會議”长度反而更短。但是有一些英文短词翻译成中文后会变长比如 “Chat” 翻译为“聊天室”“Kill” 在某些语境下翻译成“擊殺”也不短。如果游戏 UI 没有做自适应宽度文本溢出就会成为问题。处理方式有限调整翻译文本长度在保证语义的前提下尽量精简。修改游戏 UI 布局文件但这通常比语言文件的修改复杂得多。接受轻微的文本裁剪前提是不影响玩家理解。在汉化包的发布说明中建议明确列出已知的文本溢出位置以及建议的显示分辨率。6.7 版权与合规提醒制作和发布汉化包时有几个合规事项需要留意语言文件本身是游戏数据的一部分仅用于个人学习研究是常见做法。公开发布汉化包时不应声称这是官方繁体中文版本。字体文件尽量使用开源许可字体避免使用来源不明的商业字体。发布时注明模组原版作者和汉化贡献者遵守社区规则和模组许可协议。7. 总结与学习路线这篇教程围绕 Among Us Revamped 繁体中文汉化覆盖了从语言文件提取、JSON 结构认识、简繁转换、字体处理到游戏内验证的完整流程。核心收获可以归纳为几点语言文件的本质是键值对集合键名不能动只动翻译值。JSON 文件必须使用 UTF-8 编码保存并确保语法合法。中文显示是否正常的关键在于字体资源是否被正确替换。简繁转换要借助 OpenCC 这类工具但不要迷信工具专有名词和游戏术语需要人工校验。版本更新后要对语言文件做增量同步而不是重新汉化整个文件。如果你之前没有接触过游戏本地化可以顺着这条路线继续深入熟悉 JSON 语法和 Python 基础文件读取操作。学习 Unity 游戏资源结构了解StreamingAssets、Resources目录的加载机制。掌握字体子集化工具理解字体渲染的基础原理。关注模组社区了解 Among Us Revamped 的插件加载方式例如 BepInEx 的使用。动手做一次完整的汉化包比看十篇教程都有效。找一个你熟悉的模组版本提取语言文件替换几个词条再把字体换成中文字体走完一遍流程后再回头看这篇里的排查表格理解会完全不一样。如果这篇教程对你有帮助可以收藏备用。也欢迎在评论区分享你在汉化过程中遇到的问题或者你使用的模组版本和路径结构方便其他人少走弯路。