Alertas para outras linguas - Javascript - Portugal-a-Programar
Alertas para outras linguas
By webmine, March 8, 2011 in Javascript
Boas pessoal, tenho aqui um formulario e não sei como poderei dar a volta, neste formulario dáme um alerta em caso de não preencher um campo diz-me para o preencher, mas no meu site tenho mais que uma lingua, o que gostaria é dependendo da versão da linguagem que estiver dar-me o respectivo alerta traduzido para a linguagem que estiver a ver na minha página, aqui deixo o codigo do forumulário:
$loja=$_POST["loja"];
<div class="txt_int_loja">
<h1><?php echo txt1 ?></h1>
<p class="texto3"><?php echo txt11 ?></p>
<form action="envia.php" method="post" name="form_contactos" id="contactos" />
{echo "Preencha os campos em falta.";}
<p class="texto3" style="width:230px;"><?php echo txti01 ?><br />
<input name="nome" type="text"  id="nome" style="width:220px;margin-top:5px;" tabindex="1" size="220" />
<p  class="texto3" style="width:230px;"><?php echo txti02 ?>
<input name="loja" type="text"  id="loja" style="width:210px; float:left;margin-top:5px;" tabindex="2" size="210" />
<?php if($dados && $loja=="");?>
<p class="texto3" style="width:230px;margin-top:15px;"><?php echo txti05 ?><br />
<input name="telefone" type="text"  id="telefone" style="width:210px;margin-top:5px; " tabindex="7" />
<p class="texto3" style="width:230px;margin-top:15px;"><?php echo txti06 ?><input name="email" type="text"  id="email" style="width:220px; margin-top:5px; float:left;" tabindex="8" />
<p class="texto3" style="width:450px;"><?php echo txti10 ?><br />
<textarea name="comentarios" rows="5"  id="comentarios" style="width:450px;font-family:Arial, Helvetica, sans-serif;font-size:12px;margin-top:5px;" cols="1" tabindex="9"></textarea>
<p class="texto3" style="width:100px; margin-top:14px;"> <img src="captcha/code.php" name="img_codigo" width="100" height="17" border="0" id="img_codigo" style="border:1px solid #abadb3; float:left;" ></p>
<a href="javascript:void(0);" onclick="actualiza_captcha();"><img src="images/refresh.png" alt="actualizar" title="actualizar" width="16" height="16" border="0" alt="código"style="float:left;margin-left:13px;margin-top:18px;" ></a>
<p style="width:90px; margin-top:16px; padding-left:11px;"><input name="codigo" type="text" class="texto2" id="codigo" style="width:80px; float:left;" tabindex="10" maxlength="5" />
<p style="width:70px;float:left; margin-top:14px;padding-left:11px;"> <img src="images/limpar.jpg" alt="LIMPAR" border="0" style="cursor:pointer; width:70px; height:19px ;float:left;" title="LIMPAR" onClick="javascript:form_contactos.reset();">
<p class="texto3" style="width:90px; margin-top:16px; padding-left:69px;"><input name="enviar" type="image" onClick="return Form_Validator(form_contactos);" src="images/enviar.jpg" alt="ENVIAR" title="ENVIAR" style="height:19px; width:70px; border:none;" /></p>
Podes verificar o idioma do browser do visitante com javascript e definir a respectiva mensagem a apresentar.
if(navigator.userLanguage == "pt"){
<?php $msg = "mensagem em pt"; ?>
<?php $msg = "mensagem noutra língua"; ?>
Podes injectar a mensagem no alert via PHP que é onde deverá ter as função de tradução.
Isso é um fail acima do possível.
Como é que esperas que o javascript (que corre no browser) execute um if para seleccionar o valor de uma variável que está no servidor se, depois de executar no servidor, não pode ser alterado :wallbash:?
Quanto muito algo que pode ser executado só no servidor:
http://www.thefutureoftheweb.com/blog/use-accept-language-header ou então:
if(explode (',', $_SERVER['HTTP_ACCEPT_LANGUAGE'])[0] == 'pt'){
$msg = "mensagem em pt";
$msg = "mensagem noutra língua";
brunoais acho que o fail aqui é teu. O objecto navigator tem a propriedade userLanguage, penso é que é só em IE por isso não é aconselhável usar.
Se tivesse feito um pouquinho o TPC, limitavas-te a dar sugestões úteis, e não criticavas as sugestões dos outros.
O código que eu postei está correcto. Os browsers identificam qual é o idioma do utilizador e podemos aproveitar isso para fazer a estrutura de decisão. Quanto ao facto de só ser possível no IE, está mais ou menos correcto. De facto, a propriedade navigator.userLanguage só pode ser utilizada para IE, mas podemos usar a propriedade navigator.language para os outros browsers.
if(navigator.userLanguage){
Agora é só adaptar para o que se pretende...
O fail é dele por estar a usar o if do javascript para alterar coisas no PHP.
A definição do valor da variável $msg (q está no servidor) (segundo o código dele nesse post) depende do resultado do if que é feito no browser (no cliente)
ADD: o fail não está nessa parte. (Até achei essa parte correcta (sem pensar q só dava para o IE).) O erro está na parte que assinalei como errada.
Estás a indicar eu estar errado em dizer que está mal em algo que não reclamo como estando mal. (vê/lê e interpreta o q escrevi)
Os browsers identificam qual é o idioma do utilizador e podemos aproveitar isso para fazer a estrutura de decisão.
A linguagem que o browser tem não tem de ser fiel à do utilizador. Eu uso os browsers em inglês, por exemplo. Mesmo a selecção de idioma com base no IP do user é limitada.
ADD: o fail não está nessa parte. (Até achei essa parte correcta (sem pensar q só dava para o IE).) O erro está na parte que assinalei como errada.Estás a indicar eu estar errado em dizer que está mal em algo que não reclamo como estando mal. (vê/lê e interpreta o q escrevi)
Vamos lá ver se nos entendemos. Disseste que o "fail" (seja lá isso o que for...) era meu porque estava a alterar php com javascript. Eu não estou a alterar nada. Eu uso o javascript para fazer a inicialização das variáveis. É óbvio que isto deverá ser feito no evento "onload". Estando inicializadas, quando as variáveis forem invocadas, irão apresentar o valor desejado.
Yoda, quanto ao que disseste, tens razão, mas penso que isso já são questões que ultrapassam quem está a construir um website. De qualquer forma, o ideal seria "dividir" o site em duas línguas distintas e deixar que seja o utilizador a seleccionar o idioma.
Continua a ser fail (enfim, não concordo com o fail - isso é para quando se falha numa coisa óbvia que todos devíamos saber, neste caso terá sido mais ignorância, e quanto a isso, nada a fazer).
O PHP é interpretado do lado do servidor; nesse ponto, o JS não manda nada. Por isso, independentemente da linguagem do browser (que, tal como o yoda já indicou, é possível que seja a pior maneira possível de se fazer isto), a variável $msg conterá sempre "mensagem noutra língua". Quando chegar a altura do JS ser interpretado (no browser), não vai acontecer nada de especial - até porque naquele sítio não tens mais nada. Se queres mesmo saber, o que o browser verá naquele sítio será: