To save on build time, the build system and automation collaborate to allow downloading a packaged en-US Firefox, performing some locale-specific post-processing, and re-packaging a locale-specific Firefox. Such artifacts are termed "single-locale language repacks". There is another concept of a "multi-locale language build", which is more like a regular build and less like a re-packaging post-processing step.

Instructions for single-locale repacks for developers

This assumes that $AB_CD is the locale you want to repack with; I tested with "ar" and "en-GB".

  1. You must have a built and packaged object directory, or a pre-built en-US package.

    ./mach build
    ./mach package
  2. Repackage using the locale-specific changes.

    ./mach build installers-$AB_CD

You should find a re-packaged build at OBJDIR/dist/, and a runnable binary in OBJDIR/dist/l10n-stage/. The installers target runs quite a few things for you, including getting the repository for the requested locale from https://hg.mozilla.org/l10n-central/. It will clone them into ~/.mozbuild/l10n-central. If you have an existing repository there, you may want to occasionally update that via hg pull -u. If you prefer to have the l10n repositories at a different location on your disk, you can point to the directory via

ac_add_options --with-l10n-base=/make/this/a/absolute/path

Instructions for multi-locale builds

If you want to create a single build with mutliple locales, you will do

  1. Create a build and package

    ./mach build
    ./mach package
  2. For each locale you want to include in the build:

    export MOZ_CHROME_MULTILOCALE="de it zh-TW"
    for AB_CD in $MOZ_CHROME_MULTILOCALE; do
       ./mach build chrome-$AB_CD
    done
  3. Create the multilingual package:

    AB_CD=multi ./mach package

This currently only works for Firefox for Android.