Estava procurando um sistema para multi linguagens para meus sisteminhas em PHP e achei numa comunidade do PHP brasil e lá estava um carinha dizendo algo sobre o gettext.
E não achei quase nada na net, explicando bem detalhado para leigos como eu o seu funcionamento em Linux e Windows.
Em Windows onde estou fazendo os meus testes locais passei um trabalhão para fazer o gettext funcionar.
- Fazer download da dll do gettext que está em GTK+ (not GIMP) for Windows
- Habilitar no php.ini a extension php_gettext.dll
- Copiar a dll intl.dll para libintl-1.dll e em seguida copiar para c:\windows\system32
- E reinicializar o servidor WEB
«PHP»
$language = $_GET['lang'];
if (empty($language)) { $language = 'en_US'; }
putenv("LANG=$language");
if (!defined('LC_MESSAGES')) define('LC_MESSAGES', 6);
$newLocale=setlocale(LC_MESSAGES, $language);
// Set the text domain as 'messages'
$domain = 'messages';
bindtextdomain($domain, "./locale");
textdomain($domain);
Agora temos que criar os diretórios para os arquivos onde estarão as traduções dos textos
./locale
|-----> en_US (diretório)
| |-----> LC_MESSAGES (diretório)
| | |-----> messages.mo (arquivo compilado tradução)
| | |-----> messages.po (arquivo texto com indices para tradução)
|-----> pt_BR
| |-----> LC_MESSAGES (diretório)
| | |-----> messages.mo (arquivo compilado tradução)
| | |-----> messages.po (arquivo texto com indices para tradução)
E agora como compilar este arquivo, primeiramente vamos ver como fazer o arquivo de tradução
«messages.po»
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: 2006-06-17 23:02-0300\n"
"Last-Translator: Rafael Stoever \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "str_hello"
msgstr "Hello"
msgid "The string must be here\n"
msgstr ""
«Compilação dos arquivos po»
Estou utilizando o poedit para compilar os arquivos, ele gera o arquivo .mo que será utilizado para traduzir o texto do seu php.
Obs.: posso usar a impressão do texto com o gettext ou _() como é mencionado no exemplo acima do php.
o resultado é lang.php
bom pessoal, não vou explicar a criação de um database aos mínimos detalhes, mas vou explicar uma coisa que demorei muito mais para achar até no site da oracle e tudo mais.


1