Skip to main content

Generate a random date from range given.

Project description

Package

django-slim

Description

Simple implementation of multi-lingual models for Django. Django-admin integration works out of the box.

Installation

  1. Install latest stable version from pypi:

    $ pip install django-slim

  2. Add slim to INSTALLED_APPS of you settings module.

Usage and examples

We have an imaginary example app.

settings.py

>>> INSTALLED_APPS = (
>>>     # ...
>>>     'slim',
>>>     # ...
>>> )
>>> LANGUAGES = (
>>>     ('en', gettext("English")), # Main language!
>>>     ('am', gettext("Armenian")),
>>>     ('nl', gettext("Dutch")),
>>>     ('ru', gettext("Russian")),
>>> )

example/models.py

>>> from django.db import models
>>>
>>> from slim import LanguageField
>>>
>>> class FooItem(models.Model):
>>>     title = models.CharField(_("Title"), max_length=100)
>>>     body = HTMLField(_("Body"))
>>>     language = LanguageField()

example/admin.py

>>> from django.contrib import admin
>>>
>>> from slim.admin import SlimAdmin
>>>
>>> class FooItemAdmin(SlimAdmin):
>>>     list_display = ('title',)
>>>     fieldsets = (
>>>         (None, {
>>>             'fields': ('title', 'body')
>>>         }),
>>>     )
>>>
>>> admin.site.register(FooItem, FooItemAdmin)

example/views.py

We assume that language code is kept in the request object (django-localeurl behaviour, which you’re advised to use).

>>> from slim import get_language_from_request
>>>
>>> from example.models import FooItem
>>>
>>> def browse(request, template_name='foo/browse.html'):
>>>     language = get_language_from_request(request)
>>>     queryset = FooItem._default_manager.filter(language=language)
>>>
>>>     # The rest of the code

More on ORM filtering

>>> from example.models import FooItem
>>> foo = FooItem._default_manager.all()[0]
<FooItem: Lorem ipsum>

Let’s assume, we have such record and it has been translated to Armenian (am) and Dutch (nl). Original translation is named Lorem ipsum. Other translations have the language code appended to the title.

>>> armenian_foo = foo.get_translation_for('am')
<FooItem: Lorem ipsum AM>
>>> dutch_foo = foo.get_translation_for('nl')
<FooItem: Lorem ipsum NL>

If we have a translated object, we can always get the main translation.

>>> armenian_foo.original_translation == foo
True

All available translations for foo:

>>> foo.available_translations.all()
[<FooItem: Lorem ipsum AM>, <FooItem: Lorem ipsum NL>]

All available translations for Armenian foo.

>>> armenian_foo.available_translations.all()
[<FooItem: Lorem ipsum>, <FooItem: Lorem ipsum NL>]

See https://bitbucket.org/barseghyanartur/django-slim/src (example) directory for a working example.

License

GPL 2.0/LGPL 2.1

Support

For any issues contact me at the e-mail given in the Author section.

Author

Artur Barseghyan <artur.barseghyan@gmail.com>

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-slim-0.1.tar.gz (9.3 kB view hashes)

Uploaded Source

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