When the programmers insert user-visible text strings into the programs, they enclose them in _() or N_(). These are macros that gettext use to extract the strings from the source code and put them into a message catalog. This is placed in a subdirectory called po/ in the top directory of the programs' source code and is called for example gnome-libs.pot. The first thing you do when starting a new translation is to copy this file to XX.po where XX is your language code (specified in ISO 634, which is a standard containing language codes). After doing this you can start translating the actual content of the file.

The file contains a number of strings of the form:
          #: panel/panel_config.c:1050
          msgid "Color to use:"
          msgstr "Farge som skal brukes:"

The first line tells you which source file the string comes from. panel/panel_config.c at line 1050. The next is the original string from the .c file, and the last is the translation. The last line will be empty when you first copy the .pot file to XX.po.

Now to have your translation included in the build process you must add the language code to configure.in in the ALL_LINGUAS environment variable. For readability i recommend you add it in alphabetical order.