A Django application providing translation functionalities for Django Rest Framework
Project description
django_restful_translator
django_restful_translator
is a Django library for managing and serving translations of Django models while keeping the original values untouched. This package is designed to integrate seamlessly with Django REST framework.
Functionality
django_restful_translator
provides:
-
Model translations: The
TranslatableModel
mixin adds translation capabilities to your models, allowing you to specify which fields should be translatable, while leaving the original field values intact. -
Translation management: Admin inlines for managing translations from the Django Admin site.
-
Translation synchronization: Commands
generatelocales
andupdate_database_translations
export translations to.po
files and import them back into the database, keeping translations synchronized across different environments. -
REST API support: Provided serializers (
TranslatableDBSerializer
,TranslatableDBDictSerializer
,TranslatableGettextSerializer
,TranslatableGettextDictSerializer
) ensure translated fields are properly serialized in API responses.
Advantages
-
Preserves original values:
django_restful_translator
stores all translations in a separate model, ensuring that your original model's values remain unchanged. -
Ease of use: It integrates seamlessly with the Django Admin interface for easy management of translations.
-
Flexibility: The
TranslatableModel
mixin can be added to any Django model with specified fields to translate. -
Efficiency: By storing translations in the database and only translating fields when necessary,
django_restful_translator
minimizes unnecessary work. -
Integration with Django REST framework: If you're using Django REST framework,
django_restful_translator
is designed to work with it out of the box.
Installation
Use the package manager pip to install django_restful_translator.
pip install django-restful-translator
Configuration
In your settings file, add the middleware for handling language preferences:
MIDDLEWARE = [
...
'django.middleware.locale.LocaleMiddleware',
...
]
In your settings file, add django_restful_translator
to instaled apps:
INSTALLED_APPS = [
...
'django_restful_translator',
...
]
Set up your languages and locale paths. Make sure to include both the standard locale directory and the one for django_restful_translator:
LOCALE_PATHS = (
BASE_DIR / "locale",
BASE_DIR / "drt_locale",
)
LANGUAGES = (
("en", "English"),
("sv", "Swedish"),
)
LANGUAGE_CODE = "en"
Migrations
After setting up, you need to create the necessary database tables. You can do this by running migrations:
python manage.py migrate
Usage
- Import the
TranslatableModel
in your models.py and use it as a base class for any model you want to be translatable.
from django_restful_translator.models import TranslatableModel
class YourModel(TranslatableModel):
...
- Add your translatable fields to the
translatable_fields
attribute.
class YourModel(TranslatableModel):
title = models.CharField(max_length=100)
description = models.TextField()
translatable_fields = ['title', 'description']
- Use the provided serializers in your API.
from django_restful_translator.drf.serializers import TranslatableDBSerializer
class YourModelSerializer(TranslatableDBSerializer):
...
- To enable managing translations in the Django admin, add
TranslationInline
to your model admin.
from django_restful_translator.admin import TranslationInline
class YourModelAdmin(admin.ModelAdmin):
inlines = [TranslationInline,]
5.When querying your translatable models, you can optimize your database queries by using prefetch_related
to prefetch translations.
YourModel.objects.all().prefetch_related('translations')
- Run the provided management commands to generate
.po
files and update the database with translations.
python manage.py generatelocales
python manage.py update_database_translations
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for django_restful_translator-0.1.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54f71eb973b60c0b656a3e3286d6388da564898510e7478e26e8a0d822aeaccc |
|
MD5 | 335b0efb666179a00cc8ee14da0a3167 |
|
BLAKE2b-256 | 3ba02736e703060ebe1227386e78b21b82aadd6fc0b508b79921aa4088a9a340 |
Hashes for django_restful_translator-0.1.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd5abd4b5d405ae03cf2bdb2147b72fd9d0fad5adc01c14c6b49b7a9a7c9cfc2 |
|
MD5 | 58e56b238afdd40be1b7ce5074105828 |
|
BLAKE2b-256 | 4be0e87f4f2d166549ed6626ccefab1380d386b20f5947ed5bafbd36908e1364 |