Хотелось бы дополнить, если использовать базу данных, то в списке страниц сайта, можно добавить вариант текста на нескольких языках пример таблицы :
id - идентификатор страницы в базе
name - имя на английском как псевдоним
t_ru - название на русском
t_en - название на английском
c_ru - контент на русском
c_en - контент на английском
и при необходимости грузить только нужную колонку, язык давать на выбор изначально, а сохранять его параметры в cookie, например :
<?php
setcookie('lang', $_POST['lang']);
?>
<form action="?set=lang" method="post">
<select name="lang">
<option value="ru">ru</option>
<option value="en">en</option>
</select>
<input type="submit" value="ok" />
</form>
<?php
$pid = $_GET['pid'];
$pref_lang = '_'.$_COOKIE['lang'];
mysql_query("SELECT t.$pref_lang, c.$pref_lang FROM pages WHERE id='$pid'");
?>
Примерно как то так, способов реализаций очень много, в большинстве случаях можно обойтись и без базы данных и использовать файлы. Весь смысл создания сайта на разных языках - это знать нужный для посетителя язык и выводить вариант страницы на этом языке.
А если нужно перевести надписи на кнопках, заголовки и т.д., то можно создать файл с массивами, и подключать его в начале страницы функцией require, именно ей и именно вначале, т.к. она не замедляет работу программы, как это делает include();.
пример :
<?php
//langpack.php
$arroflangs['button1_ru'] = 'отправить';
$arroflangs['button1_en'] = 'submit';
?>
<?php
require("./langpack.php");
$lang = '_'.$_COOKIE['lang'];
echo '<input type="button" value="'.$aroflangs['button1'.$lang]'" />';
?>
Сразу извиняюсь за возможные ошибки, т.к. пишу без возможности проверить.