
前端【免费下载链接】kiss-translatorA simple, open source bilingual translation extension Greasemonkey script (一个简约、开源的 双语对照翻译扩展 油猴脚本)项目地址https://gitcode.com/gh_mirrors/ki/kiss-translator点击查看免费下载KISS Translator 是一个以“简约Keep It Simple, Stupid”为核心理念的开源双语对照翻译工具同时提供浏览器扩展与 Greasemonkey 用户脚本两种形态覆盖网页对照翻译、划词翻译、输入框翻译、YouTube 字幕翻译等日常场景。本文以项目日语版 READMEREADME.ja.md为主线结合当前仓库的源码与配置系统讲解功能全景、多端安装、快捷键体系、API 排障、自定义接口 Hook 以及基于自定义事件的外部触发机制帮助读者在浏览器扩展与用户脚本两种形态下快速上手并完成深度定制。一、项目定位扩展与用户脚本双形态的双语翻译方案KISS Translator 的定位非常明确一个简约、开源的双语对照翻译扩展与用户脚本。它不是将整页替换为纯译文而是以“原文 译文”逐段对照的方式呈现翻译结果同时通过自动识别与手动规则两种模式适配不同站点。简体中文版介绍见 README.md英文版见 README.en.md韩文版见 README.ko.md日文版即本文依据的 README.ja.md。从 package.json 的描述可见项目自定位为 A minimalist bilingual translation Extension Greasemonkey Script当前版本为 2.1.0。从 public/manifest.json 可以看到其扩展端采用 Manifest V3内容脚本以all_urlsfile://*/*全匹配方式注入所有页面并开启all_frames以覆盖 iframe 内页面——这是它能“开箱即用”翻译绝大多数网站的基础。在安装形态上官方明确建议优先使用浏览器扩展原因有两点扩展功能更完整支持本地语言识别、右键菜单等用户脚本更容易遇到跨域限制、脚本冲突等问题。二、功能全景从网页翻译到字幕翻译README 将功能划分为若干核心场景逐一说明如下。2.1 主流翻译场景覆盖场景能力说明Web 页面双语对照翻译全文逐段对照翻译支持自动识别模式与手动规则模式输入框翻译通过快捷键将输入框内文本即时翻译为其他语言划词翻译任意页面选中文字后弹出翻译框支持多翻译服务对比翻译附带英语词典翻译与单词书签鼠标悬停翻译悬停即翻译段落内容YouTube 字幕翻译使用任意翻译服务翻译视频字幕并双语显示内置字幕合并、换行基础算法提升翻译质量支持 AI 智能换行进一步优化字幕样式可自定义其中字幕翻译在仓库中对应src/subtitle/目录下的一整套独立模块如 src/subtitle/BilingualSubtitleManager.js、src/subtitle/youtubeSubtitleProcessing.js并在扩展的web_accessible_resources中为 YouTube 单独注入了injector-subtitle.js见 public/manifest.json。2.2 翻译效果与文本处理支持文本自动识别与手动规则两种模式自动识别模式下大多数网站无需编写规则即可完整翻译手动规则模式针对特定网站做精细化适配。支持翻译文本样式自定义以及富文本翻译与显示尽可能保留原文中的链接与其他文本样式。支持仅显示译文隐藏原文的翻译模式相关切换消息常量为toggle_translate_only定义于 src/config/msg.js。2.3 翻译 API 高级能力自定义 API理论上可接入任意翻译接口配合 Request Hook / Response Hook 完成协议适配详见下文 FAQ 与 custom-api_v2.md。聚合翻译批量合并提交将多段文本一次性合并发送给模型减少 API 调用次数、提升性能。从 src/apis/trans.js 的源码可以看到聚合/非聚合两套 Prompt 体系batchUserPrompt/nobatchUserPrompt以及line、xml、json三种批量协议batchProtocol。流式传输支持流式响应翻译结果实时显示对应实现位于 src/libs/stream.js 与 src/libs/requestStream.js。AI 上下文会话记忆通过跨请求上下文提升翻译质量。自定义 AI 术语表glossary对专有名词、术语做一致性控制。所有接口均支持 Hook、自定义参数等高级功能。2.4 数据同步与自定义规则跨客户端数据同步支持KISS-WorkerCloudflare/Docker 自托管与WebDAV两种通道。自定义翻译规则支持订阅与共享并可配置自定义术语表。对应同步实现可参考 src/libs/sync.js含加密模块 src/libs/syncCrypto.js规则引擎见 src/libs/rules.js。三、多端安装指南3.1 浏览器扩展推荐平台状态说明Chrome / Edge✅商店直接安装Chrome 扩展同时可运行于 KiwiAndroid与 OrioniOSFirefox✅通过 Firefox Add-ons 安装Thunderbird✅通过项目 Releases 下载安装SafariMac / iOS⚠️ 待完善截至日语版 READMESafari 仍标注为未完成状态扩展安装后所有页面默认启用翻译能力右键菜单、语言本地识别等功能均可用。3.2 用户脚本Greasemonkey / Tampermonkey / ViolentmonkeyChrome / Edge / Firefox配合 Tampermonkey 或 Violentmonkey 安装用户脚本。iOS Safari配合 Userscripts 应用安装 iOS 专用用户脚本。需要特别提醒用户脚本发送 API 请求时需要为对应域名配置白名单详见下文 FAQ且因脚本运行在页面上下文跨域与脚本冲突问题比扩展更常见。四、快捷键体系默认键位与自定义README 列出了五个默认快捷键这些键位与 public/manifest.json 中commands的定义一一对应快捷键功能manifest 对应命令AltQ开启/关闭翻译toggleTranslateAltD打开独立翻译窗口openSeparateWindowAltK打开设置弹窗_execute_action扩展按钮AltS打开翻译弹窗 / 翻译选中文本openTranboxAltO打开设置页面openOptions无默认键位需自行设置AltI输入框翻译输入框翻译动作对应MSG_INPUT_TRANSLATE除了上述显式键位manifest 中还定义了toggleTranbox、toggleTranslateOnly、toggleStyle等命令无默认建议键可自行在浏览器扩展管理页面绑定快捷键。消息类型常量均可在 src/config/msg.js 中找到例如toggle_translate、toggle_transbox、toggle_hover_node、input_translate、open_separate_window、open_options。五、FAQ 实战排障来自官方文档的关键问题5.1 快捷键如何自定义快捷键不在插件设置页内修改而是在浏览器扩展管理页面设置Chrome访问chrome://extensions/shortcutsFirefox访问about:addons5.2 规则配置的优先级是怎样的个人规则 订阅规则 全局规则。全局规则优先级最低但作为兜底fallback规则非常重要——自动识别模式在大多数网站上的表现正是依赖这一层兜底能力。5.3 API 测试失败以 Ollama 为例的常见原因README 总结了四类高频原因这是接入本地/自定义模型时最实用的排障清单地址选错例如 Ollama 同时存在原生 API 地址与 OpenAI 兼容地址而本插件目前仅支持 OpenAI 兼容地址http://localhost:11434/v1/chat/completions不支持 Ollama 原生 API。模型不支持聚合翻译部分 AI 模型不支持合并文本批量翻译。此时可关闭聚合翻译或用自定义 API 适配参考 custom-api_v2.md 中的“禁用聚合翻译”写法例如 SiliconFlow 示例。参数不匹配例如 Gemini 原生 API 参数差异较大部分模型版本不支持特定参数而报错。此时可借助Hook 修改请求 body或切换到Gemini2OpenAI 兼容地址。跨域限制返回 403例如启动 Ollama 时需要设置环境变量OLLAMA_ORIGINS*放开跨域可用systemctl show ollama | grep OLLAMA_ORIGINS验证环境变量是否生效。5.4 输入好的 API 在用户脚本中却不可用用户脚本与扩展的请求通道不同脚本需要先为 API 域名添加白名单在脚本设置中允许跨域请求该域名否则请求会被浏览器安全策略拦截。5.5 自定义 API 的 Hook 函数如何编写自定义 API 是本项目最具扩展性的能力理论上可以对接任何翻译接口。核心思路是若接口的请求/返回数据结构符合默认规范则无需任何 Hook否则通过Request Hook改写 URL、method、headers、body通过Response Hook解析响应为统一格式。默认规范的请求体与响应体非聚合如下详见 custom-api_v2.md// Request body非聚合 { text: hello, from: auto, to: zh-CN } // Response二选一 { text: 你好, src: en } { text: 你好, from: en }聚合模式则使用texts数组请求、数组响应v2.0.4 之后也支持{ translations: [...] }的响应包装格式。一个完整的 OllamaOpenAI 兼容 聚合翻译示例// Request Hook async (args) { const url args.url; const method POST; const headers { Content-type: application/json }; const body { model: gemma3, // 或 args.model messages: [ { role: system, content: args.systemPrompt }, { role: user, content: JSON.stringify({ targetLanguage: args.toLang, segments: args.texts.map((text, id) ({ id, text })), title: , description: , glossary: {}, tone: , }), }, ], temperature: 0, max_tokens: 20480, think: false, stream: false, }; return { url, body, headers, method }; }; // Response Hook async ({ res, parseAIRes }) { const translations parseAIRes(res?.choices?.[0]?.message?.content); return { translations }; };Hook 参数中语言代码的含义需要区分toLang/fromLang是插件标准语言代码如zh-CNto/from是经转换后适用于特定接口的语言代码。若你的接口语言代码与标准表不一致需在 Hook 中自行映射转换完整标准语言代码表见 custom-api_v2.md涵盖中英日韩、欧洲主流语种及阿拉伯语、泰语、越南语等 30 语言。另外Prompt 支持占位符替换{{from}}、{{to}}语言名称、{{fromLang}}、{{toLang}}语言代码、{{text}}原文、{{tone}}风格、{{title}}页面标题、{{description}}页面描述Hook 内可分别取systemPrompt、nobatchPrompt、nobatchUserPrompt、subtitlePrompt等不同类型的 Prompt。5.6 用户脚本如何直接访问设置页面用户脚本形态下设置页地址为https://fishjar.github.io/kiss-translator/options.html即网页版设置入口。六、外部触发通过自定义事件驱动翻译这是面向二次开发者的一个重要接口。在页面控制台或任意页面脚本中执行以下 JavaScript即可像点击按钮一样驱动插件window.dispatchEvent(new CustomEvent(kiss_translator, { detail: { action: toggle_translate } }));支持的动作包括action含义toggle_translate切换翻译开/关toggle_styles切换译文样式toggle_popup打开/关闭控制面板toggle_transbox打开/关闭翻译弹窗toggle_hover_node翻译鼠标悬停中的段落input_translate翻译输入框内容在源码层面这一机制由 src/libs/translatorManager.js 实现其#setupMessageListeners中通过window.addEventListener(EVENT_KISS_TRANSLATOR, ...)监听事件事件常量kiss_translator定义于 src/config/msg.js并在stop()中对应移除监听。这意味着外部页面如自动化脚本、网页端集成可以脱离浏览器 UI直接以事件方式触发翻译。七、开发指南本地构建与参与贡献官方推荐的开发流程如下git clone https://gitcode.com/gh_mirrors/ki/kiss-translator.git cd kiss-translator git checkout dev # 提交 PR 建议推送到 dev 分支 pnpm install pnpm build从 package.json 的 scripts 可以看到pnpm build会依次执行版本同步sync-version、格式化format并产出 Chrome、Edge、Thunderbird、Firefox、Web、iOS 用户脚本及内置规则等多个目标产物也可以按需单独构建例如pnpm build:chrome、pnpm build:firefox、pnpm build:userscript-ios。项目使用 pnpm 作为包管理器见 pnpm-lock.yaml 与 pnpm-workspace.yaml。八、生态与相关项目KISS-Worker官方数据同步服务可用于跨客户端数据同步也可用于共享个人私有规则列表支持自托管Cloudflare/Docker数据保持私有。kiss-rules社区维护的订阅规则仓库提供最新、最完整的订阅规则列表规则相关问题可在其中寻求帮助。九、未来方向项目由社区在业余时间驱动暂无严格时间表欢迎通过 Issues 讨论或提交 PR。README 中列出的方向包括已落地文本聚合提交、富文本翻译增强、自定义/AI API 增强流式、上下文记忆、多轮对话、英语词典兜底机制、YouTube 字幕体验优化规划中边缘 AI 计算本地轻量 LLM / ASR / OCR / TTS 辅助翻译、分布式共享平台字幕与规则共享、文档翻译TXT / PDF / 图片 / 漫画、翻译 Agent、基于最新框架的全项目重构。结语从日语版 README 出发可以看到KISS Translator 的价值不在于堆砌功能而在于“一个引擎覆盖多种翻译形态”网页对照翻译、划词、输入框、悬停、YouTube 字幕均由同一套规则与翻译管线驱动并且通过自定义 API 与 Hook 机制向开发者完全开放协议层。无论是普通用户的多端安装、API 接入排障还是开发者基于kiss_translator自定义事件的自动化集成与二次开发都可以从本文所述内容并以仓库中的 README.ja.md、custom-api_v2.md、public/manifest.json、src/config/msg.js、src/libs/translatorManager.js 作为一手依据快速起步。赞分享前端【免费下载链接】kiss-translatorA simple, open source bilingual translation extension Greasemonkey script (一个简约、开源的 双语对照翻译扩展 油猴脚本)项目地址https://gitcode.com/gh_mirrors/ki/kiss-translator点击查看免费下载相关推荐KISS Translator简约开源的双语对照翻译扩展与油猴脚本实战指南KISS Translator简约开源的双语对照翻译扩展与油猴脚本实战指南 KISS Translator简约翻译是一个开源的浏览器翻译扩展与 Greas前端KISS Translator 简约翻译开源双语对照翻译扩展与油猴脚本完整实战指南KISS Translator 简约翻译开源双语对照翻译扩展与油猴脚本完整实战指南 导读 本文围绕 README.md https://link.gitco前端Teaful监听器完全指南实现状态变更的精准追踪与响应Teaful监听器完全指南实现状态变更的精准追踪与响应 Teaful是一款轻量级且功能强大的React状态管理库其监听器功能能够帮助开发者实现状态变更的精准创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考