
LunaTranslator 内置查词工具完全指南Mecab 分词、辞书激活与触发显示配置【免费下载链接】LunaTranslator视觉小说翻译器 / Visual Novel Translator项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator本篇指南基于 LunaTranslator视觉小说翻译器的内置查词辞书功能展开系统讲解从安装 Mecab 分词器、激活在线/离线辞书到配置「鼠标悬停/点击」触发方式、按键修饰条件以及「小窗口/完整窗口」两种查词结果展示形态的完整链路。读完本文你将能够独立配置出一套随点随查、多辞书聚合的内置查词环境并理解其底层实现机制。一、内置查词工具能做什么LunaTranslator 的「内置查词工具」是挂在原文显示原文/注音分词区域上的一层交互能力当程序通过分词器把原文切成一个个单词后你可以用鼠标悬停或点击任意单词即可触发辞书查询结果以悬浮小窗或独立大窗呈现。从源码结构看这整套能力由三块构成分词层myutils/mecab.py 负责日语及英语、中文拼音的分词与假名注音产出WordSegResult词条序列辞书层cishu/ 目录下的各辞书实现如mdict、mojidict、youdao等负责针对单词返回释义 HTML交互层LunaTranslator.py 的clickwordcallback与 gui/rendertext/texttype.py 的dataget负责把鼠标动作映射为「查词 / 复制 / 显示详情」等行为。二、前置条件安装 Mecab 分词工具官方使用步骤的第一步是安装好 Mecab 分词工具这一步是日语分词与假名注音以及后续查词按词触发的基础。2.1 Mecab 在项目中的角色从 myutils/mecab.py 可以看到mecab类通过NativeUtils.mecabC 侧封装调用 MeCab 词典对文本逐行分词并从 MeCab 输出的特征字段中提取kana读音假名/罗马音prototype原型词的词典形wordclass词性如名词、动词info完整的特征字段列表。parse_singleline还会把标点、空白单独切分为isdeliTrue的边界词保证分词结果与原文逐字可对齐。2.2 配置 Mecab 词典路径在「设置 → 辞书 → 分词器」面板中可配置 Mecab 的参数gui/setting/cishu.py 的fenciqisettings。其默认配置项定义在 defaultconfig/config.jsonhirasetting: { mecab: { args: { path: }, argstype: { path: { type: file, name: unidic_路径, dir: true } } } }即path是一个目录型参数dir: true指向 unidicUniDic 词典所在目录。初始化时mecab.init()会依次尝试配置路径、当前目录以及默认安装位置如C:\Program Files\MeCab\dic、C:\Program Files (x86)\MeCab\dic并递归遍历目录寻找可用词典找不到则抛出not find异常。此外分词器设置区域还提供了「资源下载」按钮可直接在软件内获取 MeCab 相关资源无需手动跳转外部站点。三、在辞书设置中激活辞书3.1 设置界面入口「辞书」设置页gui/setting/cishu.py 的setTabcishu_l划分为两个区块离线MDict 辞书mdictsettings提供启用开关、参数配置与「资源下载」按钮在线动态网格列出全部在线辞书每个辞书行包含名称可点击重命名、启用开关与参数按钮。页头还提供「社区辞书」按钮_opencommunitycishu可打开社区辞书对话框安装更多辞书。3.2 内置辞书种类仓库 cishu/ 目录内置了多类辞书实现例如MDict离线mdict.py读取本地.mdx/.mdd词典文件在线辞书Moji辞书mojidict.py、有道词典youdao.py、Jishojisho.py、jpdbjpdb.py、日本国語辞典japandict.py、Weblioweblio.py等自定义selfbuild.py支持编写自己的查词脚本模板见 myutils/template/selfbuild_cishu.py。从默认配置defaultconfig/config.json看Moji辞书默认启用且限定langs: [ja]有道词典默认启用——langs字段对应 cishubase.py 的support_langs属性用于限制该辞书参与的语言查询。3.3 辞书的查询与缓存机制所有辞书继承自 cishu/cishubase.py 的cishubasesearch(word[, sentence])核心查询方法返回释义 HTML 字符串safesearch线程化包装threader内部先检查 32 条 LRU 缓存命中则直接回调结果否则调用multiapikeywrapper执行查询并写入缓存result_cache_key以(word, sentence, rawconfig)作为缓存键保证配置变化后缓存自动失效。3.4 MDict 离线辞书深入MDict 是唯一的离线辞书选项源码实现相当完整cishu/mdict.py索引构建IndexBuilder用 sqlite3 为.mdx词条建立MDX_INDEX索引表含文件偏移、压缩/解压大小等并在词典文件大小/修改时间变化时自动重建模糊查询querycomplex支持精确前缀查询与基于编辑距离的模糊匹配NativeUtils.distance可配置每本词典的distance-1 表示跟随全局值与最大返回数max_num辅助资源.mdd内的图片、CSS、字体、音频会被解析为 base64 内联或缓存文件音频通过sound://协议转成可播放数据跳转链接LINK条目会被递归解析日语叠字符号々、ゝ、ヽ、〱在正常查询无结果时会自动展开后重查样式呈现stylehv控制多本词典结果的排版——0为标签页切换式generatehtml_tabswitch1为手风琴折叠式generatehtml_flow每本词典还有priority越大越靠前、title自定义显示名、FoldFlow折叠式下默认折叠等私有配置并持久化到mdict_config.jsonCSS 隔离通过parse_stylesheetcishubase.py把词典自带 CSS 的作用域限定到每次查询生成的唯一divclass内避免辞书样式污染主界面。四、选择触发查词的方法在「设置 → 辞书 → 分词 → 触发功能」下可分别配置各行为的触发方式。官方文档强调了两点鼠标悬停时是鼠标停在单词上即触发点击单词时是鼠标点击才触发两种触发方式均可叠加「需要键盘按下」的修饰条件。4.1 触发方式选项从 gui/setting/cishu.py 的manysettings看触发方式下拉框可选显示名内部值左键点击left右键点击right中键点击mid鼠标悬停hover其中「查词」完整窗口与「查词_在小窗口中」两组配置的函数签名分别为查词usesearchwordsearchword_mousetrigger默认开启默认left查词_在小窗口中usesearchword_Ssearchword_S_mousetrigger默认关闭默认left。4.2 需要键盘按下按键修饰条件「需要键盘按下」开关对应配置wordclickkbtriggerneed具体按键序列记录在wordclickkbtrigger中。设置界面用KeySequenceEdit录入组合键仅允许修饰键。运行时LunaTranslator.py 的checkkeypresssatisfy完成判定若该行为未开启「需要键盘按下」返回-1表示不要求按键直接触发否则解析按键序列为修饰键 虚拟键码parsekeystringtomodvkcode通过windows.GetAsyncKeyState实时检测这些键是否处于按下状态全部按下返回True。4.3 点击分发逻辑clickwordcallbackLunaTranslator.py统一分发searchword、searchword_S、copyword三类行为先检查对应行为的总开关如usesearchword再比对实际鼠标动作which与该行为的触发设置不匹配时若当前设置为left而实际是right则视为「追加模式」把新词追加到上一次结果后然后调用checkkeypresssatisfy过滤出「已满足按键」或「无需按键」的行为子集并依次执行。此外「使用单词原型」开关配置usewordoriginfor可让查询词使用分词器给出的原型形如动词原形而非屏幕上显示的活用形配合查词命中率更高。五、查词结果的展示小窗口与完整窗口官方文档特别说明在小窗口中的查词结果将在较小的悬浮窗口中展现否则使用较大的完整窗口。两者可以同时启用、各自独立配置触发方式互不干扰。5.1 完整窗口查词usesearchword开启后触发查词会调用searchwordW主查词窗口。结果以标签页/折叠列表形式聚合展示多本辞书的内容顶部可切换「辞书显示顺序」配置cishuvisrank与「不使用的辞书」过滤ignoredict_S_click。5.2 小窗口查词usesearchword_S开启后触发查词会调用悬浮小窗WordViewTooltipgui/flowsearchword.py悬停模式当searchword_S_mousetrigger设为hover时鼠标悬停会先启动一个 50ms 的定时器__detectkey配合checkkeypresssatisfy检查按键条件满足后才真正弹出结果——避免悬停误触点击模式按left/right/mid点击触发跟随手势按住设定按键时小窗会跟随鼠标位置移动moveresult_1样式定制小窗支持边距、圆角可跟随系统圆角、Acrylic/Aero 窗口特效、背景色与内容背景色均为半透明 ARGB并支持「鼠标离开时关闭」「失去焦点时关闭」附加能力小窗内可直接播放 TTS 语音is_search_word_auto_tts_2可设为自动朗读、跳转到完整查词窗口、一键发送 Anki辞书过滤悬停模式可用独立的「不使用的辞书」列表ignoredict_S_hover防止小窗信息过载。5.3 悬停详情提示除查词外还有独立的「显示详细信息」行为word_hover_show_word_info它使用更轻量的 tooltip 样式gui/rendertext/tooltipswidget.py展示该词的原型、读音、词性信息createtipstext支持边距、圆角、窗口特效、背景与文字颜色配置——适合只想知道读音与词性的轻量场景与完整查词互为补充。5.4 分词、注音与查词的可点击性原文区域是否「可点击/可悬停」由 texttype.py 的_clickable/_clickhovershow属性统一决定只要「查词」「小窗口查词」「复制」「显示详情」任一行为启用原文文本即进入可交互状态并叠加「语法加亮」show_fenci默认开启以视觉区分词边界。六、与查词配套的注音与分词设置查词以分词为基础以下设置直接影响查词体验日语注音方案hira_vis_type平假名 / 片假名 / 罗马音三选一实现在 myutils/mecab.py 的parseastarget含全角片假名→平假名映射与罗马音查表注音显示开关isshowhira与注音颜色jiamingcolor注音字号kanarate相对字号默认 0.5及独立字体/加粗/倾斜设置gui/setting/cishu.py的fontsettings词性颜色multicolorset可逐词性设置是否显示与颜色默认不透明度 30%分词器选择除 Mecab 外还内置英文latin分词、中文jiebapinyin结巴 拼音、spacy_wrapper等实现均位于 myutils/mecab.py。七、常见问题排查结合源码Mecab 报not findpath未指向含 unidic 词典的目录或目录结构不完整确认在「分词器 → Mecab → 参数」中正确选择词典目录并可用「资源下载」补充。点击/悬停无反应检查「触发功能」中对应行为的总开关如usesearchword是否打开、触发方式是否与鼠标动作一致若设置了「需要键盘按下」请确认按键是否被正确按住该条件使用全局按键状态检测不要求窗口焦点。MDict 查不到词确认.mdx词典已放入配置的paths目录且索引成功构建可尝试调整该词典的distance模糊匹配距离与max_numLINK与叠字符号会自动处理无需手动干预。辞书样式错乱项目已通过动态divclass对辞书 CSS 做作用域隔离若第三方词典样式仍异常可尝试切换该词典的展示样式标签页/折叠。八、总结内置查词工具是 LunaTranslator「原文分词 → 辞书聚合 → 交互展示」链条的完整闭环以 Mecab含 unidic为分词底座以离线 MDict 与多款在线辞书为数据来源以「点击/悬停 可选按键修饰」为触发手段以「完整窗口 / 悬浮小窗 / 轻量 tooltip」三种形态承载结果。用户只需依次完成安装 Mecab → 激活辞书 → 选择触发方式 → 按需打开小窗口模式即可获得随点随查的日文及多语言查词体验。更多关联阅读基本使用、注音与分词 FAQ、查词 API 接入、自建辞书脚本模板。【免费下载链接】LunaTranslator视觉小说翻译器 / Visual Novel Translator项目地址: https://gitcode.com/GitHub_Trending/lu/LunaTranslator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考