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 на уровне проекта соберёт строки относящиеся только к проекту и которые не будут распространяться независимо от проекта.
| Пред. | Уровень выше | След. |
| Представление set_language | Начало | Переводы и JavaScript |
0 комментариев | Оставьте комментарий