Central de Ajuda Quaza Provedores

Como gerar as traduções (Quaza ou Portal) (PT)

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):

1. Marca textoscom _() no PHP 2. Escaneia o códigocom xgettext 3. Gera o arquivoquaza.pot 4. Atualiza .po dosidiomas (msgmerge) 5. Traduz no .pode cada idioma 6. Compila 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 (msgidmsgstr).

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