A mi lo que mas me gusta y suelo usar es definir globales para los idiomas con el define y usar una estructura de carpetas tipo
Código PHP:
idiomas/es/general.php
define('_HOLA', 'Hola');
Código PHP:
idiomas/en/general.php
define('_HOLA', 'Hello');
Y cojo por defecto el idioma del navegador y lo almaceno en sesion, si el usuario clica en otro, machaco la variable de sesion por la nueva y al principio de cada pagina:
Código PHP:
$idioma = $_SESSION['idioma'];
require 'idiomas/'.$idioma.'/general.php';
// Si tienes mas phps definidos pues igual con todos
Espero que te ayude, un saludo