Foros del Web » Programando para Internet » PHP »

sistema de noticia multi-idiomas

Estas en el tema de sistema de noticia multi-idiomas en el foro de PHP en Foros del Web. Buenas estoy intentando hacer un sitema de noticias multi-idiomas. tengo 4 campos en la db que son: id, titulo, contenido, fecha. he visto un en ...
  #1 (permalink)  
Antiguo 22/04/2011, 13:30
 
Fecha de Ingreso: julio-2009
Mensajes: 100
Antigüedad: 15 años, 4 meses
Puntos: 4
sistema de noticia multi-idiomas

Buenas estoy intentando hacer un sitema de noticias multi-idiomas.
tengo 4 campos en la db que son: id, titulo, contenido, fecha.

he visto un en un plugin de wordpress que guarda los idiomas separados por <!--:-->

si por ejemplo tengo dos idiomas...el español y el ingles, en vez de tener 2 campos en la db(titulo_es y titulo_en), solo uno......el campo de titulo tendria:
<!--:es-->titulo 1<!--:--><!--:en-->title 1<!--:-->

mi pregunta es la siguiente...si tengo 2 input de texto uno para el ingles y otro para el español
Código:
<input type="text" name="tituloes" size="100" maxlength="100" />
<input type="text" name="tituloen" size="100" maxlength="100" />
el codigo normal en el php para incluir el texto en la db seria este:
Código:
 $query="INSERT INTO notices (fecha, titulo, contenido) VALUES ('$fecha','$titulo','$contenido')";

y luego para mostralo:
Código:
echo $row["titulo"]
echo $row["fecha"]
echo $row["contenido"]
que puedo incluir en el codigo para incluir esto <!--:es--> en el principio de cada input y esto al final <!--:-->
y que me lo guarde todo junto en la db y luego cuando lo muestre, me muestre solo el idioma deseado


Un saludo y gracias.

espero haberme explicado un saludo.
  #2 (permalink)  
Antiguo 22/04/2011, 14:47
 
Fecha de Ingreso: abril-2011
Mensajes: 11
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: sistema de noticia multi-idiomas

Tienes dos opciones más faciles ques eso que dices (si es que existe).
1. La más fácil de hacer sería crear un campo nuevo por cada idioma que quieres poner en la base de datos MySQL.
2. Que al introducir el "contenido" en la base de datos MySQL uses el elemento html span:
Código HTML:
Ver original
  1. <span lang="es">Aquí el texto en Español</span>
  2. <span lang="fr">Aquí el texto en Francés</span>
  3. <span lang="en">Aquí el texto en Inglés</span>

La primera opción es más fácil de hacer, porque los usuarios que no saben html ya tendrías sus tres inputs a la hora de crear el formulario HTML. Sin embargo, en el segundo también tienes que hacer varios inputs, pero tendrías que buscar la forma de juntarlos todos y añadirle el span a cada uno.

Espero que lo hayas entendido,
David.
  #3 (permalink)  
Antiguo 22/04/2011, 17:02
 
Fecha de Ingreso: julio-2009
Mensajes: 100
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: sistema de noticia multi-idiomas

la primera opcion que quiero evitar.
la segunda opcion es la que me interesa hacer...
lo que dices es mas o menos lo que quiero pero lo que no me dices es exactamente lo que no se...como pongo el codigo para juntar los input y luego que solo me muestre uno idioma...


bueno creo que lo que hace el plugin( que existe y se llama qtraslate) es lo siguiente:
incluye esto <!--:es--> al principio de un idioma...

es decir incluye un comentario html para indicar el idioma...lo que quiero sabes es como hago para identificar eso con el php y me muestre solo el idioma correspondiente.

<!--:es-->texto en español <!--:-->
<!--:en-->texto en ingles<!--:-->
  #4 (permalink)  
Antiguo 22/04/2011, 17:37
 
Fecha de Ingreso: julio-2009
Mensajes: 100
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: sistema de noticia multi-idiomas

buenas ya se como recoger los input. en uno solo seria algo asi:
Código:
$tituloes = $_POST["tituloes"]; 
$tituloen = $_POST["tituloen"]; 
$contenidoes = $_POST["contenidoes"]; 
$contenidoen = $_POST["contenidoen"]; 
$fecha = date("Y-m-d");

$titulo = "<!--:es-->".$tituloes."<!--:--><!--:en-->".$tituloen."<!--:-->";

$query="INSERT INTO notices (fecha, titulo, contenido) VALUES ('$fecha','$titulo','$contenido')";
ahora necesito saber como mostrarlo...

lo normal seria mostrarlo con: echo $row["titulo"]
pero de esta forma muestro los dos idiomas.
como puedo mostrar uno solo.

lo bueno de esto es que como esta dentro de un comentario html no te muestra la opcion sino los dos texto en ingles y en español...pero como hago que muestre uno solo.

Un saludo y gracias.
  #5 (permalink)  
Antiguo 23/04/2011, 04:50
 
Fecha de Ingreso: julio-2009
Mensajes: 100
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: sistema de noticia multi-idiomas

Supongo que es creando una funcion que me recoga las siguientes variables
Código:
var lang_empieza = <!--:([a-z]{2})-->;
var lang_termina = <!--:-->;
para indicar el empiezo y finalizacion de un idioma lo que no se es como seguir....
Por favor alguien tiene que saberloooo!!

bueno sigo pensando .....Un saludo.
  #6 (permalink)  
Antiguo 23/04/2011, 07:13
 
Fecha de Ingreso: abril-2011
Mensajes: 12
Antigüedad: 13 años, 7 meses
Puntos: 4
Respuesta: sistema de noticia multi-idiomas

yo evitaría usar lo de los comentarios <!-- -->.
en su lugar haría lo siguiente:
-Si quieres usar una sola tabla para guardar las entradas con varios idiomas (que creo que es tu caso) puedes hacer lo siguiente:

Tabla: fecha | titulo | contenido

insertar (por ejemplo el titulo en español, ingles y frances):
Código:
$titulo = $_POST["tituloes"].'#'.$_POST["tituloen"].'#'.$_POST["titulofr"]; 
//(aqui harías lo mismo para el contenido...)

$query="INSERT INTO notices (fecha, titulo, contenido) VALUES ('$fecha','$titulo','$contenido')";
Con esto has insertado en el campo titulo de la tabla: hola#hello#salut

Luego para recuperar la información:

Código:
$query="SELECT * FROM notices";
$a_result = array();
while ($row = mysql_fetch_assoc($query)){
	array_push($a_result,$row);
}
/*...Asi tienes toda la info extraída en un array.

y todo lo necesario para que guardes los datos recuperados en las variables $titulos $contenidos $fecha*/
Ahora para extraer cada parte del idioma:

Código:
$titulos = explode('#',$titulos); //esto para los títulos
$titulo_es = $titulos[0];
$titulo_en = $titulos[1];
$titulo_fr = $titulos[2];
Así ya has recuperado toda la información y ya puedes hacer con ella lo que quieras.

Espero que te sea de utilidad (y si, seguramente hay algo que esté mal escrito o no funcione, asi que te recomiendo que consultes en internet el uso de las funciones puestas aqui)

Saludos!
  #7 (permalink)  
Antiguo 24/04/2011, 05:33
 
Fecha de Ingreso: julio-2009
Mensajes: 100
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: sistema de noticia multi-idiomas

Gracias cristomc lo hare como dices
me has ayudado mucho.


una pregunta con este codigo muestro las noticias ..como puedo limitar a un numero limitado de noticias en una pagina y si sobrepasa ese limite aparezca el numero de paginas abajo

Código:
while($row=mysql_fetch_array($result))
{
echo '<h2>'.$row[titulo].'</h2><br>
<p>'.$row[articulo].'</p><br>
<p>'.$row[fecha].'</p>'

;}
mysql_free_result($result)
  #8 (permalink)  
Antiguo 24/04/2011, 07:47
 
Fecha de Ingreso: julio-2009
Mensajes: 100
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: sistema de noticia multi-idiomas

cristomc no me funciona el array ..donde cololo los datos de conexion a la base de datos en ese array?

lo he conseguido hacer de otra forma pero no con el array y me interesa aprender mas ...

Gracias

Etiquetas: noticia, sistema
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




La zona horaria es GMT -6. Ahora son las 12:11.