Realmente no se cual es mas eficiente, pero hace no mucho tuve que realizar una web multilenguaje y opte por lo siguiente y fuciona de lo mas bien:
Una carpeta lang, con dos (o mas) arhivos php con constantes para cada idioma, al estilo:
Código PHP:
//archivo 'en.php'
define("NEW_USER", "New User");
define("WELCOME_MESSAGE", "Welcome to site.com!");
...
Luego, en cada pagina, haces un include del idioma que te interesa:
Código PHP:
$_SESSION['lang'] = $_COOKIE['lang'];
if(isset($_GET['lang'])){
$_SESSION['lang'] = $_GET['lang'];
setcookie("lang", $_SESSION['lang'], time() + (84600 * 30));
}
if (empty($_SESSION['lang']))
$_SESSION['lang'] = 'es';
Y en la pagina, simplemente haces un echo WELCOME_MESSAGE.
Eso me resultó bastante sencillo.
Eso si, a la hora de actualizar la pagina, es tedioso, pero creo que ningún sistema multilenguaje se escapa a eso...
Suerte