My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members

Provides support for multilingual fields.

The goal of this project is to Keep It Simple (Stupid!) ( http://en.wikipedia.org/wiki/Keep_it_simple_stupid ) so there is only 33lines of code (excluding the comments).

Example:

models.py

    from django.db import models
    from multiling import MultilingualModel
    
    class Language(models.Model):
        code = models.CharField(max_length=5)
        name = models.CharField(max_length=16)
        
    class BookTranslation(models.Model):
        language = models.ForeignKey("Language")
        title = models.CharField(max_length=32)
        description = models.TextField()
        model = models.ForeignKey("Book")
        
    class Book(MultilingualModel):
        ISBN = models.IntegerField()
        
        class Meta:
            translation = BookTranslation
            multilingual = ['title', 'description']
>>> lang_en = Language(code="en", name="English")
>>> lang_en.save()
>>> lang_pl = Language(code="pl", name="Polish")
>>> book = Book(ISBN="1234567890")
>>> book.save()
>>> book_en = BookTranslation()
>>> book_en.title = "Django for Dummies"
>>> book_en.description = "Django described in simple words."
>>> book_en.model = book
>>> book_en.save()
>>> book_pl = BookTranslation()
>>> book_pl.title = "Django dla Idiotow"
>>> book_pl.description = "Django opisane w prostych slowach"
>>> book_pl.model = book
>>> book_pl.save()
>>> 
>>> # now here comes the magic
>>> book.title_en
u'Django for Dummies'
>>> book.description_pl
u'Django opisane w prostych slowach'

To have it interated with Django Admin nicely, try this:

admin.py

from django.contrib import admin
import models

class BookTranslationInline(admin.StackedInline):
   model = models.BookTranslation
   extra = 1
   min_num = 1


class BookAdmin(admin.ModelAdmin):
   list_display = ["ISBN"]
   inlines = [BookTranslationInline]

admin.site.register(models.Book, BookAdmin)
Powered by Google Project Hosting