Rápido tutorial sobre internacionalização ----------------------------------------- O MIOLO utiliza o gettext para proporcionar a internacionalização dos módulos/programas. Por isso, é fundamental que o PHP tenha sido compilado com a opção --with-gettext Para criar uma tradução, devemos saber que existem dois tipos de arquivos, .po e .mo: - .po : são os arquivos fonte das traduções. Nesses arquivos são definidas as "strid", que identificam as strings a serem traduzidas e as "strmsg", que correspondem às devidas traduções. - .mo : são os arquivos binários utilizados pelo gettext para encontrar as traduções. Esses arquivos são obtidos após executar o comando msgfmt. Exemplo: Suponhamos que exista um módulo chamado abcde. Para este módulo, deverá existir o arquivo abcde.po que contém a identificação e as respectivas traduções das strings. Para gerar o catálogo binário .mo deve-se executar o comando msgfmt da seguinte maneira: msgfmt -f abcde.po -o abcde.mo Tradução no MIOLO ----------------- Antes de mais nada, no arquivo miolo.conf deve ser especificada o tipo de idioma a ser utilizado e o caminho onde os arquivos são encontrados. Para ter acesso às strings traduzidas, deve-se utilizar a função _M("string","module") do MIOLO, onde "string" identifica a string que deverá ser localizada e traduzida e "module", que é o módulo, indica o arquivo que contém a tradução. Utilizando o nosso exemplo anterior, suponhamos que num certo arquivo do módulo abcde exista a string chamado "hoje" e que deverá ser traduzida para os outros idiomas. Para isso, utilizaremos a função da seguinte maneira: _M("hoje","abcde") Localização dos arquivos de traduções ------------------------------------- Como foi escrito anteriormente, o MIOLO utiliza o arquivo abcde.mo para localizar as traduções do módulo/programa abcde. Pergunta: como proceder quando existem traduções para mais idiomas? Respota: seguindo o padrão do linux, todas os arquivos de traduções no MIOLO são colocados nos sub-diretórios do diretório "locale". Esses sub-diretórios identificam o nome dos idiomas nos quais os respectivos arquivos com as traduções serão encontrados. Dessa forma, nada impediria que você utilizasse o diretório /usr/share/locale para armazenar os arquivos de traduções, desde que esteja assim configurado no miolo.conf Supondo que o módulo abcde tenha sido escrito em inglês e possua traduções para português-Brasil e francês, a estrutura dos diretório seria algo do tipo: /usr/local/miolo/locale | +----/pt_BR | | | +----/LC_MESSAGES +----/fr | +----/LC_MESSAGES A configuração no miolo.conf, admitindo que queira-se utilizar a tradução para português-Brasil, ficaria assim: $MIOLOCONF['i18n']['locale'] = '/usr/local/miolo/locale'; $MIOLOCONF['i18n']['language'] = 'pt_BR'; A partir da versão 1.0-RC5, essa configuração também poderá ser incluida no arquivo nome_modulo.conf. Vilson Cristiano Gartner vgartner@univates.br