Foros del Web » Programando para Internet » PHP »

Web en 4 lenguajes

Estas en el tema de Web en 4 lenguajes en el foro de PHP en Foros del Web. 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 ...

  #31 (permalink)  
Antiguo 09/05/2003, 03:02
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
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:
<?
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";}
?>
Ahora ya sé que $idioma es válido
__________________
M a l d i t o F r i k i
  #32 (permalink)  
Antiguo 12/05/2003, 03:23
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
Bueno estuve un par de dias fuera de la ciudad y cuendo regreso veo como ha avanzado este post y lo que ha dado de siiiiiii

Wow

La solucion de generar platillas para la paginas tipo nuke o post nuke esta bien pero para cuando el contenido lo ponga otro usuario que no seas tu ya que el entorno estara en sui idioma y el contenido lo pondra el en su entorno pero el problema no viene en el entorno ya que eso serian cambiar tresbotones y dioez enlaces..
el problema es cuando tengas que escribir el contenido de la web en multiples lenguajes...

yo habalba de eso ya que por ejemplo en aplicaciones tipo delphi cuando quieres tu aplicacion en distintos idiomas lqo eu haces es coger un .res y catar a uno o otro segun el idioma..
pero entonces la opcion de plantillas la veo demasiado tabajoza para cuando el admin y sea el mismo tanto para el entorno como el contenido

Bueno sigo buscando oipciones por que hacer lo mismo 4 veces lo veo de estupidos...jejeje lo mismo es que lo sereeeeeee...jejeje

Un Saludo a todos y gracias
  #33 (permalink)  
Antiguo 12/05/2003, 04:50
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 22 años, 6 meses
Puntos: 0
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.

  #34 (permalink)  
Antiguo 12/05/2003, 08:47
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
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
  #35 (permalink)  
Antiguo 09/08/2003, 16:51
 
Fecha de Ingreso: abril-2003
Ubicación: Zaragoza
Mensajes: 10
Antigüedad: 21 años
Puntos: 0
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.
  #36 (permalink)  
Antiguo 09/08/2003, 17:02
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 21 años
Puntos: 2


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...
__________________
3w.valenciadjs.com
3w.laislatv.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:37.