Sistema de Idiomas para seu Site
Após o pedido de alguns amigos eu decidi gastar um tempinho e desenvolver um sistema simples e funcional que possibilite ao seu site disponibilizar tradução completa para mais de um idioma.
- Download do sistema junto com arquivo-exemplo
- class.langSys.php no PasteLog
Modo de usar:
- Crie uma pasta que conterá os arquivos de tradução, e nela coloque estes nomeando-os da forma sigla_do_idioma.php
O conteúdo desses arquivos deve seguir o seguinte esquema:<?php return array( 'label1' => 'String1 traduzida', 'label2' => 'String2 traduzida', 'label3' => 'String3 traduzida' ); ?>
- O arquivo class.langSys.php pode estar em qualquer pasta, desde que você saiba aonde
- Em seu arquivo principal do site (normalmente o index.php) crie uma array de configuração, nesse esquema:
$langConfig = array( 'langDir' => 'langs', 'defaultLang' => 'pt_br' );
Onde langDir deve conter o caminho para a pasta criada acima, e defaultLang a sigla do idioma padrão
- Ainda no mesmo arquivo fazer o include do class.langSys.php e chamar a função estática prepare passando como parâmetro a array de configuração:
require_once('/path/to/class.langSys.php'); langSys::prepare($langConfig);
- Em todas as partes do site que necessitarem do sistema de idiomas, os textos devem ser substituídos por chamadas a função estática get, passando como parâmetro a label a que é referenciado nos arquivos de idiomas, por exemplo:
<head><title><?=langSys::get('title')?></title></head> <body> <div> <h1><?=langSys::get('welcome')?></h1> </div> </body>
- Para o uso de um select para a selação do idioma, o conteúdo das tags value deve ser exatamente igual ao nome do arquivo do idioma relacionado:
<select id="sel_lang"> <option value="pt_br">Portugues</option> <option value="en">English</option> </select>
Uma maneira de fazer com que o idioma mude assim que é selecionado no select está incluída em javascript no arquivo de exemplo.
- Caso deseje criar links no lugar do select, estes devem seguir o esquema ?lang=silga_do_idioma, por exemplo:
<a href="?lang=pt_br">Português</a> / <a href="?lang=en">English</a>
Exemplo de uso:
<?php $langConfig = array( 'langDir' => 'langs', 'defaultLang' => 'pt_br' ); require_once('class.langSys.php'); langSys::prepare($langConfig); ?> <html> <head> <title><?=langSys::get('title')?></title> </head> <body> <div width="400px" align="center" style="border: 1px ridge #0f0; background: #ccc; height: 200px;"> <h1><?=langSys::get('welcome')?></h1> <div style="font: 400 13px tahoma; color: #00f"><?=langSys::get('home_text')?></div> </div> <br /> <br /> <center> <select id="sel_lang"> <option value="pt_br">Portugues</option> <option value="en">English</option> </select> </center> <script type="text/javascript"> var curLang = '<?=langSys::$lang?>'; var oSelect = document.getElementById('sel_lang'); for(var i=0; oSelect.options[i]; ++i) { if(oSelect.options[i].value == curLang) { oSelect.options[i].selected = true; break; } } oSelect.onchange = function() { document.location.href = '?lang='+this.options[this.selectedIndex].value; } </script> </body> </html>
Lembrando que o propósito é dessa classe é ser estática, portanto não vai adiantar nada criar objetos dela.