Cuando yo tengo que hacer una web multi idioma lo hago de la siguiente manera:
en todas los enlaces dentro de la paguina tienes que pasar una variable que indique el idioma:
Código:
<a href="menu1.php?idioma=<?php echo($idioma); ?>">Menu 1</a>
Creo una paguina que contiene las funciones que escriben el texto, para cada idioma, las funciones se llaman igual y la diferencia es que en cada paguina va su idioma.
idioma1.php
idioma2.php
...
Cuando entro en menu1.php miro en que idioma esta navegando el usuario lo recojo en la variable $idioma y hago el include de el idioma correspondiente.
Luego cuando tenga que poner un texto en menu1.php llamo a la función que escrive ese texto.
Para cambiar de idioma donde tengas los botones de idiomas simplemente tienes que forzar el idioma
Código:
<a href="menu1.php?idioma=1>">Idioma 1</a>
<a href="menu1.php?idioma=2>">Idioma 2</a>
No se si es la mejor manera de hacerlo peor a mi me va bastante bien.