6.7 KiB
Firefox Translations
Firefox Translations is a WebExtension that enables client side in-page translations for web browsers.
Firefox Translations was developed with The Bergamot Project Consortium, coordinated by the University of Edinburgh with partners Charles University in Prague, the University of Sheffield, University of Tartu, and Mozilla. This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 825303. 🇪🇺
Release version
The current release version is available for installation on Mozilla Add-ons
Supported languages
Production
- Spanish
- Estonian
- English
- German
- Czech
- Bulgarian
- Portuguese
- Italian
- French
- Polish
Development
- Russian
- Persian (Farsi)
- Icelandic
- Norwegian Nynorsk
- Norwegian Bokmål
- Ukrainian
- Dutch
Testing
Nightly builds
Desktop
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.
Demo
https://user-images.githubusercontent.com/973388/205549475-8036df98-d5b5-4baa-af8f-350f7962f18e.mov
Android
This repository contains experimental Android support for the purpose of test and evaluation in the branch android
. Only the in-page translation functionality is present and the user interface is more limited compared to the desktop version. You can test it by following the steps below:
- Clone this repo, execute
npm install
and switch to the branchandroid
- Install Firefox Nightly for Android in your phone
- Connect your phone to your computer via USB
- Follow these steps in order to setup your phone and browser to install the addon
- You might need to execute
adb shell pm grant org.mozilla.fenix android.permission.READ_EXTERNAL_STORAGE
in your terminal so the addon could be pushed to your phone - Execute
adb devices
in your terminal, copy the device id, and replace the string<device id from adb devices>
on package.json by it - Execute
npm run android
in your terminal to install the addon in your phone and have the browser automatically started
That should be enough to have the addon installed on Firefox in your Android. Folow the steps in the video below to learn how to use it.
https://user-images.githubusercontent.com/973388/205548906-e6eaf82e-e4cd-4a78-8910-9823f1e82d71.mp4
Development
3rd party dependencies
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
How to run
- 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
Updating telemetry schema
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.
Updating bergamot-translator WASM module
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.