Código PHP:
<?
if (!isset($idioma)){$idioma="ca";} #idioma por defecto
$check_idioma = mysql_query("SELECT codi FROM idiomas WHERE codi = '$idioma'");
if (mysql_num_rows($check_idioma) == 0) {$idioma="ca";}
?>

| ||||
Una solución simple, que es la que uso para validar $idioma contra una base de datos. Es decir, tengo una tabla con los idiomas disponibles y me quiero asegurar que el idioma seleccionado está disponible. Código PHP: ![]()
__________________ M a l d i t o F r i k i |
| |||
a ver a ver.... yo estoy haciendo la pagina en 4 idiomas, y ya la tengo practicamente en 3, y aunque no aplico los includes de CAIN (de momento, porque me parece buena opcion), no considero que este haciendo la pagina 4 veces, y te aseguro que el usuario no proporciona datos. sigo sin entender que problema ves...
__________________ "... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov. |
| ||||
Es una cuestión de costumbres y comodidad. A mi me parece más cómodo usar includes, otro prefería usar base de datos, otro usar el gettext() ese, que aún tengo que probar, otro replicar la web 4 veces... El caso es ir viendo cual es tu modo preferido y usarlo. No hay soluciones "buenas" o "malas". Sino soluciones que funcionan y soluciones que no. Si el resultado es el obtenido, ¿que más da como lo obtengas?
__________________ M a l d i t o F r i k i |
| |||
Hola a tod@s! Yo al principio tambien lo hacía con plantillas pero he probado guardando los datos en una tabla de una base de datos y me ha dado buenos resultados. Por si a alguno le sirve, lo que he hecho ha sido crear una tabla idiomas dentro de mi base de datos con los siguientes campos: nombre, es y fr (mi página es de 2 idiomas pero puede servir para 4 ó + añadiendo más campos). En el campo nombre, he puesto el nombre de la variable que utilizo en la web. En el campo es, su equivalente en español y en el campo fr, su equivalente en francés. Es decir que en mi tabla, he realizado por ejemplo el siguiente insert: insert into idiomas values('$saludo','hola','bonjour'); Al inicio de cada página he puesto la siguiente línea: <? include('idiomas.php'); ?> En el fichero idiomas.php he puesto el siguiente código: <? include "conexionMysql.php"; ////////////////////////////////////////////////// // idioma //////////////////////////////////////// $idioma= ($_GET['idioma'] != "") ? $_GET{'idioma'} : $_COOKIE["idioma"]; if($idioma == "") { $idioma="es_es";}; setcookie ("idioma", $idioma,time()+3600000); //coger idioma de bd switch ($idioma) { case "es_es": $palabra = 'select nombre,es from idioma'; break; case "fr_fr": $palabra = 'select nombre,fr from idioma'; break; } $result = mysql_query($palabra) or die(mysql_error()); while ($row = mysql_fetch_array($result)) { //se coge el valor de las variables de la tabla idiomas eval ("\$".$row[0]." = \"".$row[1]."\";"); } mysql_free_result($result); ?> En el archivo conexionMysql.php, realizo la conexión con la base de datos. Con la línea de código eval.... consigo que dependiendo del idioma, se haga una de las siguientes asignaciones : $saludo='hola'; o $saludo='bonjour'; (por ejemplo) Espero que os sea de alguna utilidad. Saludos. |
| ||||
![]() ![]() ![]() ![]() yo uso algo tipico $variable=" LO QUE QUIERO DECIR "; luego cuando termine de hacerlo... no se cuando pq aun no he hecho casi nada... solo tendre que hacer una copia de salvacion y cambiar todo a ingles... sera solo sobre-scribir... facil.. ah !!! y te digo en el config que fichero de idioma cargar...claro... de todas formas esta esto muy bien... digo lo de las CONSTANTES y los Arrays..., se pueden usar varias cosas, dependiendo de lo que se quiera mostrar y como se quiera cargar... esta bien... |