169 похожих чатов

Лично меня смущает использование i18n внутри мидлвари, просто потому что

видимо не нет опыта достаточного в программировании что бы понять что там происходит.

Но вообще я думаю что i18n отдельный модуль что позволяет ему выполнять задачи "перевода по славою" и без всяких мидлварей, я так понимаю что оно там использовалось что бы "на лету" определять установленную локаль пользователя в БД или брать ее в ТГ профиле. (сейчас посмотрел код мидлвари в силу своих возможностей и да так и есть, мидлварь и вся хурма написана ради получения одной единственной "локали" пользователя)

Отсюда и все ограничения исходят, что если локаль получать в мидлвари.

Я считаю что лучшим решением это будет оставить в мидлвари получение и запись в контекст локали.

А gettext и остальное вынести в отдельный модуль из которого его импортировать по необходимости, в нем же и получать нужную локаль из контекста.

Такое возможно?

Пока как я вижу, зарегистрировать такой мидлварь невозможно пока не будут инициализированы все модули, а они в принципе не могут быть инициализированы в том виде в котором делаю я, отсюда и ошибка "цикличного импорта"

Поиск по чату ничего не дал, поиск по гуглу аналогично, есть мнение что "тут конь не валялся" 😂

17 ответов

18 просмотров
MRX- Автор вопроса

Возвращаясь к вопросу о i18n, я изучил один мануал, посмотрел устройство кода в разных примерах и самого модуля и насколько позволяет мне говорить отсутствие опыта, я все же скажу: Пихать сначала в i18n диспетчер что бы просто получить локализацию, это критическая ошибка была изначально, а потом возвращать gettext из мидлваря это "фишенка на торте" другими словами полная херня, так как все мероприятие теперь зависимо от диспетчера предаваемого, а также возвращение gettext в место регистрации мидлваря порождает самую большую ошибку что урезает большую часть возможностей архитектуры бота, порождая ошибки "цикличного импорта" . Другим словами я понял как работает и предварительно настраивается i18n и ответственно заявляю что не понимаю что побудило столько народа, писать такой говнокод и советовать другим.

MRX
Возвращаясь к вопросу о i18n, я изучил один мануал...

Чел, никто твои мемуары не читает. Циклические импорты говорят только о том, что ты не подумал

MRX- Автор вопроса
Gabben
Чел, никто твои мемуары не читает. Циклические имп...

Как минимум один чел прочитал и ответил, другой чел сказал что тот код был старый и не актуальный, а его советовали всем под любым ракурсом.

Снова ты свою жопу не жалеешь с и18н, да?

MRX- Автор вопроса
Aleksandr Danilov 🇺🇦
Снова ты свою жопу не жалеешь с и18н, да?

дело чести сдохнуть в сторону цели )

MRX- Автор вопроса

Уважаемый, а напомните мне о аналоге что вы мне давеча предлагали, супротив богомерзкого i18n? Дело в том что никакой магии не было обнаружено в предложенных исходников, они просто используют регистрацию хендлеров через декораторы, что в принципе разумно.

MRX
Уважаемый, а напомните мне о аналоге что вы мне да...

Пуще прочего меня бесит _() Я уж лучше буду писать свой вариант вида: async def cmd_help(...texts: ...): m.answer(texts.cmd_help.lang(...) Хотя бы нейминг выживает А в идеале выходная мидлварь

Aleksandr Danilov 🇺🇦
Пуще прочего меня бесит _() Я уж лучше буду писат...

Название метода у gettext может быть любым, _ это общепринятое название, если не нравится - юзай любое другое и при экспорте укажи его же

m.answer(_("Hello ?")...) Или m.answer(texts.cmd_help.lang(m.lang), *аргументы для форматирования*)

Дело ваше Использовать отточенный за 31 год инструмент к которому его множество инструментов или сооружать собственный

Кстати, насчёт отточенных инструментов. Как тебе fluent?

Aleksandr Danilov 🇺🇦
Кстати, насчёт отточенных инструментов. Как тебе ...

Выглядит годно, но пока нет инструментов экспорта, слияния (ради соблюдения консистентности разных языков) и GUI который можно было бы отдать переводчику - не юзабельно в больших масштабах.

Alex RootJunior 🇺🇦
Дело ваше Использовать отточенный за 31 год инстр...

Я хуй знает что там отточено, не юзаю, но сдаётся мне что там история вроде "Можно и вилкой суп хлебать научиться, и говорить что удобно" Может я и неправ, опять же, не использовал эту срань после прочтения примера из доки

Alex RootJunior 🇺🇦
Выглядит годно, но пока нет инструментов экспорта,...

Про гуи переводчику - в другом чате спорили, сошлись на том что если мой вариант позволяет дергать реплики из бд, то для переводчика можно нарисовать веб-форму на любой вкус.

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
Всем вечера. Подскажите как лучше сделать. делаю на Д10 Например будет база данных на SQLite. в ней будет много таблиц. более 50шт Типа справочник. Содержать ID Name Id p...
Андрей Т 🐎
10
Я короче решил скомпилировать Nim в js, я думал он сработает как обычный транслятор. По итогу он мне создал файл с расширением js, и туда поместил кучу кода Вопрос, что это з...
𝕾𝖍𝖆𝖉𝖊 <suspense>
9
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
это группа токсиков или тех кто помогает?
Ибрагим
9
мы пытаемся подменить функцию, которая имеет меньше инструкций относительно функции, которой подменяем. https://www.reddit.com/r/jailbreakdevelopers/comments/w06ujy/mshookfun...
Óðinn
6
У кого-нибудь есть под рукой функция кодирования юникода, которая из фразы На русском сделает \u041d\u0430\u0020\u0440\u0443\u0441\u0441\u043a\u043e\u043c ?
Daniil Smolyakov
7
Карта сайта