nourlie/gw2-cyrillic
GitHub: nourlie/gw2-cyrillic
一个通过内存注入实现的《激战2》俄语本地化补丁,在不修改游戏原始文件的前提下支持西里尔字母渲染和文本翻译。
Stars: 6 | Forks: 1
# GW2 西里尔字母
### 激战2 俄化补丁 — 西里尔字体 + 文本翻译
一个早期加载的代理 DLL,它能让 **Guild Wars 2** **绘制
西里尔字母** —— 即原生客户端显示为空心方块的字符 — 并
**将游戏文本翻译**为俄语。这是一个旨在提升无障碍访问 / 本地化的项目:
它能让游戏自带的字体引擎学会绘制西里尔字母,并在**内存中**替换文本,
**无需修改磁盘上的 `Gw2.dat` 文件**,因此能顺利通过
ArenaNet 的文件完整性校验,游戏也不会触发“修复”流程.
## 📦 安装
1. 从[最新发布版本](https://github.com/nourlie/gw2-cyrillic/releases/latest)下载 **`version.dll`**。
2. 将其放入 Guild Wars 2 文件夹 —— 与 `Gw2-64.exe` 同级。
3. 启动游戏。大功告成。
```
Guild Wars 2\
├─ Gw2-64.exe
└─ version.dll ← скачанный файл
```
### 🅰️ 自定义西里尔字体(可选)
默认使用内置的 **Roboto** 字体。如果想**使用您自己的**
字体来绘制西里尔字母,请将文件 **`cyrillic.ttf`** 放在紧挨着
`version.dll` 的 **`cyrillic\`** 子文件夹中 —— 运行时会自动从该文件中提取字形并针对各个字号进行渲染。
```
Guild Wars 2\
├─ Gw2-64.exe
├─ version.dll
└─ cyrillic\
└─ cyrillic.ttf ← ваш шрифт
```
## 📝 游戏文本翻译
除了绘制西里尔字母外,`version.dll` 还能**将游戏文本翻译**为俄语。
翻译内容取自词典文件 **`cyrillic\cyrillic_strings.csv`**(包含
`english,russian` 两列,可使用任何表格软件进行编辑)。英文文本会
在完整性校验通过后,被俄文**在内存中**直接替换 —— `.dat` 文件完全不受影响。**俄文文本的
长度没有限制。** 甚至连加密(RC4)的字符串也能被翻译 ——
这占据了游戏全部文本的约 70%。
```
Guild Wars 2\
├─ version.dll
├─ cyrillic-string-dump-tool.exe ← инструмент дампа словаря (из релиза)
└─ cyrillic\
├─ cyrillic_strings.csv ← словарь (english,russian) — заполняете русский
├─ discovered_strings.csv ← авто-собираемые новые строки (временный)
├─ cyrillic.ttf ← свой шрифт (опционально)
└─ version_proxy_log.txt ← лог
```
### 获取基础词典 — `cyrillic-string-dump-tool.exe`
**未加密的**字符串(物品名称和部分 UI —— 这部分仅占较小的比例)
可以通过离线工具 **`cyrillic-string-dump-tool.exe`**(可在同一个
[发布页面](https://github.com/nourlie/gw2-cyrillic/releases/latest)下载)从 `Gw2.dat` 中提取:
1. **彻底关闭游戏**(以及启动器 —— 因为它需要对归档文件的独占访问权限)。
2. 将 `cyrillic-string-dump-tool.exe` 放入 Guild Wars 2 文件夹(与 `Gw2.dat` 同级)
并运行(双击即可)。
3. 它将扫描归档文件(耗时数分钟),并将扫描到的英文字符串**追加**
到 `cyrillic\cyrillic_strings.csv` 中(此操作为合并模式 —— 现有字符串及您的翻译
将被保留)。
随后即可填写 `russian` 列的内容。
### 随游戏进程自动收集
开启 `autocollect=true`(见下文)后,`version.dll` 会对游戏显示的每一行新字符串
(包括加密字符串)进行解码,并将其写入
`cyrillic\discovered_strings.csv`。在下一次启动时,新字符串会自动
并入 `cyrillic_strings.csv` 中。这样,词典就会根据您在游戏中实际
看到的内容不断得到扩充。
## ⚙️ 设置 — `cyrillic\config.ini`
首次启动时会自动生成 `cyrillic\config.ini`(包含 `true`/`false` 值,
将在下一次启动游戏时生效):
```
# 从 GitHub releases 自动更新 version.dll。
autoupdate=true
# 自动收集显示的字符串到 discovered_strings.csv(用于填充词典)。
autocollect=false
# 应用来自 cyrillic_strings.csv 的翻译(游戏中的俄语文本)。
translate=true
```
| 参数 | 默认值 | 功能说明 |
|----------|:---:|------------|
| `autoupdate` | `true` | 检查并从 GitHub 安装 version.dll 的更新 |
| `autocollect` | `false` | 将显示的字符串收集到 `discovered_strings.csv` 并将其并入词典 |
| `translate` | `true` | 加载 `cyrillic_strings.csv` 并在游戏中显示俄语翻译 |
## 🖥️ GUI — 词典编辑器、设置与状态
发布版本中包含 **`gw2-cyrillic-gui.exe`** —— 一款用于操作
俄化补丁的图形化辅助工具。它是一个独立的程序:您可以将其放在与 `version.dll` 同级的位置(游戏文件夹中),或者在任意位置运行并指定 GW2 文件夹 —— 它会自动找到 `cyrillic\`
(包括通过扫描 Steam 游戏库)。
```
Guild Wars 2\
├─ version.dll
├─ gw2-cyrillic-gui.exe ← графический редактор (из релиза)
└─ cyrillic\
└─ cyrillic_strings.csv
```
功能标签页:
- **词典** — 基于 `cyrillic_strings.csv` 的 `英文 / 俄文` 表格:
支持搜索、筛选(**全部 / 已翻译 / 未翻译 / 标记损坏**),高亮显示未翻译及带有损坏占位符的字符串,
通过复选框选择行并进行批量操作,撤销编辑(**Ctrl+Z**),
显示翻译进度以及跳转至下一个未翻译的字符串。
所有更改都会保存到同一个 CSV 文件中。
- **设置** — 只需点击几下即可编辑 `cyrillic\config.ini`(`translate` / `autoupdate` /
`autocollect`),此外还支持界面主题设置(深色/浅色,强调色)。
- **状态** — 解析 `cyrillic\version_proxy_log.txt`:显示已加载的内容、
是否找到特征码、词典是否可见 —— 非常适合用于故障排查。
## 🔧 进阶选项 — `gw2-dat-tool`(可选)
代码库中包含一个 CLI 工具 [`gw2-dat-tool/`](gw2-dat-tool/),用于处理**您自己的**
`Gw2.dat`:导出字符串词典、查看字体的 `AFNT` 数据块、生成
西里尔字母图集。大多数用户**并不需要它** —— 单凭 `version.dll` +
`cyrillic-string-dump-tool.exe` 就已足够。更多细节请参阅
[`gw2-dat-tool/README.md`](gw2-dat-tool/README.md)。
```
# 将整个字符串词典导出为 CSV(游戏已关闭):
cargo run --release -- --dat "C:\путь\к\Guild Wars 2\Gw2.dat" strs-export-all --out dict.csv
```
## 工作原理(简述)
Guild Wars 2 将字体和文本存储在 `Gw2.dat` 归档文件中。直接干预的方法是行不通的:
**不能直接修改 `Gw2.dat`**(客户端会校验 CRC 并删除被修改的
文件 → 导致重新下载),而**普通的插件**则要在游戏
读取数据*之后*才会被加载。
`version.dll` 绕过了这两个限制:GW2 会静态导入它,因此它会
在引擎启动**之前**被加载;游戏读取并校验*原始的*数据,随后 DLL
**在内存(RAM)中替换解压后的字体字节和字符串** —— 这发生在所有的完整性校验通过之后,
但在解析器运行之前。在此过程中,磁盘上的 `Gw2.dat` 文件**保持不变**。
注入的 `version.dll` 源代码是闭源的;发布版本中仅提供编译好的
二进制文件。
## ⚠️ 法律声明 / 游戏数据
本代码库包含 `gw2-dat-tool` 工具以及基于
[Roboto](https://fonts.google.com/specimen/Roboto) 字体(遵循 Apache-2.0 协议)渲染的西里尔字母数据。本代码库中**不包含**任何从 `Gw2.dat` 中提取的数据 —— 这些数据归
ArenaNet 所有;最终生成的文件来源于您*自己*合法安装的游戏副本
(通过 dump-tool 提取),或是从发布版本中获取。
Guild Wars 2 是 ArenaNet, LLC 的商标。这是一个非官方的、非商业性质的
粉丝项目,与 ArenaNet 毫无关联,也未获得其认可。
## 开源许可
本代码库中的代码遵循 [MIT](LICENSE) 协议。内置的 Roboto 字体遵循
Apache License 2.0 协议。
一个早期加载的代理 DLL,它能让 **Guild Wars 2** **绘制
西里尔字母** —— 即原生客户端显示为空心方块的字符 — 并
**将游戏文本翻译**为俄语。这是一个旨在提升无障碍访问 / 本地化的项目:
它能让游戏自带的字体引擎学会绘制西里尔字母,并在**内存中**替换文本,
**无需修改磁盘上的 `Gw2.dat` 文件**,因此能顺利通过
ArenaNet 的文件完整性校验,游戏也不会触发“修复”流程.
## 📦 安装
1. 从[最新发布版本](https://github.com/nourlie/gw2-cyrillic/releases/latest)下载 **`version.dll`**。
2. 将其放入 Guild Wars 2 文件夹 —— 与 `Gw2-64.exe` 同级。
3. 启动游戏。大功告成。
```
Guild Wars 2\
├─ Gw2-64.exe
└─ version.dll ← скачанный файл
```
### 🅰️ 自定义西里尔字体(可选)
默认使用内置的 **Roboto** 字体。如果想**使用您自己的**
字体来绘制西里尔字母,请将文件 **`cyrillic.ttf`** 放在紧挨着
`version.dll` 的 **`cyrillic\`** 子文件夹中 —— 运行时会自动从该文件中提取字形并针对各个字号进行渲染。
```
Guild Wars 2\
├─ Gw2-64.exe
├─ version.dll
└─ cyrillic\
└─ cyrillic.ttf ← ваш шрифт
```
## 📝 游戏文本翻译
除了绘制西里尔字母外,`version.dll` 还能**将游戏文本翻译**为俄语。
翻译内容取自词典文件 **`cyrillic\cyrillic_strings.csv`**(包含
`english,russian` 两列,可使用任何表格软件进行编辑)。英文文本会
在完整性校验通过后,被俄文**在内存中**直接替换 —— `.dat` 文件完全不受影响。**俄文文本的
长度没有限制。** 甚至连加密(RC4)的字符串也能被翻译 ——
这占据了游戏全部文本的约 70%。
```
Guild Wars 2\
├─ version.dll
├─ cyrillic-string-dump-tool.exe ← инструмент дампа словаря (из релиза)
└─ cyrillic\
├─ cyrillic_strings.csv ← словарь (english,russian) — заполняете русский
├─ discovered_strings.csv ← авто-собираемые новые строки (временный)
├─ cyrillic.ttf ← свой шрифт (опционально)
└─ version_proxy_log.txt ← лог
```
### 获取基础词典 — `cyrillic-string-dump-tool.exe`
**未加密的**字符串(物品名称和部分 UI —— 这部分仅占较小的比例)
可以通过离线工具 **`cyrillic-string-dump-tool.exe`**(可在同一个
[发布页面](https://github.com/nourlie/gw2-cyrillic/releases/latest)下载)从 `Gw2.dat` 中提取:
1. **彻底关闭游戏**(以及启动器 —— 因为它需要对归档文件的独占访问权限)。
2. 将 `cyrillic-string-dump-tool.exe` 放入 Guild Wars 2 文件夹(与 `Gw2.dat` 同级)
并运行(双击即可)。
3. 它将扫描归档文件(耗时数分钟),并将扫描到的英文字符串**追加**
到 `cyrillic\cyrillic_strings.csv` 中(此操作为合并模式 —— 现有字符串及您的翻译
将被保留)。
随后即可填写 `russian` 列的内容。
### 随游戏进程自动收集
开启 `autocollect=true`(见下文)后,`version.dll` 会对游戏显示的每一行新字符串
(包括加密字符串)进行解码,并将其写入
`cyrillic\discovered_strings.csv`。在下一次启动时,新字符串会自动
并入 `cyrillic_strings.csv` 中。这样,词典就会根据您在游戏中实际
看到的内容不断得到扩充。
## ⚙️ 设置 — `cyrillic\config.ini`
首次启动时会自动生成 `cyrillic\config.ini`(包含 `true`/`false` 值,
将在下一次启动游戏时生效):
```
# 从 GitHub releases 自动更新 version.dll。
autoupdate=true
# 自动收集显示的字符串到 discovered_strings.csv(用于填充词典)。
autocollect=false
# 应用来自 cyrillic_strings.csv 的翻译(游戏中的俄语文本)。
translate=true
```
| 参数 | 默认值 | 功能说明 |
|----------|:---:|------------|
| `autoupdate` | `true` | 检查并从 GitHub 安装 version.dll 的更新 |
| `autocollect` | `false` | 将显示的字符串收集到 `discovered_strings.csv` 并将其并入词典 |
| `translate` | `true` | 加载 `cyrillic_strings.csv` 并在游戏中显示俄语翻译 |
## 🖥️ GUI — 词典编辑器、设置与状态
发布版本中包含 **`gw2-cyrillic-gui.exe`** —— 一款用于操作
俄化补丁的图形化辅助工具。它是一个独立的程序:您可以将其放在与 `version.dll` 同级的位置(游戏文件夹中),或者在任意位置运行并指定 GW2 文件夹 —— 它会自动找到 `cyrillic\`
(包括通过扫描 Steam 游戏库)。
```
Guild Wars 2\
├─ version.dll
├─ gw2-cyrillic-gui.exe ← графический редактор (из релиза)
└─ cyrillic\
└─ cyrillic_strings.csv
```
功能标签页:
- **词典** — 基于 `cyrillic_strings.csv` 的 `英文 / 俄文` 表格:
支持搜索、筛选(**全部 / 已翻译 / 未翻译 / 标记损坏**),高亮显示未翻译及带有损坏占位符的字符串,
通过复选框选择行并进行批量操作,撤销编辑(**Ctrl+Z**),
显示翻译进度以及跳转至下一个未翻译的字符串。
所有更改都会保存到同一个 CSV 文件中。
- **设置** — 只需点击几下即可编辑 `cyrillic\config.ini`(`translate` / `autoupdate` /
`autocollect`),此外还支持界面主题设置(深色/浅色,强调色)。
- **状态** — 解析 `cyrillic\version_proxy_log.txt`:显示已加载的内容、
是否找到特征码、词典是否可见 —— 非常适合用于故障排查。
## 🔧 进阶选项 — `gw2-dat-tool`(可选)
代码库中包含一个 CLI 工具 [`gw2-dat-tool/`](gw2-dat-tool/),用于处理**您自己的**
`Gw2.dat`:导出字符串词典、查看字体的 `AFNT` 数据块、生成
西里尔字母图集。大多数用户**并不需要它** —— 单凭 `version.dll` +
`cyrillic-string-dump-tool.exe` 就已足够。更多细节请参阅
[`gw2-dat-tool/README.md`](gw2-dat-tool/README.md)。
```
# 将整个字符串词典导出为 CSV(游戏已关闭):
cargo run --release -- --dat "C:\путь\к\Guild Wars 2\Gw2.dat" strs-export-all --out dict.csv
```
## 工作原理(简述)
Guild Wars 2 将字体和文本存储在 `Gw2.dat` 归档文件中。直接干预的方法是行不通的:
**不能直接修改 `Gw2.dat`**(客户端会校验 CRC 并删除被修改的
文件 → 导致重新下载),而**普通的插件**则要在游戏
读取数据*之后*才会被加载。
`version.dll` 绕过了这两个限制:GW2 会静态导入它,因此它会
在引擎启动**之前**被加载;游戏读取并校验*原始的*数据,随后 DLL
**在内存(RAM)中替换解压后的字体字节和字符串** —— 这发生在所有的完整性校验通过之后,
但在解析器运行之前。在此过程中,磁盘上的 `Gw2.dat` 文件**保持不变**。
注入的 `version.dll` 源代码是闭源的;发布版本中仅提供编译好的
二进制文件。
## ⚠️ 法律声明 / 游戏数据
本代码库包含 `gw2-dat-tool` 工具以及基于
[Roboto](https://fonts.google.com/specimen/Roboto) 字体(遵循 Apache-2.0 协议)渲染的西里尔字母数据。本代码库中**不包含**任何从 `Gw2.dat` 中提取的数据 —— 这些数据归
ArenaNet 所有;最终生成的文件来源于您*自己*合法安装的游戏副本
(通过 dump-tool 提取),或是从发布版本中获取。
Guild Wars 2 是 ArenaNet, LLC 的商标。这是一个非官方的、非商业性质的
粉丝项目,与 ArenaNet 毫无关联,也未获得其认可。
## 开源许可
本代码库中的代码遵循 [MIT](LICENSE) 协议。内置的 Roboto 字体遵循
Apache License 2.0 协议。标签:DLL注入, 内存修改, 可视化界面, 字体渲染, 本地化, 汉化/俄化, 流量审计, 游戏模组, 通知系统