Si estas interesado en proporcionar a tu sitio web la funcionalidad de cambiar de idioma fácilmente haciendo uso de PHP, entonces el tutorial de BitRepository puede interesarte. Vamos a hacer un pequeño resumen de lo que hice para poner el práctica esto.

Lo primero que debemos tener el cuenta es crear archivos que contengan el texto (las palabras) de cada idioma que soportará nuestro sitio web. Para este ejemplo trabajaremos con los idiomas inglés y español, los archivos generados guardarlos en un directorio en la raíz. La sugerencia del artículo original es darle los siguientes nombres a los archivos, fácil de recordar: lang.en.php y lang.es.php.

lang.en.php

<?php
/*
------------------
Language: Ingles
------------------
*/

define('LANG_PAGE_TITLE', 'My website page title');
define('LANG_HEADER_TITLE', 'My website header title');
define('LANG_SITE_NAME', 'My Website');
define('LANG_SLOGAN', 'My slogan here');
define('LANG_HEADING', 'Heading');

// etc
?>

lang.es.php

<?php
/*
------------------
Language: Spanish
------------------
*/

define('LANG_PAGE_TITLE', 'Título de la página de mi sitio web');
define('LANG_HEADER_TITLE', 'Mi sitio web de la cabecera título');
define('LANG_SITENAME', 'Mi Sitio Web');
define('LANG_SLOGAN', ' Mi lema aquí');
define('LANG_HEADING', 'Título');

//etc
?>

En cada uno de los archivos de idioma hacemos uso de constantes mediante el uso de la función define(). En cada uno de los archivos se ha definido constantes del mismo nombre, pero valores diferentes. El valor de las constantes se imprimirán en el archivo deseado.

El archivo common.php realizará el proceso para seleccionar el idioma deseado por el usuario final y además guardará la elección en cookies y variables de sesión. El idioma por defecto es el inglés.

<?php
session_start();
header('Cache-control: private'); // IE 6 FIX

if(isSet($_GET['lang'])){
$lang = $_GET['lang'];

//registra sesion
$_SESSION['lang'] = $lang;

//define cookie
setcookie('lang', $lang, time() + (3600 * 24 * 30));

//busca en variables cookie y session
}else if(isSet($_SESSION['lang'])){
$lang = $_SESSION['lang'];
}else if(isSet($_COOKIE['lang'])){
$lang = $_COOKIE['lang'];
}else{
$lang = 'en';
}

switch ($lang) {
case 'en':
$lang_file = 'lang.en.php';
break;

/*--mas idiomas--*/

case 'es':
$lang_file = 'lang.es.php';
break;

default:
$lang_file = 'lang.en.php';

}

include_once 'languages/'.$lang_file;
?>

Ya en nuestro archivo principal hacemos un llamado a common.php y usamos el valor de las constantes.

<?php
include_once 'common.php';
?>
<title><?php echo LANG_PAGE_TITLE; ?></title>
<h1><?php echo LANG_SLOGAN; ?></h1> 

Realmente interesante este prototipo que se puede pulir mas aun para que se acomode a nuestras necesidades y darle a nuestro sitio web soporte para muchos idiomas.

Artículo original | PHP: How to add multi-language support to a website