ya he encontrado la solución.
 
en index me funciona, porque la variable lang si contiene el idioma escogido.
Pero solo creaba una cookie cuando no existia, y si el usuario cambiaba de idioma no se creaba la cookie, por eso siempre se me cambiaba a inglés. 
Así que solo con ponerlo así 
 Código PHP:
    if(isset($_GET['lang']))
  {
  $lang=$_GET['lang'];
 setcookie("lang", "$lang", time() + 31536000);
  }
  else
    {
    if(isset($_COOKIE['lang']))
      {
      $lang=$_COOKIE['lang'];
      }else {
            setcookie("lang", "en", time() + 31536000);
            $lang=$_COOKIE['lang'];
            }
    }
$lang="lang/".$lang.".php";
include "$lang"; 
    
  y listo.
Un saludo a todos