Exemplo n.º 1
0
from pathlib import Path

from aiogram import Bot, Dispatcher, executor, types
from aiogram.contrib.middlewares.i18n import I18nMiddleware

TOKEN = 'BOT_TOKEN_HERE'
I18N_DOMAIN = 'mybot'

BASE_DIR = Path(__file__).parent
LOCALES_DIR = BASE_DIR / 'locales'

bot = Bot(TOKEN, parse_mode=types.ParseMode.HTML)
dp = Dispatcher(bot)

# Setup i18n middleware
i18n = I18nMiddleware(I18N_DOMAIN, LOCALES_DIR)
dp.middleware.setup(i18n)

# Alias for gettext method
_ = i18n.gettext


@dp.message_handler(commands='start')
async def cmd_start(message: types.Message):
    # Simply use `_('message')` instead of `'message'` and never use f-strings for translatable texts.
    await message.reply(
        _('Hello, <b>{user}</b>!').format(user=message.from_user.full_name))


@dp.message_handler(commands='lang')
async def cmd_lang(message: types.Message, locale):
Exemplo n.º 2
0
from pathlib import Path

from logbook.compat import LoggingHandler
from aiohttp.web import Application
from aiogram import Bot, Dispatcher
from aiogram.contrib.middlewares.i18n import I18nMiddleware

from .conf import config

PROJECT_NAME = 'alarmbot'
LOCALES_DIR = Path(__file__).parent.parent / 'locales'

app = Application()

# Initialize bot and dispatcher
bot = Bot(token=config.TELEGRAM_TOKEN)
dp = Dispatcher(bot)
i18n = I18nMiddleware(PROJECT_NAME, LOCALES_DIR)
dp.middleware.setup(i18n)

LoggingHandler().push_application()
Exemplo n.º 3
0
import logging.config

import aiohttp
from aiogram import Bot, Dispatcher
from aiogram.contrib.fsm_storage.redis import RedisStorage2
from aiogram.contrib.middlewares.i18n import I18nMiddleware
from babel.support import LazyProxy
from environs import Env

env = Env()

settings_name = env("BOT_SETTINGS_MODULE", "bot.settings.production")

settings = importlib.import_module(settings_name)

logging.config.dictConfig(settings.LOGGING)

bot = Bot(settings.BOT_TOKEN)

dp = Dispatcher(bot, storage=RedisStorage2(**settings.FSM_STORAGE))

i18n = I18nMiddleware(settings.I18N_DOMAIN, settings.LOCALES_DIR)

dp.middleware.setup(i18n)

_ = i18n.gettext


def N_(*args, **kwargs) -> LazyProxy:
    return i18n.lazy_gettext(*args, enable_cache=False, **kwargs)