TranslationsΒΆ

This module offers functions and abstract base classes that can be used to store translated models. There isn’t much magic going on here.

Usage example:

class News(models.Model, TranslatedObjectMixin):
    active = models.BooleanField(default=False)
    created = models.DateTimeField(default=datetime.now)


class NewsTranslation(Translation(News)):
    title = models.CharField(max_length=200)
    body = models.TextField()

Print the titles of all news entries either in the current language (if available) or in any other language:

for news in News.objects.all():
    print news.translation.title

Print all the titles of all news entries which have an english translation:

from django.utils import translation
translation.activate('en')
for news in News.objects.filter(translations__language_code='en'):
    print news.translation.title
class feincms.translations.TranslatedObjectManager

This manager offers convenience methods.

TranslatedObjectManager.only_language(language=<function short_language_code at 0x9f7a144>)

Only return objects which have a translation into the given language.

Uses the currently active language by default.

class feincms.translations.TranslatedObjectMixin

Mixin with helper methods.

TranslatedObjectMixin.get_translation_cache_key(language_code=None)

Return the cache key used to cache this object’s translations so we can purge on-demand

feincms.translations.Translation(model)

Return a class which can be used as inheritance base for translation models

feincms.translations.admin_translationinline(model, inline_class=<class 'django.contrib.admin.options.StackedInline'>, **kwargs)

Returns a new inline type suitable for the Django administration:

from django.contrib import admin
from myapp.models import News, NewsTranslation

admin.site.register(News,
    inlines=[
        admin_translationinline(NewsTranslation),
        ],
    )
feincms.translations.is_primary_language(language=None)

Returns true if current or passed language is the primary language for this site. (The primary language is defined as the first language in settings.LANGUAGES.)

feincms.translations.short_language_code(code=None)

Extract the short language code from its argument (or return the default language code).

>>> from django.conf import settings
>>> short_language_code('de')
'de'
>>> short_language_code('de-at')
'de'
>>> short_language_code() == short_language_code(settings.LANGUAGE_CODE)
True

Previous topic

Template tags

Next topic

Utilities

This Page