
LunaTranslator 集成 Yomitan 浏览器插件Webview2 环境下的词典查询实战指南【免费下载链接】LunaTranslator视觉小说翻译器 / Visual Novel Translator项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslatorLunaTranslator 作为一款视觉小说翻译器允许在翻译窗口内直接嵌入浏览器扩展从而把 Yomitan流行的日语阅读词典扩展的划词查词能力无缝接入游戏翻译流程。本文以官方英文文档 docs/en/yomitan.md 为核心结合仓库源码深入讲解从环境检查、插件加载、配置到主界面与历史文本窗口双场景使用的完整链路帮助读者在阅读日文视觉小说时实现原文高亮即查词的高效工作流。前置条件为什么必须使用 Webview2 显示引擎浏览器插件本质上是运行在浏览器内核中的 Web 扩展因此 LunaTranslator 若要加载 Yomitan其文本显示引擎必须基于 Webview2Microsoft Edge 内核Qt 渲染引擎不具备加载浏览器扩展的能力。LunaTranslator 默认情况下会优先使用 Webview2 作为显示引擎。你可以在显示设置 → 字体/渲染相关设置中找到渲染引擎下拉框源码中为 display_text.py 的_createseletengeinecombo提供[Qt, Webview2]两个选项对应内部标识textbrowser与webview。除非系统环境不支持 Webview2例如 Windows 7 等老系统未安装 WebView2 Runtime否则直接保持默认的 Webview2 即可。从 webview.py 可以看到主界面的 Webview 控件在创建时读取了配置项webviewLoadExtdef __init__(self, parent) - None: super().__init__( parent, transpTrue, loadextglobalconfig.get(webviewLoadExt, True) )该配置项在默认配置文件 config.json 中被置为true意味着默认即开启浏览器扩展加载能力。加载 Yomitan 扩展激活开关并添加插件1. 激活使用浏览器插件在 LunaTranslator 中浏览器扩展的启用入口位于显示设置 → 界面设置Webview 相关设置组→ 附加浏览器插件开关。源码 display_text.py 显示该开关绑定配置项webviewLoadExt默认true旁边还配有一个图标按钮用于打开扩展管理编辑器Exteditor。切换开关会触发 webview.py 中的回调重新加载内部页面loadinternal(True, True)使新的扩展加载设置生效。2. 添加 Yomitan 扩展开启开关后点击扩展管理按钮选择 Yomitan 的扩展目录即浏览器中解压后的manifest.json所在目录完成添加。⚠️ 重要警告必须使用 Chrome/Edge 版本的 YomitanFirefox 版本的 Yomitan 插件无法兼容。这是因为 Webview2 的扩展加载机制基于 Chromium 生态chrome-extension://协议Firefox 使用不同的moz-extension://协议。请从 Chrome 网上应用店或 GitHub Releases 获取 Chromium 版本。3. 初始化与重启注意事项插件添加完成后LunaTranslator 会等待 Webview2 环境初始化。源码层面扩展的添加、列出、启用、移除分别由 webview2.cpp 中的webview2_ext_add、webview2_ext_list、webview2_ext_enable、webview2_ext_rm四个 C API 暴露给 Python 层调用底层对应 WebView2 SDK 的ICoreWebView2Profile7接口AddBrowserExtension添加扩展目录见WebView2::AddExtensionwebview2.cppGetBrowserExtensions/ 使能 / 移除统一由ListExtensionDoSomething处理webview2.cpp。⚠️ 常见故障插件添加后无法被识别官方文档明确指出有时添加插件后可能无法被识别需要关闭软件后重新打开才能被识别。从源码看扩展加载依赖 Webview2 环境在创建时写入的用户数据目录UserDir见 webview2.cpp加载扩展时使用%APPDATA%\LunaTranslator不加载扩展时使用%APPDATA%\LunaTranslator_noext两个目录的浏览器数据彼此隔离。重启应用会重新创建 Webview2 环境并重新挂载扩展列表因此当扩展状态异常时重启是官方推荐的修复手段。4. 初始化完成后配置 Yomitan首次成功加载后Yomitan 会进入其自身的设置引导流程导入词典、选择搜索模式等。你可以像在浏览器中一样在 Yomitan 设置中导入所需词典如 JMDict、Yomichan 常用词典配置扫描模式、弹出显示选项与快捷键将查找动作与 LunaTranslator 的点击查词机制结合使用。由于 Yomitan 运行在 LunaTranslator 内嵌的 Webview2 页面之上其扫描对象就是翻译窗口中实时渲染的原文文本因此配置完成后无需任何额外桥接即可直接工作。使用效果原文悬停即查词配置完成后当翻译窗口显示日文原文时将鼠标悬停在单词上Yomitan 会弹出词典释义浮窗展示读音、词性、释义与变形分析。这里需要留意主窗口的一个默认行为主窗口会根据文本和翻译内容自动调整窗口尺寸这会导致 Yomitan 弹窗尺寸同步被拉伸影响阅读体验。解决办法是显示设置 → 界面设置 → 主界面取消激活自动调整高度Auto Adjust Height。源码中该开关对应配置项adaptive_height默认true见 display_ui.py同一设置组还提供了最小高度min_auto_height参数用于约束窗口收缩下限。关闭自动调整高度后窗口保持固定尺寸Yomitan 弹出层即可按浏览器默认布局正常显示。扩展使用历史文本窗口中的 Yomitan除主翻译界面外历史文本窗口历史记录/回看窗口同样支持浏览器插件。不过为了节省资源该功能默认不会启用需要手动开启。在历史文本窗口的右键菜单中源码见 transhist.py附加浏览器插件可勾选项绑定配置history.webviewLoadExt默认配置文件 config.json 中为true但需在界面中手动激活对应窗口的加载逻辑从 transhist.py 可知历史窗口的 Webview 控件创建时读取该配置传入loadext参数勾选后还会触发reloadx重载页面浏览器插件仅当附加浏览器插件处于勾选状态时才出现在菜单中用于打开插件管理编辑器Exteditor。历史窗口的页面加载逻辑transhist.py会把 transhist.html 与扩展注入的额外 HTML 合并后写入临时目录再加载从而保证扩展脚本与页面共存。 提示历史文本窗口适合在回看之前对话文本时使用你可以滚动历史记录并对任意历史句子中的词汇进行 Yomitan 查词而不影响当前翻译窗口的显示。底层原理小结一条扩展从添加到处生效的链路把整个流程串起来可以看到一条清晰的调用链配置读取主界面 Webview 控件读取webviewLoadExtwebview.py历史窗口读取history.webviewLoadExttranshist.py环境创建WebView2::init根据loadextension选择用户数据目录并通过CoreWebView2EnvironmentOptions写入--embedded-browser-webview-enable-extension参数与AreBrowserExtensionsEnabled选项webview2.cpp扩展管理通过webview2_ext_add/webview2_ext_enable/webview2_ext_rm等导出函数操作ICoreWebView2Profile7操作完成后对所有已保存的 Webview 实例执行Reload()使扩展立即生效webview2.cpp页面注入扩展随 Webview 页面一起加载Yomitan 的扫描逻辑直接作用于页面内渲染的原文 DOM因此无需二次开发即可实现悬停查词。常见问题速查问题原因解决办法添加插件后不识别Webview2 扩展列表缓存/环境未刷新关闭 LunaTranslator 后重新打开Firefox 版插件加载失败协议不兼容moz-extension://vschrome-extension://改用 Chrome/Edge 版本 YomitanYomitan 弹窗尺寸异常主窗口自动调整高度拉伸了弹窗显示设置 → 界面设置 → 主界面关闭自动调整高度历史窗口无查词效果历史窗口默认不启用插件以省资源历史窗口右键菜单勾选附加浏览器插件系统无 Webview2显示引擎回退或扩展不可用安装 WebView2 Runtime或将显示引擎切回 Webview2通过上述步骤你可以在 LunaTranslator 中搭建完整的阅读原文 → 悬停查词 → 理解语义工作流无需在游戏与浏览器之间来回切换让 Yomitan 的词典能力真正融入视觉小说翻译体验。【免费下载链接】LunaTranslator视觉小说翻译器 / Visual Novel Translator项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考