Skip to content

About

An open-source browser extension for bilingual translation. 一款开源的浏览器双语翻译插件。

Resources

Stars

8.8k stars

Watchers

22 watching

Forks

Latest commit

 

History

4,306 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FluentRead

FluentRead

Closer languages. A bigger world.

An open-source browser extension for bilingual translation.

Install · Website · User guide · Sponsorship · Privacy policy · 简体中文 · LINUX DO Community · GPL-3.0

FluentRead displays translations alongside the original webpage and provides selection translation, AI reading assistance, image and document translation, and bilingual video subtitles. Its reading card provides contextual explanations and follow-up questions.

FluentRead bilingual webpage translation

Features

Feature Description
Webpage translation Bilingual page translation, hover and selection translation, original-text restoration, and automatic translation rules.
AI reading card Meaning, sentence analysis, usage explanations, and practice, with paragraph context and follow-up questions.
Learning center Save words, phrases, and sentences with their original context for study and review.
Image and area translation Recognize text in webpage images or selected screen areas and display translations that can be copied.
Document translation Read PDF, ePub, DOCX, and other supported formats in two languages, edit translations, and export files.
Video subtitles Bilingual subtitles on YouTube and X; supported X videos can also use local AI transcription.
Services and settings Free translation services, DeepL, AI providers, and local Ollama models, with glossaries, translation styles, shortcuts, and menu layout settings.

See the user guide for instructions and supported formats. AI explanations require a configured AI service. Third-party pricing and availability depend on the provider.

Installation

Chrome · Edge · Firefox · Userscript

  1. Install the extension and refresh the webpage.
  2. Open FluentRead and select a target language. The source language defaults to automatic detection and can also be selected manually.
  3. Choose “Translate page.” Enable selection translation and other tools in settings as needed.

Store updates may arrive at different times. The userscript provides core webpage translation features. See the installation guide for browser and feature availability.

Sponsorship

The project is currently funded mainly out of pocket, with tens of thousands of US dollars spent each month on API tokens for open-source development. We believe FluentRead can make the world a little better.

Your brand here — become a FluentRead sponsor

Email us · Add on WeChat

Local development

Requirements: Node.js 20 or later and pnpm 9.

Node.js 22.12 or later in the 22.x line is recommended, matching CI; .nvmrc selects Node 22. Check both node --version and pnpm exec node --version after switching. Older Node 20 releases can emit an experimental JSON-module warning from WXT's spinner dependency; using Node 22 avoids it without suppressing warnings. Type-check and userscript compression caches are described in testing.

pnpm install --frozen-lockfile
pnpm dev

Use pnpm build to build the Chrome extension and pnpm zip to generate one -chrome.zip, preserving its public key, fixed extension ID, and Google OAuth configuration. Use the same ZIP for manual installation and preparation for an update to the existing Chrome Web Store item. Packaging removes the obsolete -chrome-store.zip for the same version. See extension identity and packages for details.

Use pnpm build:firefox to build the Firefox extension, pnpm zip:firefox to generate its installation and review-source ZIPs, and pnpm zip:edge to generate the separate Microsoft Edge Add-ons ZIP without the Chrome key. The review-source ZIP includes the extension build inputs; website assets, test evidence, and other distribution targets are omitted. Use pnpm compile for type checking and pnpm docs:build to build the website. See architecture and testing for project conventions.

For Mozilla reviewers, the Firefox build uses Node.js 20 or later, pnpm 9 (the exact pnpm version is pinned in packageManager), and the checked-in pnpm-lock.yaml. From the source ZIP root, run pnpm install --frozen-lockfile followed by pnpm build:firefox; the generated extension is in .output/firefox-mv2. No private credentials or .env file are needed. The build keeps the upstream vendor files intact and applies source-hash-checked adaptations in scripts/testing/extension-csp-build.ts, scripts/testing/defuddle-entity-build.ts, and scripts/wasm/package-diagnostics.ts. Those transformations are part of the submitted sources and run on every build.

The AMO warning remediation build was checked on macOS ARM64 with Node.js 20.11.1 and pnpm 9.12.1; there are no OS-specific native compilation steps for the extension. Vendored OCR sources and licenses are listed in public/fluent-read-ocr/NOTICE.md. The other patched packages and exact versions come from package.json and pnpm-lock.yaml: Tesseract.js/regenerator-runtime, JSZip, PDF.js, fontkit, lodash-es, ONNX Runtime Web, and Defuddle. Their original files remain available through the official npm packages. The CSP adaptations replace global-object fallbacks with globalThis, reject unused string timer callbacks, keep PDF.js on its interpreter, and replace the ONNX Emscripten invoker with a static closure. Defuddle's entity-decoding call is adapted to the shared entities text decoder; its original package is not modified. WASM binaries are unchanged.

Before AMO submission, install Mozilla's validator separately, for example npm install --prefix /tmp/fluentread-amo-tools --ignore-scripts --no-audit --no-fund addons-linter@10.15.0, then run pnpm lint:firefox:amo --linter /tmp/fluentread-amo-tools/node_modules/.bin/addons-linter --report /tmp/fluentread-amo-report.json. The command checks the built Firefox directory by default; pass the installation ZIP as the first argument to check that exact upload. It preserves the complete report and fails on errors or validator failure. Warnings remain visible for review. Successful local validation does not confirm AMO signing or approval.

Run pnpm storybook to explore the real Vue components and interface themes locally. See the design system guide. Use pnpm docs:build:site to build the documentation with the component explorer.

Contributing

Report bugs and propose changes through Issues. Pull requests for code, documentation, interface translations, and website adaptation are welcome.

Support

FluentRead is an open-source project whose continued development is made possible by the generous support of its community. Voluntary contributions are welcome through either service.

WeChat SupportKo-fi · International
Thinkstu’s WeChat support code
Scan with WeChat. Click the image to enlarge.
Support thinkstu on Ko-fi ↗

ko-fi.com/thinkstu

Acknowledgments

FluentRead grows alongside a vibrant open-source community. We are grateful to the following projects and their contributors for their openness and generosity:


BistutuWindChimeEchodf123RayySummershewigovensmemweyzhitiaoMeursau1T520250lemonteaauCalcium-Ionpluwenz0gSh1uLIBai11faintbeardamingsuLinmonKAlkacidyolo2hSyrupyTastyNaCodermerMrWangJustToDohu3rrorBalconyJH

Thank you to everyone who has contributed to FluentRead, including the many we couldn't name here, and to every user for embracing a product that is still far from perfect. We hope to keep building together with you, and to bring a little more good into the world.

License and privacy

FluentRead is released under GPL-3.0. See third-party notices for component attribution and licenses.

Settings and learning records stay local by default; cloud translation uses your selected provider. Optional cloud configuration backup supports Google Drive and WebDAV, including service credentials while excluding wordbooks, conversations, and usage statistics. See the privacy policy for permissions, encryption, and deletion details.

About

An open-source browser extension for bilingual translation. 一款开源的浏览器双语翻译插件。

Resources

Stars

8.8k stars

Watchers

22 watching

Forks

Releases

Packages

Used by

Contributors

Languages