Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/11/2011, 13:17
Avatar de ColdFusion
ColdFusion
 
Fecha de Ingreso: octubre-2008
Ubicación: Tocoa, Colon Honduras C.A.
Mensajes: 419
Antigüedad: 15 años, 6 meses
Puntos: 9
Consejo sobre include

hola a tod@s estoy implementando el modulo multilenguaje a mi web y he llegado a un problema que me esta dejando sin fuerzas..

tengo esta clase.
Código PHP:
class mi_clase {

var 
$str_leng = array();

//Inicia la clase
function mi_clase() {
    
$this->cargar_lenguaje();
}

//Obtenemos el lenguaje del usuario
private function obtener_lenguaje() {
$str_len_temp $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$lenguaje explode(',',$str_len_temp);
$lenguaje explode('-',$lenguaje[0]);
$lenguaje strtoupper($lenguaje[0]);

return 
$lenguaje;
}

//Establecemos las cadenas del lenguaje de acuerdo al lenguaje del usuario
function cargar_lenguaje() {
$leng_usuario $this->obtener_lenguaje();
include 
"lenguajes/$leng_usuario/cadenas.php";    
$this->str_leng $str_leng// $str_leng es una matrix establecida en cadenas.php
}

}
//clase 
Esa clase incluye los archivos necesarios para el idioma del usuario que esta visitando la web.

funciona correcto cuando la incluyo en un archivo: ejmplo index.php
Código PHP:
require "clases/mi_clase.php";

$objeto_clase = new mi_clase();

echo 
$objeto_clase->str_leng['llave']; 
ahora, el problema viene cuando ejecuto la clase dentro de un archivo que es llamado mediante ajax, es decir tengo un archivo llamado post_ajax.php, este archivo contiene funciones que se ejecutan mediante ajax y parametros.

post_ajax.php llama a la clase mi_clase y obviamente al crearse la clase se ejecuta la funcion cargar_lenguaje() y muestra el siguiente error.

Warning: mi_clase::include(lenguajes/ES/cadenas.php) [mi_clase.include]: failed to open stream: No such file or directory.

El error anterior lo solucione agregando esto a la hora de incluir los archivos del idioma
Código PHP:
include "../lenguajes/$leng_usuario/cadenas.php"
es decir que al ejecutar post_ajax.php con ajax no muestra el error, pero aqui es donde comienza mi nuevo error, al agregar los dos puntos a la cadena del archivo a incluir, le dije a php que el archivo a incluir estaba una carpeta atras del archivo que ejecuto la clase por lo tanto me tira el mis error anterior al ejecutarse en cualquier otro script que no sea post_ajax.php

Warning: mi_clase::include(lenguajes/ES/cadenas.php) [mi_clase.include]: failed to open stream: No such file or directory.

Como puedo solucionar este problema?

Espero me hayan entendido y Gracias!