Django app for translating models from the given apps
Project description
Django-translate
This is a django app that allows you to wrap django models fields with a translation field (not for Pycharm and docker-compose python interpretator).
It uses the django model translation and gettext package to achieve this.
Installation
poetry add django-translate-gettext
# or
poetry add git+https://github.com/alpden550/django-translate.git
Usage
Add django_translate
to your INSTALLED_APPS
setting like this:
INSTALLED_APPS = [
...,
'django_translate_gettext',
...
]
Call django commands to create the translation fields for your apps, use --format
flag to call ruff format tool after files changed.
Example:
python manage.py translate app1 app2 app3 app4 --format
Model file before:
import csv
from pathlib import Path
from django.db import models
class UserTypes(models.TextChoices):
ADMIN = "admin", "Admin"
USER = "user", "User"
STAFF = "staff", "Staff"
class CustomUser(models.Model):
class _InnerTypes(models.TextChoices):
NEW = "new", "New"
OLD = "old", "Old"
username = models.CharField("User Name", max_length=100, help_text="This is the help text")
email = models.EmailField()
password = models.CharField(max_length=100)
created_at = models.DateTimeField("Date Created", auto_now_add=True)
updated_at = models.DateTimeField(verbose_name="Date Updated", auto_now=True)
first_name = models.CharField(verbose_name="First_Name", max_length=25)
last_name = models.CharField("Last_Name", max_length=25)
is_active = models.BooleanField(default=True)
choices = models.CharField(max_length=5, choices=UserTypes.choices, default=UserTypes.USER)
groups = models.ManyToManyField("auth.Group", verbose_name="Custom Groups", blank=True)
owner = models.ForeignKey("auth.User", related_name="users", on_delete=models.CASCADE, blank=True, null=True)
class Meta:
verbose_name = "Own Custom User"
verbose_name_plural = "Own Custom Users"
ordering = ("-created_at",)
get_latest_by = ("-created_at", "is_active")
Model file after:
import csv
from pathlib import Path
from django.db import models
from django.utils.translation import gettext_lazy as _
class UserTypes(models.TextChoices):
ADMIN = ("admin", _("Admin"))
USER = ("user", _("User"))
STAFF = ("staff", _("Staff"))
class CustomUser(models.Model):
class _InnerTypes(models.TextChoices):
NEW = ("new", _("New"))
OLD = ("old", _("Old"))
username = models.CharField(_("User Name"), max_length=100, help_text=_("This is the help text"))
email = models.EmailField(_("Email"))
password = models.CharField(verbose_name=_("Password"), max_length=100)
created_at = models.DateTimeField(_("Date Created"), auto_now_add=True)
updated_at = models.DateTimeField(verbose_name=_("Date Updated"), auto_now=True)
first_name = models.CharField(verbose_name=_("First_Name"), max_length=25)
last_name = models.CharField(_("Last_Name"), max_length=25)
is_active = models.BooleanField(verbose_name=_("Is_Active"), default=True)
choices = models.CharField(
verbose_name=_("Choices"), max_length=5, choices=UserTypes.choices, default=UserTypes.USER
)
groups = models.ManyToManyField("auth.Group", verbose_name=_("Custom Groups"), blank=True)
owner = models.ForeignKey(
"auth.User", verbose_name=_("Owner"), related_name="users", on_delete=models.CASCADE, blank=True, null=True
)
class Meta:
verbose_name = _("Own Custom User")
verbose_name_plural = _("Own Custom Users")
ordering = ("-created_at",)
get_latest_by = ("-created_at", "is_active")
Don't forget to check the changes before call makemigrations
and migrate
commands.
Don't forget to fill the settings.py like example file with the recommended Django settings before calling the makemessaging
command.
# settings.py
LANGUAGE_CODE = "en"
USE_I18N = True
USE_L10N = True
USE_TZ = True
LOCALE_PATHS = [Path(BASE_DIR, "locale")]
LANGUAGES = [
("en", "English"),
("ru", "Russian"),
]
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_translate_gettext-0.1.6.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b03899c10d1bb45ee2afa331578b4ed80dba86ab772765c723c1cc81854ff4f |
|
MD5 | cb9882dad6fbe818d862141a64755917 |
|
BLAKE2b-256 | 8c58e87cf232062145c7f4764cdbd3c2fe866fa9c6b5258d50a7511583095bb4 |
Hashes for django_translate_gettext-0.1.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ed0ba6105cf5d39402d594d613eafe7b5486ec3768901aaba066d2aa551febc |
|
MD5 | 25eccd533d214cd52f9e965b51112561 |
|
BLAKE2b-256 | b7b11d6a9bdf2f27c70e381a3702c13fba507daa9e0687724b372ec47f328f65 |