Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom galera fiz esse script a um tempo atras para um projeto da empresa em que trabalho...
é simples e funcional de e serve muito bem para projetos pequenos e de médio porte, tvz projetos grandes se tornem um pouco mais dificeis de gerenciar...
bom esse é o script que seta o idioma...
dei o nome de setidioma.php
PHP [/tr][tr]<?php/***************************** BY MRS 05/06/2004 **************************************************************************\
* *** *
esse arquivo verifica se o usuario marcou um idioma, caso seja verdadeiro ele seta esse idioma e grava um cookei com duração de
um mes, para que na próxima vez ele já venha com o idioma setado...
caso contrário ele verifica se existe um cookie com o idioma, caso não tenha ele pega o idioma do navegador e seta esse
+++
/********************************************************************************
***************************************************** */
ob_start();
$default = "pt"; // padrão será o portugues...
if( isset( $_POST['trocaIdioma'] ) )
{
require $_POST['trocaIdioma'] . ".php";
setcookie("guardaIdioma", $_POST['trocaIdioma'], time()+3600*24*30, '/'); // cookie com tempo de expiração de 1 mes
}
else
if( isset($_COOKIE["guardaIdioma"]) )
{
require $_COOKIE["guardaIdioma"] . ".php";
}
else
if (!isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
require $default .".php";
}
else
{
$idioma = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$idioma = substr($idioma,0,2); // separando o idioma....
if( ( $idioma == "pt") or ( $idioma == "es") or ( $idioma == "en") ) // verificando se é um idioma válido
{
require $idioma . ".php";
}
else
{
require $default . ".php";
}
}
ob_end_flush();
?>
[/tr]
Arquivo onde será guardado o idioma pt...
nome desse arquivo é pt.php
PHP [/tr][tr] <?
$texto['titulo'] = "Informações do sistema";
$texto['usada'] = "Usado";
$texto['livre'] = "Livre";
$texto['espacoTotal'] = "Tamanho";
$texto['dataHora'] = "Data/Hora";
$texto['nomeDaMaquina'] = "None do servidor";
$texto['dominio'] = "Dominio";
$texto['host'] = "Host";
$texto['uptime'] = "Tempo de vida";
$texto['numeroProcessos'] = "Numero de Processos";
$texto['sistemaOperacional'] = "Sistema operacional";
$texto['vKernel'] = "Versão do Kernel";
$texto['usuarios'] = "Usuários";
?>
[/tr]
arquivo com espanhol...
nome desse arquivo é es.php
**PHP** [/tr][tr]<?php
$texto['titulo'] = "System Information";
$texto['usada'] = "Usage";
$texto['livre'] = "Free";
$texto['espacoTotal'] = "Space total";
$texto['dataHora'] = "Date/time";
$texto['nomeDaMaquina'] = "Computer Name";
$texto['dominio'] = "Domain";
$texto['host'] = "Host address";
$texto['uptime'] = "Server time life";
$texto['numeroProcessos'] = "Processors number";
$texto['sistemaOperacional'] = "Operational System";
$texto['vKernel'] = "Kernel Version";
$texto['usuarios'] = "Users";
$texto['totalUsuarios'] = "Current Users";
?>
[/tr]
arquivo com idioma em inglês...
nome desse arquivo é en.php
**PHP** [/tr][tr]<?php
$texto['titulo'] = "System Information";
$texto['usada'] = "Usage";
$texto['livre'] = "Free";
$texto['espacoTotal'] = "Space total";
$texto['dataHora'] = "Date/time";
$texto['nomeDaMaquina'] = "Computer Name";
$texto['dominio'] = "Domain";
$texto['host'] = "Host address";
$texto['uptime'] = "Server time life";
$texto['numeroProcessos'] = "Processors number";
$texto['sistemaOperacional'] = "Operational System";
$texto['vKernel'] = "Kernel Version";
$texto['usuarios'] = "Users";
?>
[/tr]
bom galera agora tem apenas a parte de trocar o script...
PHP [/tr][tr]
// seria algo assim...
require "setidioma.php"; // chama as configurações de idioma...
// troca o idioma...
<table align=right>
<td class=textoUsoGeral><?php echo $texto['fraseIdioma']; ?><form method="post" action="informacoes.php">
<select name="trocaIdioma" class=forms>
<option value="pt"><?php echo $texto['portugues']; ?></option>
<option value="es"><?php echo $texto['espanhol']; ?></option>
<option value="en"><?php echo $texto['ingles']; ?></option>
</select>
<input type=submit name=ok value=ok>
</form>
</td>
</table>
[/tr]
bom galera é isso...
claro que pode ser usado banco de dados, mas nesse caso, por questões internas não usamos, pois muitos clientes não queriam dispor de um banco...
vai saber prque...
e ficaria mais facil a implementação dessa maneira...
abraços a todos
Marcio
Bom na verdade leandro...ficaria algo assim...tipo você tem seu site onde você teria a frase "Seja bem vindo"bom no site na verdade você teria algo parecido com issoinclude "setIdioma.php"; // esse seria o arquivo que verifica o idioma, ele ve o idioma do navegador e seta o idioma entre pt, es, en se não for nenhum desses, por default será pt...$texto['saudacao'];em resumo tudo que você queira que fique em outro idioma você não irá colocar o texto puro e sim uma referencia para os arquivos...note que os arquivos pt, en, es devem ter o mesmo conteudo, na sua devida lingua claro...caso ainda tenha duvida me de um grito que tento explicar melhor ok...abraçosMarcioobs:dei uma melhorada na explicação do scriupt acima...da uma olhada acho que agora tá mais claro...
beleza, deu pra entender sim!mas se for algo dinâmico, tipo um portal de notícia? como ficaria?
Ai creio que seria mais facil ao inves de cadastrar em arquivos criar em banco...e só fazer ele buscar no banco ao invés dos arquivos, pois fica mais facil de gerenciar...abraçosMarcioqualquer coisa vai gritando ai...
Ai creio que seria mais facil ao inves de cadastrar em arquivos criar em banco...e só fazer ele buscar no banco ao invés dos arquivos, pois fica mais facil de gerenciar...abraçosMarcioqualquer coisa vai gritando ai...
desulpe o incômodo heehe, mas tipo assim:suponhamos que seja um portal de notícia, então precisaria escrever a notícia 3 vezes, e ter 3 tabelas né?
manero cerrito!eu trabalho nesse estilo tambémcom os idiomas em arrays
É simples, mas eficiiente...quebra o maior galho...Marcio
>
Ai creio que seria mais facil ao inves de cadastrar em arquivos criar em banco...e só fazer ele buscar no banco ao invés dos arquivos, pois fica mais facil de gerenciar...abraçosMarcioqualquer coisa vai gritando ai...
desulpe o incômodo heehe, mas tipo assim:suponhamos que seja um portal de notícia, então precisaria escrever a notícia 3 vezes, e ter 3 tabelas né?
Bom poderia ser em 03 tabelas ou em uma tab. com dois campos que seriam os diferenciais...1 - identifica o idioma...2 - identifica o texto...alem de um id claro...abraçosMarcio
talvez poderia usar algum sistema de traducao tambem...tipo: o usuario quer em ingles, vai no google e pede para retornar o texto em ingles, so que ai precisaria estudar como funciona o google e talz, ate ai é o de menos, o mais complicado é que esses sistemas de traducao nao sao 100%...mais ta ai uma ideiaabracos
você poderia dar um pequeno exemplo pratico com bdpara melhor compreenção.Para funcionar tenho que criar script nos 3 idomas?Teria tambem ter uma bd para cada indioma?Se tenho um menu com bd.tabMenu_pttabMenu_esptabMenu_enAcho que estou voando no assunto.obrigado
Olá,Estou efetuando um levantamento através da net sobre as práticas de desenvolvimento de sites multi-idiomas. Para uma questão ainda consegui respostas. Como é o design-time (em tempo de desenvolvimento) deste tipo de desenvolvimento, onde você não possui os textos, pois, os mesmos estão em arquivos xml ou banco de dados, você perde a referência para a definição do lay-out. A pergunta agora é, existe alguma forma, por exemplo utilizando o Dreamwaver de setar variáveis com conteúdos advindos de arquivos xml ou banco de dados para utilizar como referências em tempo de desenvolvimento?Desde já agradeço a atenção,
achei este metedo mt simples.
obrigado por disponibilizares aki para o pessoal.
tipo, no codigo, a escolha do idioma é feita através de uma listbox.
o k keria era seleccionar o idioma atraves de imagens.
como é k faço isso
as imagens k tenho são:~
CODE
<span class="titulo">Escolha a linguagem:</span> <img src="images/pt.gif" alt="Português"> <img src="images/uk.gif" alt="Inglês">
Crie links nas imagens, de forma a produzir o mesmo efeito que realizava com o listbox. :thumbsup:
Crie links nas imagens, de forma a produzir o mesmo efeito que realizava com o listbox. :thumbsup:
como é k ficava isso?
Como você fazia com o list box? Você não criava links assim?
www.site.com/?lang=ptOu algo parecido?
Com imagens, basta criar link:
<a href="?lang=pt"><img src="pt.gif" alt="Português" /></a>
mt obrigada
Sem ser spam ou coisa do tipo mas, eu uso este sistema que ele fez no meu site, só que implementei um pouquinho ele.
Caso queiram ter um exemplo prático como um site funciona com isso, é o primeiro site da minha assinatura. Lá são imagens das bandeiras que mudam, do jeito que mapb queria e o Beraldo explicou.
Como voces podem ver, é possível fazer as imagens do site inteiro serem dinamicas também, ou seja, fazer algo do tipo: (exemplo com o logo do meu site)
as imagens são en_logo ou pt_logo
<img src="./images/
<?php
$default = "en";
if( isset( $_GET['lang'] ) )echo $_GET['lang'] . "_logo";
}if (!isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
echo $default;
}echo $idioma . "_logo";
}echo $default;
}
}
?>.jpg" border="0">
Ou por exemplo, usando as bandeirinhas dos países... SE colocar igual ao Beraldo disse, a pessoa que estiver já navegando no site, na hora que clicar no link, vai voltar a página inicial..
portanto eu fiz um codigo que detecta. Se estiver alguma variável na URL (meu include é ?ddl= entao o $_GET tem valor ddl), ele pega a variável e adiciona a chamada da lingua, assim ele muda de texto sem sair da pagina que estava. Se não achar nenhum valor no DDL, ele só imprime o ?lang=
<a href="<?php $_SERVER['PHP_SELF'] ?> <?php
$default = "?";
if( isset( $_GET['ddl'] ) )
{
echo "?ddl=" . $_GET['ddl'] . "&";
}
else
{
echo $default;
}
?>lang=pt"><img src="images/flag_br.png" border="0" style="width: 32px; height: 32px;"></a> <a href="<?php $_SERVER['PHP_SELF'] ?> <?php
$default = "?";
if( isset( $_GET['ddl'] ) )
{
echo "?ddl=" . $_GET['ddl'] ."&";
}
else
{
echo $default;
}
?>lang=en"><img src="images/flag_us.png" border="0" style="width: 32px; height: 32px;"></a>
Ah, só um lembrete. Usem os códigos de caracteres nos arquivos de língua (ou seja, não ao invés de escrever não direto). No meu site, isso dá mó pal, vou ter que reescrever tudo com os codigos...
o $texto['pt_services'] = "Serviços Disponíveis Para Você" ; virou Serviços DisponÃveis Para Você
AGRADEÇO bastante o cerrito.
Graças ao codigo dele, além do sistema multi-lingua, eu aprendi um pouco de php lendo e tentando entender o código.
Eai galera, estou com alguns problemas...
1° [resolvido]
2° Sobre os scripts do DarkDragonLord, consegui trocar as imagens perfeitamente, mas minha dúvida é como trocar o texto
Por formulário funciona corretamente, igual ao exemplo no 1° post deste tópico.
Com as bandeiras como posso trocar o idioma do texto também, exatamente igual ao site http://raphaelddl.com ?
Sobre o 1° problema já resolvi, fechei o EasyPHP e abri novamente e atualizou, mas ainda estou com problema com o item 2...
Só uma coisinha
Não seria melhor usar constant como é feito no php nuke?
Ao q me parece o tempo de processamento é melhor... pois com arrays o php ainda tem q buscar dentro da array o valor para a chave mencionada.
sadboar, você teria um exemplo pronto ?
>
Eai galera, estou com alguns problemas...
1° [resolvido]
2° Sobre os scripts do DarkDragonLord, consegui trocar as imagens perfeitamente, mas minha dúvida é como trocar o texto
Por formulário funciona corretamente, igual ao exemplo no 1° post deste tópico.
Com as bandeiras como posso trocar o idioma do texto também, exatamente igual ao site http://raphaelddl.com ?
Uai, trocar texto é muito mais simples /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/tongue.gif&key=8d11c3c7c03c7a5a294e250694d100848a0423dc34ef2af8d774f49d1b969fde" alt="Imagem Postada" />
se você ker escrever por exemplo, um texto introdutório na pagina de seu portfolio (como fiz no meu), você faz o seguinte:
Abre o pt.php e adicione:
$texto['introducao_portfolio'] = "Aqui você encontrará tudo que já fiz ou estou fazendo no momento. Tenha em mente que algumas seções possuem algumas coisas para download, como a "Web Sites", que possui alguns Templates Grátis para você";Agora Abra o en.php e adicione: (MESMO NOME DE VARIAVEL QUE COLOCOU NO OUTRO)
$texto['introducao_portfolio'] = "Here you will find everything i made or currently making. Keep in mind that some sections have some downloads, as "Web Sites", with some Free Templates for you.";Pronto.
Agora, para que o texto apareça, simplesmente, no lugar que você quer adicioná-lo, escreva o php para chama-lo:
<?php echo $texto['introducao_portfolio']; ?>Ai qdo você abrir o site, ele ja vai catar esse $texto do pt ou en e adicionar, de acordo com a liguagem do browser ou escolha do usuario.
para adicionar outros textos, repita o processo adicionando mais uma linha nos en/pt.php mudando o nome dentro dos $texto['XXXXXXX']
btw, tendi nada q o sadboar falou pq eu nao sei usar constant aShausahSuhaSH
Dark, abaixo está os arquivos que estou fazendo os testes:
http://www.locatorone.com.br/files/lang.zip
Na realidade, quero que quando clicar na bandeira ele mude, além da imagem que já está mudando, o texto, utilizando ?lang=pt-br...
No script inicial do post ele muda através de um select, pegando o valor por $_POST
Se você baixar o arquivo acima irá entender melhor...
obrigado pela atenção !
AGORA O POST TAH CERTO, APERTEI ENVIAR SEM KERER ANTES DE TERMINAR DE ESCREVER
>
Dark, abaixo está os arquivos que estou fazendo os testes:
http://www.locatorone.com.br/files/lang.zip
Na realidade, quero que quando clicar na bandeira ele mude, além da imagem que já está mudando, o texto, utilizando ?lang=pt-br...
No script inicial do post ele muda através de um select, pegando o valor por $_POST
Se você baixar o arquivo acima irá entender melhor...
obrigado pela atenção !
Ahmmm..
Agora entendi.
Bom, eu tinha até respondido aqui: http://forum.imasters.com.br/index.php...st&p=986177 no segundo quote.
Mas ok, vamos por partes usando seu arquivo /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/tongue.gif&key=8d11c3c7c03c7a5a294e250694d100848a0423dc34ef2af8d774f49d1b969fde" alt="Imagem Postada" />
Aqui é como você está fazendo:
<!-- MUDANDO LINGUAGEM POR IMAGEMS --><!-- LINGUAGEM PORTUGUÊS --><a href="<?php $_SERVER['PHP_SELF'] ?><?php$default = "?";echo $default;?>lang=pt-br"><img src="images/bandeira_Brasil.jpg" width="16" height="16" border="0"></a>
O PHP que você colocou ai foi meio inútil pq era só escrever ? assim
<a href="?lang=pt-br"><img src="images/bandeira_Brasil.jpg" width="16" height="16" border="0"></a>Mas de qualquer forma, bora lá fazer do jeito que clicando ele muda de linguagem E continua na página que voce está (Assim nao muda para a inicial toda hora que clicar)
O codigo é o seguinte: (na qual **ddl** dentro do $_GET é apenas o nome que dei para usar com o include (poderia ser pag ou p ou qualquer coisa)
<a href="<?php $default = "?"; if( isset( $_GET['ddl'] ) ){echo "?ddl=" . $_GET['ddl'] . "&";}else{echo $default;}?>lang=pt-br"><img src="images/bandeira_Brasil.jpg" width="16" height="16" border="0"></a>Agora destrinchando
<?php$default = "?";if( isset( $_GET['ddl'] ) ) {echo "?ddl=" . $_GET['ddl'] . "&";} else {echo $default; }?>Se estiver setado o **ddl**, vai echo **?ddl=OQtiverSETADO&** assim, o link ficaria **href="?ddl=OQtiverSETADO〈=pt-br"**.Se nao estiver setado o **ddl**, vai echo **?** assim, o link ficaria **href="?lang=pt-br"**.
Acho que agora deu pra entender, embora eu tenha explicado superficialmente /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/smile.gif&key=15294d64c22e9e9c4ae0bf82a62ec27d13f27d6ba7078a5f7982077798029364" alt="Imagem Postada" />
Edit no Post v2:
Acho que nem precisa do default agora que to relendo esse codigo véio meu /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/tongue.gif&key=8d11c3c7c03c7a5a294e250694d100848a0423dc34ef2af8d774f49d1b969fde" alt="Imagem Postada" />
pode ficar só assim pra reduzir alguns bytes no arquivo (sem o else, antigamente eu achava que todo if deveria ter um else AHaahAhaahH viva a epoca que começei a aprender PHP usando esse codigo de language como base xD)
<?phpif( isset( $_GET['ddl'] ) ) {echo "ddl=" . $_GET['ddl'] . "&";}?>ai o codigo todo ficaria assim, tendo o ? antes do inicio do PHP
<a href="?<?php if( isset( $_GET['ddl'] ) ) {echo "ddl=" . $_GET['ddl'] . "&";} ?>lang=pt-br"><img src="images/bandeira_Brasil.jpg" width="16" height="16" border="0"></a>Eai Dark !
Tive uns problemas, mas agora vou mexer com o código...
vlw pela ajuda... :thumbsup:
abraço !
Cerrito, muito interessante, estou a desenvolver um site, que precisará estar disponível em 3 idiomas. Mas não entendi muito bem como utilizar o seu script.Tipo assim:tenho um site normal todo em português, ai eu teria que ter uns arquivos nas outras línguas, para substituir os textos? Chamando os mesmo por include?