Ir para conteúdo

Sistema De Idiomas


Arkilus

Posts Recomendados

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.

Editado por Arkilus
Link para o comentário
Compartilhar em outros sites

  • 2 months later...
  • 3 weeks later...
  • 2 months later...
  • 2 weeks later...
×
×
  • Criar Novo...