Наш бот пример будет состоять из 2х *.py файлов, main.py и config.py. В первом будет точка входа и соответствующие обработчики, а во втором настройка для переводов. Код для примера был взят из Бота-примера для подключения Inline режима.
Необходимый код и настройка
Как я и обещал делаем переводы. В первую очередь, создай директорию locales в папке проекта. После добавь следующие импорты в файл main.py:
В файле config.py мы настроим директорию для хранения переводов и мидлвари переводов соответственно.
Помечаем строчки для перевода
После того как мы подключили соответствующие модули и настроили среду, необходимо пометить какие строчки мы собираемся перевести. В main.py я создал алиас нижнее подчёркивание.
Каждую строку необходимо будет обернуть вокруг алиаса нижнее_подчёркивание. По итогу получиться что-то вроде этого:
Извлекаем строчки
Наконец можно начать извлечения строк в папку locale. Все строки и данные о них будут сохранены в messages.pot файле.
Инициализируем локали и переводимые языки
Ты должен будешь сделать ровно столько локалей, сколько языков ты собираешься использовать. В моём случае их 2, и делаются они вот так:
Переводим
Первая английская, вторая русская. В первом случае, после генерации необходимо будет написать перевод. Ты должен будешь найти файл messages.po в locales\en\LC_MESSAGES и написать переводы. Во втором случае, это язык оригинала, переводы делать не надо.
Компиляция переводов
Теперь скомпилируем переводы
Обновляем переводы
Переводы готовы. Но что если ты захотел внести изменения в переводы или добавил другой текст? В таком случае нужно обновить переводы. И для этого придётся выполнить немного другие шаги, нежели чем при инициализации в первых шагах.
Важно помнить, что мы инициализируем только раз. Дальше, если ты конечно не хочешь потерять все переводы, нужно будет их обновлять специальным способом. Сначала извлекаем из всех файлов с переводами изменения в них.
После обновляем все локали
И наконец компилируем переводы.
Всё, переводы обновлены и будут показываться в зависимости от настроек телеграм-клиента у пользователя.
Заключение
Переводы для ботов в телеграм не так просто и могут вызвать достаточно головной боли для того, кто делает это в первые. Самый сложный шаг, на мой взгляд это поиск и оборачивание необходимых тебе строк для перевода. Ибо не все строчки можно обернуть, но если следовать базовым правилам всё должно получиться. ( ̄︶ ̄)↗
В этой статье ты узнаешь как я начинаю создавать ботов для телеграмма, где храню токен и как настраиваю его. В том числе как включить inline режим для бота.
В этой статье я покажу, как можно добавить локализацию и переводы для django сайта(i18n). Мы будем переводить Python, JS код, а так же шаблоны и django-модели. Плюс, переводы используя i18next …
В этой статье описывается процесс настройки и добавления REST фреймворка на сайт, написанный на Django. Добавляется он для того, чтобы построить API для доступа со стороны клиента (фронтенда). Так же …
Использованные термины
Django шаблон ⟶ Это текстовый документ, который размечен специальным ситнаксисом для вставки кода в него.
Django модель ⟶ Это менеджер баз данных во фреймворке Django. Реализованно в виде класов и наследования в Python
Python словарь ⟶ Коллекции пар ключ, значение. Также имеет другое название, ассоциативный массив.
Питон или Python ⟶ Интерпретируеммый, объектно ориентированный, с динамической семантикой и высокоуровневый язы программирования. Активно используется для быстрой разработки, созданию скриптов и соединению существующих компонентов программы.
Javascript ⟶ Это высокоуровневый, интерпретируемый язык программирования, который используется в основном для разработки веб-приложений. Он был создан в 1995 году и изначально предназначался для добавления интерактивности и динамики на веб-страницы.
Релевантные вопросы
Как извлечь контент из динамических веб-страниц?
Динамичный веб-сайт будет часто обновлять данные. Например, в Twitter всегда есть новые сообщения. Чтобы скрапинговать такой веб-сайт, это тот же процесс, что и скрапинг других веб-сайтов, но это позволит скраперу получать доступ к веб-сайту с некоторой частотой, чтобы получать постоянно обновляемые данные.
Как лучше всего комбинировать шрифты?
Перегружать веб-сайт разными шрифтами никогда не бывает хорошей идеей, но не повредит объединить несколько простых шрифтов на каждой странице. Общее правило заключается в том, чтобы объединить два шрифта, которые выглядят довольно похоже с одним заметным отличием.