zyegfryed
django-statici18n
Python

A Django app that compiles i18n JavaScript catalogs to static files.

Last updated Mar 15, 2026
67
Stars
24
Forks
0
Issues
0
Stars/day
Attention Score
28
Language breakdown
Python 98.7%
HTML 1.1%
JavaScript 0.2%
โ–ธ Files click to expand
README

django-statici18n =================

.. image:: https://github.com/zyegfryed/django-statici18n/actions/workflows/build.yml/badge.svg?branch=main :alt: Build Status :target: https://github.com/zyegfryed/django-statici18n/actions

.. image:: https://codecov.io/gh/zyegfryed/django-statici18n/branch/main/graph/badge.svg?token=xiaDYAr30F :target: https://codecov.io/gh/zyegfryed/django-statici18n

Overview


When dealing with internationalization in JavaScript code, Django provides the JSONCatalog view_ which sends out a JavaScript code library with functions that mimic the gettext interface, plus an array of translation strings.

At first glance, it works well and everything is fine. But, because JSONCatalog view_ is generating JavaScript catalog dynamically on each and every request, it's adding an overhead_ that can be an issue with site growth.

That's what `django-statici18n is for:

Collecting JavaScript catalogs from each of your Django apps (and any other place you specify) into a single location that can easily be served in production.

The main website for django-statici18n is github.com/zyegfryed/django-statici18n_ where you can also file tickets.

.. _JSONCatalog view: https://docs.djangoproject.com/en/3.2/topics/i18n/translation/#the-jsoncatalog-view .. _adding an overhead: https://docs.djangoproject.com/en/3.2/topics/i18n/translation/#note-on-performance .. _github.com/zyegfryed/django-statici18n: https://github.com/zyegfryed/django-statici18n

Supported Django Versions


django-statici18n works with all the Django versions officially supported by the Django project. At this time of writing, these are the 4.2 (LTS), 5.2 (LTS) and 6.0 series.

Installation


  • Use your favorite Python packaging tool to install django-statici18n
from PyPI_, e.g.::

pip install django-statici18n

  • Add 'statici18n' to your INSTALLED_APPS setting::
INSTALLED_APPS = [ # ... 'statici18n', ]
  • Once you have translated and compiled your messages, use the
compilejsi18n management command::

python manage.py compilejsi18n

  • Add the django.core.contextprocessors.i18n context processor to the
context_processors section for your backend in the TEMPLATES setting - it should have already been set by Django::

TEMPLATES = [ { # ... 'OPTIONS': { 'context_processors': { # ... 'django.template.context_processors.i18n', }, }, }, ]

  • Edit your template(s) and replace the dynamically generated script_ by the
statically generated one:

.. code-block:: html+django

.. note::

By default, the generated catalogs are stored to STATIC_ROOT/jsi18n. You can modify the output path and more options by tweaking django-statici18n settings.

(Optional)

The following step assumes you're using django.contrib.staticfiles`_.

  • Edit your template(s) and use the provided template tag:
.. code-block:: html+django

{% load statici18n %}

  • Or inline the JavaScript directly in your template:
.. code-block:: html+django

{% load statici18n %}

.. _PyPI: http://pypi.python.org/pypi/django-statici18n .. _translated: https://docs.djangoproject.com/en/5.2/topics/i18n/translation/#message-files .. _compiled: https://docs.djangoproject.com/en/5.2/topics/i18n/translation/#compiling-message-files .. django.core.contextprocessors.i18n: https://docs.djangoproject.com/en/5.2/ref/templates/api/#django-template-context-processors-i18n .. _Upgrading templates to Django 1.8: https://docs.djangoproject.com/en/2.2/ref/templates/upgrading/ .. _dynamically generated script: https://docs.djangoproject.com/en/5.2/topics/i18n/translation/#using-the-javascript-translation-catalog .. _django.contrib.staticfiles: https://docs.djangoproject.com/en/5.2/ref/contrib/staticfiles/

ยฉ 2026 GitRepoTrend ยท zyegfryed/django-statici18n ยท Updated daily from GitHub