Foros del Web » Programando para Internet » PHP »

web multilenguaje

Estas en el tema de web multilenguaje en el foro de PHP en Foros del Web. Perdonen estoy haciendo un sitio multilenguaje en base al codigo que vi en el post de kech , el codigo de kech es este; Cita: ...
  #1 (permalink)  
Antiguo 06/06/2008, 11:11
Avatar de NopalStudio  
Fecha de Ingreso: agosto-2005
Mensajes: 110
Antigüedad: 18 años, 8 meses
Puntos: 0
web multilenguaje

Perdonen estoy haciendo un sitio multilenguaje en base al codigo que vi en el post de kech, el codigo de kech es este;


Cita:
Tema: Reconocer el idioma del visitante

Pregunta: Como puedo configurar mi pagina para diferentes idiomas

Respuesta: Con HTTP_ACCEPT_LANGUAGE


Código PHP:
if(empty($sitelang)){ //primero preguntamos si la variable que va a contener el lenguage del visitante esta vacia
      
$sitelang getenv("HTTP_ACCEPT_LANGUAGE"); // si esta vacia sacamos el lenguage del visitante y lo ponemos en la variable $sitelang
      
}
switch(
$sitelang){ //ahora cargamos el archivo que contiene el idioma segun la varible que sacamos antes
          
case "es" //es = español 
             
include("./lang/lang-esp.php"); //ahora cargamos el archivo que contiene las variables y sus palabras
             
break;
          case 
"en" //en = ingles 
             
include("./lang/lang-eng.php");
             break;
          default :
             include(
"./lang/lang-esp.php"); //cargamos un idioma por defecto si no se encontro algun idioma 
             
break;
       } 
ahora el archivo que contiene las palabras con sus traducciones

Código PHP:
<?php
define
('_LOGIN','Logeado');//lo definimos con una palabra que todos los archivos de lenguage tienen que tener para definir la funcion que cumple, despues la palabra que lo va a remplazar
define('_REGISTER','Registrarce');
define('_HELO','Hola');
define('_ACCEPT','Aceptar');
define('_ACCESS_ADD','Añadir');
?>
y para poner la palabra que definimos anteriormente

Código PHP:
<?
echo _REGISTER;//esto pondria en pantalla Registrarce
?>
notece que las palabras que definimos hay que tratarlas como variables ejemplo para poner una palabra que definimos en alguna frace seria haci

echo "hola esta un una prueba para mostrar registrado en tu idioma "._REGISTER." bla bla";


un listado de palabras listas para copiar pegar en sus archivos las pueden sacar de las aplicaciones prefabricadas ( quien decia que no servian para nada xD xD) como por ejemplo postnuke ya que ocupa la misma forma para el archivo de lenguage....

Y todo funciona de maravilla, solo tengo una pregunta, me gustaria poner links para que el usuario tambien tenga la oportunidad de seleccionar el idioma en que quiera visualizar la pagina, he tratado de hacerlo de la siguiente manera;

Código PHP:
<a href="index.php?sitelang=<?php echo $sitelang 'es'?>">esp</a> | <a href="index.php?sitelang=<?php echo $sitelang 'en'?>">eng</a>
Pero no es lo correcto, podrian tu asesorarme en la cuestion...
__________________
NopalStudio
Diseño y Desarrollo
Sitios en Alta Calidad
  #2 (permalink)  
Antiguo 06/06/2008, 11:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: web multilenguaje

PHP... sin sentido, por favor... revisa un manual

asi deberia ser...
Código PHP:
<a href="index.php?sitelang=es">esp</a> | <a href="index.php?sitelang=en">eng</a
digo... no era necesario el PHP!! abusado...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/06/2008, 12:25
Avatar de NopalStudio  
Fecha de Ingreso: agosto-2005
Mensajes: 110
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: web multilenguaje

Hola pateketrueke;

agradezco tu respuesta, pero ya habia probado de esa forma y no lo hace, de hecho fue de la primer manera en como trate de usarlo, pero no fue correcto... ya que me sigue tomando las mismas variales de español...
__________________
NopalStudio
Diseño y Desarrollo
Sitios en Alta Calidad
  #4 (permalink)  
Antiguo 06/06/2008, 12:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: web multilenguaje

la verdad no te creo... (suena feo)

y porque no te lo toma??

lo único que necesitas es simple HTML

no tiene sentido... ya que sitelang=es ... sitelang=en se encarga de enviar correctamente la distinción....

la verdad, exigo una satisfacción! (como dice H.Simpson)

pero bueno... volviendo al PHP

Código PHP:
<a href="index.php?sitelang=<?php echo 'es'?>">esp</a> | <a href="index.php?sitelang=<?php echo 'en'?>">eng</a>
no son necesarios los.... $sitelang =

y si lo piensas un poco... funciona exactamente igual... deveras!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 06/06/2008, 12:48
Avatar de NopalStudio  
Fecha de Ingreso: agosto-2005
Mensajes: 110
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: web multilenguaje

Hola que tal pateketrueke;

Gracias por tu tiempo, pero sigue sin funcionar, si no me crees no hay problema, digo a fin de cuentas es yo quien tiene el problema y si entro al foro es para poder solucionar con la gran ayuda de todos ustedes y tambien he tratado de hacer lo que me comentas y sigue sin funcionar, muchas gracias.
__________________
NopalStudio
Diseño y Desarrollo
Sitios en Alta Calidad
  #6 (permalink)  
Antiguo 06/06/2008, 12:58
Avatar de chitoso  
Fecha de Ingreso: mayo-2008
Ubicación: Montevideo, Uruguay
Mensajes: 205
Antigüedad: 16 años
Puntos: 5
Respuesta: web multilenguaje

Yo no soy tan experiente en php... por lo que no estoy seguro que es esto:
$sitelang = getenv("HTTP_ACCEPT_LANGUAGE");

Pero, me supongo que hace lo mismo que:

$sitelang = $_GET['sitelang'] ?

Yo he creado una web miltilang y hago algo similar a esto:

Código PHP:
$_SESSION['lang'] = $_COOKIE['lang'];
if(isset(
$_GET['lang'])){
    
$_SESSION['lang'] = $_GET['lang'];
    
setcookie("lang"$_SESSION['lang'], time() + (84600 30));
    }
if (empty(
$_SESSION['lang'])) 
    
$_SESSION['lang'] = 'es'
Espero que te sirva
  #7 (permalink)  
Antiguo 06/06/2008, 13:31
Avatar de NopalStudio  
Fecha de Ingreso: agosto-2005
Mensajes: 110
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: web multilenguaje

Hola chitoso;


En efecto tienes mucha razon, he hecho ese cambio, te agradezco muchisimo, muchas gracias por igua a todos...

Gracias. de nuevo Chitoso
__________________
NopalStudio
Diseño y Desarrollo
Sitios en Alta Calidad
  #8 (permalink)  
Antiguo 02/07/2008, 08:18
Avatar de kayaker  
Fecha de Ingreso: diciembre-2007
Ubicación: Estepona
Mensajes: 14
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: web multilenguaje

hola a todos,

retomo este tema porque a mi me pasa igual que a NopalStudio, tengo una pagina en varios idiomas, he reproducido el código que sugiere chitoso y todo va bien, excepto que al volver a la pagina de inicio (index.php) se vuelve a la opcion por defecto "es" y no me mantiene la última opción "en".

¿Alguna sugerencia para mantener el idioma seleccionado aunque vuelva a entrar en index.php?

Esto es lo que yo he hecho:

Código PHP:
session_start();

$_SESSION['lang'] = $_COOKIE['lang']; 
if(isset(
$_GET['lang'])){ 
    
$_SESSION['lang'] = $_GET['lang']; 
    
setcookie("lang"$_SESSION['lang'], time() + (84600 30)); 
    } 
if (empty(
$_SESSION['lang']))  {
    
$_SESSION['lang'] = 'es';  

}

@include_once(
$_SESSION['lang']."_idioma".EX); 
Luego he puesto las banderitas:

Código PHP:
<a href="index.php?lang=<?php echo 'es'?>"><img border="0" src="spa.gif"></a> <a href="index.php?lang=<?php echo 'en'?>"><img border="0" src="eng.gif"></a>
Gracias a todos.

Última edición por kayaker; 02/07/2008 a las 10:40
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 11:21.