Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera, boa tarde.
Estou com uma pequena dificuldade.
Estou tentando fazer um site em dois idiomas. Vasculhando pela net, achei algo bem simples para fazer isso e estou precisando de uma ajuste.
É o seguinte: o código abaixo é o arquivo que será carregado, caso o usuário escolha português. Segue:
<?php
$idioma = array();
$idioma['MEU_PERFIL'] = 'Meu perfil';
$idioma['SAIR_SISTEMA'] = 'Sair do sistema';
?>
Na página do usuário, onde tem o nome meu perfil, está assim: <?php echo $idioma['MEU_PERFIL']; ?>. Até aí show, ele está carregando perfeitamente. Porém, queria gerenciar isso através do banco, sem precisar alterar o arquivo: portugues.php. Criei uma tabela chamada idiomas que possue: DESCRICAO, PORTUGUES E INGLES.
Onde está descrição, vai ser o título da palavra que quero traduzir. Igual ao acima: $idioma['MEU_PERFIL']
E português ou inglês, será de acordo com o idioma selecionado. igual ao acima: 'Meu perfil';
Como faço para implementar isso através de consulta ao banco. Fiz assim:
$qr_idioma = "SELECT IDI_DESCRICAO, IDI_POR FROM tb_idiomas";
$my_idioma = mysql_query($qr_idioma) or die(mysql_error());
$idioma = mysql_fetch_array($my_idioma);
$idioma['IDI_DESCRICAO'] = $idioma['IDI_POR']);
Mas, dá erro. Quero colocar no site igual a este: <?php echo $idioma['MEU_PERFIL']; ?>. Ele vai lá no banco e busca a tradução para esta descrição.
Como faço esta consulta?
Valeu
Notice: Undefined index: MEU_PERFIL
Você precisa percorrer o array retornado por fetch_array() e montar um array igual ao que você usava antes, onde as chaves são os nomes e os valores são as traduções
Algo assim:
$idioma = array();
while ($f = fetch_array(...))
{
$idioma[$f['nom']] = $f['valor'];
}
PS: funções mysql_* estão obsoletas desde o PHP 5.5 e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/
Valeu pela dica do mysql_.
Quanto ao código, já havia tentando isso, ele retorna o seguinte erro:
Notice: Undefined index: Meu perfil
Porém, ele está pegando a tradução no banco, pois mostrou da maneira correta. Diferente do erro acima que era a variável.
Mais alguma luz?
Beraldo, havia digitado algo a mais. Deu certo sua dica. Eu estava repetindo o $idioma no valor da tradução. Valeu pela ajuda.
Qual erro?