1. Im Quelltext müssen alle zu übersetzenden Texte durch die API markiert werden
  2. Diese werden mit xgettext zu PO extrahiert
  3. Übersetzung
  4. Umwandlung in binäres MO Format mit msgfmt
  5. Auswahl der Übersetzung zur Laufzeit

Seit GNU Gettext 0.15 (2006) kann man selber definieren wie die zu extrahierenden Funktionen heissen, d.h. man ist nicht mehr festgelegt auf gettext(), _(), ...

Beispiel PO Datei:
msgid "%d fatal error"
msgid_plural "%d fatal errors"
msgstr[0] "ein fataler Fehler"
msgstr[1] "%d fatale Fehler"