Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zyegfryed/django-statici18n
A Django app that compiles i18n JavaScript catalogs to static files.
https://github.com/zyegfryed/django-statici18n
catalog django i18n python python3
Last synced: 4 days ago
JSON representation
A Django app that compiles i18n JavaScript catalogs to static files.
- Host: GitHub
- URL: https://github.com/zyegfryed/django-statici18n
- Owner: zyegfryed
- License: other
- Created: 2012-04-02T15:05:48.000Z (almost 13 years ago)
- Default Branch: main
- Last Pushed: 2024-11-28T09:03:26.000Z (2 months ago)
- Last Synced: 2025-01-22T11:01:47.527Z (11 days ago)
- Topics: catalog, django, i18n, python, python3
- Language: Python
- Homepage: https://django-statici18n.readthedocs.io
- Size: 386 KB
- Stars: 66
- Watchers: 4
- Forks: 25
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
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-statici18nOverview
--------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-statici18nSupported 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.0 and 5.1 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 %}
{% inlinei18n LANGUAGE_CODE %}.. _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/