Traduire ses bases de données         sans douleur         David Paccoud          @davidpaccoud
Un blog multi-langues          (français/anglais pour commencer) En réutilisant des applications existantes, implémenter u...
Traduire les templates●   Copie des templates dans project/templates/,●   ./manage makemessages -l fr●   Traduction de dja...
Statiques traduits
django-modeltranslation●   http://django-modeltranslation.googlecode.com/●   Ajout de colonnes localisées●   Modifie le sc...
settings.py_ = lambda s: sLANGUAGES = (  (fr, _(French)),  (en, _(English)),)MODELTRANSLATION_TRANSLATION_REGISTRY = trans...
translation.pyfrom modeltranslation.translator import (translator,                                         TranslationOpti...
admin.pyfrom django.contrib import adminfrom modeltranslation.admin import TranslationAdminfrom basic.blog.admin import Ca...
Migration de la base de donnéesAinsi facile que :./manage schemamigration blog –auto./manage migrate blogEnfin presque...
Interface dadministration
Contenu traduit
Sélectionner la bonne langue●   django-localeurl●   Ajout dun préfixe en fonction de la langue●   Sélection de la langue e...
settings.pyTEMPLATE_CONTEXT_PROCESSORS = (  ...  django.core.context_processors.request,  …)MIDDLEWARE_CLASSES = (  locale...
templates/base.html<html lang="{{ LANGUAGE_CODE }}"> <head>...</head> <body>  <div id="body">    {% block body %}     {% b...
templates/blog/base_blog.html{% extends "base.html" %}{% load localeurl_tags %}{% block lang %} <div id="lang">  {% for la...
URLs localisées
Et voilà !Du temps pour des questions ? Non ? :(Posez-les @davidpaccoudSlides : http://www.slideshare.net/davidpaccoudSour...
Upcoming SlideShare
Loading in...5
×

Comment traduire ses bases de données sans douleur

1,780

Published on

Comment traduire ses bases de données quand on a pas la main sur la définition du schéma et comment servir ses traductions sur des urls uniques.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,780
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Comment traduire ses bases de données sans douleur

  1. 1. Traduire ses bases de données sans douleur David Paccoud @davidpaccoud
  2. 2. Un blog multi-langues (français/anglais pour commencer) En réutilisant des applications existantes, implémenter une stratégie de traductionhttps://github.com/nathanborror/django-basic-apps
  3. 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
  4. 4. Statiques traduits
  5. 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 linterface admin
  6. 6. settings.py_ = lambda s: sLANGUAGES = ( (fr, _(French)), (en, _(English)),)MODELTRANSLATION_TRANSLATION_REGISTRY = translationINSTALLED_APP = ( modeltranslation, south, …)
  7. 7. translation.pyfrom modeltranslation.translator import (translator, TranslationOptions)from basic.blog.models import Category, Postclass CategoryTranslationOptions(TranslationOptions): fields = (title, )class PostTranslationOptions(TranslationOptions): fields = (title, body, tease)translator.register(Category, CategoryTranslationOptions)translator.register(Post, PostTranslationOptions)
  8. 8. admin.pyfrom django.contrib import adminfrom modeltranslation.admin import TranslationAdminfrom basic.blog.admin import CategoryAdmin, PostAdminfrom basic.blog.models import Category, Postclass CategoryTranslationAdmin(CategoryAdmin, TranslationAdmin): passclass PostTranslationAdmin(PostAdmin, TranslationAdmin): passadmin.site.unregister(Category)admin.site.unregister(Post)admin.site.register(Category, CategoryTranslationAdmin)admin.site.register(Post, PostTranslationAdmin)
  9. 9. Migration de la base de donnéesAinsi facile que :./manage schemamigration blog –auto./manage migrate blogEnfin presque...
  10. 10. Interface dadministration
  11. 11. Contenu traduit
  12. 12. Sélectionner la bonne langue● django-localeurl● Ajout dun préfixe en fonction de la langue● Sélection de la langue en fonction du suffixe● Ultra simple à utiliser
  13. 13. settings.pyTEMPLATE_CONTEXT_PROCESSORS = ( ... django.core.context_processors.request, …)MIDDLEWARE_CLASSES = ( localeurl.middleware.LocaleURLMiddleware, …)INSTALLED_APPS = ( localeurl, …)
  14. 14. templates/base.html<html lang="{{ LANGUAGE_CODE }}"> <head>...</head> <body> <div id="body"> {% block body %} {% block lang %}{% endblock %} ... {% endblock %} </div> </body></html>
  15. 15. templates/blog/base_blog.html{% extends "base.html" %}{% load localeurl_tags %}{% block lang %} <div id="lang"> {% for lang in LANGUAGES %} {% ifequal lang.0 LANGUAGE_CODE %} <span class="selected">{{ lang.1 }}</span> {% else %} <span> <a href="{{ request.path|chlocale:lang.0 }}">{{ lang.1 }}</a> </span> {% endifequal %} {% endfor %} </div>{% endblock %}
  16. 16. URLs localisées
  17. 17. Et voilà !Du temps pour des questions ? Non ? :(Posez-les @davidpaccoudSlides : http://www.slideshare.net/davidpaccoudSources : https://bitbucket.org/dpaccoud/djangocong_2011Also included django-datatrans Creative Commons – Attribution-NonCommercial-Share Alike
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×