Redireccion segun idioma

Como se hace para armar un sitio en php y que se pueda ver en varios idiomas.
Me gustaría que me orientaran para armar el código en php y si hace falta usar bases de datos.

1 respuesta

Respuesta
1
En PHP lo más común es que los elementos fijos, tipo menús, no estén en base de datos, sino en ficheros aparte. Creas una carpeta llamada idiomas, y por ejemplo spanish.php, english.php, etc. Dentro de esos ficheros simplemente escribe variables, y su valor. Eso sí, el nombre de la variable es el mismo en todos los idiomas, para poder aprovechar el código luego. Por ejemplo:
-Dentro de spanish.php:
$noticias = 'Noticias';
-Dentro de english.php:
$noticias = 'News';
Luego, en las diversas páginas que componen la web, escribirías algo así:
include ("../idiomas/" . $idioma_elegido);
Lo importante es que en todo momento (dependiendo de la forma que elijas), se sepa el valor de la variable $idioma_elegido, que será "english.php", "spanish.php", etc, de tal forma que al final quede un include que incluya el fichero del idioma correspondiente. Por supuesto, en los menús tendrás órdenes php que valen para cualquier idioma (de ahí la importancia de llamar a todas las variables igual en todos los idiomas).
La forma más sencilla sería esta:
echo '<a href="../noticias.php">$noticias</a>';
Con lo anterior conseguirías que a cada cual le aparezca la palabra de su idioma, pero todos vayan linkados a noticias.php
Esto es lo más sencillo, porque es un menú con simples links. Si en vez de eso quieres hacer botones con imágenes o barras de menús, ya hay que ponerse a programar un "poco" más, y las variables de los archivos de idiomas guardarían información de imágenes, no de palabras. No es fácil, pero poco a poco se aprende todo, la cuestión es no quererlo saber en un sólo día o te rendirás.
En cuanto las bases de datos, es relativamente la parte más fácil. Una vez tengas el diseño común para todos los idiomas, simplemente tienes que crear tus tablas en la base de datos. Ahí no puedo ayudarte mucho porque no sé qué tienes en mente, pero me inventaré un pequeño ejemplo. Supone que has escrito una noticia en varios idiomas, una noticia diaria que la llamas "el notición". Tendrás (por poner un ejemplo) una tabla por cada idioma, y todas las tablas tienen un campo llamado noticion, y otro campo llamado fecha. La consulta SQL válida para todos los idiomas sería algo así:
$resultado = mysql_query ("SELECT noticion
FROM $idioma_elegido
WHERE (fecha = '$fecha_actual')");
$noticion = mysql_fetch_row ($resultado);
El notición lo contendría la variable $noticion[0]. Por supuesto, $idioma_elegido y $fecha_actual son variables que se rellenarán según el idioma elegido y según la fecha que sea, respectivamente. Esto es un ejemplo sencillo, pero si no controlas demasiado, vete con calma. La idea al programar un código y en especial del lenguaje PHP, es que se tiene que trabajar muchísimo en un principio, para en el futuro no trabajar nada. Perdona si no sé explicarte mejor, pero es imposible condensar todos los conceptos aquí.
¿Podrías darme algún ejemplo sencillo de como extraer los datos de la base de datos según el idioma que elija el usuario?
Gracias por tu ayuda
Si quieres que la web tenga varios idiomas, lo más "difícil" va a ser tener los medios o la paciencia para traducir todo lo que hagas en varios idiomas. Si tienes eso, lo demás es más fácil.
En la posibilidad más fácil, bastaría con mantener un menú de algún tipo en todo momento, en el que estuviesen los idiomas ofrecidos constantemente. No habría magia, cada idioma sería un archivo php (o html o lo que quieras) diferente, que enlazará a otros archivos del mismo idioma, hasta que se elija otro idioma, entrando en otro grupo de enlaces. Por supuesto, si quieres hacerlo con bastante más nivel, puedes usar un solo archivo php, con el diseño igual para todos los idiomas, de tal forma que los contenidos escritos los extraiga de alguna base de datos. De esta forma, el mismo archivo php, por ejemplo noticias.php, podría mostrar noticias en alemán, inglés, español y lo que haga falta, según lo que extraiga de la base de datos.
Si lo que quieres es montar algún tipo de registro de usuarios, con perfiles, de tal forma que cuando entre, se recuerde cual es su idioma elegido y lo invoque automáticamente, o que recuerde otros cambios hechos, necesitas por supuesto bases de datos, en la cual guardarás el perfil. Una forma cutre de hacerlo sin bases de datos, sería usar cookies, que se irían actualizando con cada visita. Lo malo es que si por alguna razón el usuario borra esas cookies, habrá dejado de existir y tendrá que registrarse otra vez (inaceptable). Por tanto, una vez tengas al usuario en la base de datos, usar cookies sólo será en caso de que quieras que el usuario al visitar tu web, ya entre con el login hecho automáticamente, o sea, entre conectado con su username y su idioma y todo elegido automáticamente. A ello habría que añadir el uso de variables de sesión, para mantener al usuario conectado durante su visita, con sus privilegios y preferencias. Pero no estoy seguro de que quieras tanto, por tanto lo dejo aquí.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas