Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos, estou desenvolvendo um sistema de multiplos idiomas para meu site.
O que está acontecendo é o seguinte,tenho uma classe que altera o idioma através de cookies, essa classe dá include em um arquivo php, onde eu salvo os arrays com toda a 'tradução' do sistema.
Consigo instanciar a classe na view e ela dá include no arquivo normalmente, mas parece que ela faz esse include antes de carregar a view, sendo assim os arrays com as informações não são carregados.
A classe:
class LangSelect{
public function changeLang(){
//Não está abrindo os cookies na primeira execução
if(isset($_GET['lang']) && $_GET['lang'] != null){
$newLang = $_GET['lang'];
$path = "app/language/".$newLang.".php";
if(file_exists($path)){
setcookie("language", $newLang, time()+(24*3600*30));
$self = $_SERVER['PHP_SELF'];
$self = explode("/",$self);
$self = end($self);
header("Location: ".$self);
}
}
if(isset($_COOKIE['language'])){
$lang = $_COOKIE['language'];
$path = "app/language/".$lang.".php";
if(file_exists($path)){
include($path);
} else {
exit();
}
} else {
setcookie("language",DEFAULTLANG, time()+(24*3600*30));
include("app/language/portugues-br.php");
}
}
}
Instanciando a classe na view.tpl:
$changeLang = new LangSelect();
$callCL = $changeLang->changeLang();
O arquivo que é incluido:
$show['teste'] = "Linha de teste";
echo "incluido pt br";
O echo "incluido pt br" é carregado antes de todo html, mas quando vou chamar o $show['teste'] exibe o erro "undefined index".
Alguem sabe como eu posso ou carregar esses arrays antes do html, ou outra solução?
Grato a todo tipo de ajuda,
Dênis Fernandes
Carregando comentários...