Skip to content

trojjer/django-statici18n

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

django-statici18n

A Django app that provides helper for generating JavaScript catalog to static files.

When dealing with internationalization in JavaScript code, Django provides the javascript_catalog 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 javascript_catalog view is generating JavaScript catalog dynamically on each 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.

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

By default, the generated catalogs are stored to static/jsi18n. You can modify it with the django-statici18n settings.

(Optionnal)

The following steps assumes you're using either django.contrib.staticfiles or django-staticfiles.

Note

Although the usage of django.contrib.staticfiles or django-staticfiles is not required, django-statici18n really shines when used with those apps.

  • Add the django.core.context_processors.i18n context processor to your TEMPLATE_CONTEXT_PROCESSORS setting - already set by Django by default:

    TEMPLATE_CONTEXT_PROCESSORS = (
      # ...
      'django.core.context_processors.i18n',
    )
  • Edit your templates and replace either the dynamically generated script by the statically generated one like this:

    <script src="{{ STATIC_URL }}jsi18n/{{ LANGUAGE_CODE }}/djangojs.js"></script>

    or use the provided template tag like this:

    {% load statici18n %}
    <script src="{% statici18n LANGUAGE_CODE %}"></script>

About

A Django app that provides helper for generating Javascript catalog to static files.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 82.2%
  • Shell 17.8%