Como gerar as traduções (Quaza ou Portal) — Quaza
Como gerar/atualizar as traduções (i18n) do Quaza ou do Portal — usando gettext no código PHP. Procedimento de desenvolvedor.
O que é o sistema de traduções
O Quaza usa gettext para internacionalização (i18n). Todo texto visível para o usuário no código PHP é marcado com _() — assim o sistema exibe o conteúdo no idioma configurado da sessão.
Procedimento de desenvolvedor. Gerar/atualizar as traduções é tarefa técnica, executada no código-fonte e no servidor, com ferramentas xgettext/msgmerge/msgfmt.
Como funciona
Os textos são extraídos do código com xgettext, agregados em um arquivo template (.pot); os arquivos por idioma (.po) são atualizados (msgmerge) e traduzidos; depois compilados para .mo (msgfmt):
Glossário
| Termo |
O que significa |
| gettext |
Padrão de internacionalização: textos do código são marcados e exibidos no idioma escolhido. |
| _() |
Função do gettext usada no PHP para marcar um texto como traduzível. |
| .pot |
Arquivo template com todos os textos extraídos do código (ainda sem tradução). |
| .po |
Arquivo por idioma com as traduções (texto fonte → texto traduzido). |
| .mo |
Versão compilada (binária) do .po — o que o sistema lê em produção. |
| Idiomas base |
pt_BR (original) e os demais publicados (ex.: es_PY). |
Antes de começar
Quem executa precisa de:
• Acesso ao código-fonte do Quaza (repositório).
• Ferramentas xgettext, msgmerge, msgfmt instaladas (pacote gettext).
• Conhecimento dos idiomas suportados e dos arquivos por idioma (ex.: locale/es_PY/LC_MESSAGES/quaza.po).
Passo a passo (no código-fonte)
1 Garanta que todos os textos visíveis no PHP estão marcados com _('...'). Textos sem marcação não entram na tradução.
2 Extraia os textos do código com xgettext para gerar/atualizar o arquivo template quaza.pot.
3 Para cada idioma (ex.: es_PY), atualize o .po a partir do template:
msgmerge --update locale/es_PY/LC_MESSAGES/quaza.po locale/quaza.pot
4 Edite o .po de cada idioma e preencha as traduções (msgid → msgstr).
5 Compile cada .po para .mo:
msgfmt locale/es_PY/LC_MESSAGES/quaza.po -o locale/es_PY/LC_MESSAGES/quaza.mo
6 Faça deploy no servidor — o gettext do PHP passa a usar as novas traduções.
Procedimentos específicos podem variar. O time pode usar scripts próprios, ferramentas (Poedit) ou pipelines de CI/CD para esse fluxo.
Pegadinhas frequentes
1. _() é fundamental. Sem a marcação _() no código, o texto não vira candidato a tradução — ele aparece sempre na string fonte.
2. Atualizar antes de traduzir. Faça msgmerge antes de editar o .po para não perder strings novas ou trabalhar em entradas obsoletas.
3. .mo precisa estar atualizado. Editar só o .po não basta — o sistema lê o .mo (compilado).
4. Cache do gettext. Algumas instalações cacheiam .mo em memória — pode ser preciso reiniciar PHP/FPM para o sistema ler a versão nova.
Perguntas frequentes
Quem gera as traduções?Time de desenvolvimento/manutenção do código — não é fluxo de operador.
Quais idiomas o Quaza suporta?pt_BR (original) e os demais idiomas publicados (ex.: es_PY).
Posso traduzir pelo painel?Não — é fluxo de código (gettext) com ferramentas próprias.
O que é o quaza.pot?Template com todos os textos extraídos do código; é a base para gerar/atualizar cada .po de idioma.
msgmerge apaga minhas traduções?Não — ele mescla: mantém as existentes e marca como obsoletas as que não estão mais no template.
Para que serve o .mo?É o formato binário que o gettext lê em produção; o .po é fonte editável.
Posso usar Poedit?Sim — Poedit edita .po e gera .mo automaticamente, simplificando o fluxo.
Como saber o idioma da sessão?O Quaza usa a configuração de idioma do usuário/sessão para escolher qual .mo carregar.
Preciso reiniciar o PHP?Em alguns casos sim (cache em memória do gettext) — confira com o suporte.
Onde ficam os arquivos por idioma?Em locale//LC_MESSAGES/quaza.{{po,mo}} dentro do código.
Documentos relacionados