Mezzanine BS Banners Translation with django-modeltranslation
By Güngör Budak
- One minute read - 202 wordsMezzanine BS Banners is a nice app for implementing Bootstrap 3 banners/sliders to your Mezzanine projects. The Banners model in BS Banners app has a title and its stacked inline Slides model has title and content for translation.
After [installing and setting up Django/Mezzanine translations]({% post_url 2015-07-01-djangomezzanine-content-translation-for-mezzanine %}):
Create a translation.py inside your Mezzanine project or your custom theme/skin application and copy/paste following lines:
1from modeltranslation.translator import translator
2from mezzanine.core.translation import TranslatedSlugged, TranslatedRichText
3from mezzanine_bsbanners.models import Banners, Slides
4
5
6class TranslatedBanners(TranslatedSlugged):
7 fields = ('title', )
8
9class TranslatedSlides(TranslatedRichText):
10 fields = ('title', 'content', )
11
12translator.register(Banners, TranslatedBanners)
13translator.register(Slides, TranslatedSlides)
For admin integration, create or use your existing admin.py in your Mezzanine project or your custom theme/skin application and copy/paste following lines:
1from django.contrib import admin
2from mezzanine_bsbanners.admin import SlidesInline, BannersAdmin
3from mezzanine_bsbanners.models import Banners, Slides
4from modeltranslation.admin import TranslationAdmin, TranslationStackedInline
5
6
7class TranslatedSlidesInline(SlidesInline, TranslationStackedInline):
8 model = Slides
9
10class TranslatedBannersAdmin(BannersAdmin, TranslationAdmin):
11 inlines = [TranslatedSlidesInline, ]
12
13 def formfield_for_dbfield(self, db_field, **kwargs):
14 field = super(TranslatedBannersAdmin, self).formfield_for_dbfield(db_field, **kwargs)
15 self.patch_translation_field(db_field, field, **kwargs)
16 return field
17
18admin.site.unregister(Banners)
19admin.site.register(Banners, TranslatedBannersAdmin)
Run following to create fields in database tables for translations:
python manage.py sync_translation_fields
python manage.py update_translation_fields
This completes it.