Vom Prinzip her schreibt man die .po Dateien mit den lokalisierten Strings und muss diese dann nur noch richtig in seinem Programm laden.
Das habe ich noch nicht genau raus, wie man das macht. Das hier ist mein Code:

Code:
#include <libintl.h>
#include <locale.h>

#define _(string) gettext (string)

#include <iostream>
using namespace std;

int main() {
	setlocale (LC_ALL, "");
	//PACKAGE und LOCALEDIR kommen aus der config.h oder Makefile
	//bindtextdomain (PACKAGE, LOCALEDIR);
	//textdomain (PACKAGE);
	cout<<_("sprache")<<endl;
}
die auskommentierten Zeilen sind wichtig, aber weil ich keine config.h oder makefile habe, muss ich PACKAGE und LOCALEDIR selber eintragen. Ich weiß aber nicht, was da rein soll.
Ansonsten hab ich noch eine deutsche .po mit folgendem Inhalt:

msgid "sprache"
msgstr "deutscher text"

und eine englische .po in der im msgstr was anderes steht.
Wie lade ich die beiden jetzt?
Die gettext-Doku ist so fett und erzählt nicht wirklich viel über die praktische Anwendung, sondern eher was über Sprachen und Übersetzung und Probleme die dabei auftreten.