Files
kiss-translator/README.md
2025-08-10 22:01:50 +08:00

6.9 KiB
Raw Blame History

简约翻译

English | 简体中文

一个简约、开源的 双语对照翻译扩展 & 油猴脚本

kiss-translator.webm

特性

  • 保持简约
  • 开放源代码
  • 适配常见浏览器
    • Chrome/Edge
    • Firefox
    • Kiwi (Android)
    • Orion (iOS)
    • Safari
      • Safari (Mac)
    • Thunderbird
  • 支持多种翻译服务
    • Google/Microsoft
    • Baidu/Tencent/Volcengine
    • OpenAI/Gemini/Claude/Ollama/DeepSeek/CloudflareAI
    • DeepL/DeepLX/NiuTrans
    • 自定义翻译接口
  • 覆盖常见翻译场景
    • 网页双语对照翻译
    • 输入框翻译
    • 划词翻译
      • 收藏词汇
    • 鼠标悬停翻译
    • YouTube 字幕翻译
  • 跨客户端数据同步
    • KISS-Workercloudflare/docker
    • WebDAV
  • 自定义翻译规则
    • 规则订阅/规则分享
    • 自定义专业术语
  • 自定义译文样式
  • 自定义快捷键
    • Alt+Q 开启翻译
    • Alt+C 切换样式
    • Alt+K 打开设置弹窗
    • Alt+S 打开翻译弹窗/翻译选中文字
    • Alt+O 打开设置页面
    • Alt+I 输入框翻译

安装

注:基于以下原因,建议优先使用浏览器扩展

  • 浏览器扩展的功能更完整(本地语言识别、右键菜单等)
  • 油猴脚本会遇到更多使用上的问题(跨域问题、脚本冲突等)

关联项目

常见问题

如何关闭自动翻译

通过规则设置,以下方法均可实现:

  • 个人规则:全局规则 -> 开启翻译 -> 默认关闭
  • 订阅规则:选择第三个 kiss-rules-off.json
  • 覆写订阅规则:开启翻译 -> 默认关闭
  • 添加一条针对某个网站的个人规则:开启翻译 -> 默认关闭

如何设置快捷键

在插件管理那里设置,例如:

如何关闭划词翻译

通过规则设置:个人规则 -> 全局规则 -> 是否启用划词翻译 -> 禁用

如何设置仅显示译文

通过规则设置:个人规则 -> 全局规则 -> 仅显示译文 -> 启用

如何设置鼠标悬停翻译

通过规则设置:个人规则 -> 全局规则 -> 触发方式

为什么有些网页翻译不全

本插件的网页翻译是基于CSS选择器的通用规则不能适配所有网页有时需要自行添加相应网站的单独规则。如果不会写规则可以到这里求助 https://github.com/fishjar/kiss-rules/issues

规则设置的优先级是如何的

个人规则 > 覆写订阅规则 > 订阅规则 > 全局规则

其中全局规则优先级最低,但非常重要,相当于默认规则。

为什么油管字幕一句话会断开翻译

本插件目前没有针对视频做特殊开发,对油管的支持也是当做网页翻译看待,自动生成字幕是流式生成并输出的,所以支持较差。

如果需要关闭本插件的字幕翻译,增加一条规则即可,参考:https://github.com/fishjar/kiss-translator/issues/62

本地的Ollama接口不能使用

如果出现403的情况参考https://github.com/fishjar/kiss-translator/issues/174

填写的接口在油猴脚本不能使用

油猴脚本需要增加域名白名单,否则不能发出请求。

如何设置自定义接口的hook函数

自定义接口功能非常灵活,理论可以接入任何翻译接口。

Request Hook 函数示例如下:

/**
 * Request Hook
 * @param {string} text 需要翻译的原文
 * @param {string} from 原文语言
 * @param {string} to   译文语言
 * @param {string} url  翻译接口地址
 * @param {string} key  翻译接口密钥
 * @returns {Array[string, object]} [接口地址, 请求参数对象]
 */
(text, from, to, url, key) => [url, {
  headers: {
    "Content-type": "application/json",
    "Authorization": `Bearer ${key}`
  },
  method: "POST",
  body: { text, to },
}]

Response Hook 函数示例如下:

/**
 * Request Hook
 * @param {string} res  接口返回的json数据
 * @param {string} text 需要翻译的原文
 * @param {string} from 原文语言
 * @param {string} to   译文语言
 * @returns {Array[string, boolean]} [译文, 译文语言与原文语言是否相同]
 * 注如果返回值第二个值为true译文语言与原文语言相同则译文不会在页面显示
 *     参数不全的情况建议直接返回false
 */
(res, text, from, to) => [res.text, to === res.src]

更多的自定义接口示例,请参考: custom-api.md

开发指引

git clone https://github.com/fishjar/kiss-translator.git
cd kiss-translator
git checkout dev # 提交PR建议推送到dev分支
pnpm install
pnpm build

交流

赞赏

appreciate