2. Un blog multi-langues
(français/anglais pour commencer)
En réutilisant des applications existantes,
implémenter une stratégie de traduction
https://github.com/nathanborror/django-basic-apps
3. Traduire les templates
● Copie des templates dans project/templates/,
● ./manage makemessages -l fr
● Traduction de django.po
● ./manage compilemessages
● Redémarrer le server
● Voir la doc Django pour les détails
5. django-modeltranslation
● http://django-modeltranslation.googlecode.com/
● Ajout de colonnes localisées
● Modifie le schéma
● South friendly :)
● Sélection intelligente de la langue à afficher
● Customisation de l'interface admin
7. translation.py
from modeltranslation.translator import (translator,
TranslationOptions)
from basic.blog.models import Category, Post
class CategoryTranslationOptions(TranslationOptions):
fields = ('title', )
class PostTranslationOptions(TranslationOptions):
fields = ('title', 'body', 'tease')
translator.register(Category, CategoryTranslationOptions)
translator.register(Post, PostTranslationOptions)
8. admin.py
from django.contrib import admin
from modeltranslation.admin import TranslationAdmin
from basic.blog.admin import CategoryAdmin, PostAdmin
from basic.blog.models import Category, Post
class CategoryTranslationAdmin(CategoryAdmin,
TranslationAdmin):
pass
class PostTranslationAdmin(PostAdmin, TranslationAdmin):
pass
admin.site.unregister(Category)
admin.site.unregister(Post)
admin.site.register(Category, CategoryTranslationAdmin)
admin.site.register(Post, PostTranslationAdmin)
9. Migration de la base de données
Ainsi facile que :
./manage schemamigration blog –auto
./manage migrate blog
Enfin presque...
12. Sélectionner la bonne langue
● django-localeurl
● Ajout d'un préfixe en fonction de la langue
● Sélection de la langue en fonction du suffixe
● Ultra simple à utiliser
17. Et voilà !
Du temps pour des questions ? Non ? :(
Posez-les @davidpaccoud
Slides : http://www.slideshare.net/davidpaccoud
Sources : https://bitbucket.org/dpaccoud/djangocong_2011
Also included django-datatrans
Creative Commons – Attribution-NonCommercial-Share Alike