Django Internationalization (i18n)


1. Set the Language Header

def set_language(request):
    language = request.GET.get('lang', 'en')
    if language in SUPPORTED_LANGUAGES:
        request.session['lang'] = language
    else:
        request.session['lang'] = DEFAULT_LANGUAGE

2. Get the Language from the Session

def get_language(request):
    language = request.session.get('lang', DEFAULT_LANGUAGE)
    return language

3. Load the Translation

from django.utils import translation

def load_translation(language):
    translation.activate(language)
    translation.load_paths('your-translation-path')

4. Set the Language Directive in the Template


<div data-gb-custom-block data-tag="load" data-0='18' data-1='8'></div>

<div data-gb-custom-block data-tag="get_current_language"></div>

<html lang="{{ LANGUAGE_CODE }}">

5. Translate a String

6. Translate a Contextual String

7. Translate a Plural String

8. Translate a Template Variable

9. Translate a Template Block

10. Translate a Template Literal

11. Translate a Model Field

12. Translate a Model Choice

13. Translate a Form Field

14. Translate a Form Widget

15. Translate a Form Error

16. Translate a Template Filter

17. Translate a Template Tag

18. Translate a Template Variable

19. Translate a Template Block

20. Translate a Template Literal

21. Translate a Model Field

22. Translate a Model Choice

23. Translate a Form Field

24. Translate a Form Widget

25. Translate a Form Error

26. Translate a Template Filter

27. Translate a Template Tag

28. Translate a URL

29. Translate a Middleware

30. Translate a Context Processor

31. Translate a Formset

32. Translate a ModelFormSet

33. Translate a ModelAdmin

34. Translate a ModelViewSet

35. Translate a DRF Serializer

36. Translate a WSGI Application