Django
Nuestro objetivo es hacer una internet más unida sin barreras linguísticas
En un mundo cada vez más conectado, la barrera del idioma no debería ser un obstáculo para compartir conocimiento y construir comunidades globales. Con Translate Projects, puedes globalizar fácilmente tus proyectos, haciendo que tu contenido sea accesible para personas de todo el mundo.
Configuración inicial Django
-
Puedes crear un proyecto basico en django documentación oficial
-
Si tienes un proyecto, avancemos...
Implementación de traducciones
Configurar i18n
- Debes de tener configurado el paquete
django.conf.i18n
#Idioma por defecto
LANGUAGE_CODE = 'es'
#Idiomas a traducir
# importar `gettext_lazy` para evitar error de la traducción
from django.utils.translation import gettext_lazy as _
LANGUAGES = [
('es', _('Spanish')),
('en', _('English')),
# ('hi', _('Hindi')),
# ('fr', _('French')),
# ('de', _('German')),
# ('zh', _('Chinese')),
# ('ko', _('Korean')),
# ('ja', _('Japanese')),
# ('ru', _('Russian')),
# ('it', _('Italian')),
]
#Habilitar el paquete `django.conf.i18n`
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
TRANSLATE_PROJECTS_API_KEY = '#'
TRANSLATE_PROJECTS_EXCLUDE_DIRS = ["env/*"]
- No olvides ingorar la carpeta de tu entorno de desarrollo, por ejemplo
env/
- Debes de tener configurado el paquete
django.conf.locale
Creamos la carpeta locale
donde se almacenara el resultado de nuestras traducciones
mkdir locale
Asi quedaremos con la siguiente estructura de directorios
├── db.sqlite3
├── django_tutorial
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── locale # ruta de nuestras traducciones
└── manage.py
Añadimos la ruta de nuestras traducciones a nuestra lista de rutas en nuestro archivo yourproject/settings.py
principal.
# importar `os`
import os
LOCALE_PATHS = [
os.path.join(BASE_DIR, 'locale'),
]
- Añadimos el middleware de lozalización
django.middleware.locale
MIDDLEWARE = [
Tus otros middlewares...,
'django.middleware.locale.LocaleMiddleware',
]
- Debes de tener configurado el paquete
django.conf.urls.i18n
Debemos añadir la ruta i18n/
a nuestra lista de rutas en nuestro archivo yourproject/urls.py
principal.
from django.conf.urls.i18n import i18n_patterns
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('i18n/', include('django.conf.urls.i18n')),
]
Configurar ruta de nuestras plantillas
Creamos la carpeta templates
donde se almacenara nuestras plantillas
mkdir templates
Asi quedaremos con la siguiente estructura de directorios
.
├── db.sqlite3
├── django_tutorial
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── locale
├── manage.py
└── templates # ruta de nuestras plantillas
Dentro de esta carpeta añadiremos nuestras planillas html de nuestro proyecto.
# importar `os`
import os
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')], #Ruta de nuestras plantillas
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
Automatizar traducciones
Debemos de instalar el paquete translate-projects-django
en nuestro proyecto.
pip install translate-projects-django
Registrar paquete en settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
Tus otros paquetes...,
'translate_projects_django', #añadir el paquete
]
🚀 Automatiza y optimiza tus traducciones
Para aprovechar al máximo Translate Projects, necesitas una API Key. Regístrate sin compromiso.
- No pedimos tarjeta de crédito para probar
Translate Projects
Beneficios al obtener tu API Key
- Administración Inteligente: Sincroniza y gestiona automáticamente las traducciones de tus proyectos.
- Panel Administrativo Exclusivo: Personaliza y supervisa todas tus traducciones desde una interfaz centralizada.
- Soporte Prioritario: Recibe asistencia técnica rápida y especializada cuando la necesites.
- Traducciones Precisas: Nuestra tecnología entiende el contexto de tu código para ofrecer traducciones exactas.
- 30.000 Eniacs de Bienvenida: Prueba todas las funciones sin compromiso con tokens internos que potencian tus traducciones.
¡Regístrate ahora y obtén tu API Key para desbloquear todo el potencial de Translate Projects!
Añadir api key
Es muy sencillo solo debes de añadir tu API key en la configuración de tu proyecto.
TRANSLATE_PROJECTS_API_KEY = '#' #<- Tu API key
Ejecutar las traducciones
Abrimos nuestra consola de comandos y ejecutamos el comando translate
para que nuestras traducciones se ejecuten.
python manage.py translate
Si todo está correcto, deberías ver algo como esto:
Si necesitas traductir a un solo idioma específico, puedes hacerlo con la opción --locale
de la siguiente manera:
python manage.py translate --locale es
Las traducciones se almacenarán en la carpeta locale
.
.
├── db.sqlite3
├── django_tutorial
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── locale
│ ├── en
│ │ └── LC_MESSAGES
│ │ ├── django.po
│ │ └── django.po
│ └── es
│ └── LC_MESSAGES
│ ├── django.mo
│ └── django.po
├── manage.py
└── templates
Estamos aquí para ayudarte
Si tienes alguna pregunta, necesitas ayuda o quieres contribuir, no dudes en contactarme. Estoy a tu disposición para apoyarte en lo que necesites.
- Sitio web: neiderruiz.com
- GitHub: @neiderruiz
- Twitter: @neiderruiz
- YouTube: Neider Ruiz
Apoya el Proyecto
Si este proyecto te ha sido útil, te invito a invitarme un café. Tu apoyo me ayuda a seguir mejorando y creando contenido de valor. ¡Gracias por estar aquí! ☕
¿Como añadir traducciones?
Añadir traducciones en nuestras plantillas es muy sencillo y rápido.
- Vamos a crear una plantilla básica
touch templates/base.html
Explicare parte por parte la estructura de nuestra plantilla y depsues dejare del archivo completo.
#{{ importamos `i18n` para poder usar las traducciones}}
{% load i18n %}
<!DOCTYPE html>
#{{ obtenemos el idioma actual y los idiomas disponibles}}
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
#{{ definimos el idioma actual}}
<html lang="{{ LANGUAGE_CODE }}">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}Translate Projects{% endblock %}</title>
</head>
<body>
- Añadimos el formulario para cambiar el idioma
<body>
{% comment %} Formulario basico para cambiar idioma {% endcomment %}
<form method="post" action="{% url 'set_language' %}">
{% csrf_token %}
{% for code, name in LANGUAGES %}
<input
type="radio"
name="language"
value="{{ code }}"
{% if code == LANGUAGE_CODE %}checked{% endif %}
>
{{ name }}
{% endfor %}
<input type="submit" value="Submit">
</form>
- Añadimos los textos que necesitamos traducir con la función
trans
.
{% comment %} Traducciones {% endcomment %}
<h1>{% trans "Mi primera traducción" %}</h1>
<h2>{% trans "Este es un texto traducido, siguenos en YouTube!" %}</h2>
</body>
</html>
Ejemplo completo
- Vamos a añadir lo siguiente a nuestra plantilla
{% load i18n %}
<!DOCTYPE html>
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
<html lang="{{ LANGUAGE_CODE }}">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}Translate Projects{% endblock %}</title>
</head>
<body>
{% comment %} Formulario basico para cambiar idioma {% endcomment %}
<form method="post" action="{% url 'set_language' %}">
{% csrf_token %}
{% for code, name in LANGUAGES %}
<input
type="radio"
name="language"
value="{{ code }}"
{% if code == LANGUAGE_CODE %}checked{% endif %}
>
{{ name }}
{% endfor %}
<input type="submit" value="Submit">
</form>
{% comment %} Traducciones {% endcomment %}
<h1>{% trans "Mi primera traducción" %}</h1>
<h2>{% trans "Este es un texto traducido, siguenos en YouTube!" %}</h2>
</body>
</html>
Ejecutamos la creación de traducciones
Ejecutamos la creación de traducciones para que nuestras traducciones se realicen.
python manage.py translate
Si todo está correcto, deberías ver algo como esto nuevamente.
Resultado de nuestras traducciones
Este seria nuestro resultado de nuestra web