Bueno comienzo explicando que este sistema no usa base de datos, por lo que es fácil para el usuario-cliente modificar, eliminar y agregar idiomas, el primer paso es crear una carpeta llamada "lang" donde creamos los archivos con nombres en un idioma por defecto por ejemplo ingles con extensión ".php" debería quedar así:
english.php
spanish.php
italian.php
después de crear cada archivo de idioma debemos agregar una única declaración de un arreglo llamado $words con las expresiones en el idioma por defecto y traducidas, por ejemplo:
spanish.php
Código PHP:
<?php
$words=array(
"Hello"=>"Hola",
"Name"=>"Nombre",
"E-mail"=>"Correo",
"Cell phone"=>"Celular",
"Password"=>"Contraseña",
"Confirm"=>"Confirmar",
"Access"=>"Acceso",
"Area"=>"Área",
"Minor"=>"Menor",
"Emergency"=>"Emergencia",
"Alarm"=>"Alarma",
"Login"=>"Iniciar sesión",
"Actions"=>"Acciones",
"Logout"=>"Salir"
);
?>
No es necesario traducir las palabras en ingles, por lo tanto el archivo de ingles podría quedar así:
default.php
Código PHP:
<?php
$words=array(
"Hello"=>"Hello"
);
?>
Código PHP:
"Create a new IP"=>"Crear nueva IP",
lang.php
Código PHP:
<?php
if(!isset($declared)){
class lngx{
var $words;
var $ret;
function lngx(){
if($lan=$_SESSION['language']) include("lang/$lan.php");else include("lang/default.php");
$this->words=$words;
}
function tran($word){
$ret=$word;
if(isset($this->words[$word])) $ret=$this->words[$word];
elseif(isset($this->words[strtoupper(substr($word,0,1)).substr($word,1)])) $ret=mb_strtolower($this->words[strtoupper(substr($word,0,1)).substr($word,1)],"UTF8");
elseif(isset($this->words[substr($word,0,1).strtolower(substr($word,1))])) $ret=strtoupper($this->words[substr($word,0,1).strtolower(substr($word,1))]);
return $ret;
}
}
$lang=new lngx;
$declared=1;
}
?>
Para imprimir una palabra traducida debería usarse este formato:
Código PHP:
include("lang.php"); //incluir el archivo con la clase
//esto lee el arreglo del archivo solo una vez y se podrá usar varias veces
echo $lang->tran("Hello");
echo "<p>".$lang->tran("Login")."</p>";
Código PHP:
echo $lang->tran("Whisky"); //Imprime "Whisky"
Código PHP:
echo $lang->tran("Create a new IP"); //Imprime "Crear nueva IP"
echo $lang->tran("CREATE A NEW IP"); //Imprime "CREAR NUEVA IP"
echo $lang->tran("create a new ip"); //Imprime "crear nueva ip"
en spanish.php agregar
Código PHP:
"ReportsAndAlertsText"=>"Cada vez que el sistema identifique algún tipo de anormalidad, generará diversos reportes y alertas preventivas a todo el personal responsable. De esa forma se tendrá un control total de las flotas."
Código PHP:
"ReportsAndAlertsText"=>"Each time the system to identify any abnormality, generate various reports and early warning to all staff responsible. That way you will have a total control of the fleets."
Para imprimir una lista de los idiomas disponibles y poder cambiarlos, puede usarse algo como esto:
Código PHP:
<?php
if($slang=$_GET['slang']) $_SESSION['language']=$slang;
echo $lang->tran("Change language").": ";
$dir=opendir("lang/");
$first=1;
while (($file = readdir($dir)) !== false) {
if(substr(strtolower($file),-4)==".php"){
$slang=substr($file,0,-4);
if($first) $first=0; else echo "| ";
if($_SESSION['language']==$slang) echo ucfirst($lang->tran($slang));
else{ ?>
<a href="index.php?lang=<?php echo $slang; }?>" ><?php echo ucfirst($lang->tran($slang)); }?></a>
<?php }
} ?>