ИИ Решил проблему таким образом, можешь проверить ?
Да — теперь T() сначала вызывает _(), который считывает файлы .mo. Но _() вызывается во время инициализации экрана с более чем 800 каналами, что вызывает зависание в «Тестовом провайдере» / Браузере каналов.
Таким образом, мы возвращаемся к той же проблеме — делегирование T() функции _() снова вызовет зависание.
Реальное решение: _() должен быть быстрым. Зависание было вызвано системным резервным вариантом gettext(). Наш __init__.py уже считывает .mo
в словарь при запуске — поэтому _() — это просто поиск в словаре, без файлового ввода-вывода.
Вопрос: есть ли в __init__.py этого мода такой же медленный резервный вариант gettext()?
Заглянув в файл __init__.py мода, мы читаем:
def _(txt):
if not txt:
return txt
return _cache.get(txt, txt) # ← just dict lookup, NO gettext() fallback
Нет резервного вызова gettext()! Это уже быстрая версия. Поэтому делегирование T() функции _() НЕ должно вызывать зависание — потому что _() — это просто _cache.get(txt, txt), один поиск по словарю.
Зависание, которое мы наблюдали ранее, было в более старой версии мода, где в качестве резервного вызова использовался gettext(txt). В новой версии мода этого нет. Поэтому наше исправление должно работать без зависаний.