Skip to main content

django-klingon is an attempt to make django model translation suck but with no integrations pain in your app!

Project description

django-klingon
========================


.. image:: https://coveralls.io/repos/angvp/django-klingon/badge.png?branch=master
:target: https://coveralls.io/r/angvp/django-klingon?branch=master

.. image:: https://travis-ci.org/angvp/django-klingon.svg?branch=master
:target: http://travis-ci.org/angvp/django-klingon

.. image:: https://readthedocs.org/projects/django-klingon/badge/?version=latest
:target: https://readthedocs.org/projects/django-klingon/?badge=latest
:alt: Documentation Status

.. image:: https://codeclimate.com/github/angvp/django-klingon/badges/gpa.svg
:target: https://codeclimate.com/github/angvp/django-klingon
:alt: Code Climate


Welcome to the documentation for django-klingon!

django-klingon is an attempt to make django model translations suck
but with no integrations pain in your app!

Setup & Integration
------------------------------------

In your settings files:
add django-klingon to INSTALLED_APPS::

INSTALLED_APPS = (
...
'klingon',
...
)

specify a default language if you want to use your fields to store the
default language::

KLINGON_DEFAULT_LANGUAGE = 'en'

Extend you models to add API support:
first add Translatable to your model Class definition. This will add the
API functions::

from klingon.models import Translatable
...
class Book(models.Model, Translatable):
...

in the same model add an attribute to indicate which fields will be
translatables::

...
translatable_fields = ('title', 'description')
...

your model should look like this::

class Book(models.Model, Translatable):
title = models.CharField(max_length=100)
description = models.TextField()
publication_date = models.DateField()

translatable_fields = ('title', 'description')


Add admin capabilities:
______________________

you can include an inline to your model admin and a custom action
to create the translations. To do this in your ModelAdmin class do
this::

from klingon.admin import TranslationInline, create_translations
...
class BookAdmin(admin.ModelAdmin):
...
inlines = [TranslationInline]
actions = [create_translations]

* see full example in example_project folder of source code of klingon


Using Specific Widgets in the TranslationInline form of the admin:
________________________________________________

You can specify the widget to be use on an inline form by passing a dictionary to TranslationInlineForm.
So, you might want to extend the TranslationInline with a new form that will a "widgets" dictionary,
where you can specify the widget that each filds has to use, for example::

class RichTranslationInlineForm(TranslationInlineForm):
widgets = {
'CharField': forms.TextInput(attrs={'class': 'klingon-char-field'}),
'TextField': forms.Textarea(attrs={'class': 'klingon-text-field'}),
}

class RichTranslationInline(TranslationInline):
form = RichTranslationInlineForm

and then you just simply use the RichTranslationInline class on your AdminModels, for example::

class BookAdmin(admin.ModelAdmin):
inlines = [RichTranslationInline]

* see full example in example_project folder of source code of klingon

Using the API
------------------------------------

To create the translation you can do the follwing:

Suppose that you have and object called book::

> book = Book.objects.create(
title="The Raven",
description="The Raven is a narrative poem",
publication_date=datetime.date(1845, 1, 1)
)

you can create translation for that instances like this::

> book.set_translation('es', 'title', 'El Cuervo')
> book.set_translation('es', 'description', 'El Cuervo es un poema narrativo')

a translation could be access individually::

> self.book.get_translation('es', 'title')
'El Cuervo'
> book.get_translation('es', 'description')
'El Cuervo es un poema narrativo'

or you can get all translations together::

> self.book.translations('es')
{
'title': self.es_title,
'description': self.es_description,
}

Installation:
------------------------------------

pip install django-klingon


Running the Tests
------------------------------------

You can run the tests with via::

python setup.py test

or::

python runtests.py




History
-------

0.0.7 (2017-1-7)
++++++++++++++++++

* Removed support for Django 1.5 and 1.6 now klingon works from Django 1.7
version in advance

0.0.4 (2015-1-2)
++++++++++++++++++

* Add translatable_slug and a painless integration with klingon +
django-autoslug.

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-klingon-0.0.8.tar.gz (13.9 kB view details)

Uploaded Source

File details

Details for the file django-klingon-0.0.8.tar.gz.

File metadata

  • Download URL: django-klingon-0.0.8.tar.gz
  • Upload date:
  • Size: 13.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/2.7

File hashes

Hashes for django-klingon-0.0.8.tar.gz
Algorithm Hash digest
SHA256 b1e1e53c89606ecda19a9a8a7ac4b5a1568dde763082aeecacecdc7b8180888f
MD5 54f0dff7a7dfbbe6f2816f7b32b8d28c
BLAKE2b-256 9149df80867918e5b5719754b9d8d0541029c0beba2a1364a65b6149cd8f179b

See more details on using hashes here.

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