支持日语词典查询)
如何使用 KOReader japanese 插件的动词还原deconjugation支持日语词典查询【免费下载链接】koreaderAn ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices项目地址: https://gitcode.com/GitHub_Trending/ko/koreader在 KOReader 里阅读日语 EPUB 时直接在变形动词上长按查词典通常查不到结果——词典里收录的是词典形而文中出现的是各种活用形。KOReader 自带的 japanese 插件 解决这个问题它基于 Yomichan 的还原deinflection / deconjugation规则表把选中的文字还原成一组候选词典形再交给 StarDict 词典查询从而实现一次长按即可查到变形动词和多字符词语。本文以插件自带的规则表和设置菜单为准说明启用、配置和验证这条完整路径。准备条件启用插件并安装日语词典插件有两个硬性前提都写在插件的元数据 plugins/japanese.koplugin/_meta.lua 中插件必须启用。japanese 是语言支持插件语言插件菜单的帮助文本frontend/languagesupport.lua 中addToMainMenu明确说明要禁用语言插件需要从 Plugin Management插件管理菜单操作启用同理。在 KOReader 主菜单的插件管理中找到 “Japanese support” 并启用。必须安装至少一本日语词典否则插件无法正常工作_meta.lua 原文“You must have at least one Japanese dictionary installed in order for this plugin to work smoothly with Japanese text”。词典可以从 KOReader 内置下载列表获取打开Settings设置→ Dictionary settings → Download dictionaries该菜单由 frontend/ui/data/dictionaries.lua 按语言分组生成。列表中包含JMdict Japanese-English dictionary188380 条词条CC-BY-SA 3.0JMnedict Japanese-English name dictionary741290 条人名词条CC-BY-SA 3.0。词典下载后以 StarDict 的.ifo文件形式存放在数据目录的data/dict下frontend/apps/reader/modules/readerdictionary.lua 的init中data_dir解析顺序为G_defaults:readSetting(STARDICT_DATA_DIR)→ 环境变量STARDICT_DATA_DIR→ 数据目录data/dict查询由内置的 sdcv 完成。装好后可以在同菜单的 “Manage dictionaries” 里确认词典已启用。基本操作在 EPUB 中长按查词插件对文档语言的要求见 plugins/japanese.koplugin/main.lua 的supportsLanguage识别ja和jpn两种语言代码。打开一本日语 EPUB 后在句子的任意位置长按产生初始选区。插件的onWordSelection会从选区起点向字符逐个扩展每扩展一次就用还原器对当前前缀做一次 deinflect直到碰到标点JAPANESE_PUNCTUATION列表如。、「」、等、到达扫描长度上限或文本中出现非 CJK 字符。所有前缀产生的候选词被合并后一次性批量调用sdcv代码注释说明这样做是因为每次 sdcv 调用开销较大然后选取在已安装词典中命中的最长词作为最终选区。触发查询后若耗时超过约 0.5 秒会先显示Searching dictionary for: 词的提示readerdictionary.lua 的lookup_msg与lookup_msg_delay 0.5随后弹出词典结果窗口。根据 frontend/languagesupport.lua 对 WordLookup 回调的说明如果多个候选词都在词典中命中所有命中项都会显示给用户。两点适用边界均来自源文档PDF 等分页格式不支持选区扩展。languagesupport.lua 的createDocumentCallbacks注释明确说明目前只有支持getNextVisibleChar的文档即 EPUB 一类才能扩展选区日志文案为 “language support currently cannot expand document selections in non-EPUB formats”。只含非 CJK 字符的选区直接跳过插件不会对英文等文本做还原main.lua 中hasCJKChar检查。配置扫描长度与文本转换启用插件后主菜单会出现Language support plugins → Japanese子菜单由Japanese:genMenuItem生成其中有三项与“能否还原成功”直接相关。Text scan length扫描长度对应设置项language_japanese_text_scan_length默认值 20范围 0–1000调节步长 1、长按步长 10。帮助文本说明它是“尝试扩展长按选区时向前看多少个字符”数值越大能自动选中越长的短语代价是选词可能变慢。默认 20 的原因是 crengine 的getNextVisibleChar会连 furigana 一起计数main.lua 中DEFAULT_TEXT_SCAN_LENGTH的注释。Text conversions文本转换对应设置项language_japanese_text_conversions位于 Japanese 子菜单的 “Text conversions” 项下四项转换及默认开关deinflector.lua 中DEFAULT_TEXT_CONVERSIONS转换默认用途摘自 deinflector.lua 的 help_textHalfwidth to fullwidth kana开半角片假名转全角如→カタカナHiragana to katakana关平假名转片假名如ひらがな→ヒラガナKatakana to hiragana开片假名转平假名如カタカナ→かたかなCollapse emphatic sequences关折叠语气强调序列如すっっごーーい→すっごーい和すごい这些转换解决的是“词的文字形式与词典收录形式不一致”的问题。注意菜单帮助文本的说明不会一次同时应用全部转换而是把已启用转换的所有组合都尝试一遍以最大化命中词典中某种假名形式的概率。Deinflector information验证还原器是否加载成功Japanese 子菜单中的 “Deinflector information” 会弹出一条 InfoMessage格式为Deinflector has %1 and %2 loaded.其中两个占位符分别是已加载的 rule 数和 variant 数deinflector.lua 的genMenuItems。这是核对规则表是否被正确解析的最直接方式如果插件或 JSON 文件损坏init只会加载到空表这里显示的数量会明显异常。还原规则从哪里来还原逻辑的核心是 plugins/japanese.koplugin/yomichan-deinflect.json。README 说明该文件是逐字verbatim拷贝自 Yomichan 的ext/data/deinflect.json两者同为 GPL-3.0-or-later 许可将来要更新时用更新的副本替换该文件即可。每条规则是“后缀替换”若词条以kanaIn结尾且长度足够就把该后缀替换为kanaOut得到一个新的候选形。文件实际内容摘录如下-ba: [ {kanaIn: ければ, kanaOut: い, rulesIn: [], rulesOut: [adj-i]}, {kanaIn: えば, kanaOut: う, rulesIn: [], rulesOut: [v5]} ]即-ba规则组里“ければ”可还原为 i 形容词的 “い”“えば”可还原为五段动词的 “う”。规则用位掩码标记词性类型deinflector.lua 的RULE_TYPESv1一段动词ichidan / ru-verbv5五段动词godan / u-verbvs/vk/vzする / くる / ずる动词adj-iい形容词iru表示进行或完成时的中间 -iru 结尾rulesIn表示该规则只能接在特定类型的还原结果之后例如 “-chau” 规则组的rulesIn: [v5]从而把多步还原串成链条这也是 Yomichan “rule-matching suffix replacement system” 的纯 Lua 实现。验证结果与适用边界按以下顺序核对每一步都有文档依据主菜单出现Language support plugins → Japanese说明插件已注册languagesupport.lua 只在有启用的语言插件时才挂出该菜单。Japanese 子菜单里打开Deinflector information看到Deinflector has N rules and M variants loaded.且 N、M 非零说明yomichan-deinflect.json解析成功deinflector.lua 的init会逐条解析规则并统计计数解析失败时只在日志里报failed to parse plugin json界面不会崩。打开日语 EPUB长按一个变形动词如带ば、ている等后缀的形式选区自动扩展到完整词形弹出词典窗口显示释义即整条“还原 → 查询”链路工作正常。需要注意的边界最终能否查到取决于词典里是否真的收录了还原后的形式。插件只负责把候选形送进 sdcv命中的最长词才会成为选区词典没有收录的词main.lua 中的 TODO 也指出 JMDict 存在大量只收复合词/短语、不在单语词典中的词条不会凭空产生结果。词形与词典假名形式不一致时如词典用片假名而文中是平假名依赖上面 Text conversions 的转换组合四项全关时只会按原文字尝试还原。选区扩展遇到标点即停止长句中的词不会被跨标点选中扫描长度上限默认 20 个字符更长的复合词需要调大 Text scan length。如果后续要跟进 Yomichan 的规则表更新按 README 的做法用新版deinflect.json副本替换插件目录内的yomichan-deinflect.json后再重新打开 KOReader用 “Deinflector information” 核对加载数量即可。【免费下载链接】koreaderAn ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices项目地址: https://gitcode.com/GitHub_Trending/ko/koreader创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考