Metadata-Version: 2.1 Name: django-statici18n Version: 2.5.0 Summary: A Django app that compiles i18n JavaScript catalogs to static files. Home-page: http://django-statici18n.readthedocs.org/ Author: Sebastien Fievet Author-email: zyegfryed@gmail.com License: BSD Project-URL: Source, https://github.com/zyegfryed/django-statici18n Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Web Environment Classifier: Framework :: Django Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 License-File: LICENSE Requires-Dist: Django >=3.2 Requires-Dist: django-appconf >=1.0 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 3.2 (LTS), 4.1, 4.2 series. Installation ------------ 1. Use your favorite Python packaging tool to install ``django-statici18n`` from `PyPI`_, e.g.:: pip install django-statici18n 2. Add ``'statici18n'`` to your ``INSTALLED_APPS`` setting:: INSTALLED_APPS = [ # ... 'statici18n', ] 3. Once you have `translated`_ and `compiled`_ your messages, use the ``compilejsi18n`` management command:: python manage.py compilejsi18n 4. Add the `django.core.context_processors.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', }, }, }, ] 5. 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`_. 5. Edit your template(s) and use the provided template tag: .. code-block:: html+django {% load statici18n %} 6. 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/4.2/topics/i18n/translation/#message-files .. _compiled: https://docs.djangoproject.com/en/4.2/topics/i18n/translation/#compiling-message-files .. _django.core.context_processors.i18n: https://docs.djangoproject.com/en/4.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/4.2/topics/i18n/translation/#using-the-javascript-translation-catalog .. _django.contrib.staticfiles: https://docs.djangoproject.com/en/4.2/ref/contrib/staticfiles/