В чём и как лучше всего хранить тексты для многоязычных ботов?
Предположим, что есть бот (выполнен на aiogram
), в котором сделана поддержка выбора нескольких языков.
В обычном случае для ответа пользователю я бы сделал следующее:
@dp.message(Command('start'))
async def start(message: Message):
await message.answer('Hello, world!')
Но если у пользователя будет несколько языков, понадобится использование базы данных, где мы будем хранить язык пользователя. Для этого сделаем фильтры, в которых мы будем сразу же отслеживать язык (поправьте, если этот способ тоже неэффективен) на примерно такой логике:
сначала обращаемся к базе данных, читаем, какой язык он использует и если он не соответствует фильтру, то возвращаем False
, после этого проверяем следующий роутер, пока фильтр не вернёт True
.
Далее пользователю нужно дать какой-то ответ и вот тут совершенно не ясно, каким образом следует хранить текст, чтобы скорость ответа была большой. Сначала в голову приходит мысль использовать JSON, но что делать, если текстов будет много и необходимо асинхронно обращаться к файлам?
Ответы (1 шт):
Хранить текста лучше в TOML (.toml) файлах т.к в Json трудно ориентироваться, а .cfg / .ini даже не рассматриваем, configparser не асинхронная библиотека, а на счет асинхронности, в томл можно использовать aiotoml.
асинхронно обращаться к файлам
Библиотека aiojson/aiofiles в помощь!