Hola Daniel,
PHP incluye de serie la función gettext() para dar soporte a páginas multilingües. Se basa en la configuración del idioma del servidor, pero la misma se puede determinar programáticamente para usar una arbitraria.
<?php
// Configurar idioma en español de Argentina
putenv('LC_ALL=es_AR');
setlocale(LC_ALL, 'es_AR');
// Especifica la ubicación de la tabla de traducciones
bindtextdomain("myPHPApp", "./locale");
// Seleccionar dominio
textdomain("myPHPApp");
// Ahora las traducciones se encuentran en ./locale/es_AR/LC_MESSAGES/myPHPApp.mo
// Imprimir un mensaje de prueba
echo gettext("Hello World!");
?>
Y la salida por pantalla será "Hola Che!", que es como está traducido "Hello World!" ;-)
La ventaja de este mecanismo es que los archivos de idioma pueden ser escritos y traducidos por gente que no sepa programar y además hay varios editores de archivos .mo para usar en múltiples plataformas. El traductos no puede romper nada.
Otro mecanismo es tener los diferentes archivos de idioma en XML y leer el nodo que te hace falta con SimpleXML, pero ahí el traductor puede romper la estructura del XML y falla todo.
Otra más simple todavía pero más peligrosa es tener un archivo con constantes por cada idioma, y que tu código cargue el archivo del idioma correspondiente y muestre el valor de la constante. Este es más peligroso, porque además de romper el softwaer también pueden incluir líneas de código.
Dependerá de tu proyecto y de quienes traduzcan cual usar. Yo ordené de arriba a abajo las mejores, pero el orden de dificultad de implementanción es justamente el inverso ;-)
Saludos!