Skip to main content

A Django app which provides support for model translation.

Project description

https://travis-ci.com/perplexionist/django-translations.svg?branch=master

Translations app provides an easy, efficient and modular way of translating django models.

Requirements

  • Python (>=3.5)

  • Django (1.11, >=2.0)

Installation

  1. Install Translations using PIP (use --pre, still in development):

    $ pip install --pre django-translations
  2. Add 'translations' to INSTALLED_APPS in the settings of your Django project:

    INSTALLED_APPS += [
        'translations',
    ]
  3. Run migrate:

    $ python manage.py migrate
  4. Make sure django internationalization settings are set correctly:

    USE_I18N = True          # use internationalization
    USE_L10N = True          # use localization
    
    MIDDLEWARE += [          # locale middleware
        'django.middleware.locale.LocaleMiddleware',
    ]
    
    LANGUAGE_CODE = 'en-us'  # fallback language
    LANGUAGES = (            # supported languages
        ('en', 'English'),
        ('de', 'German'),
    )

Basic Usage

Model

Inherit Translatable in any model you want translated:

from translations.models import Translatable

class Continent(Translatable):
    ...

class Country(Translatable):
    ...

class City(Translatable):
    ...

No Migrations needed afterwards!

Query

Use the queryset extensions:

>>> continents = Continent.objects.prefetch_related(
...     'countries',
...     'countries__cities',
... ).apply_translations(
...     'countries',
...     'countries__cities',
...     lang='de'
... )
>>> continents[0].name
Europa
>>> continents[0].countries.all()[0].name
Deutschland

This does Only One Query for the queryset and relations translations!

Admin

Use the admin extensions:

from django.contrib import admin
from translations.admin import TranslatableAdmin, TranslationInline

from .models import Continent

class ContinentAdmin(TranslatableAdmin):
    inlines = [TranslationInline,]

admin.site.register(Continent, ContinentAdmin)

This provides admin inlines for the translations of the model.

Documentation

For more interesting capabilities browse through the documentation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-translations-1.0.0a3.tar.gz (17.8 kB view hashes)

Uploaded Source

Built Distribution

django_translations-1.0.0a3-py3-none-any.whl (20.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page