Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cerrito

Script de idioma para site...

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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é?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É simples, mas eficiiente...quebra o maior galho...Marcio

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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,

Compartilhar este post


Link para o post
Compartilhar em outros sites

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">

Compartilhar este post


Link para o post
Compartilhar em outros sites

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";
}
else

if (!isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
echo $default;
}
else
{
$idioma = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$idioma = substr($idioma,0,2); // separando o idioma....
if( ( $idioma == "pt") or ( $idioma == "en") ) // verificando se é um idioma válido
{
echo $idioma . "_logo";
}
else
{
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobre o 1° problema já resolvi, fechei o EasyPHP e abri novamente e atualizou, mas ainda estou com problema com o item 2...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.