Хостинг Django от «Джино»
Table of contents

Использование переводов в ваших проектах

Django ищет переводы по следующему алгоритму:

  • Сначала просматривается каталог locale в каталоге приложения представление которого было вызвано. Если будет найден соответствующий файл с переводами, будет установлен этот перевод.

  • Затем просматривается каталог locale в каталоге проекта. Если файл с переводами будет найден, он будет установлен.

  • Наконец, просматривается базовый каталог django/conf/locale.

Таким образом вы можете создавать приложения, которые будут иметь свой собственный перевод, также вы можете переопределять базовый перевод для своего проекта. Вы можете построить большой проект с несколькими приложениями и разместить переводы в одном большом файле. Этот выбор за вами.

Замечание

Если вы используете вручную сконфигурированные настройки, то каталог locale в каталоге проекта не будет рассмотрен, так как Django теряет возможность обработать каталог проекта. Django обычно использует местоположение конфигурационного файла для определения каталога проекта.

Все репозитории с файлами переводов структурированы одинаково:

  • $APPPATH/locale/<language>/LC_MESSAGES/django.(po|mo)

  • $PROJECTPATH/locale/<language>/LC_MESSAGES/django.(po|mo)

  • Все пути перечисленные в параметре LOCALE_PATHS файла конфигурации проверяются по порядку для <language>/LC_MESSAGES/django.(po|mo).

  • $PYTHONPATH/django/conf/locale/<language>/LC_MESSAGES/django.(po|mo).

Для создания файлов с сообщениями следует использовать утилиту bin/make-messages.py. Потребуется только запускать её из правильного места — в каталоге в котором находится conf/locale (в случае дерева исходных текстов) или locale/ (в случае сообщений приложения или проекта). Далее следует использовать compile-messages.py для создания бинарного django.mo, который используется gettext.

Файлы сообщения для приложения немного сложнее обнаружить, им требуется пакет LocaleMiddleware. Если вы не используете этот пакет, будут обрабатываться только файлы сообщений Django и проекта.

Наконец, вы должны как-то организовать структуру файлов с переводами. Если ваши приложения будут распространяться среди других пользователей и будут использоваться в других проектах, может потребоваться использовать переводы на уровне приложений. Но одновременное наличие переводов на уровне приложений и проекта могут породить неприятные проблемы с make-messages.py. Эта утилита просматривает все каталоги, начиная от текущего, и помещает идентификаторы сообщений в файл сообщений проекта, а эти идентификаторы уже могут находиться в файле приложений.

Простейший способ решения этой проблемы — не хранить приложения внутри каталога проекта (предоставляя им собственные переводы). Тогда выполнение make-messages.py на уровне проекта соберёт строки относящиеся только к проекту и которые не будут распространяться независимо от проекта.


Ищем Python программистов

Found misprint?
Select it with the mouse and hit Enter
Ctrl-Enter
Processed:
33 1 199 25


The full repository of DjangoBook translation you can get on GitHub.
We appreciate your patches!

We are glad to hear your questions, comments or suggestions!
(Open in new tab)

Users number: 601

Русская группа

на поддержку перевода
Яндекс Яндекс.Деньги Хочу такую же кнопку
Ускорить процесс перевода!
ЯМ:41001223475816


© 2008-2012 Ruslan Popov @ gmail.com Powered by Django 1.2.5