About JSON Out of a Dictionary with Lazy Strings

Use DjangoJSONEncoder to support lazy translations while converting a dictionary to JSON:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# greetings/views.py
import json
from django.shortcuts import render
from django.core.serializers.json import DjangoJSONEncoder
from django.utils.translation import gettext_lazy as _

TRANSLATIONS = {
    "Good afternoon": _("Good afternoon!"),
    "Good evening": _("Good evening!"),
    "Good night": _("Good night!"),
}

def greetings(request):
    context = {
        "translations_json": json.dumps(
            TRANSLATIONS, cls=DjangoJSONEncoder
        ),
    }
    return render(request, "greetings/greetings.html", context)

Tips and Tricks Programming Django 4.x Django 3.2 Django 2.2 Python 3