Simples gerenciador de idiomas em PHP.
v 1.0 semi-beta
- Facilita a tradução e a gestão de idiomas no site/sistema
- Utiliza GETTEXT() e arquivos PO e MO (assim como o WordPress \o/ )
- Mantém ativo o idioma selecionado durante toda a sessão
- Detecta o idioma do navegador e se ajusta automaticamente (#ainda não faz isso, mas pode fazer se você me ajudar)
Exemplo com strings fixas
Exemplo com mysql
- Download
git clone https://github.com/tonetlds/easy-language
- Faça o download aqui
- Descompacte o ZIP na pasta raíz do seu site/sistema
- Instalação
Inclua o Easy-Language logo no início do sistema:
include_once( 'easy-language/easy-language.php' );
- Uso
Utilize requisições GET, passando o idioma desejado como parâmetro lang. Exemplo:
meusite.com/?lang=pt_BR
(Utilize o código ISO do idioma + o código do país unidos por underline, ex: "pt_BR, en_US")
Você pode criar links para para alternar entre os idioma:
<ul>
<li><a href="?lang=pt_BR">Português</a></li>
<li><a href="?lang=en_US">English</a></li>
<li><a href="?lang=es_ES">Español</a></li>
</ul>
O Easy-Language salva o idioma selecionado na variável Lang da sessão e utiliza a mesma como base de referência para tudo.
$_SESSION['lang']
Cada vez que uma alteração de idioma é solicitada, o Easy-Language salva o novo código nesta variável.
/*
Requisição GET
seusite.com/lang=en_US
*/
print_r( $_SESSION['lang'] ); // Retornará 'en_US'
Altere esta variável a qualquer momento e o sistema buscará pelos arquivos de tradução na pasta referênte ao idioma solicitado.
Você pode alterar a variável lang da sessão a qualquer momento (depois da inclusão do Easy-Language)
$_SESSION['lang'] = 'pt_BR';
echo _( 'Sobre nós' );
/** Retorna 'Sobre nós' **/
$_SESSION['lang'] = 'en_US';
echo _( 'Sobre nós' );
/** Retorna 'About us' **/
O Easy-Language utiliza o sistema Gettext para traduções.
Os arquivos com as traduções possuem o nome padrão messages e extensão .po e .mo e devem ficar dentro de pastas com nome /LC_MESSAGES para cada idioma utilizado.
\pt_BR
\LC_MESSAGES
messages.mo
messages.po
O arquivo messages.po será utilizado para fazer as traduções, gerando o arquivo messages.mo que será lido pelo Easy-Language.
Cada idioma deve conter uma pasta com nome idêntico ao seu código ISO, dentro da pasta /languages:
\easy-language
| easy-language.php
|
\languages
\en_US
| \LC_MESSAGES
| messages.mo
| messages.po
|
\es_ES
| \LC_MESSAGES
| messages.mo
| messages.po
|
\pt_BR
\LC_MESSAGES
messages.mo
messages.po
Todo o conteúdo que será traduzido deverá ser preparado antes de serem gerados os arquivos de tradução.
Cada string a ser traduzida deve seguir as regras padrão do GETTEXT().
Utilizando get_text():
echo gettext("Bem vindo ao meu site traduzido");
ou o seu alias _( ):
echo _("Bem vindo ao meu site traduzido");
Exemplos:
<ul>
<li>
<a href="#"><?php echo _('Início') ?></a>
</li>
<li>
<a href="#"><?php echo _('Sobre nós') ?></a>
</li>
<li>
<a href="#"><?php echo _('Contato') ?></a>
</li>
</ul>
<h1><?php echo _('Artigo traduzido') ?></h1>
<p>
<?php echo _('Texto do conteúdo do artigo em vários idiomas...') ?>
</p>
Obs.:
- Inicialmente, o texto "preparado" será a chave para o resto da tradução. Se o arquivo com a tradução do idioma solicitado não existir, ou a string não foi traduzida, esta "chave" original será exibida.
- Depois que o todo o conteúdo estiver preparado, você já pode criar os catálogos de tradução.
Antes de começar a traduzir é necessário catalogar todas as strings que foram preparadas.
Em Windows, a melhor opção para esta tarefa é o aplicativo poEdit, que escaneia todos os arquivos em busca de "strings para traduzir", e os indexa no arquivo "messages.mo".
Baixe o poEdit e instale-o. Será necessário.
###1. Crie uma pasta para o novo idioma Dentro da pasta /easy-language/languages crie uma nova pasta com nome igual ao código ISO do idioma desejado, e dentro desta crie outra pasta com nome "LC_MESSAGES".
Exemplo:
mkdir "easy-language/languages/it_IT"
mkdir "easy-language/languages/it_IT/LC_MESSAGES"
###2. Crie um novo catálgo
- Abra o aplicativo poEdit.
- Clique em "Arquivo > Novo" (ou CTRL + N)
- Selecione o idioma da nova tradução
- Salve o arquivo dentro da pasta "LC_MESSAGES", com o nome messages.po (é necessário salvar antes para que o programa consiga indexar as strings)
- Após salvar, clique no menu "Catálogo > Propriedades" (ou ALT + ENTER)
- Na janela de propriedades do catálogo, digite o nome do projeto e certifique-se de informar o "Conjunto de caracteres do código-fonte". Recomenda-se UTF-8, porém se seus arquivos estiverem em outra codificação, como ISO-8859 por exemplo, informe-a neste campo.
- Salve novamente.
- Na guia "Caminhos das fontes", adicione o caminho exato até a pasta raíz do seu site/sistema no campo "Caminhos":
- Clique em OK e salve novamente.
- Clique em "Atualizar" e surpreenda-se. O poEdit escaneará cada arquivo da pasta informada em busca de strings para indexar. Feito isto você verá a relação de palavras e frases prontas para serem traduzidas.
###3. Começe a traduzir
- Clique no texto fonte que deseja traduzir
- Digite a tradução no campo "Tradução"
- Salve e teste. Você está pronto :D
Cada vez que você salva, um novo arquivo messages.mo é gerado.
Dica: Pressione CTRL + ENTER para passar para a próxima string.
\o/ Free Software
Você está convidado a fazer o que quiser com este código, inclusive me ajudar à melhorá-lo!
Obrigado por ler até aqui. Fique com Deus.
###Easy-Language
Luciano Tonet : @tonetlds