1284 words
6 minutes
InGlish:把浏览器变成你的英语单词本

一个 Chrome 扩展,让中文网页自动变成英语学习材料

项目简介#

InGlish 是一个开源的 Chrome 浏览器扩展,通过将中文网页中的考纲词汇实时替换为英文,帮助用户在浏览网页的同时潜移默化地学习英语单词。

核心思路:利用碎片时间,在日常阅读中自然积累词汇量,而不是死记硬背单词书。

为什么做这个项目?#

我深刻体会到传统背单词方法的痛点:

  1. 单词书太枯燥 - 从 “abandon” 开始,往往也就结束于 “abandon”
  2. 背单词 App 容易分心 - 背着背着就刷起了短视频
  3. 阅读时查词太麻烦 - 遇到生词要切出去查,打断阅读节奏
  4. 背了不会用 - 单词记住了,但在实际阅读中认不出来

于是我想:能不能让日常刷网页的过程本身就变成背单词的过程?

功能特性#

✅ 智能词汇替换#

  • 基于浏览器原生 Intl.Segmenter API 进行中文分词
  • 精准识别考纲词汇,避免错误拆分
  • 支持默认词表(127词)和 CET6 完整词表(4000+词)

✅ 多义词随机展示#

  • 一个中文词对应多个英文时,随机显示其中一个
  • 例如 “研究” 可能显示 “research” 或 “study”
  • 多角度强化记忆,避免单一对应关系

✅ 悬停查看原文#

  • 鼠标悬停在被替换的词汇上,显示中文原文
  • 不影响正常阅读理解,猜不出来时随时查看

✅ 高性能处理#

  • 异步分批处理 DOM 节点,避免页面卡顿
  • 使用 requestAnimationFrame 优化渲染性能
  • 支持动态加载内容(AJAX、SPA 路由变化)

✅ 开源免费#

  • 代码完全开源,托管在 GitHub
  • 无需注册账号,不收集任何用户数据
  • 所有处理都在本地完成

安装方法#

方式一:开发者模式加载(推荐)#

  1. 下载项目源码

    Terminal window
    git clone https://github.com/yourusername/chrome-extension-study-log.git
  2. 打开 Chrome 浏览器,进入 chrome://extensions/

  3. 开启右上角”开发者模式”

  4. 点击”加载已解压的扩展程序”

  5. 选择项目文件夹

方式二:CRX 安装包(待发布)#

关注公众号回复”背单词”获取安装包下载链接。

使用方法#

  1. 点击浏览器右上角的 InGlish 图标
  2. 在下拉框中选择词表:
    • 默认词表:127 个测试用的词汇
    • CET6 考纲:4000+ 六级大纲词汇,适合备考
  3. 开启开关,开始替换
  4. 浏览任意中文网页,体验沉浸式学习

技术实现#

架构设计#

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Popup 界面 │────▶│ Chrome Storage │◀────│ Content Script │
│ (词表选择/开关) │ │ (状态/词表存储) │ │ (页面替换逻辑) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
┌─────────────────┐
│ 词表 JSON 文件 │
│ (default/cet6) │
└─────────────────┘

核心算法#

1. 分词处理

// 使用浏览器内置 Intl.Segmenter
const 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!

开发环境搭建#

Terminal window
# 克隆项目
git clone https://github.com/LIUXURUXUE/chrome-extension-study-log.git
cd chrome-extension-study-log
# 开发时加载扩展
# 1. 打开 chrome://extensions/
# 2. 开启开发者模式
# 3. 加载已解压的扩展程序
# 4. 选择本项目文件夹

提交规范#

  • feat: 新功能
  • fix: 修复 bug
  • docs: 文档更新
  • refactor: 代码重构
  • chore: 构建/工具更新

开源协议#

MIT License

相关链接#

致谢#

感谢以下开源项目:


如果这个项目对你有帮助,欢迎 Star ⭐ 支持!

有任何问题或建议,欢迎在 Issue 区讨论。

InGlish:把浏览器变成你的英语单词本
https://narcissus.net.cn/posts/inglish-chrome-extension/
Author
𝒩𝒶𝓇𝒸𝒾𝓈𝓈𝓊𝓈
Published at
2026-03-18
License
CC BY-NC-SA 4.0

Some information may be outdated

封面
示例歌曲
示例艺术家
封面
示例歌曲
示例艺术家
0:00 / 0:00