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