La internacionalización (i18n) en Django permite crear aplicaciones web multilingües, adaptando el contenido de la interfaz a diferentes idiomas y formatos de región. Django proporciona herramientas integradas para traducir texto, manejar diferentes formatos de fechas, números y otros datos, haciendo que las aplicaciones sean accesibles a usuarios de diferentes localizaciones.
La internacionalización (i18n) en Django se refiere al proceso de preparar una aplicación para soportar múltiples idiomas. Esto incluye traducir texto en las plantillas y archivos de Python, así como gestionar la localización de formatos (fechas, horas, números, etc.). Django hace uso de un sistema de archivos .po
y .mo
para gestionar las traducciones y proporciona utilidades para detectar el idioma preferido del usuario.
Los pasos principales para implementar i18n en Django incluyen:
1. Marcar el texto para traducción.
2. Crear archivos de traducción.
3. Compilar las traducciones.
4. Configurar la detección automática de idiomas y localización.
Para marcar cadenas de texto que necesitan ser traducidas, debes usar las funciones gettext()
o gettext_lazy()
en tus archivos Python, y el filtro trans
en las plantillas HTML.
Ejemplo en un archivo Python:
from django.utils.translation import gettext as _
def my_view(request):
message = _("Hello, world!")
return render(request, 'my_template.html', {'message': message})
Ejemplo en una plantilla HTML:
<p>{% trans "Hello, world!" %}</p>
Ejecuta el siguiente comando para generar los archivos de traducción .po
:
django-admin makemessages -l es
Esto crea un archivo .po
en el directorio locale/es/LC_MESSAGES/
, donde puedes añadir las traducciones al español.
Después de añadir las traducciones al archivo .po
, debes compilarlas para que Django las use:
django-admin compilemessages
En el archivo settings.py
, configura el idioma y las opciones de localización:
LANGUAGE_CODE = 'en-us' # Idioma por defecto
USE_I18N = True # Habilitar la internacionalización
USE_L10N = True # Habilitar localización de formatos
LANGUAGES = [
('en', 'English'),
('es', 'Español'),
]
Para más detalles sobre la configuración de la internacionalización, visita la documentación oficial de Django.
Jorge García
Fullstack developer