Foros del Web » Programando para Internet » PHP »

Ayuda web varios idiomas

Estas en el tema de Ayuda web varios idiomas en el foro de PHP en Foros del Web. estoy en ello, ahora te escribo como tiene que ser......

  #31 (permalink)  
Antiguo 10/09/2005, 06:16
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
estoy en ello, ahora te escribo como tiene que ser...
__________________
3w.valenciadjs.com
3w.laislatv.com
  #32 (permalink)  
Antiguo 10/09/2005, 06:31
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
Código PHP:
<?php
//iniciamos session
    
session_start();

//comprobamos si la variable por el GET esta cargada...
    
if(empty($_GET['lang'])){
        
//la variable no esta cargada... sale por omision idioma ES
        
$_SESSION['varIdioma'] = "es";
        
//la variable esta cargada con algun idioma seleccionado mediante lang=?
    
}else{

//pasamos la variabla GET a una SESSION
        
if(!empty($_GET['lang'])){$_SESSION['varIdioma'] = $_GET['lang'];}

//comprobamos que exista el fichero de idioma...
            
if(!file_exists("lang/".$_SESSION['varIdioma']."/lang.inc.php")){

//si no existe el fichero.-.. sale por omision el ES, tb puedes poner una ventana de error,
//o linkar hacia tu sistema de erroes index.php?error=5
                
header ("Location: index.php?lang=es");
              exit;
            }else{

//carga del fichero idiomas
                
switch ($_SESSION['varIdioma']) {
                    case 
$_SESSION['varIdioma']: require("lang/".$_SESSION['varIdioma']."/lang.inc.php"); break;
                }
//end switch

            
}//end if_file
            
    
}//end if
    
?>
<br>
<a href="index.php?lang=es">Español</a><br>
<a href="index.php?lang=en">English</a><br>

<?php
    
echo $_SESSION['varIdioma'];//idioma seleccionado
?>

<br>
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 10/09/2005 a las 06:41
  #33 (permalink)  
Antiguo 11/09/2005, 20:37
Avatar de K3NNY
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: ARGENTINA!
Mensajes: 1.493
Antigüedad: 13 años, 9 meses
Puntos: 20
Nuevo, en tu ejemplo, si abris el index.php solo (sin el ?lang=xx) no muestra los textos. Igual gracias, ya funciona de 10 el codigo que posteo sergiold.
__________________
delFuego.com.ar
mi tumblelog sobre diseño

La dedicación en mi respuesta es directamente proporcional a la dedicación en tu pregunta.
  #34 (permalink)  
Antiguo 17/10/2005, 11:48
Avatar de K3NNY
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: ARGENTINA!
Mensajes: 1.493
Antigüedad: 13 años, 9 meses
Puntos: 20
Es muy complicado que aparte de la session guarde en una cookie el idioma seleccionado de manera que la proxima vez que visite la web no tenga que elegir el idioma de nuevo?
__________________
delFuego.com.ar
mi tumblelog sobre diseño

La dedicación en mi respuesta es directamente proporcional a la dedicación en tu pregunta.
  #35 (permalink)  
Antiguo 22/10/2005, 06:51
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
si, a mi code le falta el meter la variable pasada por el get a la session.. ya que desde hay no lo hago... mi scrip lo que hace es cambiar el idioma...

2º yo en mis script cuando salgo y entro. siempre me recuerda el idioma... como?=

sencillo, en la cookie solo guardo el id de la session... osea.--
PHPSESSID=069dd3388e5dd2a16ca7708777e86764
la ip publica

asi hago la comprobacion... si es correcto adelante... si no lo es... set=0
__________________
3w.valenciadjs.com
3w.laislatv.com
  #36 (permalink)  
Antiguo 26/10/2005, 16:01
Avatar de K3NNY
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: ARGENTINA!
Mensajes: 1.493
Antigüedad: 13 años, 9 meses
Puntos: 20
Cita:
Iniciado por nuevo
sencillo, en la cookie solo guardo el id de la session... osea.--
PHPSESSID=069dd3388e5dd2a16ca7708777e86764
la ip publica

asi hago la comprobacion... si es correcto adelante... si no lo es... set=0
Y volviendo sobre la base de que soy un vago que no tiene ganas de leer sobre como guardar y leer cookies, que ruega estes de buen humor como para tomarte el trabajo de responderme gratuitamente...

...Como se haria eso exactamente? En codigo, me refiero.

Nota mental: Dejar de abusar de la generosidad y paciencia de nuevo y de sergiold y ponerme a leer algo sobre las "galletitas".
__________________
delFuego.com.ar
mi tumblelog sobre diseño

La dedicación en mi respuesta es directamente proporcional a la dedicación en tu pregunta.
  #37 (permalink)  
Antiguo 28/10/2005, 06:24
 
Fecha de Ingreso: septiembre-2005
Mensajes: 18
Antigüedad: 12 años, 2 meses
Puntos: 0
Pregunta

hola chicos, gran script el que crearon, yo también lo necesitaba y lo e estado probando, pero en el ejemplo que pusiste sergiold me sale este error, a que se debe?

Código PHP:
Warningsession_start() [function.session-start]: Cannot send session cookie headers already sent by (output started at d:trabajowww.atlantisireland.comidioma.php:9in d:trabajowww.atlantisireland.comidioma.php on line 10

Warning
session_start() [function.session-start]: Cannot send session cache limiter headers already sent (output started at d:trabajowww.atlantisireland.comidioma.php:9in d:trabajowww.atlantisireland.comidioma.php on line 10
English
Test Nº1 
imagino que es algo de la configuración del server, pero como estoy empezando aun no lo sé muy bien.
PD: (trabajo en local)
  #38 (permalink)  
Antiguo 28/10/2005, 08:37
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 13 años, 2 meses
Puntos: 4
Pues no se a qué se puede deber...

Podría ser que ya hayas enviado alguna salida al navegador, ten en cuenta que hasta que usas la función no puede haber ninguna linea en blanco. Ej.:

1
2 <?
3 header()
4 ?>

Esto daría error.

Kenny, lo que dices de las cookies no creo que sea muy difícil, mas bien diría que es lo contrario, sin embargo nunca he trabajado con cookies así que no puedo ayudarte con código .

Saludos,
__________________
sergiold
  #39 (permalink)  
Antiguo 28/10/2005, 11:03
 
Fecha de Ingreso: septiembre-2005
Mensajes: 18
Antigüedad: 12 años, 2 meses
Puntos: 0
gracias sergiold, exactamente era eso jeje
  #40 (permalink)  
Antiguo 06/11/2005, 13:35
Avatar de cauly  
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires
Mensajes: 726
Antigüedad: 15 años, 9 meses
Puntos: 0
MUCHAS GRACIAS... son grosos, sépanlo

Justo estaba buscando algo así y el ejemplo que hay en las faqs no me sirvió
  #41 (permalink)  
Antiguo 06/11/2005, 14:48
Avatar de cauly  
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires
Mensajes: 726
Antigüedad: 15 años, 9 meses
Puntos: 0
buscando en internet, hice un agregado para que primero detecte el idioma del navegador y en base a eso, ponga ese idioma en caso de existir...
(sacado de acá: http://alexsancho.name/archives/2005...guaje-con-php/ )

Primero agregué esta función:
Código PHP:
function detectar_idioma_navegador() {
    global 
$conf;
    
    
$languages preg_replace('/(;q=\d+.\d+)/i'''getenv('HTTP_ACCEPT_LANGUAGE'));
    
    
$bol_language_detected false;
    
    
// Comprobamos si el navegador usa alguno de los idiomas que hemos predefinido.
    
foreach ($conf['lang_enabled'] as $tmp_arr_language) {
    if (
preg_match('/' $tmp_arr_language '/i'$languages)) {
    
$tmp_str_language_detected $tmp_arr_language;
    
$bol_language_detected true;
    break;
    }
    }
    
// Si el navegador usa uno de los idiomas seleccionados, se devuelve el path del fichero de idioma
    // En caso contrario, se devuelve el path del idioma original
    
if ($bol_language_detected) {
    return 
$tmp_str_language_detected;
    } else {
    return 
$conf['lang_default'];
    }

y despues en el ejemplo que pusieron, si la sesión está vacía pone el idioma del navegador y sino queda con el idioma que elige el visitante.

Código PHP:
session_start();
if(!isset(
$_SESSION['varIdioma']) || !empty($_GET['lang'])){
$lang=$_GET['lang'];
if(empty(
$lang)){
$conf['lang_default'] = 'en'// idioma por defecto
    
$conf['lang_enabled'] = array('en''es''pt');
    
$conf['lang'] = detectar_idioma_navegador();
$lang=$conf['lang'];
}
$_SESSION['varIdioma']=$lang;
}
switch (
$_SESSION['varIdioma']) {
case 
$_SESSION['varIdioma']: require("idioma/".$_SESSION['varIdioma'].".php"); break;
}


if (
$_SESSION['varIdioma']=="es"){
echo 
'<a href="index.php?lang=en">English</a><br />';
}else{
echo 
'<a href="index.php?lang=es">Español</a><br />';

Así por defecto elige el idioma del navegador y si no existe pone inglés (en mi caso, porque le puse "en"), pero el visitante puede cambiar el idioma por el que quiera (de los que haya disponibles), recién lo estoy probando y por ahora va bien.
  #42 (permalink)  
Antiguo 06/11/2005, 17:53
 
Fecha de Ingreso: febrero-2001
Mensajes: 1.374
Antigüedad: 16 años, 10 meses
Puntos: 11
hasta ahora hablaron de lo que vendria a ser texto estatico, ahora, toda la informacion que guardas en la base de datos, es un enfoque similar pero a las consultas le agregas el idioma, desde ya que tenes que pensar en distintas tablas o bases de datos, dependiendo de la cantidad de informacion que manejes.
  #43 (permalink)  
Antiguo 07/11/2005, 17:20
 
Fecha de Ingreso: septiembre-2005
Mensajes: 18
Antigüedad: 12 años, 2 meses
Puntos: 0
otra cuestion que me viene a la cabeza, si en vez de texto estatico, quisiera poner links (por ejemplo para un menu, que pusiera todos los apartados en los 2 idiomas, pero que el enlace sería el mismo, como lo pondria?)
  #44 (permalink)  
Antiguo 07/11/2005, 18:01
Avatar de cauly  
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires
Mensajes: 726
Antigüedad: 15 años, 9 meses
Puntos: 0
Con el ejemplo que puse yo (en realidad con el que pusieron antes que usa sesiones), te movés por la página y mantiene el idioma que se elige, yo tengo links que son iguales para todos los idiomas, si se cliquea en pirulo.pxp me lleva a la página pirulo y esa página me muestra el idioma según el que toma la sesión.

El link nunca cambia, lo que cambia es el contenido, la idea de todo este post es que el archivo pirulo.php tenga el mismo contenido siempre y no hacer dos archivos (pirulo-es.php y pirulo-en.php), por ende el link siempre va a ser el mismo sin importar el idioma que se esté mostrando.
  #45 (permalink)  
Antiguo 08/11/2005, 03:26
 
Fecha de Ingreso: septiembre-2005
Mensajes: 18
Antigüedad: 12 años, 2 meses
Puntos: 0
si eso está claro, creo que me explique mal.

yo quiero tener un menu que sea estilo esto:

cada palabra sería un link

Inicio - Clientes - Contacto

y luego tb lo querria en inglés pero los enlaces son los mismos que los anteriores....

Home - Clients - Contac

entonces lo que sería es ¿como meter links en los archivos lang.inc.php?

ahora me e explicado mejor?

PD: habia pensado en poner para cada link una variable, pero si se pudieran meter los 3 de golpe en una variable me parece más correcto
  #46 (permalink)  
Antiguo 08/11/2005, 07:37
Avatar de cauly  
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires
Mensajes: 726
Antigüedad: 15 años, 9 meses
Puntos: 0
Los enlaces no van en el archivo de idioma si son los mismos para todos los idiomas, eso va en el archivo pirulo.php, yo tengo algo así:

Código PHP:
echo "<a href=\"pirulo.php\">"._NOMBREENLACE."</a> 
y lo que cambia es _NOMREENLACE que lo toma del archivo de idioma en cuestión, eso puede ser "Contacto" o "Contact"
  #47 (permalink)  
Antiguo 08/11/2005, 16:38
 
Fecha de Ingreso: septiembre-2005
Mensajes: 18
Antigüedad: 12 años, 2 meses
Puntos: 0
si esa es la idea que me imaginaba que habria que hacer, una variable para cada enlace, pero si por ejemplo tengo un texto, y dentro quiero meter 3 o 4 enlaces en ciertas palabras de ese texto, tengo que crear varias variables, no podria meter el el texto y el codigo html (para los enlaces) todo en una variable no?
  #48 (permalink)  
Antiguo 08/11/2005, 17:42
Avatar de cauly  
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires
Mensajes: 726
Antigüedad: 15 años, 9 meses
Puntos: 0
y bueno, ahí ya vas a tener que ingeniartelas, o ponés el código html dentro del archivo de idioma o lo ponés en la página y en lugar de algo así:

_NOMBREENLACE, vas a tener algo así:

_NOMBREENLACE <a ref...> _NOMBREENLACE2 etc.


Lo mejor es que vayas practicando con algo, porque todo así en el aire, es dificil de entender.
  #49 (permalink)  
Antiguo 08/11/2005, 18:44
Avatar de K3NNY
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: ARGENTINA!
Mensajes: 1.493
Antigüedad: 13 años, 9 meses
Puntos: 20
Mensaje

AngelusWeb, podes poner cualquier etiqueta HTML en el archivo de textos. Eso si, tene cuidado, porque el texto, al estar encerrado entre comillas dobles, no puedo contener comillas dobles en su interior. Tenes que reemplazar las comillas dobles de las etiquetas html por comillas simples. Por ejemplo...

Lang.inc.php
Código PHP:
<?php

$MENU
="<a href='principal.html'>Principal</a> | <a href='contactar.html'>Contactar</a> | etc... ";

?>
__________________
delFuego.com.ar
mi tumblelog sobre diseño

La dedicación en mi respuesta es directamente proporcional a la dedicación en tu pregunta.
  #50 (permalink)  
Antiguo 08/11/2005, 19:33
Avatar de cauly  
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires
Mensajes: 726
Antigüedad: 15 años, 9 meses
Puntos: 0
o tambíen podés poner una barra invertida antes de las comillas ( \" ) y poner comillas dobles
  #51 (permalink)  
Antiguo 09/11/2005, 03:34
 
Fecha de Ingreso: septiembre-2005
Mensajes: 18
Antigüedad: 12 años, 2 meses
Puntos: 0
a esto ultimo me refería!, muchas gracias
  #52 (permalink)  
Antiguo 09/11/2005, 10:21
Avatar de K3NNY
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: ARGENTINA!
Mensajes: 1.493
Antigüedad: 13 años, 9 meses
Puntos: 20
Cita:
Iniciado por cauly
o tambíen podés poner una barra invertida antes de las comillas ( \" ) y poner comillas dobles
Apa, esa no la tenia, es bueno saberlo. Gracias.
__________________
delFuego.com.ar
mi tumblelog sobre diseño

La dedicación en mi respuesta es directamente proporcional a la dedicación en tu pregunta.
  #53 (permalink)  
Antiguo 11/11/2005, 05:37
Avatar de alamarcheta  
Fecha de Ingreso: mayo-2005
Ubicación: Isla Mêlée
Mensajes: 502
Antigüedad: 12 años, 7 meses
Puntos: 1
Haber si me podéis echar un cable. Lo que quiero hacer es que PHP detecte el idioma e incluya sus respectivos textos. Pero si el usuario cambia de idioma a través de los botones, quiero que se cambie y que me lo pille aunque cambie de página. Quiero decir, que si el usuario elige el idioma a través de los botones, este tiene prioridad que el idioma que el que detecte del navegador. Este es el código que estoy utilizando:
Código PHP:
<?php
session_start
();
if(!isset(
$_SESSION['idioma']) || !empty($_GET['lang'])){
$lang=$_GET['lang'];
switch (
$lang){
case 
"es"
    require(
"includes/idioma.es.php");
    break;
case 
"en":
    require(
"includes/idioma.en.php");
    break;    
    }
} else {
$_SESSION['idioma']=$HTTP_SERVER_VARS["HTTP_ACCEPT_LANGUAGE"];
switch (
$_SESSION['idioma']) {
case 
"es"
    require(
"includes/idioma.es.php");
    break;
case 
"en":
    require(
"includes/idioma.en.php");
    break;    
    }

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<a href="idioma3.php?lang=es">Español</a><br />
<a href="idioma3.php?lang=en">English</a><br /> 
</body>
</html>
Pero me da el siguiente error:
Notice: Undefined index: lang in C:\www\idioma3.php on line 4

Al cargar la página, pero una vez que le paso la variable lang a través de los botones ya no me lo da. Mis preguntas serian:¿Si voy bien encaminado? y ¿Como soluciono el error?

Saludos y gracias

Última edición por alamarcheta; 11/11/2005 a las 05:54
  #54 (permalink)  
Antiguo 11/11/2005, 11:07
Avatar de cauly  
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires
Mensajes: 726
Antigüedad: 15 años, 9 meses
Puntos: 0
¿¿¿el archivo idioma3.php que tiene en la línea 4???
  #55 (permalink)  
Antiguo 11/11/2005, 11:13
Avatar de alamarcheta  
Fecha de Ingreso: mayo-2005
Ubicación: Isla Mêlée
Mensajes: 502
Antigüedad: 12 años, 7 meses
Puntos: 1
$lang=$_GET['lang'];

El código que he puesto es el que contiene el fichero idioma3.php. Los enlaces llaman al mismo fichero.
  #56 (permalink)  
Antiguo 14/11/2005, 02:27
Avatar de alamarcheta  
Fecha de Ingreso: mayo-2005
Ubicación: Isla Mêlée
Mensajes: 502
Antigüedad: 12 años, 7 meses
Puntos: 1
¿Porque cuando le mando el valor a $lang va bien y cuando no lo tiene me da error? No lo entiendo
  #57 (permalink)  
Antiguo 17/01/2006, 13:18
 
Fecha de Ingreso: junio-2004
Mensajes: 20
Antigüedad: 13 años, 5 meses
Puntos: 1
Y si quiero hacer una web multiidioma (3) en que los datos sean obtenidos de una base de datos, el método sería el mismo?

Me explico, algunos datos (no todos) quiero que sean editables, por lo que quiero hacer una tabla en mysql para así poder modificarlos cuando sea necesario con más facilidad. Pero claro, estos datos también variarian segun el idioma,

como se haría entonces esto?
  #58 (permalink)  
Antiguo 17/01/2006, 13:28
Avatar de thunder-ion  
Fecha de Ingreso: diciembre-2004
Mensajes: 106
Antigüedad: 13 años
Puntos: 0
Holaaa, que tal??

He leído por encima este post, no se si alguien ya habrá posteado algo parecido, pero yo te lo pongo por si acaso.

Hace algún tiempo desarrollé una clase para crear ficheros de idiomas. Igual puede servirte. Pasáte por aquí:

http://www.forosdelweb.com/f68/clase-codigo-texto-356194/

Saludos
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 20:12.