Вы перевели названия языков. Теперь давайте переведем имена полей модели, которые отображаются на сайте.
Отредактируйте файл models.py приложения books, добавив помеченные для перевода имена в поля модели Book, как показано ниже:
from django.db import models
from django.utils.translation import gettext_lazy as _
class Book(models.Model):
title = models.CharField(verbose_name=_('Title'), max_length=200)
author = models.CharField(verbose_name=_('Author'), max_length=200)
price = models.PositiveIntegerField(verbose_name=_('Price'), default=0)
read = models.BooleanField(verbose_name=_('Read'), default=False)
def __str__(self):
return self.title
Вы добавили имена для полей, которые отображаются, когда пользователь добавляет новую книгу. Это поля title, author, price и read.
Внутри каталога приложения books создайте следующую ниже каталожную структуру:
При создании каталога locale переводные строковые литералы этого приложения будут храниться в файле сообщений в этом каталоге, а не в главном файле сообщений. Благодаря этому можно генерировать отдельные файлы перевода по каждому приложению.
Откройте оболочку из каталога проекта и выполните следующую ниже команду:
django-admin makemessages --all --ignore venv
Вы должны увидеть такой результат:
С помощью текстового редактора откройте файл books\locale\ru\LC_MESSAGES\django.po приложения books.
Вы увидите переводные строковые литералы из модели Book.
Заполните следующие ниже переводы msgstr для строковых литералов msgid:
#: books/models.py:6
msgid "Title"
msgstr "Название"
#: books/models.py:7
msgid "Author"
msgstr "Автор"
#: books/models.py:8
msgid "Price"
msgstr "Цена"
#: books/models.py:9
msgid "Read"
msgstr "Прочитано"
Закончив добавлять переводы, сохраните файл.
Помимо текстового редактора, для редактирования переводов еще можно использовать Poedit.
Poedit – это программный продукт, служащий для редактирования переводов, в котором используется инструментарий gettext. Он доступен для Linux, Windows и macOS.
Программу Poedit можно скачать со страницы с https://poedit.net/.