Sessions. And if the users create accounts, store it with the account.
As for changing it, its a simple matter of adding a link for it.
Lets take for example to go to french:
PAGE_NAME?chgLang=french
If you put the control for it in a seperate inclusion file, say global.php:
PHP Code:
<?php
session_start();
if (isset($_GET['chgLang'])):
$lang = strtolower($_GET['chgLang']);
switch ($lang):
case 'french':
$_SESSION['language'] = 'french';
break;
default:
$_SESSION['language'] = 'english';
endswitch;
endif;
Sort of idea. You would use the condition that if no session language exists to use english, otherwise use whatever is specified. I assume you got the linguistics already scripted and just need the condition / session usage yeah?