Je pense que le plus simple serait d’avoir un fichier de langue qui contiendrait un array associatif $lang[] (à la phpBB quoi…)
Et tu aurais un script comme ca au début de page :
[code]<?php
$default = « fr »; // Tu définis la langue par défaut.
if(isset($_POST[‹ change_langue ›])) {
// Si le formulaire a été soumis
if (file_exists('lang/' . $_POST['langue'] . '.php')) {
// Si le fichier contenant tes arrays de langue existe :
setcookie(‹ lang ›, $_POST[‹ langue ›], time()+(365243600));
// Tu fais un cookie contenant la langue de l’utilisateur (ici, mémorisée pour un an)
$langue = $_POST['langue'];
// Si le fichier de lang existe, tu gardes le tout dans une variable
}
else
$langue = $default;
}
elseif (isset($_COOKIE['langue']))
// Si le formulaire n'a pas été soumis et si le cookie existe, on assigne la variable
$langue = $_COOKIE['langue'];
else
// Si le cookie n'existe pas et que le formulaire n'a pas été soumis, on définit le lange par défaut.
$langue = $default;
function selected($input) {
if($input == $GLOBALS[‹ langue ›])
echo ‹ selected=« selected » ›;
}
// Fonction BONUS pour le formulaire.
include(« lang/ » . $_POST[‹ langue ›] . « .php »);
// Tu inclus le fichier de lang contenant un array avec tous les textes de ton site
?>[/code]
Puis un formulaire du type :
[html]<?php echo $lang['choose_lang']; ?>
>Français
>English
>Deutsh
[/html]
Et dans ton fichier lang/fr.php tu aurais :
[code]<?php
$lang = array(
'submit_change_lang' => 'Changer de langue',
'choose_lang' => 'Veuillez choisir une langue',
'etc..' => 'Et tout ca..'
);
?>[/code]
Par contre, si tu maitrises pas trop le PHP, ca peut vite t’embrouiller 
Et tu seras obligé d’afficher tous tes textes, même un seul mot isolé, par un <?php echo $lang['key']; ?> et il faudra que tu ais défini cet extrait avant dans le $langue.php
Voilà, c’est une des solutions en PHP, c’est peut-être une des plus lourdes, je ne me suis jamais penché là-dessus…