Io uso il metodo 4

Singolo dominio, niente sottodomini, niente sottocartelle.

Un file php per ogni lingua (ita.php, eng.php... ) strutturato così
<?php
define('TESTO1','blablabla');
define('TESTO2','blablabla');
...
?>
ovviamente il blablabla è scritto in italiano in ita.php, in inglese in eng.php...

All'inizio di ogni pagina metto l'include del file giusto (scelgo quello giusto leggendo un cookie che salvo a seguito della scelta del visitatore, così quando torna il sito se lo ricorda), si può fare anche senza cookie, ma ogni volta il visitatore dovrà riscegliere la lingua se non usa quella di default.

Nelle pagine invece del testo ci metto un
<?php echo TESTO1 ?>
<?php echo TESTO2 ?>
...
nei punti in cui deve comparire quel testo