XLIFF Exchange is an extension for django-modeltranslation package that allows to export translatable content in OASIS XLIFF 1.2 format supported by most translation tools and import content in target languages from translated XLIFF files.
Django has good support for translating UI elements but lacks support for translating
dynamic content stored in a database. There are a number of third-party packages
for that purpose, including django-modeltranslation
that uses registration
approach for adding translations to Django model fields. It also provides admin classes
that allow to enter translations for model fields directly in Django admin interface.
However, with large volumes of content and many translation languages such direct
content manipulation can be quite cumbersome. XLIFF Exchange for django-modeltranslation
simplifies translation management by providing an admin action for bulk exporting
translatable content to XLIFF 1.2 format and a form for uploading translated XLIFF
files.
XLIFF 1.2 files are supported bu most (if not all) offline and online translation tools, including SDL Trados, Deja Vu, memoQ, Transifex, SmartCAT and many others. You can simply export your content to XLIFF files, give them to your in-house or external translators to translate, and then import translated contend back to your Django project. Translatable fields in respective languages will be updated automatically.
- Python: 3.4-3.7
- Django: 1.11-2.1
- django-modeltranslation: 0.13-beta1 and above
Note: some Python/Django combinations may not work. You can find compatible
combinations in tox.ini
file.
Install XLIFF Exchange with
pip
:pip install django-modeltranslation-xliff
Add
'modeltranslation_xliff'
toINSTALLED_APPS
in your project'ssettings.py
:INSTALLED_APPS = ( 'modeltranslation', 'modeltranslation_xliff', ... )
XLIFF Exchange for django-modeltranslation provides XliffExchangeMixin
class
for modeltranslation.admin.TranslationAdmin
that adds XLIFF export/import
functionality.
Minimal example:
from django.contrib import admin
from modeltranslation.admin import TranslationAdmin
from modeltranslation_xliff import XliffExchangeMixin
from .models import MyModel
@admin.register(MyModel)
class MyModelAdmin(XliffExchangeMixin, TranslationAdmin):
pass
XliffExchangeMixin
class is compatible with TranslationAdmin
and its
child classes, e.g. TabbedTranslationAdmin
.
See XLIFF Exchange documentation for more info.
MIT. See LICENSE.txt
.