/firefox-translations-1

Firefox Translations is a webextension that enables client side translations for web browsers.

Primary LanguageJavaScriptMozilla Public License 2.0MPL-2.0

Build CodeQL End-to-End Tests Firefox Translations - Install Nightly CODE OF CONDUCT LICENSE

Firefox Translations

Firefox Translations is a WebExtension that enables client side in-page translations for web browsers.

Release version

The current release version is available for installation on Mozilla Add-ons

AMO

Supported languages

Production

  • Spanish
  • Estonian
  • English
  • German
  • Czech
  • Bulgarian
  • Portuguese
  • Italian

Development

  • Russian
  • Persian (Farsi)
  • Icelandic
  • Norwegian Nynorsk
  • Norwegian Bokmål

Testing

Nightly builds

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 Firefox Translations - Install Nightly
  • 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.

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

  • 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 set extensions.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.