DAT 本地化可视化插件
Visual Studio 插件,用于可视化和编辑本地化 .dat 文件。
功能特性
✅ 核心功能
- 多文件聚合视图:将 WordKey.dat、Chinese.dat、English.dat 合并为统一表格
- 自动触发:打开任意本地化文件时自动启动工具窗口
- 可视化编辑:类似 Excel 的表格编辑体验
- 缺失翻译高亮:自动标记未翻译的条目(橙色背景)
- 保持文件结构:保存时不改变原文件顺序,不删除未知 Key
- AI 翻译支持:集成 OpenAI 兼容 API 进行智能翻译
- 翻译日志记录:自动记录 AI 翻译请求和响应用于调试
📋 UI 特性
- 三列表格:Key(只读)| 中文 | English
- 统计信息:显示总条目数、缺失中文数、缺失英文数
- 实时更新:编辑后立即显示未保存状态
- 工具栏:保存、刷新、AI 设置按钮
- AI 翻译:支持选中条目进行批量 AI 翻译
- 翻译配置:可配置 AI 服务提供商、模型和提示词
文件格式
WordKey.dat(主 Key 文件)
auto
start
stop
- 每行一个 Key
- 无 Tab 分隔符
- 顺序即逻辑顺序
语言文件(Chinese.dat / English.dat)
auto 自动
start 启动
stop 停止
- 格式:
Key<TAB>Value
- 使用 Tab 分隔
- Key 必须与 WordKey.dat 对齐
使用方法
安装
- 双击
.vsix 文件安装插件
- 重启 Visual Studio
使用
- 自动触发:在 Visual Studio 中打开任意
.dat 文件(WordKey.dat、Chinese.dat、English.dat)
- 手动打开:工具 → DAT 本地化编辑器
- 编辑翻译:直接在表格中编辑中文或英文列
- AI 翻译:
- 点击"AI 设置"配置翻译服务
- 选中需要翻译的条目
- 点击"翻译选中项"进行批量翻译
- 保存更改:点击"保存"按钮
快捷操作
- Tab:在单元格间切换
- Enter:进入/退出编辑模式
- Ctrl+S:保存(需先点击表格获得焦点)
AI 翻译功能
支持的服务提供商
- OpenAI:GPT-3.5/GPT-4 系列模型
- Azure OpenAI:企业级 OpenAI 服务
- 本地模型:LM Studio、Ollama 等本地部署
- 其他兼容服务:任何支持 OpenAI API 格式的服务
配置步骤
- 点击工具栏"AI 设置"按钮
- 填写 API 配置:
- Base URL:API 服务地址
- API Key:访问密钥(本地模型可留空)
- Model ID:使用的模型名称
- System Prompt:自定义翻译提示词
- 点击"测试连接"验证配置
- 保存设置
翻译特性
- 游戏本地化优化:专门针对游戏内容优化的提示词
- 键名保护:自动识别并保持键名(key)为英文
- 批量翻译:支持选中多个条目同时翻译
- 智能重试:网络错误时自动重试
- 详细日志:记录所有请求和响应用于调试
日志功能
- 自动记录:所有 AI 翻译请求和响应
- 日志位置:
%USERPROFILE%\Documents\DatLocalizationViewer\Logs\
- 按日分割:每天生成独立的日志文件
- 调试信息:包含请求 URL、参数、响应时间等详细信息
技术架构
Models/
├── LocalizationRow.cs # 数据模型
├── DatFileParser.cs # 文件解析器
└── AiSettings.cs # AI 配置模型
Services/
├── AiTranslationService.cs # AI 翻译服务
└── LoggingService.cs # 日志记录服务
ViewModels/
└── LocalizationViewModel.cs # 视图模型
Views/
├── LocalizationToolWindow.cs # 工具窗口
├── LocalizationToolWindowControl.xaml # WPF UI
├── LocalizationToolWindowControl.xaml.cs
├── AiSettingsControl.xaml # AI 设置界面
└── AiSettingsControl.xaml.cs
Commands/
└── OpenLocalizationWindowCommand.cs # 命令处理
DatLocalizationViewerPackage.cs # 主包(文件监听)
关键特性实现
1. 文件监听(IVsRunningDocTableEvents)
public int OnBeforeDocumentWindowShow(uint docCookie, int fFirstShow, IVsWindowFrame pFrame)
{
// 检测打开的文件是否为本地化文件
// 如果是,自动打开工具窗口
}
2. 保存策略
// 保持原文件顺序
// 不删除未知 Key
// 只更新已存在 Key 的 Value
SaveLanguageFile(filePath, updatedValues);
3. 缺失翻译高亮
<DataTrigger Binding="{Binding IsChineseMissing}" Value="True">
<Setter Property="Background" Value="#FFFFEBCD"/>
</DataTrigger>
设计原则
✅ 必须遵守
- 以 WordKey.dat 为唯一基准
- 不改变原文件顺序
- 不删除未知 Key
- Key 区分大小写
- 使用 Tab 分隔符
❌ 禁止操作
- 不合并三个文件为一个
- 不改变 dat 文件格式
- 不自动排序 Key
- 不在插件中生成或删除 Key
扩展性
支持更多语言
修改 DatFileParser.LoadLocalizationData() 和 LocalizationViewModel.LoadData():
var languageFiles = new List<string>
{
"Chinese.dat",
"English.dat",
"Japanese.dat" // 新增语言
};
添加新列
在 LocalizationRow 中添加属性,然后在 XAML 中添加对应列。
构建
要求
- Visual Studio 2022
- .NET Framework 4.8
- Visual Studio SDK
依赖包
- Microsoft.VisualStudio.SDK
- Newtonsoft.Json(用于 AI API 通信)
- System.Net.Http(用于网络请求)
构建步骤
# 1. 打开解决方案
# 2. 还原 NuGet 包
# 3. 构建项目(Release 配置)
# 4. 输出:bin\Release\DatLocalizationViewer.vsix
故障排除
工具窗口未自动打开
- 确保文件名为
WordKey.dat、Chinese.dat 或 English.dat
- 确保同目录下存在
WordKey.dat
保存失败
AI 翻译问题
- 连接失败:检查网络连接和 API 配置
- 翻译质量差:调整 System Prompt 或更换模型
- 请求超时:检查网络状况或使用本地模型
- 查看日志:检查
%USERPROFILE%\Documents\DatLocalizationViewer\Logs\ 目录下的日志文件
高亮不显示
- 确保单元格为空或只包含空白字符
- 刷新窗口重新加载数据
许可证
MIT License
作者
Your Company
版本历史
v1.3.0 (2026-01-19)
- 新增功能:
- AI 翻译支持(OpenAI 兼容 API)
- AI 设置界面和配置管理
- 批量翻译选中条目
- 翻译日志记录系统
- 本地化专用提示词
- AI 特性:
- 支持多种 AI 服务提供商
- 键名自动保护(保持英文不翻译)
- 自定义翻译提示词
- 连接测试和错误处理
- 技术改进:
- 新增 Services 层架构
- 日志文件按日期自动分割
- 异步翻译处理
- 详细的调试日志
v1.2.0 (2026-01-13)
- Key 复制功能(工具栏按钮和右键菜单)
- 支持多选复制(Ctrl/Shift 多选)
- 复制后状态栏提示
- Bug 修复:
- UI 改进:
- 右键菜单符合 VS 深色主题
- 图标背景透明
- 添加复制图标
v1.0.0 (2025-12-31)
- 初始版本
- 支持 WordKey.dat、Chinese.dat、English.dat
- 自动文件监听
- 缺失翻译高亮
- MVVM 架构