La solución se resume a algo parecido a esto...
 
Hay que tener un archivo por cada idioma que vayas a utilizar, por ejemplo, si vas a utilizar español e inglés puedes tener dos archivos, que son : 
es.php y 
en.php 
En cada uno de estos archivos generas una lista. Puedes hacerlo con arreglos, con variables normales, con define().... como tú elijas. 
es.php 
 Código PHP:
    $lenguaje["saludo"] = "Hola";
$lenguaje["error"] = "Se ha producido un error al cargar la página. Disculpa las molestias"; 
    
  en.php 
 Código PHP:
    $lenguaje["saludo"] = "Hello";
$lenguaje["error"] = "There was an error when loading the website. Sorry for inconvences"; 
    
  Cuando ya tienes estos archivos creados, en tu página cargas uno o cargas otro según el lenguaje que decida el usuario (esto me lo salto, deduzo que sabes hacerlo) de este modo:  
 Código PHP:
    //Incluir el archivo ingles
include("en.php"); 
    
  Lo mismo si el que quieres incluir es el español. 
Ahora ya en la página puedes mostrar los textos cargados (y según el archivo aparecerán en un idioma u otro)  
 Código PHP:
    echo $lenguaje["error"]; //Se mostrará el error, en el idioma que hayas cargado con el include 
    
  
 suerte