Naar inhoud gaan
Django i18n

Django i18n: Ingebouwde vertaalfunctie voor Python-webapps

Django wordt geleverd met een volledig internationaliseringsframework op basis van GNU gettext. Markeer strings voor vertaling in views, models en templates met behulp van gettext-functies en template-tags. Django compileert .po-bestanden naar .mo-binaries voor snel opzoeken, en de middleware activeert automatisch de juiste locale op basis van URL-prefixes, cookies of browserheaders.

Django i18n-functies

Integratie van GNU gettext met de vertaalfuncties _() en gettext_lazy()
De workflow voor .po/.mo-bestanden met de opdrachten `makemessages` en `compilemessages`
Sjabloontags {% trans %} en {% blocktrans %} voor vertalingen binnen sjablonen
Ondersteuning voor vervoeging met ngettext en {% blocktrans count %}
Lazy-vertaling met gettext_lazy() voor modelvelden en formulierlabels
LocaleMiddleware voor automatische taaldetectie op basis van URL’s, cookies en headers
i18n_patterns voor URL-routing met een taalcode als voorvoegsel (bijv. /en/about, /fr/about)
Lokalisatie van formulier- en modelvelden voor datums, getallen en valuta’s
Tijdzone-bewuste verwerking van datum- en tijdgegevens met USE_TZ en pytz-integratie

Django i18n in de praktijk

Gebruik de gettext-functies in Views en ngettext voor meervoudsvormen, en configureer vervolgens LANGUAGES in settings.py om de ondersteunde taalversies te definiëren.

# views.py
from django.utils.translation import gettext as _
from django.utils.translation import ngettext

def welcome(request):
    output = _("Welcome to our site")
    count = 5
    output += ngettext(
        "%(count)d item",
        "%(count)d items",
        count
    ) % {"count": count}
    return HttpResponse(output)

# settings.py
LANGUAGE_CODE = 'en'
USE_I18N = True
LANGUAGES = [
    ('en', 'English'),
    ('fr', 'French'),
    ('de', 'German'),
]

Begin vandaag nog met het lokaliseren van Django

Beheer de vertalingen van uw Django .po-bestanden met AI-gestuurde workflows, CLI-synchronisatie en CDN-levering binnen 50 ms.