3 горизонтальные линии, бургер
3 горизонтальные линии, бургер
3 горизонтальные линии, бургер
3 горизонтальные линии, бургер

3 горизонтальные линии, бургер
Удалить все
ЗАГРУЗКА ...

Содержание




    Вступление

    В этой статье я покажу как я делаю телеграм ботов с поддержкой нескольких языков. Всё для ботов на aiogram, используя пакет Babel.
    Кода будет минимум, покажу необходимый минимум. Так что если ты сюда пришёл за примерами то извини.
    В принципе, каждый мой бот переведён как минимум на английский, можешь посмотреть любой и ознакомиться подробнее. Самый простой для ознакомления будет TextifyPic_bot. Ну а для продвинутого уровня смотри NotebookOnMarginalia_bot
    Наш бот пример будет состоять из 2х *.py файлов, main.py и config.py. В первом будет точка входа и соответствующие обработчики, а во втором настройка для переводов.

    Переводы

    Ищем необходимые строки

    Каждую строку необходимо будет обернуть вокруг алиаса нижнее_подчёркивание. А для этого импортируем соответствующий модуль для бота:
    from aiogram.utils.i18n import gettext as _ i18n = I18n(path="locales", domain="messages") i18n_handler = SimpleI18nMiddleware(i18n) i18n_handler.setup(bot_dispatcher)

    Извлекаем строчки

    После того как все необходимые строки были выделены можно начать извлечение строк в директорию locales. Все строки и данные о них будут сохранены в messages.pot файле.
    pybabel extract --input-dirs=. -o locales/messages.pot

    Инициализация локалей

    Ты должен будешь сделать ровно столько локалей, сколько языков ты собираешься использовать. В моём случае их 2, и делаются они вот так:
    pybabel init -i locales/messages.pot -d locales -D messages -l en; pybabel init -i locales/messages.pot -d locales -D messages -l ru;

    Делаем перевод

    После инициализации требуемых локалей можно приступить к самим переводам. То есть открываем сгенерированные .po файлы и записываем переводы.
    Язык на котором ты пишешь изначальные тексты переводить не надо.

    Компиляция переводов

    Теперь скомпилируем переводы. Мы должны будем сгенерировать специальные файлы .mo.
    pybabel compile -d locales -D messages
    Теперь при посещении такого бота, у пользователя который использует другой язык, будут отображаться правильные строки. Но что если нужно исправить или обновить переводы, для этого предусмотрен немного другой алгоритм.

    Обновляем переводы

    Сначала извлекаем из всех файлов с переводами, изменения в них.
    pybabel extract --input-dirs=. -o locales/messages.pot
    После обновляем все локали
    pybabel update -d locales -D messages -i locales/messages.pot
    Обновляем/исправляем переводы. И наконец, компилируем переводы:
    pybabel compile -d locales -D messages
    Всё, переводы обновлены.

    Заключение

    Переводы для ботов в телеграм не так просто сделать и могут вызвать достаточно головной боли для того, кто делает это в первые.
    Главное уяснить алгоритм для инициализации:
    1. Оборачиваем необходимые строки.
    2. Извлекаем всё обёрнутые строки в один мастер файл.
    3. Инициализируем требуемые локали(языки)
    4. Переводим
    5. Компилируем
    Для обновления переводов:
    1. Извлекаем всё обёрнутые строки в один мастер файл.
    2. Обновляем существующие локали
    3. Переводим
    4. Компилируем
    Самый сложный шаг, на мой взгляд это наверное сами переводы. А всё остальное дело техники.

    Не забудь поделиться, лайкнуть и оставить комментарий)

    Комментарии

    (0)

    captcha
    Отправить
    ЗАГРУЗКА ...
    Сейчас тут пусто. Буть первым (o゚v゚)ノ

    Другое

    Похожие статьи


    Как сделать и подключить токен для телеграм бота, его настройка

    Часы
    14.01.2025
    /
    Часы
    12.09.2026
    Глазик
    5262
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    1
    В этой статье ты узнаешь как я делаю токены для тг ботов, как их подключаю, где храню его и как настраиваю его.

    Полная локализация сайта на django

    Часы
    06.02.2025
    /
    Часы
    12.09.2026
    Глазик
    7177
    Сердечки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    Соединённые точки
    0
    В этой статье я покажу, как можно полностью перевести (локализовать) Django сайт. Опишу полный процесс: настройка, выделение, сбор и компиляция переводов. Так же разберу все три случая переводов. Таких файлов …

    Быстрая имплементация RESTfull API для сайта на Django

    Часы
    24.02.2025
    /
    Часы
    12.09.2026
    Глазик
    5221
    Сердечки
    0
    Соединённые точки
    1
    Соединённые точки
    5
    Соединённые точки
    0
    Реализация REST API для Django сайта по коротким и понятным этапах с минимально необходимым кодом. И демонстрация взаимодействия с бэкендом через клиентскую часть сайта используя Axios библиотеку