Aprenda cómo hacer fácilmente la traducción y localización en Django, el popular framework web de Python.
Este tutorial le dará una breve introducción sobre cómo comenzar con el proceso de localización de Django. Parte de esto se puede aplicar fácilmente a la localización general de Python.
Suponemos que tiene una aplicación Django en funcionamiento y que ha instalado gettext (por ejemplo, a través de pip install gettext ).
Configuración básica
Supongamos que tiene un proyecto de Django llamado mysite y una aplicación llamada polls . La estructura de su proyecto debería verse así:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | / manage.py mysite/ __init__.py settings.py urls.py wsgi.py polls/ migrations/ __init__.py admin.py models.py tests.py views.py |
El primer paso es asegurarse de haber activado la internacionalización en su configuración. Para hacer esto, debe realizar los siguientes cambios en mysite/settings.py :
1 2 3 4 5 6 | # mysite/settings.py LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True |
Internacionalizar Plantillas
Luego debe marcar todas las cadenas que deben traducirse. Suponga que tiene el siguiente archivo de plantilla polls/templates/polls/index.html
1 2 3 | <!-- polls/templates/polls/index.html --> <h1>Welcome to our site!</h1> <p>Here you find polls.</p> |
Este archivo necesita ser adaptado para verse así:
1 2 3 4 | <!-- polls/templates/polls/index.html --> {% load i18n %} <h1>{% trans 'WelcomeHeading' %}</h1> <p>{% trans 'WelcomeMessage' %}</p> |
Entonces importamos el paquete de localización y reemplazamos todos los textos con trans ‘SomeTranslationKeyName’ . Alternativamente, puede usar el texto de traducción predeterminado como la clave de traducción. De esta manera, siempre tendrá un buen texto predeterminado, si no hay traducción disponible para la clave en particular.
Internacionalización en Python
Cuando desee localizar cadenas dentro de su código de Python (por ejemplo, dentro de polls/views.py ), debe importar la función ugettext . Es normal alias a _ . Entonces una simple función de vista localizada se vería así
1 2 3 4 5 6 | # polls/views.py from django.http import HttpResponse from django.utils.translation import ugettext as _ def index(request): output = _('StatusMsg') return HttpResponse(output) |
Creando Archivos de Traducción
Ahora tenemos que crear los archivos de traducción para cada configuración regional que queramos admitir. Para hacer esto, cree el directorio polls/locale y dentro del directorio ejecute polls :
1 | $ django-admin makemessage -l de |
Puede reemplazar de con el código local del idioma que desea agregar. En nuestro ejemplo, este comando creará el archivo gettext polls/locale/de/LC_MESSAGES/django.po con el contenido:
1 2 3 4 5 6 7 8 | # polls/locale/de/LC_MESSAGES/django.po ... #: templates/polls/index.html:3 msgid "WelcomeHeading" msgstr "Willkommen auf unserer Seite!" #: templates/polls/index.html:4 msgid "WelcomeMessage" msgstr "Hier findet Ihr Umfragen." |
Cuando haya terminado de traducir, debe compilar todo ejecutando lo siguiente:
1 | $ django-admin compilemessages |
Nuevamente, esto se ejecuta dentro de las polls directorio. Para verificar rápidamente que sus traducciones funcionan, debe cambiar el código de idioma dentro de mysite/settings.py manera
1 2 | # mysite/settings.py LANGUAGE_CODE = 'de' |
Cuando abra la aplicación de encuestas dentro del navegador, ahora debería traducirse al alemán.
Documentación Oficial
Si desea obtener más información sobre la internacionalización en Django, consulte la documentación oficial.
Este artículo se encuentra basado en A Quick Guide to Django I18n.