Oye, Cluster, Oye Josemi, me gustaria publicar esto en "las Faqs", esta muy regular ?
Cómo crear consolas/paneles en varios idiomas:
De muchas for+, asi la he desarrollado yo:
file_al_publico.php
Código PHP:
########## INICIA SELECCION DEL IDIOMA
$files = '';
$handle=opendir($_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF']).'/idiomas');
while ($file = readdir($handle))
{
if(is_file($_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF']).'/idiomas/'.$file))
{
$sele = '';
$file = explode('.',ucfirst($file));
if(isset($_POST['idioma'])){if($_POST['idioma'] == $file[0])
{$sele = ' SELECTED';}}
$files .= '<OPTION VALUE="'.$file[0].'"'.$sele.'>'.$file[0].'</OPTION>';
}}
closedir($handle);
$idioma = '<SELECT NAME="idioma" CLASS=SEL>'.$files.'</SELECT>';
########## FIN DE SELECCION DEL IDIOMA
En la seccion del formulario del panel de opciones del usuario colocas:
Código PHP:
echo $idioma;
Ese dato lo guardas en una BD, y luego lo lees y lo registras en una SESSION, o bien, directamente lo almacenas en una SESSSION.
Los files son pasados a Mayusculas solo por estetica, luego al guardarlos en la SESSION se colocan en minusculas asi:
Código PHP:
$_SESSION['lenguaje'] = strtolower($row["campo[idioma]"]);
Y si acaso tuvimos el infortunio de dar con un/a webmaster bien inquiet@, que halla logrado pasar a la BD un vaor de file inexistente, (Si el file no existe), tonces tenemos un file_de_lenguaje_por_defecto.php.
Y luego colocamos al inicio de file_al_publico.php
Código PHP:
if(false == @include($_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF']).'/idiomas/'.$_SESSION['idioma'].'.php'))
{include($_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF']).'/idiomas/file_de_lenguaje_por_defecto.php');}
Los files de lenguaje contienen cada uno las vars del idioma contienen variables + o menos asi:
castellano.php
Código PHP:
<?php
$saludo = 'Hola';
$salvar_info = 'Guardar';
?>
Mire a PHP-MyAdmin y ellos no utilizan Arrays, ellos lo hacen asi:
Código PHP:
$strUseHostTable = 'Use la tabla Anfitrión (Host)';
$strUseTables = 'Usar tablas';
$strUseTextField = 'Use el campo de texto';
$strUseThisValue = 'Use este valor';
$strUser = 'Usuario';
$strUserAlreadyExists = '¡El usuario %s ya existe!';
$strUserEmpty = '¡El nombre de usuario está vacío!';
$strUserName = 'Nombre de usuario';
$strUserNotFound = 'El usuario que seleccionó no fue hallado en la tabla de privilegios.';
$strUserOverview = 'Vista global del usuario';
$strUsers = 'Usuarios';
$strUsersDeleted = 'Los usuarios seleccionados fueron borrados exitosamente.';
$strUsersHavingAccessToDb = 'Usuarios con acceso a "%s"';
Etc, etc, etc, son casi 700 variables en cada file de idioma.
Me gustaria mejorar la parte:
Código PHP:
if(false == @include($_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF']).'/idiomas/'.$_SESSION['idioma'].'.php'))
{include($_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF']).'/idiomas/file_de_lenguaje_por_defecto.php');}
Para no utilizar @, pero Josemi me intento explicar, y yo no entender... :-s
Salu2!.
Sera que existe
Código PHP:
if(no_existe_file('tal.php')){} ?