Django-taggit - modeltranslation
En ce moment en pleine internationalisation de mon site et après plusieurs recherches afin de choisir la bonne application Django pluguable, j'ai finalement choisi django-modeltranslation pour internationaliser mon site Django
En lisant la documentation tout est assez claire, sauf quand je me suis hurter à un petit problème "Comment internationaliser django-taggit avec ? "
Comment faire ?
Dans un premier temps il faut installer les 2 applications:
$ pip install django-modeltranslation
$ pip install django-taggit
Ensuite dans mon fichier translation.py:
from modeltranslation.translator
import translator, TranslationOptions
import taggit.models
class TaggitTranslations(TranslationOptions):
""" important mettre bien le champ name du model taggit
et pas le chammp qui contient le taggablemanager
"""
fields = ('name',)
"""
important ne pas pas mettre le model qui contient le manager Taggit mais directement
la class Tag de models
"""
translator.register(taggit.models.Tag, TaggitTranslations)
Lisez bien les commentaire tout est expliqué, si non vous aurez une belle erreur:
django.core.exceptions.ImproperlyConfigured: TaggableManager is not supported by modeltranslation.
Cela veut juste dire que modeltranslation ne peut pas traduire un Manager, il faut donc cibler le champ du model taggit directement.
Les champs de traduction n'apparaîtront pas directement dans vos models qui contiennent le champs tag, il faudra donc pour les traduire aller dans l'application Taggit via l'administration et là les champs de traduction apparaîtront pour inserer les nouvelles traductions.
Si vous rencontrez des problèmes voici la solution sur Github
Publié le: Lundi 17 février 2014