Localization, or l10n for short, is the process of translating and otherwise adapting a piece of software for a specific language and culture. Localization should not be confused with internationalization (i18n), which refers to the infrastructure to support different culture interaction between a user and the software.
For example: In English, words are written from left to right. In Arabic, the reverse is true. Words are written from right to left. Therefore, not only must someone localize a piece of software by translating all the menus and dialogs displayed to the user, but someone must internationalize the software by enabling it to display text in either a left to right, or right to left fashion (often referred to as bi-directional, or bi-di support), depending on the language.
Status of l10n
Thanks to the work of Mozilla contributors and the Mozilla Localization Project, there is a centralized location and format for storing locales: the /l10n repository. All Calendar products (Lightning and Sunbird) are using /l10n.
How to build a non-English Sunbird
With locales moved to /l10n, building Sunbird in a locale other than English is easy. First, visit the list of available locales to find the locale code you wish to build with. Note that due to the standarization put in place by /l10n, some locales may have been shortened from their "ab-CD" format to simply be "ab". Be sure to check the list to see if this applies to you.
Next, add the following lines to your .mozconfig, substituting your preferred locale code for the "ab-CD" in the example:
ac_add_options --enable-ui-locale=ab-CD mk_add_options MOZ_CO_LOCALES=ab-CD
Now build as normal. That's it!
How to build a language pack
Language packs, or langpacks for short, allow users to install additional locales into the application without having to download and keep a second full copy of the app.
1. Login to CVS and get the initial Makefile, client.mk, and the Sunbird mozconfig file. The example below assumes you're connecting to the CVS server anonymously.
cvs -d :pserver:email@example.com:/cvsroot login # type the password anonymous cvs -d :pserver:firstname.lastname@example.org:/cvsroot co mozilla/client.mk mozilla/calendar/sunbird/config/mozconfig cd mozilla
2. Create a .mozconfig file inside the mozilla directory. You'll want to specify the locales to check out of l10n CVS, and that you're building calendar. An example .mozconfig file that will check out the French (fr) and German (de) locales follows.
. $topsrcdir/calendar/sunbird/config/mozconfig mk_add_options MOZ_CO_LOCALES=fr,de
3. Check out the source code. The first line in our .mozconfig tells make to read Sunbird's mozconfig before processing the other lines in ours. Since we specified the additional locales, they'll be checked out of CVS for us as well.
make -f client.mk checkout
4. Run the configure script to generate Makefiles in the localization directories.
5. Building a langpack requires nsinstall. We'll need to build it. Go into the mozilla/config directory and make it. You'll get some errors, which you can promptly ignore.
cd config make
6. Go into the mozilla/calendar/locales directory, and make the langpack target for the locale you wish.
cd ../calendar/locales make langpack-fr
Getting l10n-relevant localization
Localizers of Lightning and Sunbird should read the Calendar development newsgroup (mozilla.dev.apps.calendar) and the Localization newsgroup (mozilla.dev.l10n) to stay informed of recent Calendar-related developments.
In addition they should watch the email@example.com mail address in [bugzilla.mozilla.org] to stay current on bugs that might affect localizers, especially late in a release cycle.
Information for localizers/translators
Please make yourself familiar with the MLP's wiki, which lists the teams currently localizing Firefox and Thunderbird. Most documentation regarding how to contribute a localization or update an already existing one now applies to Sunbird as well.
In addition, some now outdated information on how to translate older Sunbird releases can be found at Calendar:Translation. While much has changed since that document was written, certain core concepts such as using UTF-8, and how to use Mozilla Translator have not.