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
Pienso que es mejor utiliza i18n, tener una web multi-idiomas no solo es eso presentar texto, hay muchas cosas detrás de esta práctica, como lo es monedas, fechas, etc. por eso la sugerencia de i18n que es una práctica profesional.
Éxitos…
Hace tiempo leí este artículo para algunos proyectos de cambio de idioma (solo texto) y ahora estoy en otro proyecto similar. Creo que este código es bueno y sencillo de aplicar, aunnque no da toda la potencia de i18n. A pesar de esto, i18n es algo más técnico que esto.
Muchas gracias, solo una cosa como hago con ese codigo, que la pagina detecte el idiomas del pais, para que seleccione el archivo del lenguaje automaticamente?
Como cambio el idioma con un boton?
Urge mil gracias