После того как вы пометили строки подлежащие переводу, вам следует написать (или получить) перевод для этих строк. В этом разделе мы расскажем как это делается.
Первый шагом будет создание файла сообщений для нового языка. Файл сообщений — это обычный текстовый файл для одного языка, который содержит информацию обо всех доступных вариантах перевода строк и о том как они должны быть представлены для данного языка. Такие файлы должны иметь расширение .po.
Django поставляется с утилитой,
bin/make-messages.py
, которая
автоматизирует создание и управление такими файлами.
Для создания или обновления файла сообщений выполните команду
bin/make-messages.py -l de, где
de — это идентификатор языка для которого
создаётся файл. В данном случае, идентификатор языка указан в
формате локали. Например, pt_BR используется
для бразильского варианта португальского языка, а
at — для австрийского варианта немецкого
языка. Взгляните на идентификаторы языков в каталоге
django/conf/locale/
, чтобы получить
информацию о поддерживаемых.
Скрипт должен быть запущен из одного из трёх мест:
Корневой каталог
django
(но не тот который получен из Subversion, а тот который указан в $PYTHONPATH).Корневой каталог вашего проекта.
Корневой каталог вашего приложения.
Скрипт обрабатывает целое дерево, над которым он был запущен,
и получает все строки, помеченные для перевода. Он создаёт
(или обновляет) файл сообщений в каталоге
conf/locale
. В примере для немецкого
языка, файл будет создан так:
conf/locale/de/LC_MESSAGES/django.po
.
Если скрипт был запущен над деревом проекта или приложения, он
сделает то же самое, но каталог будет другим:
locale/LANG/LC_MESSAGES
(следует отметить
отсутствие префикса conf). Перед первым
применением скрипта следует создать каталог
locale
.
Нет утилиты gettext?
Если у вас нет установленной утилиты
gettext, то
bin/make-messages.py создаст пустые
файлы. В этом случае следует либо установить утилиту или
просто скопировать файл сообщений для английского языка
(conf/locale/en/LC_MESSAGES/django.po
)
и использовать его в качестве отправной точки. Это просто
пустой файл с переводами строк.
Формат .po файлов прямолинеен. Каждый .po файл содержит небольшой кусок метаданных, таких как контактная информация сопровождающего данный перевод, остальное место в файле занимает список сообщений — простое соответствие между переводимыми строками и собственно переводами для этих строк.
Например, если ваше приложение содержит строку «Welcome to my site.», в таком виде:
_("Welcome to my site.")
то утилита bin/make-messages.py создаст .po файл, который будет содержать кусок — сообщение:
#: path/to/python/module.py:23
msgid "Welcome to my site."
msgstr ""
Кратко рассмотрим этот кусок:
msgid является переводимой строкой, которая определена в исходном коде. Не изменяйте её.
msgstr является переводом для строки. Изначально это поле пустое. Это ваша задача заполнить его. Не забывайте о необходимости сохранять кавычки вокруг текста.
Для удобства каждое сообщение включает в себя имя файла и номер строки откуда была получена для перевода данная строка.
Длинные сообщения являются особым случаем. Сразу после msgstr (или msgid) указывается пустая строка. Затем содержимое строки записывается на следущей линии или линиях. Такие строки впоследствии объединяются. Не забывайте оставлять завершающие пробелы в конце линий, иначе строка будет объединена без этих пробелов!
Например, ниже представлен многострочный перевод (взято из испанской локализации, которая поставляется с Django):
msgid ""
"There's been an error. It's been reported to the site administrators via e-"
"mail and should be fixed shortly. Thanks for your patience."
msgstr ""
"Ha ocurrido un error. Se ha informado a los administradores del sitio "
"mediante correo electrónico y debería arreglarse en breve. Gracias por su "
"paciencia."
Не забывайте о завершающих пробелах.
Помните о своей кодировке
При создании .po файлов в вашем текстовом редакторе, сначала исправьте строку с указанием кодировки (произведите поиск по CHARSET) и установите правильное значение кодировки. Обычно UTF-8 подходит для большинства языков, но gettext должна обработать любую кодировку, которую вы укажете.
Для повторного получения строк из исходного кода и шаблонов для перевода новых строк и обновления всех файлов сообщений для всех языков, выполните это:
make-messages.py -a
После того как вы создали файл сообщений и после каждого изменения его содержимого вам потребуется компилировать его в более эффективную форму с помощью gettext. Для этого следует применять утилиту bin/make-messages.py.
Эта утилита «пробегает» по всем доступным .po файлам и создаёт .mo файлы, которые являются бинарным представлением первых. В том же каталоге из которого вы запускали bin/make-messages.py выполните это:
bin/compile-messages.py
И всё. Ваш перевод готов для использования.
Пред. | Уровень выше | След. |
Определение переводимых строк в шаблоне | Начало | Как Django получает языковые настройки |
3 comments | Make a comment
Опечатка: ПервыМ шагом будет создание файла сообщений для...
В колонке справа вверху написано что делать.
Если Вы заинтересованы в инструментов для локализации приложений, я рекомендую Вам использовать этот инструмент на базе web: https://poeditor.com/