1) è praticamente la stessa cosa, fa come preferisci

2) certo, ma può essere complicato: nella prima pagina a cui accede chi va sul tuo sito (suppongo index.php), con la variabile $_SERVER['REMOTE_ADDR'] leggi l'indirizzo IP dell'utente, poi dovrai risalire alla località da cui si collega tramite un IP Tracer.
Il mio consiglio è invece di controllare la variabile $_SERVER['HTTP_ACCEPT_LANGUAGE'] in questo modo
Codice PHP:
$lang $_SERVER['HTTP_ACCEPT_LANGUAGE'];

if (
substr($lang02) == ‘it’) {
    
header("Location: /it/index.php"); //supponendo che usi sottocartelle
}

if (
substr($lang02) == ‘en’) {
    
header("Location: /en/index.php");
}

//e così via per le altre lingue 
Edit: sono arrivato secondo