Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Possuo um site em PHP, que assumi de outro desenvolvedor, em três idiomas. Tenho inclusive uma função changeLang(lang) que muda perfeitamente o idioma de português pra inglês ou espanhol. Contudo, o link da minha página sempre fica o mesmo, mesmo quando eu mudo o idioma:
http://www.minhapagina.com/phase01?lang=pt-br
Queria ter a opção de poder mudar o idioma pra inglês (eng) ou espanhol (esp) quando eu mudo no link também. Tentei algo assim no início da página phase01.php, mas não deu certo:
if(isset($_GET['lang'])){
if($_GET['lang'] == 'eng'){
echo "<script>window.addEventListener('DOMContentLoaded', function () { changeLang(1); }, false);</script>";
}
elseif($_GET['lang'] == 'esp'){
echo "<script>window.addEventListener('DOMContentLoaded', function () { changeLang(2); }, false);</script>";
}
else {
echo "<script>window.addEventListener('DOMContentLoaded', function () { changeLang(0); }, false);</script>";
}
}
O que eu poderia fazer?As páginas já estão traduzidas?
Sim, já possui toda a configuração de idiomas nos labels da página. O problema mesmo tá só na questão dessa parte do link.
O idioma da pagina é alterado usando Javascript ou PHP?
O idioma da pagina é alterado usando Javascript ou PHP?
É javascript. Segue o código da função:
function changeLang(idLang) {
$("#comboLang").css("display", "none");
$("#langAtiva").html($("#lang" + idLang).val());
var lang = '';
if(idLang==0){
lang = 'pt-br';
}else if(idLang==1){
lang = 'eng';
}else if(idLang==2){
lang = 'esp';
}
$("#lang").val(lang);
//alert(location.href);
$.ajax({
url : 'usuario/mudaLingua',
async : false,
dataType : 'json',
type : 'POST',
data : {
lang : lang
},
success : function(data) {
location.reload();
}
});
}
Já essa função mudalingua, que está no URL, é definida num arquivo de controller:
public function mudaLingua(){
session_start("usuario");
$_SESSION['usuario']['lang'] = $_REQUEST['lang'];
}Tente colocar isso no começo do seu código:
if (array_key_exists('lang', $_GET))
$_SESSION['usuario']['lang'] = $_GET['lang'];
O objetivo é que a linguagem seja forçada a ser alterada todas as vezes que o lang apareça na URLA princípio, funcionou.
Obrigado.
>
Tente colocar isso no começo do seu código:
if (array_key_exists('lang', $_GET))
$_SESSION['usuario']['lang'] = $_GET['lang'];
O objetivo é que a linguagem seja forçada a ser alterada todas as vezes que o lang apareça na URL
Oi, aqui é o gustalevin, autor do tópico (não consegui logar com minha outra conta, que era vinculada à do Twitter. Aí tive de criar uma nova.
Seguinte: a tua ideia funcionou bem. Mas como o que eu tinha originalmente (as funções changeLang e mudaLingua) era vinculado a um botão que fica no cabeçalho da página, que faz a troca do idioma, o botão deixa de funcionar e só muda a língua com a mudança no link.
Qual seria o jeito de funcionar as duas coisas junto?
As páginas já estão traduzidas?