Package: django-translator
Translator is an app for collecting translations for specified keys in django admin.Quick startInstall django-translator:pip installdjango-translatorAdd “translator, taggit, modeltranslation” to your INSTALLED_APPS setting. Please note thatmodeltranslationneeds to be beforedjango.contrib.admin:INSTALLED_APPS = (
'modeltranslation',
'django.contrib.admin',
...
'taggit',
'translator',
)You have to set the migrations folder for the translator, because we have to add migrations for the set languages.  Add the following to your settings file:MIGRATION_MODULES = {
    'translator': 'my_project.translator_migrations',
}Create atranslator_migrationspython package in your project folder (where your settings.py usually is).Runpython manage.py makemigrations translatorto create the translator models based on the languages you specified in your settings file.Runpython manage.py migrateto migrate the translator models to your database.If you intend to use it in the templates, add ‘translator.context_processors.translator’ to TEMPLATE_CONTEXT_PROCESSORSTEMPLATE_CONTEXT_PROCESSORS = (
       ...
   'translator.context_processors.translator',
)Create translation keys in your templates and models.Examples:Template:{{ translator.a_key }}models.py:from translator.util import translator_lazy as _
...

class Product(models.Model):
    name = models.TextField(verbose_name=_('a_key'))Visit the templates. The keys get collected lazy.Translate the keys in the admin.You can disable the translator by setting DJANGO_TRANSLATOR_ENABLED to False.Use a double underscore in your translation keys to make use of the filter in the admin (e.g. “header__title” creates a filter called “header”). If you need another separator, set it as DJANGO_TRANSLATOR_CATEGORY_SEPARATOR in your setting file.Custom ModelsIf you find yourself in a situation where you need to use the features of django-translator in a second isolated model, feel free to add one:Create a new model in your app:from translator.models import TranslationBase

class MyCustomTranslation(TranslationBase):
    passCreate a new filetranslation.pyand register your model for modeltranslation support:from modeltranslation.translator import translator, TranslationOptions
from myapp.models import MyCustomTranslation

class MyCustomTranslationOptions(TranslationOptions):
    fields = ('description',)

translator.register(MyCustomTranslation, MyCustomTranslationOptions)Add a django admin inadmin.py:from django.contrib import admin
from translator.admin import TranslationAdministration
from myapp.models import MyCustomTranslation

@admin.register(MyCustomTranslation)
class CustomTranslationAdmin(TranslationAdministration):
    passAdd your model to your settings file:DJANGO_TRANSLATOR_MODELS = {
    'custom_translation': 'myapp.models.MyCustomTranslation',
}Create translation keys in your templates and models.Examples:Template:{{ custom_translation.a_key }}models.py:from myapp.util import custom_translation_lazy
...

class Product(models.Model):
    name = models.TextField(verbose_name=translator_lazy('a_key', 'custom_translation'))SettingsCustomize the translator in your settings.py file with these settings:DJANGO_TRANSLATOR_CACHE_TIMEOUT = timeout in seconds, if not set defaults to DEFAULT_TIMEOUT, which is either the CACHES['TIMEOUT'] setting or 300 (5 minutes)Project Homehttps://github.com/dreipol/django-translatorPyPihttps://pypi.python.org/pypi/django-translator