Traducción

Traducción de los textos de la aplicación (código python)

from django.http import HttpResponse
from django.utils.translation import gettext as _

def my_view(request):
    output = _("Welcome to my site.")
    return HttpResponse(output)

Ayuda de traducción

def my_view(request):
    # Translators: This message appears on the home page only
    output = gettext("Welcome to my site.")

Pluralización

from django.utils.translation import ngettext

def my_view(request):
    output = ngettext(
        "There is %(count)s person in this room.",
        "There are %(count)s people in this room.",
        count
    ) % {'count': count}
    return HttpResponse(output)

Marcadores de contexto

from django.utils.translation import pgettext

month = pgettext("month name", "May")

Lazy translation

from django.db import models
from django.utils.translation import gettext_lazy as _

class MyThing(models.Model):
    name = models.CharField(help_text=_('This is the help text'))

En plantillas

{% load i18n %}

<title>{% translate "This is the title." %}</title>
<title>{% translate myvar %}</title>

{% blocktranslate %}This string will have {{ value }} inside.{% endblocktranslate %}

Proceso:

  • Creación de directorio locale en las aplicaciones si no existe.
  • Creación de ficheros de cadenas (ficheros .po): django-admin makemessages -l es
  • Traducción (poedit)
  • Generación de ficheros binarios (ficheros .mo): django-admin compilemessages
Última modificación November 15, 2022: update (1ef9315)