La variabile $lang ti serve da qualche altra parte all'interno dello stesso file php? Perché altrimenti è inutile.

Penso che nella logica ci sia qualcosa che non va, secondo me nell'ultimo else non ci entrerai mai, almeno una $_SESSION'lang'] o $_COOKIE['lang'] a quel punto saranno sempre settate.
Qual'ora, cambiando la logica, entrassi in quell'else vorrebbe dire che nessuna tra $_SESSION'lang'] e $_COOKIE['lang'] è settata e lì dentro non le setti, quindi non le avrai disponibili nelle altre pagine.