Foros del Web » Programando para Internet » PHP »

web en dos idiomas

Estas en el tema de web en dos idiomas en el foro de PHP en Foros del Web. hola a todos. ya sé que esto está posteado en el foro, pero no se ajusta realmente a lo que yo busco. os comento. tengo ...
  #1 (permalink)  
Antiguo 17/02/2007, 01:56
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 13 años
Puntos: 1
web en dos idiomas

hola a todos. ya sé que esto está posteado en el foro, pero no se ajusta realmente a lo que yo busco. os comento.

tengo una web en dos idiomas, castellano e inglés. la web es una web modular, de tal modo, que por defecto, se carga siempre la web en español.
el archivo a cargar es home.php

en este archivo home.php quiero meter las variables de tal modo que se cambie el texto de las mismas según sea elegido el idioma castellano (que es el que cargará por defecto) o el idioma inglés.

el problema está a la hora de seleccionar el inglés. como os digo el home.php es el mismo para los dos idiomas: es un único archivo. pero claro, en ese home.php hay un enlace que lleva al idioma en inglés. pero como recojo todo esto en el home.php? es decir, como establezco el condicional de que si no se elige nada, se cargaré todo en castellano, pero si se pulsa el enlace "english" se cargará en inglés. como hago esto?

gracias por vuestra ayuda
  #2 (permalink)  
Antiguo 17/02/2007, 03:20
Avatar de ebe
ebe
 
Fecha de Ingreso: marzo-2004
Ubicación: Guatemala
Mensajes: 363
Antigüedad: 15 años, 8 meses
Puntos: 11
Re: web en dos idiomas

Hola, una de las formas sencillas en las que puedes manejar esta situacion es a traves de la utilizacion de una variable de session que concatenaras al contenido o variables, ya sea dinamico traido de una base de datos o bien almacenado en algun array o variable de session quemado a mano. La dinamica seria la siguiente:

(supondremos que es de una base de datos)

Deberias tener una tabla con la siguiente estructura:

id int(11) unsigned not null auto_increment primary key
nombre varchar(100) not null
nombre_ENG varchar(100) not null

en tu pagina home.php tendrias tus enlaces para el switch del idioma

<a href="home.php?idioma=1">espanol</a>&&nbsp;nbsp;<a href="home.php?idioma=2">Ingles</a>

En este caso al momento de dar click en el enlace de ingles le estarias pasando a tu pagina home.php una variable via GET llamada idioma con un valor igual a 1 o 2, En tu home.php, al inicio de tu archivo deberias hacer una verificacion de la existencia de esta variable de la siguiente manera:

session_start();
if( isset($_GET['idioma']) && (int)$_GET['idioma'] == 2 ){
$_SESSION['ENG'] = '_ENG';
}elseif( isset($_GET['idioma']) && (int)$_GET['idioma'] == 1) {
$_SESSION['ENG'] = '';
}else{
$_SESSION['ENG'] = '';
}

Con lo cual estarias creando una variable de session con el valor '_ENG' el cual te servira para concatenarselo a los nombres de los campos extraidos de tus resultados a la base de datos, algo asi:

// aqui ya has echo tu query y obtenido resultado de tu base de datos
// imprimimos el campo nombre

echo($resultado['nombre'.$_SESSION['ENG']]);

con lo cual si la variable de session ENG existe y su valor es _ENG, el contenido del campo que presentara sera el del campo de ingles de tu base de datos (nombre_ENG), y si no te presentara el del campo en espanol.


Lo mismo puede ser utilizado como te comentaba utilizando arrays de variables de session u otras variables si es que no tienes acceso a una base de datos o tu informacion del switch del idioma la estas guardando en otro medio.

un saludo.
__________________
http://dev.wsnetcorp.com

Última edición por ebe; 17/02/2007 a las 03:23 Razón: to put just one equal sign
  #3 (permalink)  
Antiguo 17/02/2007, 03:52
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 13 años
Puntos: 1
Re: web en dos idiomas

hola. gracias por contestar. a ver, yo había pensado algo así:

condicional:

//////para cargar de inicio el castellano por defecto////////
if( isset($_GET['leng']) == ' '
include(leng/es.php);
//////si selecciona el ingles////////
if( isset($_GET['leng']) == 'en'
include(leng/en.php);

y en el enlace que da al inglés pongo esto:
<A href="index.php?mod=0&leng=en">english</a>


pero evidentemente algo hay mal. sé que es un error de concepto, pero estoy empezando. por favor, alguna ayuda?
  #4 (permalink)  
Antiguo 17/02/2007, 04:46
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 13 años
Puntos: 1
Re: web en dos idiomas

solucionado. al final ha ido así:

Código PHP:
session_start();
if( isset(
$_GET['idioma']) && $_GET['idioma'] == 'en' ){
    include(
"leng/en.php");
}
elseif( isset(
$_GET['idioma']) && $_GET['idioma'] == 'es') {
    include(
"idioma/es.php");
}else{
    include(
"leng/es.php");

  #5 (permalink)  
Antiguo 17/02/2007, 07:18
Avatar de ebe
ebe
 
Fecha de Ingreso: marzo-2004
Ubicación: Guatemala
Mensajes: 363
Antigüedad: 15 años, 8 meses
Puntos: 11
Re: web en dos idiomas

bueno si te ha funcionado del modo que lo planteas perfecto.. pero me viene una duda, que es lo que guardas en en.php y es.php, variables de cotenido que reflejas en home.php? querys a tu base de datos?? que alimentan home.php?? o todo el contenido para cada uno de lo idiomas??, ya que el metodo que te mencione globaliza toda tu logica unicamente en un archivo como te das cuenta, algo de lo que hay que sacar provecho en lenguajes como PHP.

un saludo.
__________________
http://dev.wsnetcorp.com
  #6 (permalink)  
Antiguo 17/02/2007, 10:18
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 13 años
Puntos: 1
Re: web en dos idiomas

de nuevo por aquí. ahora tengo un nuevo lío. supongamos que, con el código que va correctamente, ahora selecciono el idioma ingles y pincho en un enlace. esa nueva página obviamente, me debe recoger mediante session que idioma traigo de la principal para detectarlo y configurar la página en el idioma que traigo. pero no soy capaz.

recordad que yo tenía en el home para seleccionar los idiomas esto:

Código PHP:

session_start
(); 
if( isset(
$_GET['idioma']) && $_GET['idioma'] == 'en' ){ 
    include(
"leng/en.php"); 

elseif( isset(
$_GET['idioma']) && $_GET['idioma'] == 'es') { 
    include(
"idioma/es.php"); 
}else{ 
    include(
"leng/es.php"); 
}

supongamos ahora un enlace que lleve a esta dirección:

<
a href="paginanueva.php">paginanueva</a>

en 'paginanueva.php'abriremos con session_start() pero luego me lío y no soy capaz de dar con la solución.

:
corazon
  #7 (permalink)  
Antiguo 17/02/2007, 11:51
Avatar de vb2005  
Fecha de Ingreso: noviembre-2005
Ubicación: Paderborn - Alemania
Mensajes: 550
Antigüedad: 14 años
Puntos: 23
Re: web en dos idiomas

creo que es más comodo trabajar con sesiones en vez de GET
  #8 (permalink)  
Antiguo 17/02/2007, 13:25
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 13 años
Puntos: 1
Re: web en dos idiomas

tú cómo lo harías?
  #9 (permalink)  
Antiguo 19/02/2007, 03:05
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 13 años
Puntos: 1
Re: web en dos idiomas

hola. a ver. retomando el tema. tengo lo siguiente:

una página, llamada home.php, donde para saber que idioma elige el visitante tengo esta configuración:

Código PHP:
<?php
session_start
(); 
if( isset(
$_GET['lang']) && $_GET['lang'] == 'en' ){ 
    include(
"lang/eng.php"); 

elseif( isset(
$_GET['lang']) && $_GET['lang'] == 'es') { 
    include(
"lang/es.php"); 
}else{ 
    include(
"lang/es.php"); 
}
?>
y luego tengo el contenido de la página, es decir, los enlaces por los que el usuario puede seleccionar el idioma en esa misma página y dependiendo de uno u otro, carga eng.php o es.php. por defecto, siempre carga es.php:
Código HTML:
<a href="index.php?lang=en" style="FONT-FAMILY: Arial, Helvetica, sans-serif; FONT-SIZE: 10px; text-decoration: none">English</a>
 | 
<a href="index.php?lang=es" style="FONT-FAMILY: Arial, Helvetica, sans-serif; FONT-SIZE: 10px; text-decoration: none">Español</a> 
dentro del contenido de la página tengo un enlace a otra página:
Código HTML:
<a href="paginanueva.php">paginanueva</a> 
y aquí viene el problema. como hago para que en esa página nueva, dependiendo del idioma que haya seleccionado en la home.php, se cargue eng.php o es.php? abrí sesiones en la home.php para ello pero es que no sé como continuar en paginanueva.php, es decir, como rescatar esas sesiones o como saber que lenguaje o idioma había seleccionado el visitante en la home.

ayudadme, por favor....
  #10 (permalink)  
Antiguo 19/02/2007, 09:41
Avatar de ebe
ebe
 
Fecha de Ingreso: marzo-2004
Ubicación: Guatemala
Mensajes: 363
Antigüedad: 15 años, 8 meses
Puntos: 11
Re: web en dos idiomas

Primeramente en home.php crea una variable de session (con el nombre que queras y con un valor 1 si es espanol o 2 si es ingles, o el que quieras), esta variable de session la tendras que verificar en cada una de tus paginas de tu web modular.

Como te explicaba al principio,, primaramente define en que medio almacenaras el contenido para los dos idiomas, ya sea en una base de datos o en arrays de sessiones o array simples, (o bien en archivos html o PHP separados, uno para ingles y otro para espanol como veo que lo estas haciendo). Ahora bien, si hasta el momento la forma en que trabaja tu web es, si selecciono espanol cargo archivo es.php y si selecciono ingles cargo archivo en.php, tendrias que comprobar en cada archivo de tu web si la variable de session que creaste en home existe y que valor tiene. (o la que crees en home al momento de ver si get existe y cual es su valor) si su valor es igual a 2 entoces incluir el contenido de tu archivo en.php. Creo que es un poco mas problematico, pero si esta web ya esta hecha y no hay modo que le metas mano al codigo ya establecido (ya sea por politicas de tu empresa o simplemente por desconocer la aplicacion o PHP) entonces esta seria tu solucion.

Creo que deberias considerar la primera opcion que te comente. asi solo te preocupas de crear tus contenidos para los dos idiomas teniendo unicamente un archivo dinamico para las dos secciones, y si $_SESSION['_ENG'] existe y la cual concatenaras a cada contenido que quieras que se presente en un idioma u otro entonces este unico archivo se encargara de presentar el contenido que el usuario activo desde home..

Si no.. habria que saber un poco mas sobre esta aplicacion modular de que hablas (mas aun si no fue creada por ti) para saber exactamente cual es la solucion que se adapte al trabajo ya hecho y no tengas que meterte a clavos siguiendo la solucion, que creo es sencilla y facil de manejar.

chequea este enlace http://www.php.net/manual/es/ref.session.php


un saludo.
__________________
http://dev.wsnetcorp.com

Última edición por ebe; 19/02/2007 a las 09:44 Razón: add session link reference
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 05:12.