Foros del Web » Programando para Internet » PHP »

require+ define para idiomas.

Estas en el tema de require+ define para idiomas. en el foro de PHP en Foros del Web. Hola amig@s. Estoy comenzando una web que tiene que estar en varios idiomas... y quiero hacer las cosas bien, es decir, tener los textos para ...
  #1 (permalink)  
Antiguo 13/04/2005, 10:50
Avatar de forecast  
Fecha de Ingreso: octubre-2004
Mensajes: 259
Antigüedad: 19 años, 6 meses
Puntos: 4
require+ define para idiomas.

Hola amig@s.

Estoy comenzando una web que tiene que estar en varios idiomas... y quiero hacer las cosas bien, es decir, tener los textos para cada idioma en ficheros separados y esas cosas. Cada fichero de idiomas tiene una serie de defines con sus textos: define('OPCION_1', "Escribe opción 1")...

Cada vez que cargo la página principal hago un require del archivo del idioma que toca: require("idioma/".$idioma.".php").

Una vez hecho esto intento escribir el texto que defini, en este ejemplo OPCION_1 (<? echo OPCION_1 ?> y lo que obtengo es nada, un hueco en blanco

¿alguién me podría indicar que es lo que estoy haciendo mal?

Gracias de antemano y saludos.
  #2 (permalink)  
Antiguo 13/04/2005, 11:50
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
escribe el código completo para poder ayudarte
  #3 (permalink)  
Antiguo 14/04/2005, 04:57
Avatar de forecast  
Fecha de Ingreso: octubre-2004
Mensajes: 259
Antigüedad: 19 años, 6 meses
Puntos: 4
Defino 3 archivos, en sus correspondientes carpetas para los tres idiomas de esta manera:
Código PHP:
<?
define
("OPCION_1""Aquesta es l'Opció 1");
define("OPCION_2""Aquesta l'Opció 2");
define("OPCION_3""Aquesta l'Opció 3");
?>
Tengo un archivo principal donde llamo a los diferentes archivos;

Código PHP:
<?
if(!isset($idioma))
    {
        
$idioma=1;
        
$idioma=$_GET['idioma'];
    }
    switch (
$idioma)
    {
        case 
1:
        require(
'catala/catala.php');
        break;
        case 
2:
        require(
'castellano/castellano.php');
        break;
        case 
3:
        require(
'ingles/ingles.php');
        break;
    }    
echo 
"Esta es la opción 1<a href=\"#\">".OPCION_1."</a>";
?>
El resultado de lo anterior no me escribe el texto de la opción 1 que defini anteriomente, me crea un espacio en blanco, clicable (pues es un link) pero sin texto en su interior.

Y bueno... pues a ver si alguien me indica que hago mal.

Saludos a tod@s.
  #4 (permalink)  
Antiguo 14/04/2005, 05:23
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
con un echo constant("OPCION_1"); aparte?
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 15/04/2005, 09:06
Avatar de forecast  
Fecha de Ingreso: octubre-2004
Mensajes: 259
Antigüedad: 19 años, 6 meses
Puntos: 4
No funciona!!!!

Continua saliendo un error...

Warning: constant() [function.constant]: Couldn't find constant OPCION_1

No entiendo el porque en principio incluyo el fichero con exito... y tengo una constante definida...
  #6 (permalink)  
Antiguo 15/04/2005, 09:29
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 19 años
Puntos: 0
Es que estás inicializando mal la variable $idioma. Fíjate en estas líneas:

Cita:
Iniciado por forecast
Código PHP:
<?
if(!isset($idioma))
    {
        
$idioma=1;
        
$idioma=$_GET['idioma'];
    }
Estás diciendo que $idioma sea 1 en caso de que no haya ninguno seteado, pero luego a $idioma lo pasas pro arriba con el valor de $_GET['idioma'] que es nulo.

El switch no tiene un caso por default, así que no entra en ninguna opción, y no se incluye ningún archivo.

Ahora, una pregunta, ¿este archivo es así o hay más código? Porque en vez de tomar idioma de la variable global $idioma (asumiendo que tenés register_globals encendido) tendrías que tomarlo de $_GET.

Estoy asumiendo que idioma es un parámetro que se pasa por el query string.


Saludos!
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #7 (permalink)  
Antiguo 15/04/2005, 10:31
Avatar de forecast  
Fecha de Ingreso: octubre-2004
Mensajes: 259
Antigüedad: 19 años, 6 meses
Puntos: 4
Ahora si


Efectivamente este era el error...

Código PHP:

    
if(!isset($_SESSION['idioma']))
    {
        
$_SESSION['idioma']=1;
        
    }
    else
    {
        
$_SESSION['idioma']=$_GET['idioma'];
    } 
Ahora ya me coge bien los textos...

Gracias chicos.
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 18:57.