Перевести одно поле модели в django

у меня есть эта модель:

 class Notification(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE,null=True, blank=True)
    date = models.DateTimeField(auto_now_add=True)
    text = models.TextField(max_length=400,null=True, blank=True)
    read = models.BooleanField(default=False)

объекты этой модели создаются автоматически в представлениях следующим образом

def payment_confirmation(request):
    if request.method == 'POST':
        form = paymentForm(request.POST)
        if form.is_valid():
                amount= float(form.cleaned_data['amount'])
                form.save()
                notify = Notification.objects.create(
                    user = request.user,
                    text = f"{amount} $ is added to your wallet",
                )
                trans = _('Recharge Completed successfully')
                messages.success(request,trans)
                return redirect('my_wallet')
        return HttpResponse("completed")

Я смог перевести сообщения и статические страницы, но я не смог найти способ перевести это текстовое поле уведомления Я просмотрел несколько библиотек, но они, похоже, переводят только название поля verbose_name, но не значение

Попробуйте это:

def payment_confirmation(request):
if request.method == 'POST':
    form = paymentForm(request.POST)
    if form.is_valid():
            amount= float(form.cleaned_data['amount'])
            form.save()
            notify = Notification.objects.create(
                user = request.user,
                text = _("{} $ is added to your wallet").format(amount),
            )
            trans = _('Recharge Completed successfully')
            messages.success(request,trans)
            return redirect('my_wallet')
    return HttpResponse("completed")

Итак, я добавил еще одно поле в свою модель

text_ar = models.TextField(max_length=400,null=True, blank=True)

и добавил это поле в мое представление с переведенным текстом вручную

 def payment_confirmation(request):
if request.method == 'POST':
    form = paymentForm(request.POST)
    if form.is_valid():
            amount= float(form.cleaned_data['amount'])
            form.save()
            notify = Notification.objects.create(
                user = request.user,
                text = f"{amount} $ is added to your wallet",
                text_ar = f" دولار الى محفظتك {amount} تمت اضافة"
            )
            trans = _('Recharge Completed successfully')
            messages.success(request,trans)
            return redirect('my_wallet')
    return HttpResponse("completed")

и простой оператор if в шаблоне для проверки текущего языка и отображения правильного текста

 {% get_current_language as current_language%}
    {% if current_language== 'en' %}{{ notify.text }}{% elif current_language == 'ar' %}{{ notify.text_ar }}{% endif %}

работает нормально, но я не чувствую, что это правильный способ сделать это

Вернуться на верх