there r several ways:
the -in my opinion- best and easiest way is to create a file for every language u wanna support and define constants for every button, header etc.:
english.inc:
define(HOME, "homepage");
define(BACK, "back");
define(NEXT, "next");
define(HELP, "help");
// go on with the definitions for everything u want to be international
german.inc:
define(HOME, "Startseite");
define(BACK, "zurück");
define(NEXT, "weiter");
define(HELP, "Hilfe");
// etc
Now, when u r done with this, u can include a file basing on the language the user selected. E.g. if $GET["lang"] contains a string for the language, do it like this:
require_once($_GET["lang"] . ".inc");
Now, when u output html, use the constants instead of hardcoded text, i.e.:
<html>
<head>
<title>test</title>
</head>
<body>
<a href="home.php"><?php echo HOME;?></a>
<a href="back.php"><?php echo BACK;?></a>
<!--- and so on --->
</body>
</html>
Ok, u got the point? This method is quite popular (i guess phpNuke uses some similar approach), so u will find a lot of help on the net.
hth