Foros del Web » Programando para Internet » PHP »

Cómo hacer una página en dos idiomas?

Estas en el tema de Cómo hacer una página en dos idiomas? en el foro de PHP en Foros del Web. Hola, antes que todo quiero que sepan que ya leí las faqs pero no me sirvieron de mucho, por eso expongo aquí mi duda. Tengo ...
  #1 (permalink)  
Antiguo 09/08/2006, 10:28
 
Fecha de Ingreso: noviembre-2003
Mensajes: 134
Antigüedad: 21 años
Puntos: 0
Cómo hacer una página en dos idiomas?

Hola, antes que todo quiero que sepan que ya leí las faqs pero no me sirvieron de mucho, por eso expongo aquí mi duda.

Tengo una web de adopciones de perros y gatos, en la cual se promocionan los animales mediante una foto y una pequeña descripción. Constantemente hay que actualizarla, ya sea para quitar a los que encontraron hogar o ya sea para poner a los recién llegados a los refugios.

La cuestión es que también está en inglés, y programada en html, así que cada actualización significa actualizar dos veces, para facilitar las cosas he convertido algunas secciones en php, y lo manejo mediante includes, así sólo actualizo una vez y se carga en las dos páginas (la de inglés y la de español).

Lamentablemente, esto sólo es posible en las secciones en las que únicamente hay fotos y no texto. Mi problema es cómo poder facilitar esa actualización. No sé si pudiera hacer una especie de include metido en otro include para poder diferenciar los idiomas.

Se me ocurrió que pudiese hacerse con una base de datos, en la que un registro llevara la foto, otro registro el texto en español y otro registro con el texto en inglés. Así yo podría llamar los registros que me interesaran de acuerdo a la página. Como no sé de bases de datos, primero que todo me gustaría saber si eso es posible.

Y se me ocurre otra complicación: si resuelvo lo de la base de datos, finalmente tendría que estar actualizando nuevamente dos páginas, así que lo ideal sería combinar un include con la base de datos. Se podrá? o relamente estoy fantaseando?

atte

Rogelio
  #2 (permalink)  
Antiguo 09/08/2006, 10:54
 
Fecha de Ingreso: julio-2005
Ubicación: Guatemala
Mensajes: 165
Antigüedad: 19 años, 3 meses
Puntos: 0
Efectivamente

Efectivamente, la idea es esa, tener en un registro los siguientes datos:

1.- Foto
2.- Texto en espanol
3.- Texto en ingles

Si es posible, lo que sospecho es que no sabes usar la base de datos, eso podria complicarte, pero existen varios scripts que ya te facilitan el trabajo de crear la base de datos, ahora mismo no tengo uno a mano, pero si lo encuentro te lo mandare, igualmente cualquiera de los amigos del foro puede apoyarte en caso me llegase a tardar.
__________________
Guatemala - Guatemala
  #3 (permalink)  
Antiguo 09/08/2006, 11:11
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 19 años, 3 meses
Puntos: 0
Si lo quieres hacer tu, te dejo unos scripts de como hacerlo...

Código PHP:
function country_check()
{
     
$return substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
     return 
$return
}
// Luego haces esto...
$visit_lang contry_check();
switch(
$visit_lang)
{
     case 
"es":
          include(
"./langs/es.php");
          break;
     case 
"en":
          include(
"./langs/en.php");
          break;
     case default:
          include(
"./langs/es.php");
          break;
}
// Luego haces esto otro...
echo "
<html>
<head>
<title>{$lang['bienvenida']}</title>
</head>
<body>
{$lang['cuerpo']}
</body>
</html>"

Y los archivos de lenguaje tienen que ser algo así...

Código PHP:
// es.php...
$lang = array();
$lang['bienvenida'] = "Bienvenidos a mi Página...";
$lang['cuerpo'] = "Hola mundo!";
 
// en.php...
$lang['bienvenida'] = "Welcome to my Page...";
$lang['cuerpo'] = "Hi World!"
Espero esto te ayude...
Atte... DarkXNightmare ;D.
__________________
Cambiando mi Web... sean pacientes :P
  #4 (permalink)  
Antiguo 09/08/2006, 12:20
Avatar de GaboMaKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Viña del Mar - Chile
Mensajes: 323
Antigüedad: 22 años
Puntos: 2
DarkXNightmare, si tengo un sitio dinamico, tendria un formulario en el que el user de sitio, ingresara los textos correspondientes a ingles y español por ejemplo, esta info, tendria ke modificar el archivo es.php o en.php respectivamente??, o estos da los mismo si los genero en forma dinamica?
* dinamica me refiero nutriendose de una bd.
__________________
Exito!!
:censura:
Visita Uganet.cl
  #5 (permalink)  
Antiguo 09/08/2006, 12:23
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 18 años, 4 meses
Puntos: 0
Si los generas de forma dinámica en cada acceso al sitio haría consulta con lo cual consumirías recursos...

La opción q propone DarkXNightmare creo q es más acertada. Incluso podrías usar define en lugar de un array aunque eso depende de como kieras hacerlo.

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #6 (permalink)  
Antiguo 09/08/2006, 12:32
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 19 años, 3 meses
Puntos: 0
En la base de Datos de usuarios, agrega un campo donde pongas el default_lang y el usuario tenga la oportunidad de elegirlo.
Código PHP:
$result mysql_query("SELECT default_lang FROM users WHERE user_id = {$user_id}");
list(
$visit_lang) = mysql_fetch_array($result);
// Luego pones el Switch que propuse más arriba... 
Y luego creas el <SELECT> y las opciones son los lenguajes.
Código HTML:
<select name='default_lang'>
<option value='es'>Español</option>
<option value='en'>English</option>
</select> 
Y de esa manera tomas el lenguaje que quiere usar el usuario...
Espero te sirva...

Atte... DarkXNightmare ;D.
__________________
Cambiando mi Web... sean pacientes :P
  #7 (permalink)  
Antiguo 09/08/2006, 12:51
Avatar de DarkXNightmare  
Fecha de Ingreso: agosto-2005
Ubicación: Somewhere Over The Rainbo
Mensajes: 181
Antigüedad: 19 años, 3 meses
Puntos: 0
Aaaaa... perdón... no te entendí la pregunta... :P.
En ese caso... tendrías que obtener los $lang desde la base de datos y guardarlos en una base de datos. Modificar un archivo es algo muy problematico :S.

Por ejemplo...

Tengo mi table llamada: lang.
Tienes 3 tablas: base_lang, lang_key, lang_value.

Por ejemplo tengo estos datos...

base_lang | lang_key | lang_value
---------------------------------------------------
es | bienvenida | Hola a todos!
en | bienvenida |Hi to All!
es | cuerpo | Prueba de Lenguajes...
en | cuerpo | Language Testing...

Ok. Ahora viene lo interesante...
Código PHP:
$visit_lang country_check();
$result mysql_query("SELECT lang_key, lang_value FROM lang WHERE base_lang = '{$visit_lang}'");
while (
$row mysql_fetch_array($result))
{
     
$lang[$row['lang_key']] = $row['lang_value'];
}
// Y listo... tenemos el $lang preparadito :D! 
Código PHP:
// Ahora, si quieres que los usuarios ingresen $lang a la pagina...
// O hacer una pagina de Administración para agregar $lang...
$base_lang $_POST['base_lang'];
$lang_key $_POST['lang_key'];
$lang_value $_POST['lang_value'];
mysql_query("INSERT INTO lang(base_lang, lang_key, lang_value) VALUES('{$base_lang}', '{$lang_key}', '{$lang_value}')");
// Y listo... ya agregaste el registro a la Base de Datos... 
Y aquí te dejo un formulario para agregar los $lang...

Código HTML:
<form action='lang_admin.php' method='POST'>
Idioma : <select name='base_lang'>
<option value='es'>Español</option>
<option value='en'>English</option>
</select><br />
Clave Principal : <input type='text' name='lang_key'><br />
Valor : <input type='text' name='lang_value'><br />
<input type='submit' value='Agregar Lang'>
</form> 
Ojalá te ayude esto ;D...
Atte... DarkXNightmare ;D.
__________________
Cambiando mi Web... sean pacientes :P
  #8 (permalink)  
Antiguo 09/08/2006, 14:47
Avatar de GaboMaKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Viña del Mar - Chile
Mensajes: 323
Antigüedad: 22 años
Puntos: 2
Cita:
Ojalá te ayude esto ;D...
jajajaja gracias DarkXNightmare, casi lo hiciste entero el script.
Te pasaste...
__________________
Exito!!
:censura:
Visita Uganet.cl
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 (incluyéndote)




La zona horaria es GMT -6. Ahora son las 21:28.