Giter Site home page Giter Site logo

fishjar / kiss-translator Goto Github PK

View Code? Open in Web Editor NEW
1.7K 1.7K 67.0 11.99 MB

A simple, open source bilingual translation extension & Greasemonkey script (一个简约、开源的 双语对照翻译扩展 & 油猴脚本)

Home Page: https://github.com/fishjar/kiss-translator

License: GNU General Public License v3.0

JavaScript 97.34% HTML 2.66%
extension translate translation translator usescript

kiss-translator's Introduction

简约翻译

English | 简体中文

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

kiss-translator.webm

特性

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

安装

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

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

关联项目

开发指引

git clone https://github.com/fishjar/kiss-translator.git
cd kiss-translator
pnpm install
pnpm build

交流

赞赏

appreciate

kiss-translator's People

Contributors

fishjar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

kiss-translator's Issues

支持快捷手势

看到新版本增加了快捷键。未来有没有支持快捷手势的打算?触屏上使用。

一点优化小意见

插件很好用,非常感谢作者。以下一些优化意见,也是个人非常希望添加的功能。

  1. 允许用户选择是否开启翻译
    现在是默认开启,刷新一次页面就需要手动关一次
  2. 增加开关快捷键

我的使用场景是默认关(一些简单和经常浏览的英文网站不需要开翻译),有需要再手动开

部分网站出现正则表达式匹配错误

image

看起来好像是 * 这个出问题了?
其他有些网站也会出现这个问题,一直没管。今天在一个想翻译的网站发现这个有提示,使用快捷键无效,才发现好像是脚本的问题。

怎么自定义全局样式?

firefox117,扩展1.6.4
软件很好用,我遇到几个问题,想请教一下:

从工具栏上点的扩展,弹出菜单设置的样式是临时的,页面一刷新就无效了。

似乎没有办法设置全局样式,只能单个规则设置。能不能多增加单个规则默认跟随全局选项。

我看GF脚本都1.6.7了,火狐扩展更新会不会比脚本滞后?

还有就是,个人规则管理方面,没有多选、批量删除功能,不知道能不能增加这一块?

[feature request]插件版添加悬浮球

目前手机浏览器使用插件版时,不方便使用快捷键和其他方式弹窗设置。
脚本版的悬浮球非常适合手机浏览器操作,建议在插件版也能支持悬浮球,并且支持在设置中管理是否隐藏悬浮球。

[Feature Request]能否考虑加入对Cloudflare Workers AI的支持

Cloudflare Workers AI是一个CF刚推出的能够访问其AI模型的Workers,由于CF带了个翻译的model,所以我心血来潮想到能不能用它配合KISS Translator进行翻译。

我写了一个简单的CF Worker作为概念验证(如下),CF目前支持的语言和语言的代码与KISS Translator的定义不同,由于个人水平限制,我在验证中写死了目标语言为中文,但是这个Worker代码我测试了能够配合KISS Translator正常翻译网页。

当然这个方案还是有一些问题,比如Workers AI还在Beta不知道会不会有大的变动、Pricing会不会不够合理、语言代码和模型会不会变化什么的,因此这个issue仅供您参考,谢谢您的耐心。

import { Ai } from './vendor/@cloudflare/ai';

export default {
  async fetch(request, env) {

    async function readRequestBody(request) {
      const contentType = request.headers.get("content-type");
      const Authorization = request.headers.get("Authorization");
      const expected_token = env.BEARER_TOKEN; // 在环境变量中设置
      if (Authorization === `Bearer ${expected_token}`) {
        if (contentType.includes("application/json")) {
          return await request.json();
        } else {
          throw new Error("Request's content-type is not supported. Please use application/json.");
        }
      } else {
        throw new Error("Authentication failed. Please check your access token.");
      }
    }

    if (request.method === "POST") {
      try {
        const reqBody = await readRequestBody(request);

        const ai = new Ai(env.AI);
        const inputs = {
          text: reqBody['text'],
          source_lang: '',
          target_lang: 'chinese'
        };
        const response = await ai.run('@cf/meta/m2m100-1.2b', inputs);
    
        const translated_text = response['translated_text'];
        const ret = {
          text: translated_text,
          from: "", // 识别的源语言,Cloudflare目前似乎并不支持
          to: "zh-CN"
        };
        return Response.json(ret);

      } catch (e) {
        return new Response(e.message);
      }
    } else if (request.method === "GET") {
      return new Response("Please use POST.");
    }

  }
};

[Feature request]脚本多项优化建议

已试用油猴脚本,期待上架 GreasyFork 。提出以下几点优化,请开发者酌情考虑添加。感谢开发者为社区带来又一开源、好用的翻译项目。

  1. 图标支持贴边隐藏,参考:网页限制解除(改) https://greasyfork.org/scripts/28497
  2. 将开启翻译、设置等操作,收入浏览器的 TamperMonkey 右键菜单中,参考:网页限制解除(改) https://greasyfork.org/scripts/28497
    image
  3. 设置菜单加入默认规则,每个规则可使用默认规则或自定义(因为默认是微软翻译接口,我想换谷歌的,得一个一个去点… )
  4. 支持自定义高亮色。
  5. 谷歌的搜索结果中,只翻译了标题,未翻译正文。建议在「匹配网址: *」的默认规则中,加入正文的识别: [data-sncf='1']
  • 添加前:
    image
  • 添加后:
    image

[Bug report] 使用DeepL翻译过长的文本段时会显示原文而非译文

Edge 118.0.2088.46 + KISS Translator v1.7.7 (在之前的版本和iOS Userscript上也有同样的问题)

在使用DeepL API翻译较长的文本时,会出现译文区域为原文(且可能会被截断)而非译文的现象,使用其他的API不会出现这样的问题。

比如如下页面的Introduction的第一段文本:https://theory.stanford.edu/~nikolaj/programmingz3.html

下图为使用DeepL API的翻译结果:
image

下图为使用Google和Microsoft的翻译结果:
image
image

我尝试查找了DeepL API的手册,但是没有找到DeepL是否对免费API的文段长度有所限制,直接调用API对同样的文段进行翻译的结果是正常的,如下图:
image

我并不太确定是否确实是因为文本段长度导致的,但是确实比较短的文本段没有出现过这样的问题。

有一个花里胡哨的建议,绝对美观

1. 这里的文字样式,选择高亮,生成到页面,为啥不是[background: ] 而是[background-color: ],可以改为background吗?

image

2. background 可以设置花里胡哨的颜色比如

image

脚本快捷键 macOS 下无法工作

#17violentmonkey/vm-shortcut#13 算是跟这个相关的,但问题可能出在苹果上。简而言之在macOS上任意 tamper/violentmonkey + chromium/fireofx 的组合都不能使快捷键生效。
个人猜测 https://www.toptal.com/developers/keycode 用这个页面测试了一下 keycode,可以看到按下 option+q (Alt+q) 会输出这个奇特的东西。

{
 "key": "œ",
 "keyCode": 81,
 "which": 81,
 "code": "KeyQ",
 "location": 0,
 "altKey": true,
 "ctrlKey": false,
 "metaKey": false,
 "shiftKey": false,
 "repeat": false
}

只按 q

{
 "key": "q",
 "keyCode": 81,
 "which": 81,
 "code": "KeyQ",
 "location": 0,
 "altKey": false,
 "ctrlKey": false,
 "metaKey": false,
 "shiftKey": false,
 "repeat": false
}

顺便提供一下 alt+c 和 alt+k 的输出

{
 "key": "ç",
 "keyCode": 67,
 "which": 67,
 "code": "KeyC",
 "location": 0,
 "altKey": true,
 "ctrlKey": false,
 "metaKey": false,
 "shiftKey": false,
 "repeat": false
}

{
 "key": "˚",
 "keyCode": 75,
 "which": 75,
 "code": "KeyK",
 "location": 0,
 "altKey": true,
 "ctrlKey": false,
 "metaKey": false,
 "shiftKey": false,
 "repeat": false
}

或者也可以考虑做一个自定义快捷键设置?这样可以绕开这个问题(ctrl+字母应该是没有任何问题的)

Doesn't work on FireFox with Violentmonkey

Details

[load injectRules] ReferenceError: caches is not defined
_callee5$ moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:19725
tryCatch moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17145
makeInvokeMethod moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17233
defineIteratorMethods moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17174
asyncGeneratorStep moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17407
_next moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17426
promise callbackasyncGeneratorStep moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17416
_next moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17426
asyncToGenerator_asyncToGenerator moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17431
asyncToGenerator_asyncToGenerator moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17423
fetchData moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:19725
_callee6$ moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:19730
tryCatch moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17145
makeInvokeMethod moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17233
defineIteratorMethods moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17174
asyncGeneratorStep moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17407
_next moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17426
asyncToGenerator_asyncToGenerator moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17431
asyncToGenerator_asyncToGenerator moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17423
fetchPolyfill moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:19730
_callee$ moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:19744
tryCatch moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17145
makeInvokeMethod moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17233
defineIteratorMethods moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17174
asyncGeneratorStep moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17407
_next moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17426
asyncToGenerator_asyncToGenerator moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17431
asyncToGenerator_asyncToGenerator moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17423
fetch moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:19744
_callee5$ moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:19748
tryCatch moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17145
makeInvokeMethod moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17233
defineIteratorMethods moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17174
asyncGeneratorStep moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17407
_next moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17426
asyncToGenerator_asyncToGenerator moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17431
asyncToGenerator_asyncToGenerator moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17423
syncSubRules moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:19748
_callee8$ moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:19761
tryCatch moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17145
makeInvokeMethod moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17233
defineIteratorMethods moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17174
asyncGeneratorStep moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17407
_next moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17426
promise callback
asyncGeneratorStep moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17416
_next moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17426
asyncToGenerator_asyncToGenerator moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17431
asyncToGenerator_asyncToGenerator moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17423
loadSubRules moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:19761
_callee5$ moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:19780
tryCatch moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17145
makeInvokeMethod moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17233
defineIteratorMethods moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17174
asyncGeneratorStep moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17407
_next moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17426
asyncToGenerator_asyncToGenerator moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17431
asyncToGenerator_asyncToGenerator moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17423
matchRule moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:19780
_callee$ moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:28295
tryCatch moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17145
makeInvokeMethod moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17233
defineIteratorMethods moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17174
asyncGeneratorStep moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17407
_next moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17426
promise callbackasyncGeneratorStep moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17416
_next moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17426
promise callback
asyncGeneratorStep moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17416
_next moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17426
asyncToGenerator_asyncToGenerator moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17431
asyncToGenerator_asyncToGenerator moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17423
init moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:28298
_callee2$ moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:28298
tryCatch moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17145
makeInvokeMethod moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/ KISS Translator.user.js#12:17233
KISS Translator.user.js:19780:1269
源映射错误:Error: NetworkError when attempting to fetch resource.
源 URL:moz-extension://42ce36b5-ddd7-46a3-8557-e3af9b5203b3/%20KISS%20Translator.user.js#12
源映射 URL:browser-polyfill.js.map

有只显示译文的选项吗

对代码一窍不通,有些设置项感觉看着不是那么通俗易懂,可以设置只显示译文吗😊我是在手机上使用的,好像默认的快捷键不适合手机用。

扩展版希望添加右键菜单选项

对我来说, 右键菜单开启翻译的各种操作是最不需要记忆的成本.
希望右键菜单能集成整页翻译, 划词翻译, 输入框翻译和打开设置四个功能, 其中整页翻译做成点击一下状态取反.
这样的做话, 对于支持规则的整页翻译功能, 我基本不用点击扩展图标来打开设置, 这样扩展图标可以隐藏起来, 但可以从右键菜单控制最常用的状态取反功能, 而不需要点击扩展图标里面再关闭.
对于划词翻译, 我有需求, 但也不是高频的, 集成到右键菜单后可以隐藏掉悬浮窗, 减少日常使用页面上图标的干扰行为.
我看了一下 #2 里面是有提到这项优化的, 希望作者可以重新考虑一下这个需求, 还是有人会用的.

Some remarks from ChromeXt

Hello, I am the author of ChromeXt.
Today, I changed ChromeXt to support your userscript beacuse of JingMatrix/ChromeXt#92 .

While I was debugging, I had some advices might be helpful for you to improve your work:

  1. A typo, it should be GM.xmlHttpRequest - note H is uppercase (see https://violentmonkey.github.io/api/gm/)
  2. GM is not necessarily defined as a property of window, it is better to use GM.setValue instead of window.GM.setValue
  3. The same for unsafeWindow, it is better use unsafeWindow instead of window.unsafeWindow

There are just my personal opinions. Without changing them, ChromeXt can still run it.
Above all, I appreciate your work.

Firefox 浏览器里默认快捷键 Alt+Q 无法使用

1.浏览器内容工具箱获取跟Q有关的快捷键:没有重复的。

> document.querySelectorAll(`[key="q"]`) 
NodeList [ key#key_quitApplication, key]
0: <key id="key_quitApplication" data-l10n-id="quit-app-shortcut" modifiers="accel,shift" command="cmd_quitApplication" reserved="true" key="Q">​
1: <key modifiers="accel,alt" key="Q" oncommand="//">
​
length: 2
<prototype>: NodeListPrototype { item: item(), keys: keys(), values: values(), … }

2.因为我使用的是 Floorp 是Firefox的一个第三方版本,为了排除干扰,我新下载了一个 nightly 版本,Alt+Q还是用不了
3.尝试在快捷键设置里设置为 Ctrl+Alt+Q 可以使用
图片
4.改为Ctrl+Alt+Q后尝试把快捷键改回 Alt+Q 改不回去了
附加信息:
插件版本:1.6.4

[Bug report]一些显示问题

1.划词翻译按钮不会跟随页面滚动

2.划词翻译按钮的显示位置似乎是鼠标松开时的位置

3.从选择文本时的起点一直到鼠标松开时的位置,在这个范围内点击任何位置翻译按钮都不会消失,以及输入框中删除选中的文本翻译按钮也不会消失

4.有些地方翻译会跑到最下面,这会导致看起来很乱 有问题的页面
screenshot20231110 (7)

订阅规则管理页面优化建议

image

使用了下这个功能,有几点建议:

  1. 经测试发现,订阅列表不论单选按钮是否选中,订阅中的规则均会生效。
    这里有点歧义,我开始看到单选按钮,还以为是只有单选中的订阅才会生效,原来是单选代表了可以查询和删除当前订阅的意思。
    建议优化一下,不采用单选按钮的形式来管理订阅。目标是让当前生效的是哪些规则更直观。

image

  1. 使用 ghproxy 代理的链接,无法订阅成功,建议调整下网址文本的校验规则。

  2. 订阅规则支持自动更新,支持 cron 表达式就行。

  3. 针对订阅中已有的规则的网址页面,如果我想给该网址页面增加页面上某一处的翻译,我必须先去订阅中找到这个地址,把现有的规则复制出来,再在编辑规则中新增一条规则,粘贴上去,再在粘贴的文本之后加上自己的规则。
    否则,如果不去复制粘贴订阅中的规则,只新增自己的,那该页面上就只剩我自己加的那一处翻译了,该页面上其他位置的翻译都没了。
    这个功能目前用起来有点麻烦,希望能支持增量模式,在编辑规则中新增了一条规则后,在规则提交的时候把二者做下合并,保存成功后显示为自己新增的+订阅的,类似于 Clash For Windows 的 mixin 功能。
    (这个优先级较低)

部分英文段落较多的页面,会导致页面和浏览器卡死

首次进入部分英文段落较多的页面,会导致页面卡死,严重时浏览器也会卡死,看起来像是因为同时发起的翻译请求太多造成的。
等待加载完成后,再次进入页面就不会卡了,似乎是因为有缓存的缘故。
crx 1.4.3版本和js 1.4.5版本都测了,都存在这个问题。

测试地址:

  1. https://github.com/Dreamacro/clash/releases
  2. https://github.com/alist-org/alist/releases

测试了下划词翻译,它翻译很快,几乎一秒就出结果了,也不会卡死,不过就不知道它是咋实现的。

修改全局默认文字样式,对已创建的单条规则无效

FIREFOX117,暴力猴+脚本。

症状描述:
1、我先创建单条规则,并且自定义样式,该种样式是添加背景颜色,而不是下划线。
2、我修改全局规则*,自定义文字样式有下划线。
3、修改单条规则文字样式,由自定义样式改为*,这样的话就跟随全局样式。
4、清除缓存,刷新页面,用的样式还是之前创建的有背景颜色的。
5、只能通过删除规则,重新创建才能使全局样式生效。

微信截图_20230908221131
微信截图_20230908221117
11111

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.