隐私政策 / Privacy Policy
一句话:翻译全部在你的设备上完成。 我们不收集、不上传、不存储你的任何文本——选中的文字、网页正文、输入框里的草稿,都只在你的浏览器里处理。
一、我们处理哪些数据,在哪里处理
扩展的唯一用途是翻译。下列数据只在你的设备内存中处理,处理完即释放,不会发送到任何服务器,也不会写入我们的存储(我们没有这样的存储):
- 你选中的文本;
- 你正在浏览的网页正文段落(用于生成双语对照);
- 你在网页输入框中撰写的草稿(仅在你主动点击翻译并确认后,译文才会被写回输入框)。
翻译引擎有两套,都在本地运行:浏览器自带的端上翻译模型(Chrome 138+ 且该语言方向可用时优先),以及扩展内置的 bergamot-translator WebAssembly 引擎。两者的推理过程都不联网。
二、唯一的网络请求
为了让离线翻译可用,扩展需要下载语言包。这是本扩展唯一的网络行为:
| 目标 | storage.googleapis.com(Mozilla 公开的翻译模型仓库) |
|---|---|
| 内容 | 模型、词表、字符模型等数据文件,以及一份模型清单 |
| 是否携带你的数据 | 否。请求使用 credentials: 'omit',不包含你的文本、cookie 或账号信息 |
| 触发方式 | 仅在你于「语言包管理」页面主动点击下载时发起;自动更新不会在后台偷偷进行 |
| 完整性 | 下载后按 SHA-256 校验,损坏的文件会被丢弃并重下 |
下载回来的语言包保存在你本机的浏览器存储里,可以随时在设置页删除。
三、本地存储了什么
扩展使用 chrome.storage.local 保存以下配置,它们不会离开你的设备:
- 界面语言(中文 / English);
- 功能开关(是否自动双语、是否启用选中翻译、浮动按钮显示方式等);
- 已安装语言包的记录(语言方向、体积、校验值、安装时间)。
卸载扩展会一并删除上述数据与已下载的语言包。
四、权限及其用途
扩展申请的每一项权限都只服务于「翻译」这一个用途:
| 权限 | 用途 |
|---|---|
storage | 保存界面语言、功能开关和语言包记录 |
contextMenus | 右键菜单中的「翻译选中文本」入口 |
offscreen | Manifest V3 的 Service Worker 不能创建 Web Worker,翻译引擎(WASM)需要在离屏文档中运行 |
| 所有网站的内容脚本 (content script) | 翻译发生在你正在看的页面上:读取正文段落用于插入译文,在网页输入框中写回译文。不读取与你当前操作无关的数据,不记录浏览历史 |
storage.googleapis.com(主机权限) | 仅用于下载语言包 |
五、我们明确不做的事
- 不收集个人身份信息,不需要登录,没有账号体系;
- 不出售、不出租、不共享、不转让任何用户数据给第三方;
- 不将数据用于广告、画像、信用评估或任何与翻译无关的目的;
- 不读取浏览历史、书签、密码、下载记录;
- 不包含统计分析、埋点、广告或任何第三方 SDK;
- 不加载远程代码。所有可执行的代码(含 WASM 引擎)都包含在安装包内,从网络取回的只有模型数据。
本扩展对数据的处理符合 Chrome 应用商店用户数据政策的「有限使用(Limited Use)」要求:数据仅用于提供和改进用户当前可见的单一功能。
六、数据保留与删除
我们不保留任何用户数据,因为我们从不接收。你设备上的数据由你完全掌控:
- 在设置页删除某个语言包,即可释放对应空间;
- 清除浏览器中该扩展的存储,或直接卸载扩展,所有本地数据立即消失;
- 卸载后我们没有可删除的副本,因为从来没有副本。
七、儿童
本扩展不是面向儿童设计的产品,也不会有意收集儿童信息——事实上它不收集任何人的信息。
八、政策变更
若未来功能变化导致本政策需要调整,我们会更新本页并修改顶部生效日期;涉及数据处理方式的实质性变化会在扩展更新说明中写明。
九、联系方式
对本政策或数据处理有任何疑问,可以通过以下方式联系:
- GitHub Issues:github.com/DreamOfXM/translate-assistant/issues
- 源码:github.com/DreamOfXM/translate-assistant(MPL-2.0,欢迎审计)
Privacy Policy
In one sentence: translation happens entirely on your device. We do not collect, upload or store any of your text — selected text, page content and input drafts never leave your browser.
1. What we process, and where
The extension has a single purpose: translation. The following data is processed only in your device's memory and is released afterwards. It is never sent to any server, and no copy is written to any storage of ours (we operate no such storage):
- Text you select;
- Paragraphs of the page you are currently reading (to build the bilingual view);
- Drafts you type into web page input fields — the translation is written back only after you explicitly trigger it and confirm.
Both translation engines run locally: Chrome's on-device model (preferred on Chrome 138+ when the language pair is available) and the bundled bergamot-translator WebAssembly engine. Neither performs inference over the network.
2. The only network request
To enable offline translation the extension downloads language packs. This is the extension's only network activity:
| Endpoint | storage.googleapis.com (Mozilla's public translation model repository) |
|---|---|
| Payload | Model, vocabulary and character model data files, plus a model index |
| Carries your data? | No. Requests use credentials: 'omit' and contain no user text, cookies or account information |
| Trigger | Only when you press download on the Pack manager page; no silent background updates |
| Integrity | Downloads are verified with SHA-256; damaged files are discarded and re-fetched |
Packs are stored in your own browser storage and can be deleted at any time from the options page.
3. What is stored locally
The extension stores configuration in chrome.storage.local, which never leaves your device: interface language, feature toggles, and records of installed language packs (direction, size, checksum, install time). Uninstalling the extension removes this data and the downloaded packs.
4. Permissions and why they are needed
| Permission | Purpose |
|---|---|
storage | Persist UI language, toggles and pack records |
contextMenus | Right-click "Translate selection" entry |
offscreen | Manifest V3 service workers cannot create Web Workers; the WASM engine must run in an offscreen document |
| Content script on all sites | Translation happens on the page you are viewing: reading paragraphs to insert translations, and writing a translation back into page input fields. Nothing unrelated is read and no browsing history is recorded |
storage.googleapis.com(host permission) | Language pack download only |
5. What we do not do
- No personal data collection, no sign-in, no account system;
- No sale, rental, sharing or transfer of user data to third parties;
- No use of data for advertising, profiling, creditworthiness or anything unrelated to translation;
- No access to browsing history, bookmarks, passwords or downloads;
- No analytics, telemetry, ads or third-party SDKs;
- No remote code. All executable code, including the WASM engine, ships inside the package; only model data is fetched.
This handling complies with the Chrome Web Store User Data Policy's Limited Use requirements: data is used solely to provide the single, user-facing feature.
6. Retention and deletion
We retain no user data because we never receive any. Everything on your device is under your control: delete a pack in the options page to reclaim space, or clear the extension's storage / uninstall the extension to remove all local data immediately.
7. Children
The extension is not directed at children and does not knowingly collect information from anyone — it collects no information at all.
8. Changes
If a future change requires an update to this policy, this page and the effective date above will be updated; material changes to data handling will be noted in the extension's release notes.
9. Contact
- Issues: github.com/DreamOfXM/translate-assistant/issues
- Source (MPL-2.0, open for audit): github.com/DreamOfXM/translate-assistant