Localization - l10n - or Internationalization - i18n - are technical names for software translation, more that only change the words in a software interface, is a cultural and contextual adaptation of software for each country and/or region with a specific language and habits.

For Apache OpenOffice, the used technology is based in a big text file, called SDF. This file contains all the strings (texts, expressions, phrases and others) that are present in the user interface and help system.

Currently, the more used way in open source projects, and more easy, to work with localization is based in Gettext framework, that have an extensive set of tools for translation. The Gettext have its work based in the PO file format. See below for some examples.

accessibility   source\helper\accessiblestrings.src     0       string  RID_STR_ACC_NAME_BROWSEBUTTON                           0       en-US   Browse                          20120307 13:06:18
#: accessibility/source/helper/accessiblestrings.src#RID_STR_ACC_NAME_BROWSEBUTTON.string.text
msgid "Browse"
msgstr ""

So, to translate Apache OpenOffice for a new language, basically we need:

  1. Get the SDF source in english (base language);
  2. Convert from SDF to POT file (PO Template - a PO file without any translation);
  3. Translate all strings;
  4. Rename all translated POT files to PO (one time that are translated, this files aren't more templates);
  5. Convert from PO to SDF file (we can accept a PO package/zip file);
  6. Open a bug against L10N section in our bug track system
  7. Wait a build with your language pack. (wink)

Some useful tools

A simple example of all process