Your SlideShare is downloading. ×
  • Like
Comment traduire ses bases de données sans douleur
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Comment traduire ses bases de données sans douleur

  • 1,667 views
Published

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.

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
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,667
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
10
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Traduire ses bases de données sans douleur David Paccoud @davidpaccoud
  • 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. 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. Statiques traduits
  • 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. settings.py_ = lambda s: sLANGUAGES = ( (fr, _(French)), (en, _(English)),)MODELTRANSLATION_TRANSLATION_REGISTRY = translationINSTALLED_APP = ( modeltranslation, south, …)
  • 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. 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. Migration de la base de donnéesAinsi facile que :./manage schemamigration blog –auto./manage migrate blogEnfin presque...
  • 10. Interface dadministration
  • 11. Contenu traduit
  • 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. settings.pyTEMPLATE_CONTEXT_PROCESSORS = ( ... django.core.context_processors.request, …)MIDDLEWARE_CLASSES = ( localeurl.middleware.LocaleURLMiddleware, …)INSTALLED_APPS = ( localeurl, …)
  • 14. templates/base.html<html lang="{{ LANGUAGE_CODE }}"> <head>...</head> <body> <div id="body"> {% block body %} {% block lang %}{% endblock %} ... {% endblock %} </div> </body></html>
  • 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. URLs localisées
  • 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