Foros del Web » Programando para Internet » PHP »

Problema con multilenguaje

Estas en el tema de Problema con multilenguaje en el foro de PHP en Foros del Web. Hola!! Soy nuevo en esta gran comunidad. Espero que me podáis resolver mis dudas que creo que seguramente. Sé usar el html, css y estoy ...
  #1 (permalink)  
Antiguo 02/02/2011, 11:51
 
Fecha de Ingreso: febrero-2011
Ubicación: define ('Ubicación', 'Mi_casa');
Mensajes: 21
Antigüedad: 8 años, 8 meses
Puntos: 0
Pregunta Problema con multilenguaje

Hola!!
Soy nuevo en esta gran comunidad. Espero que me podáis resolver mis dudas que creo que seguramente.

Sé usar el html, css y estoy aprendiendo el dominio del php y Mysql (perdonad mi ignorancia en ese tema, tengo 14 años y me parece que me queda mucho que aprender xD).

Bueno a lo que iba. Tengo una web, creada a mano, a base de html, php y css (logico xD).
Le emplemente el sistema multilenguaje con la deteccion del idioma con cookies, y usando arrays. La deteccion me funciona, tengo mi opera web browser en español predet. y me sale en español, y el explorer en ingles y me sale en ingles. el mozilla firefox en frances y me sale en frances. La deteccion funciona perfectamente, pero quiero implementar un cuadro de selección o con banderas para que el que navegue en la web cambie de idioma si quiere.

Aqui están los códigos:

index.php:
Código PHP:
<?php 


if(empty($idioma)){ 
      
$idioma getenv("HTTP_ACCEPT_LANGUAGE");
      } 
switch(
$idioma){ 
          case 
"es" 
             include(
"lang/es.php");
             break; 
          case 
"en" 
             include(
"lang/en.php"); 
             break;               
          case 
"fr" 
             include(
"lang/fr.php"); 
             break; 
          default : 
             include(
"lang/es.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=utf-8" />
<link href="http://misitio.com/style-webcss" rel="stylesheet" type="text/css" />
<title><?php echo $idioma['title']; ?></title>
</head>

<body id="inicio">
<div id="content">
<form name="language" action="" method="post">
    <select onchange = "document.language.submit()" name="idioma">
        <option selected="selected"><?php echo $idioma ['select-language']; ?></option>
        <option value="en"><?php include("lang/en.php"); echo $idioma['en']; ?></option>
        <option value="es"><?php include("lang/es.php"); echo $idioma['es']; ?></option>
        <option value="fr"><?php include("lang/fr.php"); echo $idioma['fr']; ?></option>
     </select>
</form>        
<div id="cabecera">
<a href="http://misitio.com"> <img src="logo.gif" title="algo" /></a>
<p> <?php echo $idioma['eslogan']; ?> </p>
</div>
<div id="naveg">
<ul id="menu">
<li id="nav01"><a href="http://misitio.com/index.php"><?php echo $idioma['index']; ?></a></li>
<li id="nav02"><a href="http://misitio.com/contacto/contacto.php"><?php echo $idioma['contacto']; ?></a></li>
</ul>
</div>
<div id="areatexto">
<h2><?php echo $idioma['index']; ?> </h2>
<div id="spoiler">
<div class="pre-spoiler">
<span style="float:left; padding-top: 2px;"></span> <input type="button" value="Mostrar" style="width:80px;font-size:10px;margin:0px;padding:0px;" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Esconder'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.value = 'Mostrar';}">
</div>
<div>
<div class="spoiler" style="display: none;"><br />
<h1> <?php echo $idioma['construccion']; ?></h1> <br />
</div>
</div>
</div>


<p>!Hola! Esta web est&aacute; en construcci&oacute;n. Por favor, tengan paciencia, pronto estar&aacute; terminada.</p>


</div>
<div id="pie">
<address id="casaddress">
Calle ... &middot; Nerja &middot; Espa&ntilde;a <br/>
Telf: 6... &middot; 6...
</address>
<address id="kechunet">
Plantilla creada por <a href="otrositio.com"><b>kechu&reg;</b></a>
</address>
</div>
</div>
</body>
</html>
En lo form y lo de option es donde tengo el problema. Por favor ayúdenme xD
es.php:

Código PHP:
<?php

    
/* Spanish language configuration */

     
$idioma = array (

         
/* Titulo de pagina */
         
'title' => "Incicio",

         
/* Contenido */
        
'eslogan' => "algo.",
        
'index' => "Inicio",
          
'contacto' => "Contacto",
          
'construccion' => "¡En construcci&oacute;n!",


        
/* Seleccione idioma */
          
'select-language' => "Seleccione lenguaje",
          
'es' => "Espa&ntilde;ol",
          
'en' => "Ingl&eacute;s",
          
'fr' => "Franc&eacute;s"
     
);
?>
en.php:

Código PHP:
<?php

    
/* English language configuration */

     
$idioma = array (

         
/* Title of page */
         
'title' => "Index",

         
/* Contenido */
        
'eslogan' => "something.",
        
'index' => "Index",
          
'contacto' => "Contact",
          
'construccion' => "Under construction!",


        
/* Select language */
          
'select-language' => "Select language",
          
'es' => "Spanish",
          
'en' => "English",
          
'fr' => "French"
     
);
?>
fr.php:

Código PHP:
<?php

    
/* French language configuration */

     
$idioma = array (

         
/* Titulo de pagina */
         
'title' => "-Home",
     
         
/* Contenido */
        
'eslogan' => "chose",
        
'index' => "Index",
          
'contacto' => "Contact",
          
'construccion' => "¡En construcci&oacute;n",
                    

        
/* Seleccione idioma */
          
'select-language' => "S&eacute;lection de la langue",
          
'es' => "Espagnol",
          
'en' => "Anglais",
          
'fr' => "Francais"
     
);
?>

Bueno ahi esta todo solo lo que me falla es lo del index.php en lo de cambio de idioma manual. se que es seguramente algun fallo sencillo pero como he dicho antes soy nuevo en php.
Muchas gracias y saludos!!
  #2 (permalink)  
Antiguo 02/02/2011, 13:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 4 meses
Puntos: 2135
Tema movido desde Configuración PHP a PHP
  #3 (permalink)  
Antiguo 02/02/2011, 13:34
 
Fecha de Ingreso: febrero-2005
Mensajes: 187
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Problema con multilenguaje

Yo lo haria con variables de session, algo asi

Código PHP:
if(isset($_POST['lenguage']))
      
$_SESSION['idioma'] = $_POST['lenguage'];

if(! isset(
$_SESSION['idioma'])){ 
      
$_SESSION['idioma'] = getenv("HTTP_ACCEPT_LANGUAGE");
 } 
__________________
___________________________
Hosting y Dominios en colombia
Blog de Cubica
  #4 (permalink)  
Antiguo 02/02/2011, 13:36
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 8 años, 9 meses
Puntos: 50
Respuesta: Problema con multilenguaje

Lo que tienes que hacer es, enviar el form y recibirlo con PHP, luego procesas el lenguaje que ha enviado el usuario y lo guardas en una variable de sesión. Luego, al inicio del todos los phps incluyes el lenguaje que tienes en la sesión.

Otra cosa, que no tiene mucho que ver con programación: los lenguajes generalmente se ponen en el idioma que los entenderá que habla dicho idioma, por lo que tus opciones deberían ser siempre Espa&ntilde;ol, English y Francais.
  #5 (permalink)  
Antiguo 03/02/2011, 09:53
 
Fecha de Ingreso: febrero-2011
Ubicación: define ('Ubicación', 'Mi_casa');
Mensajes: 21
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Problema con multilenguaje

Cita:
Iniciado por jossmorenn Ver Mensaje
Yo lo haria con variables de session, algo asi

Código PHP:
if(isset($_POST['lenguage']))
      
$_SESSION['idioma'] = $_POST['lenguage'];

if(! isset(
$_SESSION['idioma'])){ 
      
$_SESSION['idioma'] = getenv("HTTP_ACCEPT_LANGUAGE");
 } 
Gracias por el consejo pero yo no quiero usar es tipo, ya que el que he escogido es el que mas facil me parece para mi nivel xD .

Cita:
Iniciado por walterdevel Ver Mensaje
Lo que tienes que hacer es, enviar el form y recibirlo con PHP, luego procesas el lenguaje que ha enviado el usuario y lo guardas en una variable de sesión. Luego, al inicio del todos los phps incluyes el lenguaje que tienes en la sesión.

Otra cosa, que no tiene mucho que ver con programación: los lenguajes generalmente se ponen en el idioma que los entenderá que habla dicho idioma, por lo que tus opciones deberían ser siempre Espa&ntilde;ol, English y Francais.
Bien entender lo que me has dicho entiendo pero no se como ponerlo xD es que como he dicho soy nuevo en php y no se mucho de esto y si no te importa me podrias poner lo que necesito cambiar y por cual codigo de forma mas sencilla? (si no te es una molestia).

Ah! y gracias por el consejo ^^.
  #6 (permalink)  
Antiguo 03/02/2011, 10:03
Avatar de bullarobert  
Fecha de Ingreso: enero-2011
Mensajes: 31
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Problema con multilenguaje

los forms se ocupan de la siguiente manera, ej:

Código PHP:
Ver original
  1. echo "<form name='nombre que tendra el form' method='post' action='donde quieras direccionar el form'>";
  2.  
  3. //existen distintos tipos de type, hay ve cual te sirva mas...
  4. echo "<td><input type ='Text' name='el nombre que tendra el input'></td>";
  5.  
  6. echo "</form>";

y para recuperar los valores:

// esta la puedes ocupar dentro del mismo php o llamarla desde otro php
Código PHP:
Ver original
  1. $variable cualquiera=($_POST['nombre que le hayas puesto al input']);
  #7 (permalink)  
Antiguo 03/02/2011, 10:07
Avatar de bullarobert  
Fecha de Ingreso: enero-2011
Mensajes: 31
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Problema con multilenguaje

aqui tienes otro ejemplo con un codigo que e ocupado:

//este archivo se llama formulario-ingreso.php
Código PHP:
Ver original
  1. echo "<form name='agregando' method='post' action='formulario-final.php'>";
  2.         echo "<table>";
  3.             echo "<tr>";
  4.                 echo "<td> Nick :</td>";
  5.                 echo "<td><input type ='Text' name='nick_nuevo'></td>";
  6.             echo "</tr>";
  7.             echo "<tr>";
  8.                 echo "<td> Email :</td>";
  9.                 echo "<td><input type ='Text' name='email_nuevo'></td>";
  10.             echo "</tr>";
  11.            
  12.             echo "<tr>";
  13.                 echo "<td> Pais :</td>";
  14.                 echo "<td>";
  15.            
  16.             echo "<select name='pais'>";
  17.                 echo "<option value=''> </option>";
  18.                 echo "<option value='USA'>USA</option>";
  19.                 echo "<option value='Canada'>Canada</option>";
  20.                 echo "<option value='Chile'>Chile</option>";
  21.                 echo "<option value='Argentina'>Argentina</option>";
  22.                 echo "<option value='Francia'>Francia</option>";
  23.                 echo "<option value='Italia'>Italia</option>";
  24.                 echo "<option value='Japon'>Japon</option>";
  25.                 echo "<option value='Egipto'>Egipto</option>";
  26.             echo "</select>";
  27.  
  28.             echo "<tr>";
  29.                 echo "<td> Contrase&ntilde;a :</td>";
  30.                 echo "<td><input type ='password' name='contrasena_nuevo'></td>";
  31.             echo "</tr>";
  32.             echo "<tr>";
  33.                 echo "<td><input type ='Submit' name='agrega' value='Aceptar'></td>";
  34.         echo "</form>";


y despues llamo a las variables desde otro php y las ocupo en el

//este se llama final.php
Código PHP:
Ver original
  1. $var_nick=($_POST['nick_nuevo']);
  2.         $var_email=($_POST['email_nuevo']);
  3.         $var_pais=($_POST['pais']);
  4.         $var_contrasena=($_POST['contrasena_nuevo']);
  #8 (permalink)  
Antiguo 03/02/2011, 10:12
 
Fecha de Ingreso: febrero-2005
Mensajes: 187
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Problema con multilenguaje

y que problema tiene usar una variable de session???
__________________
___________________________
Hosting y Dominios en colombia
Blog de Cubica
  #9 (permalink)  
Antiguo 03/02/2011, 10:16
 
Fecha de Ingreso: febrero-2011
Ubicación: define ('Ubicación', 'Mi_casa');
Mensajes: 21
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Problema con multilenguaje

Cita:
Iniciado por bullarobert Ver Mensaje
aqui tienes otro ejemplo con un codigo que e ocupado:

//este archivo se llama formulario-ingreso.php
Código PHP:
Ver original
  1. echo "<form name='agregando' method='post' action='formulario-final.php'>";
  2.         echo "<table>";
  3.             echo "<tr>";
  4.                 echo "<td> Nick :</td>";
  5.                 echo "<td><input type ='Text' name='nick_nuevo'></td>";
  6.             echo "</tr>";
  7.             echo "<tr>";
  8.                 echo "<td> Email :</td>";
  9.                 echo "<td><input type ='Text' name='email_nuevo'></td>";
  10.             echo "</tr>";
  11.            
  12.             echo "<tr>";
  13.                 echo "<td> Pais :</td>";
  14.                 echo "<td>";
  15.            
  16.             echo "<select name='pais'>";
  17.                 echo "<option value=''> </option>";
  18.                 echo "<option value='USA'>USA</option>";
  19.                 echo "<option value='Canada'>Canada</option>";
  20.                 echo "<option value='Chile'>Chile</option>";
  21.                 echo "<option value='Argentina'>Argentina</option>";
  22.                 echo "<option value='Francia'>Francia</option>";
  23.                 echo "<option value='Italia'>Italia</option>";
  24.                 echo "<option value='Japon'>Japon</option>";
  25.                 echo "<option value='Egipto'>Egipto</option>";
  26.             echo "</select>";
  27.  
  28.             echo "<tr>";
  29.                 echo "<td> Contrase&ntilde;a :</td>";
  30.                 echo "<td><input type ='password' name='contrasena_nuevo'></td>";
  31.             echo "</tr>";
  32.             echo "<tr>";
  33.                 echo "<td><input type ='Submit' name='agrega' value='Aceptar'></td>";
  34.         echo "</form>";


y despues llamo a las variables desde otro php y las ocupo en el

//este se llama final.php
Código PHP:
Ver original
  1. $var_nick=($_POST['nick_nuevo']);
  2.         $var_email=($_POST['email_nuevo']);
  3.         $var_pais=($_POST['pais']);
  4.         $var_contrasena=($_POST['contrasena_nuevo']);
Que tiene que ver un formulario con un multilenguaje?? yo se hacer formularios con envio de e-mails xD.
Cita:
Iniciado por jossmorenn Ver Mensaje
y que problema tiene usar una variable de session???
Que me es mas facil el de cookies xD y solo quiero hacer el cambio de idioma, porque el reconocimiento de idioma pred. si funciona xD
  #10 (permalink)  
Antiguo 03/02/2011, 13:09
 
Fecha de Ingreso: febrero-2011
Ubicación: define ('Ubicación', 'Mi_casa');
Mensajes: 21
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Problema con multilenguaje

Ok ya lo he arreglado muchas gracias ^^ .
He usado el session start y ya se como hacerlo y me va perfectamente.

Aqui el codigo por si alguien lo necesita como yo lo necesitaba xD
Código PHP:
<?php 
session_start 
();
if (
$_GET["idioma"]) {
    
$_SESSION["idiomas"] = $_GET["idioma"];
}
elseif (!
$_SESSION["idiomas"]) {
    
$_SESSION ["idiomas"] = "es";
}
// Include con idioma
include("lang_".$_SESSION["idiomas"].".php");    
?> 
<!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=utf-8" />
<link href="style.css" rel="stylesheet" type="text/css" />
<title><?php echo $idioma['title']; ?></title>
</head>

<body id="inicio">
<div id="wrapper">
<div id="cabecera">
<a href=""> <img src="logo.gif" title="" /></a>
<p> <?php echo $idioma['eslogan']; ?> </p>
</div>
<div id="naveg">
<ul id="menu">
<li id="nav01"><a href="index.php"><?php echo $idioma['index']; ?></a></li>
<li id="nav02"><a href="/contacto/contacto.php"><?php echo $idioma['contacto']; ?></a></li>
</ul>
</div>
<div id="areatexto">
<h2><?php echo $idioma['index']; ?> </h2>
<div id="spoiler">
<div class="pre-spoiler">
<span style="float:left; padding-top: 2px;"></span> <input type="button" value="Mostrar" style="width:80px;font-size:10px;margin:0px;padding:0px;" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerText = ''; this.value = 'Esconder'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.value = 'Mostrar';}">
</div>
<div>
<div class="spoiler" style="display: none;"><br />
<h1> <?php echo $idioma['construccion']; ?></h1> <br />
</div>
</div>
</div>


<p>!Hola! Esta web est&aacute; en construcci&oacute;n. Por favor, tengan paciencia, pronto estar&aacute; terminada.</p>
<ul><?php // Estos textos no los sustituímos porque son los nombres de los idiomas en el idioma al que apuntan y producen el cambio de idioma. ?> 
 <?php echo "<p><a href='index.php?idioma=en'?>".$idioma['en']."</a>";
        echo 
"<p><a href='index.php?idioma=es'?>".$idioma['es']."</a>";?>
</ul>
</div>

Etiquetas: multilenguaje
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 16:51.