Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

João Melo

Site Multi idioma

Recommended Posts

Olá amigos estou fazendo um site pessoal mas em 3 idiomas, está funcionando bem mas quando está em uma determinada categoria ex: site.com/?pag=2⊂=3 e quando clico na bandeirinha da linguagem escolhida volta para o index site.com/index.php e não quero que isso aconteça.

OBS: Tanto com o form quanto com as imagens acontece a mesma coisa.

 

Alguém tem uma idéia do que possa estar acontecendo?

 

Desde já agradeço.

 

Segue o código:

 

index.php

 


<?php
include("config.php"); //Conexão com o BD 

if(isset($_GET['lang']) && $_GET['lang'] != null){
	$novoidioma = $_GET['lang'];
	$path = "idiomas/".$novoidioma.".php";
	if(file_exists($path)){
		setcookie("idioma", $novoidioma, time()+(24*3600*30));
		$arq = $_SERVER['PHP_SELF'];
		$arq2 = explode("/", $arq);
		$arq3 = end($arq2);
		header("Location: $arq3");
	}else{
		echo "<script>alert('Este idioma não está disponível.');</script>";	
	}
}

if(isset($_COOKIE['idioma'])){
	$idioma = $_COOKIE['idioma'];
	$caminho = "idiomas/".$idioma.".php";
	if(file_exists($caminho)){
		include($caminho);
	}else{
		exit();	
	}
}else{
	setcookie("idioma","portugues", time()+(24*3600*30));
	include("idiomas/portugues.php");
}
?>

<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#lista").change(function(){
	window.location = $(this).val()
})
})
</script>

<body>
<form id="form1" name="form1" action="">
 <select name="lista" id="lista" class="button orange">
   <?php
	$idiomascds = mysql_query("SELECT nome,arquivo FROM idioma");
	while($linha = mysql_fetch_assoc($idiomascds)){
	$selected = ($_COOKIE['idioma'] == $linha['arquivo'] ? 'selected="selected"' : '');
	?>
       <option value="?lang=<?php echo $linha['arquivo']; ?>" <?php echo $selected?> ><?php echo $linha['nome']; ?></option>
       <?php
		}
	?>
 </select>
</form>
<p>
<?php
	$idiomascds = mysql_query("SELECT nome,arquivo FROM idioma");
	while($linha = mysql_fetch_assoc($idiomascds)){
	$selected = ($_COOKIE['idioma'] == $linha['arquivo'] ? 'selected="selected"' : '');
	?>

<?php
}
?>
<a href="?lang=portugues" rel="nofollow" id="lista"><img src="_img/br.png" width="40" height="40" border="0" /></a>
<a id="lista" href="?lang=ingles"><img src="_img/en.png" width="40" height="40" border="0" /></a>
</p>
<h1><? echo $lang['bemvindo'];?></h1>

 

 

portugues.php

 

<?php
$lang['bemvindo'] = "Bem vindo(a) ao site";
$lang['meubotao'] = "Meu Botão";
$lang['conteudo'] = "Conteúdo";
$lang['php']  	= "Tutorial sobre PHP";
$lang['css']   	= "Tutorial sobre CSS";?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, não use jquery para fazer isso. Cada ferramenta tem sua hora de ser usada.

Sinceramente, não li o código, porém o funcionamento é bem básico:

 

1 - Você grava numa variável de sessão a página que o usuário estava, ou deve visitar após a escolha da linguagem.

 

<?php
$_SESSION['paginaAtual'] = 'pagina.php';
...
?>
<a href="index.php?idioma=2">Espanhol</a>

2 - No inínio da página que faz o tratamento dos dados, que provavelmente é a sua index, antes de tudo você faz a verificação e já insere um redirecionamento, como assim:

 

<?php
session_start();
if ((int)$_GET['idioma']>0) {
	$idiomaSite = array(1 => 'Portugues',
			    2 => 'Espanhol',
			    3 => 'Inglês');
	if (array_key_exists($_GET['idioma'],$idiomaSite)) {
		$paginaAlvo = ($_SESSION['url']!='') ? $_SESSION['url'].'?idioma='.$_GET['idioma'] : 'index.php';
		header('Location: '.$paginaAlvo);
	}
}
...
?>

Isso é só uma base/ideia das inúmeras possíveis. Basicamente, o que quis dizer, é que para que a página onde o usuário está esteja acessível após o tratamento dos dados, você precisa:

 

1 - Gravar a sessão com a URL ativa e pegar na página posterior.

2 - Usar algum sistema de Query String ou URLs amigáveis, onde todas as páginas tenham que passar pelo código de uma principal, e nesta se faria a verificação e nem precisaria redirecionar o usuário.

 

Acho que deu pra entender. Os códigos acima serviram apenas para te dar uma noção, não fiz baseado em nada, e provavelmente deve ter algum errinho ou outro que você teria que adaptar ao seu sistema.

 

Espero ter ajudado, até mais.

 

Edit: Caso queira pegar as variáveis da Query String e tratá-las também para formar a sua URL, você pode utilizar duas formas distintas:

 

1 - As variáveis globais $_SERVER do PHP (http://php.net/manual/pt_BR/reserved.variables.server.php), como $_SERVER['QUERY_STRING'] ou $_SERVER['REQUEST_URI'].

2 - Um loop de tratamento em todas as variáveis $_GET informadas pelo navegador, como no exemplo:

 

<?php
foreach ($_GET as $x => $y) {
	echo $x.' = '.$y.'<br />';
}
?>

Utilizei echo ao invés de print_r para facilitar o entendimento.

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo com este exemplo está retornando para o index.

Mesmo assim ainda não consegui resolver, deve ser coisa fácil mas mesmo assim não sei o q há.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.