Fluentogram. Альтернатива PyBabel. Как использовать и не отстрелять ноги?

Поделиться
HTML-код
  • Опубликовано: 2 окт 2024
  • Сегодня речь пойдет о такой библиотеке как Fluentogram. Это альтернатива уже разобранной в рамках курса по аиограмм технологии PyBabel. Меня давно просили разобрать ее и я наконец сделал это.
    Мой телеграмм канал: t.me/massonnn_yt
    Немного полезных ссылок:
    github.com/pro...
    github.com/Mas...
    github.com/Aru...
    --------------------
    Данное видео было сделано бесплатно, не содержит рекламы и не пытается что-то продавать. Если вам кто-то что-то предлагал, то имейте ввиду - это мошенники.
    Вы можете поддержать автора, если он вам чем-то помог:
    Если вы из России:
    410011676049152 (yoomoney)
    2200700702094680 (Тинькофф)
    Если вы из Украины:
    5457082270647394 (ПриватБанк)
    Криптовалюты:
    ltc1qm6lx5e8q8ff7hs5ne2yxskhs2jhdl6ludq4ud8 (LTC / Litecoin)
    bc1qfz7399jdqrxkpmmxyetk0frdskwv23k6p4yhdu (BTC)
    0x95643B2702d1C4b965c1451C3f9bAAE7FF35115D (ETH)
    TAc1WsbgAeB3UY4LrsfoshkTNHzTF1zqj5 (Tether USD-T)

Комментарии • 12

  • @shisll
    @shisll Год назад +1

    Добрый день, а какую среду разработки используете?

  • @firstandlast4435
    @firstandlast4435 Год назад +1

    Объясни плис зачем в dispatcher.start_polling(bot) запихивать translator чтобы потом в TranslatorMiddleware вылавливать его из data["translator"] если можно просто в TranslatorMiddleware __call__ прописать:
    translator = Translator()
    data['translator'] = translator(language=event.from_user.language_code)
    return await handler(event, data)
    Я протестировал. Получается вроде тоже самое

    • @massonnn
      @massonnn  Год назад

      ru.wikipedia.org/wiki/Внедрение_зависимости

    • @firstandlast4435
      @firstandlast4435 Год назад

      @@massonnn я только личинка разработчика, но мне кажется что к этому случаю внедрение зависимостей не относится. Посмотрите внимательно на код. Когда добавляете kwargs в polling() они добавляются к полю data у апдейта. По сути как через Middleware изменяете апдейт. Только делаете это неявно, это ведь уже минус. Более того в апдейте этот объект Translator() вообще не нужен. Он прекрасно создается внутри самого Middleware.
      Я могу ошибаться, но то объяснение что вы дали выглядит не связаным с тем на что я пытался указать. К тому же я почти уверен что это просто ошибочный код.

    • @firstandlast4435
      @firstandlast4435 Год назад

      @@massonnn а если дело в том что в сигнатуре функции __call__ должен быть translator, то о5 же почему бы его не добавить в init мидлваре. Как в примере с counterом из доков аиограма.

    • @massonnn
      @massonnn  Год назад +1

      @@firstandlast4435 translator содержит в себе контекстную информацию (переводы в частности), которая должна быть определена единожды при старте приложения, поэтому его не получится создавать в миддлвари

    • @firstandlast4435
      @firstandlast4435 Год назад

      @@massonnn понял. Спасибо что отвечаете

  • @gezginim_61
    @gezginim_61 9 месяцев назад

    TypeError: object LocalizedTranslator can't be used in 'await' expression

    • @massonnn
      @massonnn  9 месяцев назад

      Укажите, пожалуйста, timestamp видео

    • @gezginim_61
      @gezginim_61 9 месяцев назад

      @@massonnn Дело в том что я не пользовался вашими шаблонами. Просто с помощью этого видео хотел внедрить Флюинтограмм в свой проект. Но не смог побороть ☝️ошибку. Поэтому пришлось накастылить свой Флюинтограмм вроде получилось не плохо 😀 Вам спасибо за видео и поддержку в комментариях

    • @baldezh8997
      @baldezh8997 8 месяцев назад

      насколько понимаю не может использоваться с await типо просто функция, а не корутина