Ahora se entiende más cómo debe funcionar.
Código PHP:
session_start();
// la segunda y tercera línea del código que pegaste hace lo mismo que las 4 líneas
// a continuación, pero esto es más claro
if (isset($_SESSION['lang'])) {
$lang = $_SESSION['lang'];
} else {
$lang = 'es';
}
include( 'lang/' . $lang . EX ); // los archivos include (es.php) y (en.php) estan en la carpeta lang
if( !empty( $_GET['lang'] ) ) {
$_SESSION['lang'] = $_GET['lang'];
}
Por otro lado, tal y como lo estás usando la última comprobación debe ser con GET, no POST. Fíjate que también lo cambié con respecto a tu código original.
Si ahora no te funciona, lo único que se me ocurre es que no estés llamando a session_start en la página de inicio...
Sería bueno que agregaras estas líneas
Código PHP:
session_start();
var_dump($_SESSION);
exit;
en la página donde no te funciona, para así ver con más claridad qué es lo que sucede.
Saludos.