AppRegistryNotReady: The translation infrastructure cannot be initialized before the apps registry is ready

8 мая 2020 г. 22:56

В общем случае ошибка:

django.core.exceptions.AppRegistryNotReady: The translation infrastructure cannot be initialized before the apps registry is ready. Check that you don't make non-lazy gettext calls at import time.

говорит о том, что где-то происходит вызов неленивых функций перевода во время импорта пакетов. Другими словами, во время импорта перевод должен быть ленивым, то есть использоваться функция ugettext_lazy (или pgettext_lazy).

Например, в моделях нужно использовать ugettext_lazy (вместо простого ugettext):

from django.db import models
from django.utils.translation import gettext_lazy as _


class MyModel(models.Model):
    title = models.CahrField(_('Title'))

Бывает по трейсбеку не понятно, где нужно поправить код, чтобы не возникала ошибка AppRegistryNotReady: The translation infrastructure cannot be initialized before the apps registry is ready.

Например, однажды в моём случае локально собирался проект после обновления пакетов в виртуальном окружении, а на сервере после обновления пакетов возникала данная ошибка. Сравнив сборки виртуальных окружений через pip freeze, обнаружилось, что на локальной машине устанавливается easy-thumbnails==2.6, а на сервере easy-thumbnails==2.7.

В requirements.txt я указал версию, которая устанавливается на локальной машине, то есть easy-thumbnails==2.6 и тогда после сборки на сервере всё заработало. Скорее всего easy-thumbnails==2.7 не совместима с используемой версии Django==1.10.7, которая была установлена на тот момент в моём приложении, хотя в документации easy-thumbnails пишется, что поддерживается версии Django 1.4 и 1.6 и выше.

Таким образом, если в одном месте работает, а в другом нет, то сравните, какие версии библиотек установлены через pip freeze.

Оцените статью

0 из 5 (всего 0 оценок)

captcha
Поля, отмеченные звёздочкой ( * ) , являются обязательными.

Спасибо за ваш отзыв!

После нажатия кнопки "Отправить" ваше сообщение будет доставлено мне на почту.

Автор статьи

Мальцев Артём

Веб-разработчик, владеющий знаниями языка программирования Python, фреймворка Django, системы управления содержимым сайта Django CMS, платформы для создания интернет-магазина Django Shop и многих различных приложений, использующих эти технологии.

Права на использование материала, расположенного на этой странице https://vivazzi.pro/it/translation-infrastructure-cannot-be-initialized/:

Разрешается копировать материал с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow" в теге <a>. Использование:

Автор статьи: Мальцев Артём
Ссылка на статью: <a href="https://vivazzi.pro/it/translation-infrastructure-cannot-be-initialized/">https://vivazzi.pro/it/translation-infrastructure-cannot-be-initialized/</a>

Подробнее: Правила использования сайта

Комментариев: 0

Вы можете оставить комментарий как незарегистрированный пользователь.

Но зарегистрировавшись, вы сможете:

  • получать оповещения об ответах
  • просматривать свои комментарии
  • иметь возможность использовать все функции разработанных сервисов

Для комментрирования от своего имени, войдите или зарегистрируйтесь обычным способом или через социальные сети:

Отправить

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте

Выберите валюту для отображения денежных единиц