1284 words
6 minutes
InGlish:把浏览器变成你的英语单词本
一个 Chrome 扩展,让中文网页自动变成英语学习材料
项目简介
InGlish 是一个开源的 Chrome 浏览器扩展,通过将中文网页中的考纲词汇实时替换为英文,帮助用户在浏览网页的同时潜移默化地学习英语单词。
核心思路:利用碎片时间,在日常阅读中自然积累词汇量,而不是死记硬背单词书。
为什么做这个项目?
我深刻体会到传统背单词方法的痛点:
- 单词书太枯燥 - 从 “abandon” 开始,往往也就结束于 “abandon”
- 背单词 App 容易分心 - 背着背着就刷起了短视频
- 阅读时查词太麻烦 - 遇到生词要切出去查,打断阅读节奏
- 背了不会用 - 单词记住了,但在实际阅读中认不出来
于是我想:能不能让日常刷网页的过程本身就变成背单词的过程?
功能特性
✅ 智能词汇替换
- 基于浏览器原生
Intl.SegmenterAPI 进行中文分词 - 精准识别考纲词汇,避免错误拆分
- 支持默认词表(127词)和 CET6 完整词表(4000+词)
✅ 多义词随机展示
- 一个中文词对应多个英文时,随机显示其中一个
- 例如 “研究” 可能显示 “research” 或 “study”
- 多角度强化记忆,避免单一对应关系
✅ 悬停查看原文
- 鼠标悬停在被替换的词汇上,显示中文原文
- 不影响正常阅读理解,猜不出来时随时查看
✅ 高性能处理
- 异步分批处理 DOM 节点,避免页面卡顿
- 使用
requestAnimationFrame优化渲染性能 - 支持动态加载内容(AJAX、SPA 路由变化)
✅ 开源免费
- 代码完全开源,托管在 GitHub
- 无需注册账号,不收集任何用户数据
- 所有处理都在本地完成
安装方法
方式一:开发者模式加载(推荐)
-
下载项目源码
Terminal window git clone https://github.com/yourusername/chrome-extension-study-log.git -
打开 Chrome 浏览器,进入
chrome://extensions/ -
开启右上角”开发者模式”
-
点击”加载已解压的扩展程序”
-
选择项目文件夹
方式二:CRX 安装包(待发布)
关注公众号回复”背单词”获取安装包下载链接。
使用方法
- 点击浏览器右上角的 InGlish 图标
- 在下拉框中选择词表:
- 默认词表:127 个测试用的词汇
- CET6 考纲:4000+ 六级大纲词汇,适合备考
- 开启开关,开始替换
- 浏览任意中文网页,体验沉浸式学习
技术实现
架构设计
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐│ Popup 界面 │────▶│ Chrome Storage │◀────│ Content Script ││ (词表选择/开关) │ │ (状态/词表存储) │ │ (页面替换逻辑) │└─────────────────┘ └─────────────────┘ └─────────────────┘ │ ▼ ┌─────────────────┐ │ 词表 JSON 文件 │ │ (default/cet6) │└─────────────────┘核心算法
1. 分词处理
// 使用浏览器内置 Intl.Segmenterconst segmenter = new Intl.Segmenter('zh-CN', { granularity: 'word' });const segments = Array.from(segmenter.segment(text));2. 词汇匹配
// O(1) 哈希查找const englishOptions = this.wordlist[chineseWord];if (englishOptions) { // 随机选择 const displayText = options[Math.floor(Math.random() * options.length)];}3. 异步分批处理
// 避免阻塞主线程processBatches(nodes, index) { const batchSize = 10; for (let i = index; i < endIndex; i++) { this.processTextNode(nodes[i]); } requestAnimationFrame(() => { setTimeout(() => this.processBatches(nodes, endIndex), 0); });}词表处理流程
CET6.txt (原始文本) ↓parse_cet6.js (解析提取) ↓cet6_wordlist.json (中文→英文映射) ↓split_words.js (空格分割/清理) ↓cet6_wordlist_split.json (分割后) ↓group_similar_words.js (分组排序) ↓cet6_wordlist_grouped.json (最终词表)项目结构
chrome-extension-study-log/├── manifest.json # 扩展配置├── content/│ ├── content.js # 内容脚本│ └── content.css # 替换样式├── core/│ ├── nlp-processor.js # NLP 分词│ └── replacement-engine.js # 替换引擎├── popup/│ ├── popup.html # 弹窗界面│ ├── popup.js # 弹窗逻辑│ └── popup.css # 弹窗样式├── data/│ └── wordlist.json # 默认词表├── *.js # 词表处理脚本├── *.json # CET6 词表└── learning-notes/ # 学习笔记待办事项
1. 自然语言处理 (NLP)
- 上下文语义分析,选择最合适的英文释义
- 词性标注和句法分析
- 同义词消歧
2. 词表纠错
- 用户反馈错误词条入口
- 自动检测疑似错误翻译
- 社区贡献和审核流程
3. SPA 页面支持
- 优化 AJAX 动态加载内容的检测
- 解决百度等搜索结果页翻页问题
4. 词表导入
- 支持用户自定义词表导入
- 支持 Excel/CSV 格式
- 在线词表市场
参与贡献
欢迎提交 Issue 和 PR!
开发环境搭建
# 克隆项目git clone https://github.com/LIUXURUXUE/chrome-extension-study-log.gitcd chrome-extension-study-log
# 开发时加载扩展# 1. 打开 chrome://extensions/# 2. 开启开发者模式# 3. 加载已解压的扩展程序# 4. 选择本项目文件夹提交规范
feat: 新功能fix: 修复 bugdocs: 文档更新refactor: 代码重构chore: 构建/工具更新
开源协议
相关链接
致谢
感谢以下开源项目:
如果这个项目对你有帮助,欢迎 Star ⭐ 支持!
有任何问题或建议,欢迎在 Issue 区讨论。
InGlish:把浏览器变成你的英语单词本
https://narcissus.net.cn/posts/inglish-chrome-extension/ Some information may be outdated