Jump to content


Photo

Script Tradutor


  • Faça o login para participar
26 replies to this topic

#1 sfonseca45

sfonseca45

    Normal

  • Usuários
  • 80 posts
  • Sexo:Masculino

Posted 27/06/2008, 15:30

Boa Tarde

Tenho um script em PHP que serve para voce colocar outras linguas (ingles/espanhol/frances...) porém tem alguma errada não consigo de maneira alguma faze-lo funcionar.

Vejam como funciona :

Arquivo - tradutor.php
este arquivo é incluido em todas as paginas do site.

<?
session_start();
$strFullLang = $HTTP_ACCEPT_LANGUAGE;
function detectaLiguagem(){
  global $strFullLang;
  $sigla = split($strFullLang, "-");
  if ($sigla[0] = "br"){
	return "portugues";
  }elseif ($sigla[0] = "en"){
	return "ingles";
  }else{
	return false;
  }
}
$padrao = "portugues";
if (isset($idioma)){
  $id = $idioma;
  $_SESSION["IDIOMA"] = $id;
}elseif (isset($_SESSION["IDIOMA"])){
  $id = $_SESSION["IDIOMA"];
}elseif (detectaLiguagem()){
  $id = detectaLiguagem();
  $_SESSION["IDIOMA"] = $id;
}else{
  $id = $padrao;
  $_SESSION["IDIOMA"] = $id;
}
function tradutor($cod){
  global $id;
  $nome = $id.".txt";
  if (!file_exists($nome)){
	$nome = $padrao.".txt";
  }
  $fp = fopen($nome, "r");
  for($i = 0; $i < $cod; $i++){
	$buffer = fgets($fp, 4096);
  }
  return $buffer;
  fclose($fp);
}
?>

arquivo index.php
como podem notar no local onde deve estar os textos existe uma referencia a um Tradutor() que esta num arquivo txt - dependendo da lingua escolhida ele deve buscar no txt correspondente

<?php include("tradutor.php"); ?>
<html>
<head>
<title>[{<?=Tradutor(12)?>}]</title>
</head>

<body bgcolor="#ffffff" text="#000000" link="#3661a1" vlink="#6f6c81" alink="#d5aa83">
<br><center><font color="#3661a1" size="+6">W W W . C O M . B R</font></center><br>
<h4><center>
( <b><?=Tradutor(1)?></b> ) ( <a href=index.php><?= Tradutor(2) ?></a> . <a href="index.php"><?= Tradutor(3) ?></a> . <a href="index.php"><?= Tradutor(4) ?></a> . <a href="index.php"><?= Tradutor(5) ?></a> ) ( <a href="mailto:foob@r.com"><?= Tradutor(6) ?></a> )
</center></h4>
<br><table width=570 border=0 cellspacing=0 cellpadding=0 align=center><tr> <td align=center bgcolor=#adccff>   <b><font color=white><?=Tradutor(8)?></font></b>  </td></tr><tr>  <td align=left>	<br>
<div align=left>
 <b><?=Tradutor(7)?></b>
</div>

<!-- Start of news -->
<small>
<br>
<br>21/09/07 - <?=Tradutor(13)?>
</small>
<!-- End of news -->

<br><br>

</td></tr></table>
<table width=570 border=0 cellspacing=0 cellpadding=0 align=center> <tr>  <td align=center bgcolor=#adccff>   <small>[<a href="mailto:sdg2k@mail.com">@</a>]</small>  </td> </tr></table><br>

<br><br><center><?=Tradutor(11)?>:<br>
<a href="index.php?idioma=ingles"><?=Tradutor(9)?></a> |
<a href="index.php?idioma=portugues"><?=Tradutor(10)?></a></center>
</body>
</html>

E por ultimo o arquivo portugues.txt

inicial
sobre
arquivos
capturas
links
email
notícias
Benvindo!
Inglês
Português
Selecione o idioma
Revista www.com.br
Era um agradável e ensolarado dia de agosto em um vilarejo na costa de New Bruswick, Canadá. Damian e Danny, ambos com dezesseis anos, resolveram dar uma caminhada em uma das trilhas da floresta próxima à aldeia. Nunca lhes passou pela cabeça que pudesse existir qualquer perigo em andar por aquelas trilhas, mas não demorou para que se achassem envolvidos nas mais aterradoras três horas de suas vidas.

O problema é que na página index.php ele não trás o que esta nos txt - apenas <?=tradutor(1)?>
- parece que o include não esta funcionado - já tentei de tudo

Será que poderiam me ajudar?

Utilizei um script parecido no ASP e funcionou beleza...

Obrigado

#2 DarkSign

DarkSign

    Doutor

  • Usuários
  • 868 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:Tecnologias na área WEB em geral e desenvolvimento.

Posted 27/06/2008, 15:45

<?=tradutor(1)?>


E não vai funcionar mesmo :P
Isso é técnica ASP, <?= não existe no PHP. Você terá que dar um echo

<?php
$trad = tradutor(1)
echo "$trad";
?.

Não se pode sair aplicando técnicas ASP no PHP pq não vai funcionar nunca. Cada linguagem é uma linguagem, bem diferente uma da outra.

/*DarkSign*/
Não sabe por onde começar? Que tal pelas Regras ?

#3 Falci

Falci

    12 Horas

  • Usuários
  • 187 posts
  • Sexo:Masculino
  • Localidade:Brasil

Posted 27/06/2008, 15:49

Correção!!!

php tem <?= SIM!
<?php /* falci at Falci.me */

$naoAcrediroQueEuFizUmaVariavelTaoGrandeSoParaGuardarUmTres = 3;
?>

#4 sfonseca45

sfonseca45

    Normal

  • Usuários
  • 80 posts
  • Sexo:Masculino

Posted 27/06/2008, 16:17

Agora fiquei na duvida ... existe ou não?

Pois peguei este script prontinho ...

vou tentar da maneira que DarkSign falou ....

#5 Bad

Bad

    Novato no fórum

  • Usuários
  • 7 posts
  • Sexo:Não informado

Posted 27/06/2008, 16:19

Correçao 2!!

No php eh possivel utilizar tags de abertura de ASP, como por exemplo <%, mas tem que ser habilitado no php.ini
de qualquer forma, a tag <?= está correta...

#6 DarkSign

DarkSign

    Doutor

  • Usuários
  • 868 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:Tecnologias na área WEB em geral e desenvolvimento.

Posted 27/06/2008, 16:27

Bem, se funciona o <?= , ele dá o echo de que forma? Se colocar a variável vai dar certo?

Ah, sim, onde está o código do Tradutor()? Não encontrei na sua listagem.

Verifique também se não está tentando chamar uma função que não existe, afinal PHP é case-sensitive :P

/*DarkSign*/
Não sabe por onde começar? Que tal pelas Regras ?

#7 sfonseca45

sfonseca45

    Normal

  • Usuários
  • 80 posts
  • Sexo:Masculino

Posted 27/06/2008, 16:48

Agora fiquei na duvida ... existe ou não?

Pois peguei este script prontinho ...

vou tentar da maneira que DarkSign falou ....



DarkSign

o codigo esta na pagina tradutor.php

ele verifica a linguagem (portugues/ingles) e busca no arquivo txt correspondente

faço um include do tradutor.php na pagina index ...

na minha santa ignorância acredito que o include não está funcionando ...

Agora o que o Bad falou pode ser o problema ... como posso verificar o php.ini ?

Obrigado pela ajuda de todos ...

Bad - estamos chegando lá ...

abri o PHP.ini e encontrei ...

; Allow ASP-style <% %> tags.
asp_tags = Off -> passei para on

; Allow the <? tag. Otherwise, only <?php and <script> tags are recognized.
; NOTE: Using short tags should be avoided when developing applications or
; libraries that are meant for redistribution, or deployment on PHP
; servers which are not under your control, because short tags may not
; be supported on the target server. For portable, redistributable code,
; be sure not to use short tags.
short_open_tag = Off -> passei para ON

Carregou a página com o idioma portugues ... só que está dando um erro no arquivo tradutor.php

que é este:

Notice: Undefined variable: HTTP_ACCEPT_LANGUAGE in C:\projetosAsp\alfamarPHP\tradutor\Tradutor.php on line 3

O que deve ser isso?

#8 DarkSign

DarkSign

    Doutor

  • Usuários
  • 868 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:Tecnologias na área WEB em geral e desenvolvimento.

Posted 27/06/2008, 16:53

Bem, agora que tu passou tudo pra short-style, tá funcionando beleza.

A variável que está referida no erro não é conhecida pelo PHP. Provavelmente, ele existia numa versão anterior, não é?
Tente verificar se não existe uma super global pra essa var, que eu acho que é do PHP4.

Outra coisa, se tu leu bem, o php.ini diz para evitar o uso de tags curtas, pois as mesmas podem não estar habilitadas/disponíveis no teu servidor final. Por isso recomenda o uso de tags completas para compatibilidade.

/*DarkSign*/
Não sabe por onde começar? Que tal pelas Regras ?

#9 sfonseca45

sfonseca45

    Normal

  • Usuários
  • 80 posts
  • Sexo:Masculino

Posted 27/06/2008, 17:13

Obrigado pela dica

consegui tirar o erro usando o seguinte:

$strFullLang = ($_SERVER['HTTP_ACCEPT_LANGUAGE']);

porem quando clico em ingles não muda o idioma

#10 DarkSign

DarkSign

    Doutor

  • Usuários
  • 868 posts
  • Sexo:Masculino
  • Localidade:Brasil
  • Interesses:Tecnologias na área WEB em geral e desenvolvimento.

Posted 27/06/2008, 17:49

Hum... :ponder:

Você está setando a variável e a session corretamente? Verificou se ele está realmente gravando o valor da session?
Tem certeza de que não está mandando setar automaticamente a linguagem em algum ponto do código?

E uma dúvida: o que exatamente HTTP_ACCEPT_LANGUAGE faz?

/*DarkSign*/
Não sabe por onde começar? Que tal pelas Regras ?

#11 sfonseca45

sfonseca45

    Normal

  • Usuários
  • 80 posts
  • Sexo:Masculino

Posted 27/06/2008, 18:20

o HTTP_ACCEPT_LANGUAGE verifica a linguagem do micro do usuário ...


A session esta gravando ... pois pedi para apresentar e deu portugues ... mas qdo clico em ingles ele não esta mudando

Obrigado pela atenção ...

#12 Falci

Falci

    12 Horas

  • Usuários
  • 187 posts
  • Sexo:Masculino
  • Localidade:Brasil

Posted 27/06/2008, 18:28

Seu script sempre busca o idioma do (browser do) usuário... mas se vc clica em "ingles" ele não pode mais pegar do (browser do) usuário, certo?
<?php /* falci at Falci.me */

$naoAcrediroQueEuFizUmaVariavelTaoGrandeSoParaGuardarUmTres = 3;
?>

#13 sfonseca45

sfonseca45

    Normal

  • Usuários
  • 80 posts
  • Sexo:Masculino

Posted 27/06/2008, 18:35

Vamos lá

o padrão é portugues ... então sempre que voce entrar na pagina será na lingua portuguesa ...

ao clicar no icone Ingles -: ele manda (index.php?idioma=ingles) e deveria mudar a session para ingles ... e buscar o conteudo no arquivo ingles.txt ...

mas pelo que estou notando a session não esta mudando ...

obrigado

#14 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 27/06/2008, 20:02

Posta seu index.php aí, o problema deve estar é nele então. =)
Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#15 sfonseca45

sfonseca45

    Normal

  • Usuários
  • 80 posts
  • Sexo:Masculino

Posted 28/06/2008, 12:11

Puxa marquei bobeira e postei novamente ...
mais ai vai os dois codigo

pagina tradutor.php

<?php
session_start();
$strFullLang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'] ,0,2);
function detectaLiguagem(){
  global $strFullLang;
  $sigla = $strFullLang;
  if ($sigla[0] = "pt"){
	return "portugues";
  }elseif ($sigla[0] = "en"){
	return "ingles";
  }else{
	return false;
  }
}
$idioma = "ingles"; // aqui notei que quando mudo a pagina indes muda tambem
if (isset($idioma)){
  $id = $idioma;
  $_SESSION['IDIOMA'] = $id;
}elseif (isset($_SESSION['IDIOMA'])){
  $id = $_SESSION['IDIOMA'];
}elseif (detectaLiguagem()){
  $id = detectaLiguagem();
  $_SESSION['IDIOMA'] = $id;
}else{
  $id = $idioma;
  $_SESSION['IDIOMA'] = $id;
}
function tradutor($cod){
  global $id;
  $nome = $id.".txt";
  if (!file_exists($nome)){
	$nome = $idioma.".txt";
  }
  $fp = fopen($nome, "r");
  for($i = 0; $i < $cod; $i++){
	$buffer = fgets($fp, 4096);
  }
  return $buffer;
  fclose($fp);
}
?>

a pagina index.php

<? include ("tradutor.php"); ?>
<html>
<head>
<title><?= Tradutor(12) ?></title>
</head>

<body bgcolor="#ffffff" text="#000000" link="#3661a1" vlink="#6f6c81" alink="#d5aa83">
<br><center><font color="#3661a1" size="+6"><?= $_SESSION["IDIOMA"] ?>W W W . C O M . B R</font></center><br><h4><center>
( <b><?= Tradutor(1) ?></b> ) ( <a href=index.php><?= Tradutor(2) ?></a> . <a href="index.php"><?= Tradutor(3) ?></a> . <a href="index.php"><?= Tradutor(4) ?></a> . <a href="index.php"><?= Tradutor(5) ?></a> ) ( <a href="mailto:foob@r.com"><?= Tradutor(6) ?></a> )
</center></h4>
<br><table width=570 border=0 cellspacing=0 cellpadding=0 align=center><tr> <td align=center bgcolor=#adccff>   <b><font color=white><?=Tradutor(8)?></font></b>  </td></tr><tr>  <td align=left>	<br>
<div align=left>
 <b><?=Tradutor(7)?></b>
</div>

<!-- Start of news -->
<small>
<br>
<br>21/09/07 - <?=Tradutor(13)?>
</small>
<!-- End of news -->

<br><br>

</td></tr></table>
<table width=570 border=0 cellspacing=0 cellpadding=0 align=center> <tr>  <td align=center bgcolor=#adccff>   <small>[<a href="mailto:sdg2k@mail.com">@</a>]</small>  </td> </tr></table><br>

<br><br><center><?=Tradutor(11)?>:<br>
<a href="index.php?idioma=ingles"><?=Tradutor(9)?></a> |
<a href="index.php?idioma=portugues"><?=Tradutor(10)?></a></center>
</body>
</html>

Obrigado pela ajuda ...

como eu faço para excluir o outro post?




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq