Página web multi-idioma con PHP

Quizas no hemos dado cuenta que muchos sitios web de mucho tráfico necesitan llegar a mas personas en el mundo, y una forma de hacerlo es mediante presentar sus contenido en el idioma natal del usuario final. ¿Verdad que es más cómodo ver contenidos en nuestro idioma? Por supuesto. Así que si como desarrolladores nos proponen hacer algo así ¿Por donde empezar? Pues en la internet hay muchos tutoriales que nos indican que debemos hacer al respecto, puede googlear para corrobar esto, sin embargo siempre en este blog hemos querido poner nuestro granito de arena en cuando ayudar a nuestros lectores, muchos de ellos programadores, con nuestros códigos ó referencias a otros blogs muy buenos. En este caso compartimos una clase en PHP que permite cargar el paquete de idioma seleccionado según el usuario. Esta probado y testeado. Que se puede mejorar, por supuesto. Pero ya tienen una base por donde empezar. 

class mylanguage
{

function get_language()
{
return $this->language;
}
// load language setting
function load_language($lang)
{
$default_language="en";
$this->language=$lang;
switch ($this->get_language())
{
case "fa":
require_once 'lang-'.$this->get_language().'.inc.php';
break;
case "en":
require_once 'lang-'.$this->get_language().'.inc.php';
break;
case "tr":
require_once 'lang-'.$this->get_language().'.inc.php';
break;
default:
// default language is
require_once 'lang-'.$default_language.'.inc.php';
break;
}

}
// end language function loading

}

Los archivos en formato: lang-{abridioma} .inc.php contendrá la definición de cada palabra en el idioma en cuestión.

<?php 
// define words
define("PROGVIGADS_Class_version","Class Version is :");
define("PROGVIGADS_Version","1.0.0");
define("PROGVIGADS_Welcome","Welcome To my site");
define("PROGVIGADS_location","America");
define("PROGVIGADS_my_location","My location is : ");
?>

Ya en el archivo que se mostrará al usuario final incluimos la clase como también trabajar con variables de sesión para que el navegador recuerde nuestro preferencia de idioma y darle la opción de seleccionar el idioma de su preferencia.

session_start();
// register session to change language
session_register("mylang");
// if session isn't set
if(!isset($_SESSION['mylang']))
{
$_SESSION['mylang']="en";
}
//include language class
require_once 'inc/lang.class.php';
$mylang=new mylanguage();
$mylang->load_language($_SESSION['mylang']);
// echo simple title
echo PROGVIGADS_Welcome."<br/>";
echo PROGVIGADS_my_location.PROGVIGADS_location."<br/>";
echo PROGVIGADS_Class_version.PROGVIGADS_Version;

if(isset($_GET['lang']))
{
switch($_GET['lang'])
{
case "ir":
$_SESSION['mylang']="fa";
break;
case "en":
$_SESSION['mylang']="en";
break;
case "tr":
$_SESSION['mylang']="tr";
break;
}
}

?>
<br />

<a href="index.php?lang=en"><img src="images/us.gif" /></a> |
<a href="index.php?lang=ir"><img src="images/ir.gif" /> </a>|
<a href="index.php?lang=tr"> <img src="images/tr.gif" /></a><br />

Simple pero muy funcional, ya tenemos una idea de como poder trabajar con varios idiomas en nuestro sitio web. 

Descargar paquete completo desde PHPClasses.

Agradecimiento a Payan Khaninajad por la clase.

3 thoughts on “Página web multi-idioma con PHP

  1. MMM, es funcional, pero no es óptimo.
    Respecto a tu código, yo lo habría hecho con un método estático y sin necesidad de instanciar el objeto. Directamente devuelves el paquete que le pases como parametro y listo.
    De todas formas,una muy buena alternativa es usar archivos .mo editados y compilados con POEDIT. No solo aplicaciones Web.

Leave a Reply

Your email address will not be published. Required fields are marked *

Proudly powered by WordPress | Theme: Wanderz Blog by Crimson Themes.