Использование интерфейса переводов Rosetta
Rosetta — это приложение стороннего производителя, позволяющее редактировать переводы с помощью того же интерфейса, что и сайт администрирования Джанго. Rosetta упрощает редактирование файлов .po и обновляет скомпилированные файлы переводов. Давайте добавим его в наш проект.
Установите Rosetta через pip с помощью этой команды:
pip install django-rosetta==0.7.6
Затем добавьте 'rosetta' к параметрам INSTALLED_APPS в файле settings.py.
Необходимо добавить URL-адреса Rosetta в конфигурацию основного URL. Измените основной файл urls.py проекта и добавьте в него следующий шаблон URL-адреса:
url(r'^rosetta/', include('rosetta.urls')),
Убедитесь, что вы поместите его перед шаблоном shop.urls.
Откройте http://127.0.0.1:8000/admin/ и войдите в систему с помощью суперпользователя. Затем перейдите к http://127.0.0.1:8000/rosetta/ . Вы увидите список существующих языков:
В разделе Filter выберите All, чтобы отобразить все доступные файлы сообщений, в том числе те, которые принадлежат приложению orders. Кликните по ссылке Myshop в разделе Spanish, чтобы изменить переводы на Испанский язык. Вы увидите список строк перевода:
Можно ввести переводы в колонке Spanish. В столбце Occurrences отображаются файлы и строки кода, в которых была найдена каждая строка перевода.
Переводы, включающие placeholders, будут выглядеть следующим образом:
Росетта использует заполнение другим цветом фона для отображения placeholders. При переводе содержимого убедитесь, что placeholders не переведены. Например, переведите следующую строку:
%(total_items)s item%(total_items_plural)s, $%(total_price)s
Она переводится на Испанский язык следующим образом:
%(total_items)s producto%(total_items_plural)s, $%(total_price)s
Можно взглянуть на исходный код, который поставляется вместе с этой главой, чтобы использовать те же переводы на Испанский язык для проекта.
По завершении редактирования переводов нажмите кнопку Save and translate next block, чтобы сохранить переводы в файл .po. Rosetta компилирует файл сообщения при сохранении переводов, поэтому нет необходимости запускать команду compilemessages. Однако для записи файлов сообщений Rosetta требуется доступ на запись в каталоги locale/. Убедитесь, что каталоги имеют допустимые разрешения.
Если требуется, чтобы другие пользователи могли редактировать переводы, откройте в браузере http://127.0.0.1:8000/admin/auth/group/add/ и создайте новую группу с именем translators. Затем пройдите к http://127.0.0.1:8000/admin/auth/user/ для редактирования пользователей, которым требуется предоставить разрешения, чтобы они могли редактировать переводы. При редактировании пользователя в разделе Permissions добавьте группу translators в выбранные группы для каждого пользователя. Росетта доступен только для суперпользователей или пользователей, принадлежащих к группе translators.
Вы можете ознакомиться с документацией к Rosetta здесь: http://django-rosetta.readthedocs.org/en/latest/
При добавлении в продакшн новых переводов, если вы работаете с реальным веб-сервером, вам придется перезагрузить сервер после запуска команды compilemessages или после сохранения переводов с Росетта, чтобы изменения вступили в силу.