Inicio Programación Sitio web con soporte para múltiples idiomas con PHP

Sitio web con soporte para múltiples idiomas con PHP

3 1604

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

 

Programador y Desarrollador Web. Administrador de RibosoMatic y Proyecto Yupy. Blogger y entusiasta de la tecnología, internet, software y tutoriales para desarrollo de aplicaciones para la web ....

3 COMENTARIOS

  1. 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…

  2. 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.

Deja un comentario