
w3strings 编码器 NG
w3strings 编码器 开源版本
查看大图虽然原始的 w3strings 编码器是一款出色的工具,但作为闭源的仅限 Windows 的可执行文件,它存在一些限制:
- 只能在 Windows 系统上使用。
- 源代码不可用,因此无法嵌入或集成到其他工具中。
为了解决这个问题,我们参考了 WolvenKit 项目中 w3strings 二进制文件的加载和解析逻辑,并将其重写为一个开源的 Rust 库和命令行工具。
特别感谢原始 w3strings 编码器的作者 rmemr 以及 WolvenKit 团队。
w3strings-rust (w3strings-ng)
一个快速、安全且开源的 Rust 库和 CLI 工具,用于编码和解码《巫师 3》的本地化文件(.w3strings / .wstrings)。
■ 主要特性
- 跨平台支持: 在 Windows、macOS 和 Linux 系统上无缝运行和构建。
- 开源且可嵌入: 设计为库的形式,易于集成到其他 Rust 项目、自定义模组工具或构建流程中。
- 快速且安全: 利用 Rust 的内存安全性和高性能特性,能够即时处理大型本地化文件。
- 自动密钥恢复: 自动搜索并加载字典文件(
w3strings.txt或vanilla.w3strings.txt),以在解码过程中恢复原始字符串键(例如panel_Mods)。
■ CLI 使用方法
该工具通过命令行执行。
1. 解码 (.w3strings ➔ .csv) 将二进制本地化文件转换为可编辑的 CSV 文本文件。
w3strings-ng decode <path_to_w3strings> <path_to_output_csv>
示例:
w3strings-ng.exe decode en.w3strings en.w3strings.csv
※ 将 w3strings.txt 或 vanilla.w3strings.txt 放置在活动目录、目标文件目录或工具目录中,可自动将哈希值解析回原始字符串键(key(str))。
2. 编码 (.csv ➔ .w3strings) 将编辑后的 CSV 文件编译回适用于游戏的加密二进制格式。
w3strings-ng encode <path_to_csv> <path_to_output_w3strings>
示例:
w3strings-ng.exe encode en.w3strings.csv en.w3strings
■ CSV 格式规范
CSV 文件使用竖线 (|) 作为分隔符,并遵循以下结构:
;meta[language=en]
; id |key(hex)|key(str)| text
174131|77971da9||Stamina damage
2114127085||panel_Mods|Mods
- 第 1 行: 语言元数据(例如
;meta[language=en]或;meta[language=jp])。 - 第 2 行: 列标题(固定格式)。
- 第 3 行及以后: 记录行,格式为:
<ID>|<key_hex>|<key_str>|<localized_text>。
■ 对于开发者(Crate 集成)
要在您自己的 Rust 项目中将其作为库使用,请在您的 Cargo.toml 中添加以下内容:
[dependencies]
w3strings = "0.1.5"
示例代码:
use std::collections::HashMap;
use std::fs;
use w3strings::decode;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let binary_data = fs::read("en.w3strings")?;
// 可选字典,用于将哈希值映射回键字符串(例如 "panel_Mods")
let mut hash_dict = HashMap::new();
hash_dict.insert(w3strings::hash_key("panel_Mods"), "panel_Mods".to_string());
let csv_content = decode(&binary_data, &hash_dict)?;
fs::write("en.w3strings.csv", csv_content)?;
Ok(())
}
■ 许可证与致谢
- 本项目采用 MIT 许可证 授权。
- 基于 rmemr(
w3strings encoder的作者)的原始概念和逻辑。 - 实现参考了 WolvenKit 项目的 C# 代码库。
正在加载版本记录…

正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。