Skip to main content

I18n django reusable app

Project description

Overview
========
Django's field that stores labels in more than one language in database.

Just working on newforms-admin branch.

Installing and using
====================
Installation Download, unpack and copy files to ${PYTHON_PATH}/site-packages/transdb (or anywhere else if you know what you're doing)

Create your models:

from transdb import TransCharField, TransTextField
[...]

class MyModel(models.Model):
[...]
my_char_field = TransCharField(max_length=32)
my_text_field = TransTextField()
If you need to use in models in a more advanced way:

from transdb import TransDbField
from django.conf import settings
from django.utils.translation import get_language
from django.template.defaultfilters import slugify
[...]

class MyModel(models.Model):
[...]
my_char_field = TransCharField(max_length=32)
my_text_field = TransTextField()
slug_field = models.SlugField(editable=False)

def __unicode__(self):
return self.my_char_field

def save(self):
self.slug_field = slugify(self.my_char_field.get_in_language(settings.LANGUAGE_CODE))
super(MyModel, self).save()
[...]
Use as any other field in templates:

[...]
<p>{{ object.my_field }}</p>
[...]
And that's all, enjoy!

Serialization
==============
Due to technical reasons, serialization on models with TransDb fields has some specific restrictions.

Django comes with two serialization formats, xml and json.

TransDb requires two diferent methods when serializing, one that serializes information for all languages (for example for saving data as fixture). Other method should just return the current language (serialization for ajax processing).

Probably will change in the future, but now TransDb applies a method depending on the format, so

Use xml format for including all languages in serialization objects (and use TransDb serializer, see below).
User json format for returning just the current language in serialization objects.
For using TransDb serializer add next lines to your settings.py file:

SERIALIZATION_MODULES = {
'xml': 'transdb.xml_serializer',
}

Migration from non-translatable fields (and previous versions of TransDb)
========================================================================
There is a wiki page MigrationProcedure http://code.google.com/p/transdb/wiki/MigrationProcedure that covers this subject.

Techincal information
=====================
Internally data is stored in database as a string in dictionary format, for example:

u'{u'en': u'This is english', u'ca': u'Other lang .. '}'
Field uses a subclass of unicode class, adding a raw_data attribute to store the string with all languages, and implementing the get_in_language(language) method to allow access to a diferent language (diferent from the user's current language).

Known issues
===================
See the list in http://code.google.com/p/transdb/issues/list

Project details


Release history Release notifications | RSS feed

This version

0.9

Download files

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

Source Distribution

transdb-0.9.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

transdb-0.9-py2.5.egg (12.6 kB view details)

Uploaded Egg

File details

Details for the file transdb-0.9.tar.gz.

File metadata

  • Download URL: transdb-0.9.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for transdb-0.9.tar.gz
Algorithm Hash digest
SHA256 c44534f5cfe1889a062c3fe4ba457f91cbf0e1a95eabc2fd92d71a2958b2ef08
MD5 d60b8b6cf19070e7f8ca6d85c3c90e71
BLAKE2b-256 ccd4ed2a6b0d1c404a1d89847b23127555137ec765d41a92568bd9730157ee39

See more details on using hashes here.

File details

Details for the file transdb-0.9-py2.5.egg.

File metadata

  • Download URL: transdb-0.9-py2.5.egg
  • Upload date:
  • Size: 12.6 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for transdb-0.9-py2.5.egg
Algorithm Hash digest
SHA256 894a1590b86e1074807ee19ac1c62f645702389a380ae74b58f37326fdeb80fc
MD5 e80d1cd8aaf7e71ed6ada7fb9be84d47
BLAKE2b-256 a2ea3daf54bd4f84e4da2a54fab3c41d25489b612c2728fe1447b677b2ac787c

See more details on using hashes here.

Supported by

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