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.

String in SDF format
accessibility   source\helper\accessiblestrings.src     0       string  RID_STR_ACC_NAME_BROWSEBUTTON                           0       en-US   Browse                          20120307 13:06:18
Same string in PO format
#: 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

  • For convertion: translation toolkit - tools oo2po and po2oo;
  • For offline translation:
    • Localkize - a kde localization tool (win/linux);
    • gTranslator - a GTK/Gnome localization tool (win/linux);
    • Virtaal - localization tool of Translate Toolkit project (win/linux/mac osx);
    • poEdit - other localization tool (win/linux/mac osx);
  • For online translation:

A simple example of all process

  • Get the source - the POT files;
  • If OpenOffice.org had version for your language, you can use it for speed up your translation. See the next steps;
    • Find and download the SDF file in your language here: http://svn.apache.org/viewvc/incubator/ooo/trunk/extras/l10n/source/
    • Install translate toolkit in your machine - if Debian, 'apt-get install translatetoolkit';
    • Enter in work directory (where is the SDF file);
    • Type: 'cat en-US.sdf your-language.sdf > old.sdf' - with this command will join in one both files;
    • Type: 'oo2po --source-language=en-US -l your-language -i old.sdf your-language' - with this part, will create a new directory called 'your-language' with many PO translated files.
    • With your translation tool, if have the resource of Translation Memory (TM), you can add this directory as your TM. Lokalize (of KDE) have this resource;
  • Open a POT file to start your translation;
    • Run the option "Fill the match strings" (or some thing like this), for your translation tool to fill all strings that match 100%. In Lokalize this option is Ctrl+Alt+B.
  • Translate what is empty and revise what is fuzzy.
  • Finish UI part (all files except 'helpcontent2', that is the translation of help system);
  • Open a issue in our bug track system and attach the zip of PO files;
  • Finish the HELP part and open other issue in our bug track system;
  • No labels