Прощаю вас как клиентского программиста. Авторизация не стояла и не записывалась стоять, бд и в перспективе не видна. Все делается либо как выше сказано через 1) урл и 2) сессию для сервиса. Чтобы не переключаться при каждом новом заходе.
Запросы идут на сервер, сервер дает ответы. В запросе может быть такое
en.site.com
site.com/en/
site.com/?lang=en
на сервере, применительно к каноничному последнему
extract($_GET);
if(!isset($lang))
$lang = 'ru'; // default
$langs = array(
'en'=>'English',
'ru'=>'Русский',
'ol'=>'Олбанский'
);
foreach($langs as $short=>$lng) {
$css = (strcasecmp($lang,$short)===0)?' class="current" ':null;
echo '<option'.$css.' value="'.$short.'>'.$lng.'</option>';
}