Laravel vs Django Manejo de Traducciones
Índice de contenido
Vamos a hablar un poco sobre cómo funciona el proceso de traducciones en cada uno de estos frameworks.
Lo primero que quiero decir es que, por ejemplo, las traducciones en PHP en general son más o menos lo mismo que hacemos en Laravel. En el caso de Django, la lógica también es similar: siempre vamos a tener un archivo donde colocamos la clave y la traducción correspondiente.
Diferencias en la sintaxis
En PHP, el proceso es un poco más directo porque no tiene tanta jerga. Es básicamente un JSON donde colocamos la clave y el valor:
resources\lang\es.json
{
"Light": "Claro",
"Dark": "Oscuro",
***
}
resources\lang\en.json
{
"Light": "Light",
"Dark": "Dark",
***
}
En Django, como suele pasar en Python, todo es un poco más verboso. No es complicado, pero sí más detallado.
La idea es discutir aquí cuáles son los pasos que tenemos que seguir en cada caso para generar correctamente las traducciones.
Traducciones en Django (Python web en general)
En Django, todo comienza escaneando los archivos donde usamos las claves de traducción.
Esto aplica tanto para los templates como para las vistas (lo que en PHP serían los controladores).
- Se utilizan funciones como gettext (que es de Python nativo) o etiquetas como {% trans %}.
En el código también podemos usar _('texto') para indicar qué queremos traducir. - El proceso, sin embargo, es más laborioso:
- Instalar la utilidad gettext.
- Crear configuraciones específicas para indicar la carpeta de traducciones.
- Ejecutar comandos que generan los archivos .po.
- Crear de manera manual la carpeta locale en cada aplicación.
- Configurar excepciones (por ejemplo, ignorar archivos como requirements.txt).
La gran ventaja aquí es que Django escanea automáticamente todos los archivos y genera las claves por nosotros.
Además, los archivos .po incluyen comentarios que indican dónde se usa cada clave, lo que es muy útil como referencia.
Traducciones en Laravel (PHP en general)
En Laravel, el proceso es mucho más sencillo:
- Crear manualmente la carpeta resources/lang.
- Crear los archivos de idioma (en.json, es.json, etc.).
- Escribir una por una las claves y valores.
Aquí el trabajo es manual y un poco tedioso.
Podemos apoyarnos en herramientas de IA como Copilot, Claude o Gemini para automatizarlo, pero al final sigue siendo un proceso de ir escribiendo las traducciones.
El cambio de idioma se hace con funciones sencillas como:
App::setLocale('es');
Comparación
Laravel (PHP):
- Ventaja → proceso simple y directo.
- Desventaja → es manual, hay que escribir todas las claves a mano.
- Django (Python):
- Ventaja → el sistema escanea automáticamente y genera las claves.
- Desventaja → es más laborioso, requiere instalación de utilerías y configuración adicional.
Conclusión
Aunque en Laravel el proceso es más rápido, en Django me parece más sólido porque hace el escaneo automático y agrega referencias sobre dónde se usa cada traducción.
Por eso, en este caso, le doy el punto a Django (Python web en general).
Me parece una solución más confiable, incluso si es un poco más trabajosa al inicio.
Acepto recibir anuncios de interes sobre este Blog.
Comparamos como es el proceso para traducir aplicaciones en Django (Python Web) vs las que hacemos en Laravel (PHP).