QA phase

After all of your hard work localizing we're sure that you not only want to see your work but you want to make sure it's accurate! If you don't have a lot of experience with code, you might even be concerned that you've broken something (oops!). Now we'll walk you through performing some quality assurance testing on your work to make sure you're on the right track.

If you're localizing Mozilla websites, your work will display soon after you've committed it without needing a language pack. Since such is the case, this part of the guide may not be entirely applicable to you. Feel free to skip ahead to the next section by clicking on the Next link at the bottom of the page.

In order to see your work on Firefox (or another Mozilla application), you'll need to have a built language pack to install on your local instance.

Manual & automated builds

With the click of a button, some L10n tools (like Narro and Koala) automatically create language pack builds for you. If you're using one of these tools, feel free to skip ahead to the Seeing your work section. If you're not using one of these tools, let's walk you through building your own language pack manually.

Note: Remember all of those pre-requisite tools we asked you to install in the initial setup? Here's where you'll need almost all of them. If you haven't installed them yet, now is the time to do it.

Preliminary instructions

We will be using the following file directories for this example:

your working directory (root)/
    mozilla-aurora (en-US source, pulled from  )/
    l10n-central (directory for L10n directories, one per L10n; often referred to as "l10n base")/
       your-locale-code (a directory with your L10n files, in this example we'll use x-testing)

Example: root/mozilla-aurora & root/l10n-central/x-testing

Additionally, you will need to copy and translate the toolkit/ file directly from en-US before you can build. This is due to a bug in the build logic.

Please either follow the above structure closely or adjust the commands below according to your custom setup.

To copy this file to the appropriate directory, do the following:

  1. Navigate to your working directory from your command-line terminal (i.e., where you created the folder structure described above).
  2. Enter the following commands:
mkdir -p l10n-central/x-testing/toolkit/

cp mozilla-aurora/toolkit/locales/en-US/ l10n-central/x-testing/toolkit/

Tah-dah! Copied!

Finally, you will need a file called .mozconfig to proceed with manual builds. This file contains the necessary build instructions.

To create and configure this file, follow these instructions:

Until the fix for bug 1063880 lands on mozilla-aurora and mozilla-beta when building language packs against those two trees you should:

  1. remove ac_add_options --disable-compile-environment from .mozconfig in step 3

  2. use ./mach build config after step 4

  1. Update the Mozilla source code:

$ cd mozilla-aurora
$ hg pull -u

  1. Enter the following command to create the .mozconfig file: $ nano -w .mozconfig
  2. Enter the following lines in your .mozconfig file:
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../firefox-build
ac_add_options --disable-compile-environment
ac_add_options --with-l10n-base=../l10n-central # path relative to MOZ_OBJDIR
ac_add_options --enable-application=[browser or mail]

You will need to specify which application you're localizing in the fourth line (e.g., for Firefox, that's browser, Thunderbird would be mail).

  1. Enter the following command to perform the configuration: $ ./mach configure
  2. Once your command-line finishes spitting out the config command's output, navigate to the newly created directory: $ cd ../firefox-build/browser/locales

Now you're ready to build! At this point you can choose between two build options. You can either:

Visit the links above to learn how to make these testing builds.

Testing your L10n & seeing your work

Now that you have your langpack or L10n repack, let's discuss seeing your work and testing it in the application.

Testing the langpack will put you one step closer to having your localization added to the L10n releases. Follow the steps below to test your localization:

  1. Install Aurora in your preferred language.
  2. Install the .xpi langpack you just created (or exported).
  3. Set your language using the Quick Locale Switcher or Locale Switcher add-ons by navigating to Tools->Language->Your localization's language code.
  4. Restart your browser and start testing!

Now you should be able to see all of your work up to this point. Click here for guidelines on how to test your localization.

Don't lose your work!

Your work is SO important! We would really hate to see you lose any of it. After you test your localization, you should send it to a remote repository, which will serve as a backup for your work and will let others follow your progress. We're going to go through the process below.

The official localization teams use repositories at Before a team becomes official, we like to get the localizers comfortable with the Hg commands that allow for cloning, pulling, committing, and pushing work to an experimental repository.  We use a web service called Bit Bucket to start the learning process.

Note: You must have Mercurial configured before you begin. That step is back on the initial setup page. If you haven't done that yet, don't worry, we'll wait for you!

Pushing to your repository

There are a couple of things you should take note of before you push to your repository:

  • Make sure that your files have been encoded in Unicode without BOM (byte order mark).
  • Remember that here you are pushing an entire directory, not a .zip archive file or an .xpi lang pack.

The instructions below will help you learn how to use your Hg repository.

  1. After your new repository is created by the l10n-drivers, please visit the URL for your repo. We'll use x-testing here for our example. You can do this by entering the following URL into your browser:
  2. Now, navigate to your locale's directory on your local machine.

If you're using Koala, this should be located at /path/to/your/koala.project/locale/3.6/x-testing, otherwise, it should be located at /path/to/your/working_dir/l10n_base/x-testing.

In this directory, you should have an hg repository. You might have created it yourself by running hg init or hg clone or you might have had it created by Koala when you were setting up a new localization project. Also at this point, you shouldn't have any uncommitted changes (i.e., running the hg status command should show nothing). Let's see what the last revision in this repository is.

  1. Enter the following command: $ hg log -l 1

You should see an output similar to the one below:

changeset:   0:7c543e8f3a6a
tag:         tip
user:        Your Name <>
date:        Mon Nov 23 18:08:25 2009 +0100
summary:     Added search bar strings
  1. Now compare the local repository on your machine with the remote Hg repository by entering this command: $ hg outgoing

The hg outgoing command compares the two repositories and lists all changesets that are present locally, but not in the remote repository. These changesets will need to be "pushed" to the remote repository. You can expect to see output like this:

comparing with
searching for changes

changeset:   0:7c543e8f3a6a
tag:         tip
user:        Your Name <>
date:        Mon Nov 23 18:08:25 2009 +0100
summary:     Added search bar strings
  1. Let's now push this changeset. Enter the following command: hg push
  2. Mercurial will connect to your repo and ask you to provide your account information (i.e., the username and the password).
real URL is
pushing to
searching for changes
http authorization required
realm: HTTP
user: your_id

After you enter your account information, the changeset will be pushed.

adding changesets
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
bb/acl: your_id is allowed. accepted payload.
quota: 979.7 KB in use, 150.0 MB available (0.64% used)

Your changeset has been successfully pushed to your repository!

As you begin to move through your translations, you should commit the changes locally and push your work to this experimental repository. For instance, if you have finished translating all the .dtd and .properties files in your x-testing/browser/chrome/browser/ directory, then you should run these commands:

$ hg status
$ hg commit -m "Translated browser/chrome/browser/"
$ hg outgoing
$ hg push

Note that due to the distributed nature of Hg, hg commit saves the changes locally (i.e., in your computer's Hg repository). You can see the history of commits with hg log. After doing hg commit, you still need to send the changes to the remote repository. This is where hg push comes in. This sends your commits to the remote repository.

Now you're ready to proceed to the release phase!


Document Tags and Contributors

Contributors to this page: stoyanster, Oeekker, Jonathan_Watt, jbeatty, Sheppy, Aryx, terrameijar
Last updated by: stoyanster,