Firefox Translations is a WebExtension that enables client side in-page translations for web browsers.
The current release version is available for installation on Mozilla Add-ons
- Spanish
- Estonian
- English
- German
- Czech
- Bulgarian
- Portuguese
- Italian
- Russian
- Persian (Farsi)
- Icelandic
- Norwegian Nynorsk
- Norwegian Bokmål
You can test nightly builds of the extension in Firefox Nightly or Developer Edition in one of the supported languages by following the steps below:
- Type
about:config
in the navigation bar and set the following preferences:
xpinstall.signatures.required to false
extensions.experiments.enabled to true
- Then install the extension by clicking here
- You may need to restart your browser and Firefox Translations will be ready to use. Just browse to a website in one of the supported languages and the option to translate should be displayed.
The extension does not utilize any npm modules, and the only vendored dependencies within are:
-
Bergamot Translator
- A WebAssembly wrapper around the actual Neural Machine Translator, Marian. The code to build the WASM module can be found on its repository
-
Fasttext
- We bundle the WebAssembly port of fasttext along its compressed model in order to detect the page's language. Instructions to build the WebAssembly module can be found here
-
Sentry
- We bundle Sentry Javascript's SDK for error reporting.
-
serialize-error
- code of serialize-error npm package is bundled for serialization of exceptions to report errors from content scripts to background script
- Install Firefox Nightly
- Clone this repo and run
npm install
- Run
npm run once
and wait until Nightly starts - Go to
about:config
and setextensions.experiments.enabled
to true - Browse to a page in any of the supported languages to have the translation option to appear
After adding new metrics to extension/model/telemetry/metrics.yaml
or pings to extension/model/telemetry/pings.yaml
, run
bash scripts/update-telemetry-schema.sh
to regenerate JS telemetry schema.
Replace
extension/controller/translation/bergamot-translation-worker.js
extension/model/static/translation/bergamot-translator-worker.wasm
with the new artifacts and then execute:
bash scripts/update-bergamot-translator.sh
to regenerate JS version file. This version is reported in telemetry.