Nuclear Option 的非官方简体中文本地化插件,基于 BepInEx 5。
它在运行期把界面文本替换成中文,不修改任何游戏本体文件。
本项目由玩家社区维护,与 Nuclear Option 的开发者无关;游戏内容与原文版权归其开发商所有。
| 区块 | 内容 |
|---|---|
| 适配游戏版本 | 0.34.2(本机开发环境即 0.34.2,已实机验证) |
| 当前插件版本 | v1.7.0 |
| 词表规模 | 4396 条(通用 3122 / 整段模板 126 / 拼接片段 66 / 作用域 1082) |
| 翻译覆盖 | 座舱 HUD、主菜单与联机大厅、工坊界面、任务编辑器、设置菜单、教程弹窗、机场与航路点名称、载具与武器描述、击杀战报与聊天信息 |
| 安装方式 | 解压到 BepInEx/plugins/ |
| 前提 | 已安装 BepInEx 5(x64) |
三个需要先知道的性质:
- 数据与代码分离。 译文是一份可读的 JSON,改完在游戏里按
F11并重载即可生效,不必重启游戏。 - 自带诊断窗口。
F11呼出设置与诊断窗口,含「最近命中」与「最近漏译」(两者默认不记录,需要时在窗口里勾选),另有性能探针可现场量出翻译成本。 - 会连带影响第三方内容。 创意工坊物件的名字也会被翻译,且只覆盖一部分 —— 见下。
文档分工:本 README 只回答「是什么 / 怎么装 / 怎么用」;数据契约、模块分层、性能成本模型
与联机风险的完整论证见docs/(ARCHITECTURE.md/
RISKS.md)。凡是「为什么这么设计」的内容一律在docs/,README 只给结论。
- 安装 BepInEx 5(x64)到游戏根目录,
先启动一次游戏以生成BepInEx/plugins/。 - 把本插件的目录整个放进
BepInEx/plugins/(目录内容见「文件结构」)。 - 启动游戏。
⚠️ 不要与其他汉化插件同时启用。 多个插件会同时挂钩同一个文本组件,行为无法预测。
安装前请先移除旧的中文插件目录。
⚠️ 升级插件版本时必须重启游戏,而不是重载词表。 插件本体(DLL)只在启动时加载,
重载只重读 JSON 数据。
按 F11 呼出「设置与诊断」窗口:
| 区块 | 内容 |
|---|---|
| 操作 | 开关翻译(关闭会把屏上中文还原成英文)/重新载入词表/立即扫描场景/清空缓存/清空漏译记录 |
| 状态 | 逐帧宿主是否就绪、词表与排除名单条数、最近一次载入结果、场景与扫描次数、命中/漏译/缓存统计、防回写跟踪数 |
| 调节 | 兜底扫描开关与间隔、记录最近命中、累积漏译、输出调试日志、性能探针(五项默认全关) |
| 诊断 | 最近命中(原文 → 译文)与最近漏译(<作用域>片段)各 12 条;前者需先勾选「记录最近命中」。开启性能探针后另有三行热路径读数 |
目前所有译文均由 AI 翻译+人工审核,作者正在实际游玩中逐批校对和修正。
- 大部分文本能看懂,但措辞可能生硬、术语可能不统一、个别句子可能翻错;
- 译名口径(型号 + 汉化代号、缩写保持英文等)在逐步统一,前后批次可能有差异;
- 游戏更新会改动原文措辞,导致一部分词条静默失效(表现为个别句子仍是英文)。
- 词表中有些词条取自第三方参照包的 0.34.2 词表。
欢迎反馈。 提交 issue 时附上截图。若想给作者一份完整的漏翻清单,
先在 F11 窗口里勾上「累积漏译到 missing.json / untranslated.json」(默认关,见「配置」一节),
它会把未命中的片段写进 missing.json、未命中的整段长文本写进 untranslated.json。
词表是纯 JSON,也直接接受译文 PR。
按出现概率排列:
- 个别句子仍是英文 —— 游戏更新改了原文,或该文本走了未覆盖的通路。这是常态,逐批修。
- 译文措辞生硬或术语不统一 —— AI 翻译的历史遗留,实机游玩中逐步替换。
- 创意工坊物件名半中半英 —— 见下,属预期行为。
- 个别界面文本长度变化导致的显示溢出 —— 中文通常比英文短,但个别短槽位标签
(座舱 HUD 的 2 字槽位)译文过长会显示不全,发现一个修一个。
机库挂架的武器下拉列表已由「界面修整」做了宽度自适应(见下节),不应再出现截断。
基地武器信息卡的描述过长时会出现滚动条,滚轮即可翻看。 - 第一次显示某个新汉字时轻微卡顿 —— 字体图集现场栅格化,一次性开销,之后不再发生。
- 游戏更新后插件可能整体失效 —— 补丁目标方法被改名/移除时,对应补丁装不上,需要等适配。
除了替换文本,插件还会顺手修几处游戏自带的界面缺陷(默认开启,可在配置里关):
- 挂架武器下拉列表宽度自适应。 原版下拉列表宽度写死,武器名
(如「AGM-84H 斯拉姆-ER」「2000kg 副油箱」)展开时会被截断。插件在列表展开时
按所有选项译文实测需要的宽度自动加宽,并把列表钳回屏幕范围内。 - 下拉列表滚动条方向修复 + 滚轮。 原版弹出列表的滚动条拖动方向与位置整组反向,
属游戏预制体缺陷,插件在运行期规范化为正确方向;原版列表不支持滚轮,
插件补上了指针悬停滚轮翻页(步长约为列表高的 12%)。 - 基地武器信息卡稳定化。 原版切换武器时,参数与描述的位置、宽度都随内容漂移。
插件按首次布局把参数区固定成表格(参数一列、数值一列,列位跨武器对齐),
描述区位置固定、宽度延伸到右侧面板边界;描述过长超出卡片时自动出现
滚动视图(滚轮 + 右侧滚动条,内容装得下时自动隐藏),不再上下溢出。
- 修的是运行时几何,不修改任何游戏资产文件;
- 只作用于机库挂架的下拉列表与基地武器信息卡,不波及设置页、涂装等其它界面;
- 配置项
UI.WidenWeaponDropdown(默认true)、UI.FixWeaponInfoCard(默认true),见「配置」。
本插件只在单人游戏下经过验证。多人游戏(官方服务器、自建服务器、局域网联机)存在
不可预见的风险,请自行判断后再决定是否使用。
本插件会改写游戏「读回」的文本,这在联机路径上可能出现无法预见的行为。
需要留意的三点:
- 未做多人测试 —— 所有验证都在单人环境完成。未测试不等于已证明安全。
- 注入式 DLL 与服务器规则 —— 部分服务器(尤其竞技 / 排位性质)把客户端注入视为
作弊或违规。在要求客户端为原版的服务器上不要使用。 - 联机前请先移除
BepInEx/plugins/NuclearOptionChineseLocalizationPatch/整个目录。
完整风险分析见 docs/RISKS.md。
现象: 创意工坊浏览器(任务 / 战机涂装 两个标签页)里,一部分物件的名字显示成中文,
而且常常只翻一半。例如某项显示为:
[XDF] 行动·北极星 //02
它原来的名字是 [XDF] Operation Northstar //02 —— 中间那段翻了,前缀与后缀保持英文。
这不是插件出错,而是它的工作方式的必然结果。
插件是运行期替换界面文本:它钩住 Unity 的文本组件,任何文本被写进控件时都会先查一遍词表。
判断依据只有两个 —— 文本内容和控件对象名(词条里的 [Scope] 前缀)。
控件并不知道这段文字的作者是谁。游戏本体的任务名、创意工坊的任务名、战机涂装名,
用的是同一类文本控件(对象名就是 Name,即词条里的 [Name] 作用域)。
所以只要词表里存在同名键,工坊物件的名字就会被翻。
早期版本靠运行期记录未翻译文本(missing.json)来发现缺口。当时订阅的创意工坊物件名
混在记录里,与真正的游戏原文无法区分,于是被采集、翻译、入库,变成了一批 [Name]… 词条。
一个名字会不会被翻、翻多少,取决于「它有没有在采集时出现在屏幕上」。
所以同一张列表里会有的中文、有的英文、有的半中半英。
- 创意工坊内容不是本项目的翻译目标。 工坊物件每天新增,名字由上传者自定、数量无上限,
词表不可能穷举,也不可能跟着更新。 - 不会做「只翻本体、跳过工坊」的开关。 两者走同一个控件,运行期区分不出来;
按控件名整体排除,会连带干掉游戏本体任务名的翻译,得不偿失。 - 隐私。 玩家昵称、账号 ID、上传者个人信息一律不收录(约定写在
data/exclusions.json内)。 - 受理的反馈:「请翻译某个工坊 mod」
- 采集噪声提示:
missing.json里会堆进大量工坊物件名(形如[Name]PALA Fulcrum Two-Tone Symmetric),
那是采集噪声、不是翻译缺口,可以随时删掉。
结论:开销很小,且已有实测数据。 默认配置下感知不到,四件事需要知道:
- 显存 —— 中文字体图集是主要占用,估算 24–40 MB。
- 每次文本赋值都会走一遍翻译流水线,但绝大多数请求在命中缓存或前置短路后就返回;
只有第一次遇到某条文本才会走完整流程。单次赋值实测约 2.5 µs(测试台热稳态)。 - 热路径占单核不到 3%。 实机采样(开探针)读数为 5.5–7.3 µs/次赋值、
全流程 6–24 ms/秒,折算单核 0.63%–2.34%;@60 fps 约 0.1–0.4 ms/帧。
GC 压力几乎为零。 - 兜底扫描 —— 它每隔一段时间遍历场景中所有文本组件,是可调节的周期开销。
需要在 F11 窗口里开启(默认关),间隔 0.1–5 秒实时可调;关闭它不影响翻译主体,
只影响「极少数一直保持英文的文本」。
默认只开翻译。 兜底扫描、调试日志、漏译记录、最近命中、性能探针五项默认全关,
也不写任何诊断文件 —— 开箱状态的常驻成本只有字体图集与一次查表。
上述数字来自插件自带的性能探针(
F11→「性能探针」,默认关、不落盘):
它给热路径分段计时,并统计每秒调用次数、GC 次数与分配量。
⚠️ 测试台与实机两套数字口径不同,不能直接相比:测试台(纯 CLR,无 Unity、无探针开销)
给的是流水线本身的下限;实机读数包含探针自身约 0.4 µs/次的开销与 Unity 运行环境的差异。
完整成本模型、显存估算依据、口径局限与自行复现的方法见docs/RISKS.md。
首次启动后生成 BepInEx/config/com.nuclearoption.zhcn.localization.cfg。
配置只在启动时读取,热重载词表不会重读配置。
| 分区 | 项 | 默认 | 说明 |
|---|---|---|---|
| General | Enabled |
true |
关闭后会把屏上已有的中文还原成原文 |
| General | ToggleWindowHotkey |
F11 |
呼出设置窗口的热键 |
| General | ReloadDataHotkey |
空 | 不打开窗口、直接热重载词表的热键。留空表示只用窗口按钮 |
| UI | WidenWeaponDropdown |
true |
挂架武器下拉列表宽度自适应 + 滚动条方向修复(见「界面修整」) |
| UI | FixWeaponInfoCard |
true |
基地武器信息卡几何稳定:切换武器时参数不漂移(见「界面修整」) |
| Diagnostics | VerboseLogging |
false |
调试级日志。翻译在渲染路径上被高频调用,仅排障时开 |
| Diagnostics | LogMisses |
false |
把未翻译文本累积到 missing.json / untranslated.json。默认关,见下 |
| Performance | ScanIntervalSeconds |
0 |
兜底扫描间隔(秒)。0 = 关闭兜底扫描(默认);> 0 时作为窗口滑块的初值 |
| Performance | TranslationCacheLimit |
20000 |
翻译结果缓存条目上限。0 表示禁用缓存(不推荐) |
安装后的默认状态:只开翻译。 兜底扫描、调试日志、漏译记录、最近命中、性能探针全部默认关闭 ——
插件唯一的常驻成本就是中文字体图集。需要排查问题或给作者报漏翻时,在 F11 窗口里逐项打开即可
(改动立即生效,配置文件的改动则需重启游戏)。
三个开关关掉后并非不可用,只是要先手动打开:
| 诊断项 | 默认 | 关掉后仍照常工作的部分 | 重开方式 |
|---|---|---|---|
LogMisses(漏译记录) |
关 | F11 的「最近漏译」列表 —— 内存里 12 条环形缓冲,不落盘 |
窗口勾选「累积漏译」,或改配置(重启生效) |
| 「记录最近命中」 | 关 | 窗口里的「累计 N 条」计数 | 窗口勾选「记录最近命中」(无配置项,仅本次运行有效) |
| 性能探针 | 关 | 翻译功能完全不受影响(探针只负责读数) | 窗口勾选「性能探针」(无配置项,仅本次运行有效) |
LogMisses 默认关的两个理由:一是运行期清单里必然混入第三方文本(创意工坊物件名、
玩家呼号、涂装名,见上文),噪声远多于真缺口;二是累积与写盘本身是常驻开销。
「记录最近命中」默认关则纯粹因为正常游玩用不到它,而每条命中都要做一次字符串裁剪再入队 ——
要用它定位「某处为什么没翻」时,勾上再复现一次就能看到。
性能探针默认关同理:它给每次赋值插桩计时,开着本身就有可测开销(约 0.4 µs/次),
是取样工具而非常驻功能 —— 想看「成本花在哪一段」时开一分钟、记几组数、再关掉。
<游戏>/BepInEx/plugins/NuclearOptionChineseLocalizationPatch/
├─ NuclearOptionChineseLocalizationPatch.dll 插件本体
├─ Newtonsoft.Json.dll JSON 解析依赖
├─ translation.json 通用词条
├─ templates.json 整段模板(`~` 前缀)
├─ fragments.json 拼接片段(`>>` / `<<` / `==` 前缀)
├─ scopes/ 作用域词条(按语义域分文件)
│ ├─ ui.json 界面控件 ├─ mission.json 任务目标
│ ├─ units.json 单位兵器 ├─ hud.json 座舱读数
│ ├─ world.json 地图战报 └─ editor.json 编辑器与多人
├─ exclusions.json 不翻译 / 保持英文名单
├─ force_scopes.json 强制作用域名单
├─ font.ttf 中文字体
├─ missing.json ← 默认不生成(开启「累积漏译」后才写盘,可随时删)
└─ untranslated.json ← 同上
插件目录是扁平的:词表直接放在根下,没有
data/这一层。词表为什么拆成多个文件、以及为什么按语义域拆作用域,见
docs/ARCHITECTURE.md§2.1。一句话:前三类与运行时的索引
结构一一对应,作用域独立成表后最热的通用表从 4600+ 条降到 3122 条;
而作用域不能一个文件一个 —— Windows 下 NTFS 不区分大小写,本仓库有
Text/text这类只差大小写的成对作用域,那样拆会直接丢数据。升级用户不必做任何事:载入按键上的前缀分流,与键在哪个文件无关,
老的单文件词表照样能读。想立刻用上新布局,构建时加-t:DeployData。
├─ src/ 插件源码(29 个文件,约 6000 行)
│ ├─ LocalizationPlugin.cs 入口:启动编排、静态状态、热重载
│ ├─ Configuration/
│ │ └─ ModSettings.cs BepInEx ConfigEntry 封装
│ ├─ Core/ 翻译核心(零补丁依赖,可脱机编译与测试)
│ │ ├─ TextLocalizer.cs 流水线:整串 → 句式 → 片段 → 切片 + 结果缓存
│ │ ├─ LocalizationTable.cs 词表容器:载入、分类、三级回落查询
│ │ ├─ ExclusionRules.cs 不翻译与保持英文名单
│ │ ├─ TextCanonicalizer.cs 模板键归一化与指纹
│ │ ├─ KeyScrubber.cs 键清洗
│ │ └─ TokenPatterns.cs 全部正则的唯一出处(标签 / 换行 / 数值尾 / 噪声)
│ ├─ Patching/ Harmony 补丁与防回写
│ │ ├─ TmpPatches.cs TMP 打点(主战场)
│ │ ├─ LegacyUiPatches.cs 旧版 UI.Text 打点
│ │ ├─ PatchHelpers.cs 补丁层公共入口
│ │ └─ RewriteGuard.cs 防回写守护
│ ├─ UiMods/ 界面修整(几何 / 表格 / 滚动)
│ │ ├─ WeaponInfoCardPatches.cs 基地武器信息卡(补丁入口)
│ │ ├─ WeaponInfoCardTable.cs 信息卡参数区表格化
│ │ ├─ WeaponInfoCardStabilizer.cs 信息卡几何稳定 + 描述滚动视图
│ │ ├─ PylonDropdownPatches.cs 挂架下拉框(宽度自适应 / 滚动条 / 滚轮)
│ │ ├─ PylonDropdownPopupPatches.cs 下拉弹层加宽与滚轮装配
│ │ ├─ DropdownWheelDriver.cs 弹层滚轮驱动组件
│ │ ├─ DropdownGeom.cs 下拉弹层几何工具
│ │ ├─ RectGeom.cs 矩形几何工具 + RectPin 快照
│ │ └─ WidgetWheel.cs 滚轮轮询(描述 / 下拉共用)
│ ├─ Hosting/
│ │ └─ PluginHost.cs 逐帧宿主:热键 / 兜底扫描 / 防回写驱动(叶子层)
│ ├─ Ui/
│ │ └─ SettingsWindow.cs F11 设置与诊断窗口
│ ├─ Diagnostics/
│ │ ├─ Log.cs 日志封装
│ │ ├─ MissLog.cs 漏译记录(默认不落盘)
│ │ ├─ HarmonySelfTest.cs 自打补丁验证 Harmony 是否真生效
│ │ ├─ RuntimeStatus.cs 运行期状态快照(供 F11 窗口显示)
│ │ └─ PerfProbe.cs 性能探针(默认关;热路径分段计时 + GC/分配)
│ └─ Resources/
│ ├─ PluginPaths.cs 数据文件路径解析
│ └─ CjkFontProvider.cs 中文字体加载与 TMP 回退注册
├─ data/ 词表与资源(构建时同步到插件目录)
│ ├─ translation.json 通用词条
│ ├─ templates.json 整段模板(`~` 前缀)
│ ├─ fragments.json 拼接片段(`>>` / `<<` / `==` 前缀)
│ ├─ scopes/ 作用域词条,按语义域分 6 个文件
│ ├─ exclusions.json 不翻译 / 保持英文名单
│ ├─ force_scopes.json 强制作用域名单
│ └─ fonts/font.ttf 中文字体
├─ docs/
│ ├─ ARCHITECTURE.md 架构、数据契约与实现理由
│ └─ RISKS.md 性能与多人游戏风险详述
├─ tools/
│ ├─ check_data.py 词表自检(编码 / 键唯一性 / 键序 / 括号规范 / 废弃译法回流 / 模板门禁)
│ ├─ _table_layout.py 词表布局的**唯一事实来源**(键该落到哪个文件的划分规则)
│ ├─ split_table.py 按布局规则切分 / 校验词表(`--check` 做漂移检测)
│ ├─ make_release_zip.py 打包发布用的插件 zip
│ └─ review/ 翻译审核台(本机可视化校对工具,见其 README)
├─ README.md
├─ CHANGELOG.md 版本改动记录
├─ LICENSE MIT 许可
├─ THIRD-PARTY-NOTICES.md 第三方组件声明(字体 / 依赖 / 游戏原文)
└─ NuclearOptionChineseLocalizationPatch.csproj
| 文件 | 位置 | 说明 |
|---|---|---|
missing.json |
插件目录 | 未翻译的片段(切片后的最小可翻译单元),补词表的工作清单 |
untranslated.json |
插件目录 | 未翻译的整段长文本(≥ 80 字符) |
LogOutput.log |
BepInEx/ |
启动与自检信息、补丁安装结果 |
com.nuclearoption.zhcn.localization.cfg |
BepInEx/config/ |
配置文件 |
两个诊断文件可以随时删除,需要时会自动重建。
词表是扁平的 { "原文": "译文" }。除普通词条外还有五类特殊键:
| 前缀 | 用途 | 例子 |
|---|---|---|
[Scope] |
限定作用域,区分同名不同义的原文(详见下节) | [KillFeed]sank |
~ |
整段模板(教程弹窗、含标签的长句) | ~<b>Return</b>\nAlkyon AB-4 |
>> |
拼接前缀片段 | >>Warning : |
<< |
拼接后缀片段 | << sank |
== |
拼接中段片段 | == deployed at |
除键前缀外,模板键(~)里还有一个占位标记 {#}:表示「这里是一段变化的数字」。
查词时先试精确匹配,再试指纹,最后落到参数化模板——把原文中的数字段填进 {#} 位置
完成匹配,译文里的 {#} 再按顺序回填这些数字。适合「除了一个数字全同」的文本
(如 ~Requisition\n via Rank ({#}));模板键的固定段不能以数字开头,否则无法匹配。
片段键的长度与空格都是语义的一部分,写错一个空格就永不命中。完整规则(归一化顺序、
片段拼接语义、数值尾模式)见 docs/ARCHITECTURE.md。
游戏侧的「原始事实」只有两样:控件的 GameObject 名字,和往控件上设置的字符串。
「作用域」是本插件借控件名造出来的匹配机制,分两层:
运行时层(键里的 [控件名] 前缀,真正参与匹配)。 补丁截获文本时,从被翻译
的那个文本控件身上取 GameObject 名字当作用域(剥掉 Unity 克隆后缀 (Clone))。
比如飞行 HUD 武器名控件叫 weaponName,其词条就写成 [weaponName]AGM-48。
查找顺序:先试 [当前控件名]原文,未命中回落裸键。force_scopes.json 是
强制作用域名单——列在里面的控件仍然翻译,但只认「本作用域词条」与「裸键」
两条精确路径,标签剥离 / 句式 / 片段 / 切片 / 模板等一切模糊处理一律绕过。
这些控件是固定宽度的窄槽位(如 MFD 屏幕短缩写),一旦被改写就会拼出半中半英的
残局或撑破原生排版,所以宁可整条保持英文。定义与副作用见
docs/ARCHITECTURE.md 的 §2.5。
维护层(scopes/*.json 文件分组,给人看的语义域,与运行时无对应关系)。
一个文件里混着多个控件的词条,方括号里的名字才是真正的运行时作用域:
| 文件 | 条数(截至 2026-09-28) | 收录内容 |
|---|---|---|
ui.json |
643 | 界面控件:按钮、标签、标题、提示、买卖与设置项 |
mission.json |
37 | 任务目标:任务标题、目标、简报、升级态势 |
world.json |
102 | 地图战报:基地与地图标签、击杀战报、HQ 播报 |
units.json |
175 | 单位兵器:飞机、武器、挂载、涂装、单位简介 |
hud.json |
80 | 座舱读数:HUD 标签、飞控配平、发动机告警、雷达读数 |
editor.json |
45 | 编辑器与多人:任务/涂装编辑器、房间列表、输入设置 |
misc.json是代码里的兜底分类(FALLBACK_CATEGORY):某个作用域没进
_table_layout.py::SCOPE_GROUPS才会落到那里。此前它装着 16 个未归类作用域,
现已全部归位 ⇒ 当前不存在该文件(将来再出现未归类的作用域会自动重建)。
为什么大多数词条(3122 条,71%)没有作用域? 这是刻意的设计决策:
- 裸键是全局兜底,一条顶多条。 裸键对一切控件生效——"CONFIRM" 这类串无论出现在
哪个界面含义都一样,登记一条就覆盖所有出现位置; - scoped 有静默漏译风险。 scoped 未命中时只回落裸键,若裸键也不存在就是无声缺口
(飞行 HUD 武器名曾因此整批漏译)。所以默认策略是裸键优先,scoped 仅在必要时用; - 「必要时」只有三种情况:同一英文在不同控件含义不同(同串异义);译文只在特定
控件成立(短槽位字数受限、格式化行);词条来自运行期漏译采集——missing.json
记录漏译时连控件名一起记了,补录时顺手写成 scoped(词表里 200 多个只有一两条的
长尾作用域就是这么来的)。
整体形态:裸键打基本面(3122),scoped 处理歧义与受限场景(1082),模板与片段
处理动态拼接(126 + 66),四种形态各司其职。
需要 .NET SDK。仓库放在 <游戏>/Git/<本仓库> 时零配置即可构建:
dotnet build -c Release # 编译并部署 DLL
dotnet build -c Release -t:DeployData # 全量同步数据文件到插件目录
⚠️ -t:DeployData只同步数据文件、不触发编译。改了 C# 之后想连数据一起部署,
先-t:Rebuild(强制重新编译并推 DLL),再-t:DeployData。
游戏不在默认位置时,用 -p:GameDir="D:\Games\Nuclear Option"、设置环境变量
NUCLEAR_OPTION_DIR,或复制 GameDir.props.example 为 GameDir.props 填入路径。
改完词表后跑一遍数据自检:
python tools/check_data.py需要校对词表时,用自带的审核台:
python tools/review/review_server.py- 报告漏翻:按
F11打开窗口,勾选「累积漏译到 missing.json / untranslated.json」,复现后把这两个文件附上。
(创意工坊物件名堆进清单属采集噪声,可以忽略。) - 提交译文:直接 PR 修改
data/translation.json;规模较大时先开 issue 说明口径。 - 改完词表:跑
python tools/check_data.py,它会把编码、键唯一性、键序、
括号规范、废弃译法回流一次列出。
本项目采用 MIT 许可,全文见 LICENSE。
在 MIT 之下,你可以自由地使用、修改、再分发本项目(包括商业用途),只需保留版权声明。
各部分的权利归属:
| 组成 | 许可 | 权利方 |
|---|---|---|
| 代码、工具、文档 | MIT | 本项目 |
data/ 下的译文 |
MIT | 本项目译者 |
data/fonts/font.ttf |
SIL OFL 1.1 | Adobe(思源黑体 CN) |
Newtonsoft.Json.dll |
MIT | James Newton-King |
| 游戏原文(词表的键) | 不在本项目可授权范围内 | Nuclear Option 开发商 |
本项目与 Nuclear Option 的开发方无任何关联,亦未获其授权或背书。
词表中有部分词条可追溯至前身项目(HunterCHCL),该项目未附许可证。
对本项目而言这部分权利不在自己手中,故单独作出声明,详见
THIRD-PARTY-NOTICES.md第 6 节。
第三方组件的完整声明(含许可全文)见 THIRD-PARTY-NOTICES.md。
- HunterCHCL —— 前身汉化项目,本项目的翻译工作由此起步。
- 9138noms —— Nuclear Option 本地化工具链与游戏字符串清单,
发现了运行期采集覆盖不到的文本。 - 「核选项」第三方汉化包(XUnity.AutoTranslator 路线)的作者与贡献者 ——
其词表被用作缺口清单与术语参照:
英文原文是游戏事实、取自其词表,全部译文由本项目自行撰写,未复制其任何译文。
该包未附许可证,因此本项目的词表与代码不包含也不继承其任何内容;
两者的译名取舍差异(如舰级命名)以本仓库口径为准。
术语对照与差异分析见仓库外的工作报告,不随本仓库分发。
⚠️ 该包与本插件不能同时安装(会双重翻译并互相破坏加载),详见「安装」一节。 - 所有提交 issue 反馈错译、漏译,以及提交译文 PR 的玩家。