Cómo generar las traducciones (Quaza o Portal) — Quaza
Cómo generar/actualizar las traducciones (i18n) de Quaza o del Portal — usando gettext en el código PHP. Procedimiento de desarrollador.
Qué es el sistema de traducciones
Quaza usa gettext para internacionalización (i18n). Todo texto visible al usuario en el código PHP se marca con _() — así el sistema lo muestra en el idioma configurado de la sesión.
Procedimiento de desarrollador. Generar/actualizar las traducciones es tarea técnica, ejecutada en el código-fuente y en el servidor, con herramientas xgettext/msgmerge/msgfmt.
Cómo funciona
Los textos se extraen del código con xgettext, se agregan en un archivo template (.pot); los archivos por idioma (.po) se actualizan (msgmerge) y traducen; después se compilan a .mo (msgfmt):
Glosario
| Término |
Qué significa |
| gettext |
Estándar de internacionalización: los textos del código se marcan y se muestran en el idioma elegido. |
| _() |
Función de gettext usada en PHP para marcar un texto como traducible. |
| .pot |
Archivo template con todos los textos extraídos del código (aún sin traducción). |
| .po |
Archivo por idioma con las traducciones (texto fuente → texto traducido). |
| .mo |
Versión compilada (binaria) del .po — lo que el sistema lee en producción. |
| Idiomas base |
pt_BR (original) y los demás publicados (ej.: es_PY). |
Antes de empezar
Quien ejecuta necesita:
• Acceso al código-fuente de Quaza (repositorio).
• Herramientas xgettext, msgmerge, msgfmt instaladas (paquete gettext).
• Conocimiento de los idiomas soportados y los archivos por idioma (ej.: locale/es_PY/LC_MESSAGES/quaza.po).
Paso a paso (en el código-fuente)
1 Asegurate de que todos los textos visibles en el PHP estén marcados con _('...'). Los textos sin marcación no entran en la traducción.
2 Extraé los textos del código con xgettext para generar/actualizar el archivo template quaza.pot.
3 Para cada idioma (ej.: es_PY), actualizá el .po a partir del template:
msgmerge --update locale/es_PY/LC_MESSAGES/quaza.po locale/quaza.pot
4 Editá el .po de cada idioma y completá las traducciones (msgid → msgstr).
5 Compilá cada .po a .mo:
msgfmt locale/es_PY/LC_MESSAGES/quaza.po -o locale/es_PY/LC_MESSAGES/quaza.mo
6 Hacé deploy en el servidor — el gettext del PHP pasa a usar las nuevas traducciones.
Procedimientos específicos pueden variar. El equipo puede usar scripts propios, herramientas (Poedit) o pipelines de CI/CD para este flujo.
Errores frecuentes
1. _() es fundamental. Sin la marcación _() en el código, el texto no se vuelve candidato a traducción — aparece siempre en la cadena fuente.
2. Actualizar antes de traducir. Hacé msgmerge antes de editar el .po para no perder cadenas nuevas ni trabajar en entradas obsoletas.
3. .mo tiene que estar actualizado. Editar solo el .po no alcanza — el sistema lee el .mo (compilado).
4. Caché de gettext. Algunas instalaciones cachean .mo en memoria — puede hacer falta reiniciar PHP/FPM para que el sistema lea la versión nueva.
Preguntas frecuentes
¿Quién genera las traducciones?El equipo de desarrollo/mantenimiento del código — no es flujo de operador.
¿Qué idiomas soporta Quaza?pt_BR (original) y los demás idiomas publicados (ej.: es_PY).
¿Puedo traducir desde el panel?No — es flujo de código (gettext) con herramientas propias.
¿Qué es el quaza.pot?Template con todos los textos extraídos del código; es la base para generar/actualizar cada .po de idioma.
¿msgmerge borra mis traducciones?No — las mezcla: mantiene las existentes y marca como obsoletas las que ya no están en el template.
¿Para qué sirve el .mo?Es el formato binario que gettext lee en producción; el .po es fuente editable.
¿Puedo usar Poedit?Sí — Poedit edita .po y genera .mo automáticamente, simplificando el flujo.
¿Cómo saber el idioma de la sesión?Quaza usa la configuración de idioma del usuario/sesión para elegir qué .mo cargar.
¿Tengo que reiniciar PHP?En algunos casos sí (caché en memoria de gettext) — revisá con el soporte.
¿Dónde quedan los archivos por idioma?En locale//LC_MESSAGES/quaza.{{po,mo}} dentro del código.
Documentos relacionados