В чём и как лучше всего хранить тексты для многоязычных ботов?

Предположим, что есть бот (выполнен на aiogram), в котором сделана поддержка выбора нескольких языков.

В обычном случае для ответа пользователю я бы сделал следующее:

@dp.message(Command('start'))
async def start(message: Message):
    await message.answer('Hello, world!')

Но если у пользователя будет несколько языков, понадобится использование базы данных, где мы будем хранить язык пользователя. Для этого сделаем фильтры, в которых мы будем сразу же отслеживать язык (поправьте, если этот способ тоже неэффективен) на примерно такой логике: сначала обращаемся к базе данных, читаем, какой язык он использует и если он не соответствует фильтру, то возвращаем False, после этого проверяем следующий роутер, пока фильтр не вернёт True.

Далее пользователю нужно дать какой-то ответ и вот тут совершенно не ясно, каким образом следует хранить текст, чтобы скорость ответа была большой. Сначала в голову приходит мысль использовать JSON, но что делать, если текстов будет много и необходимо асинхронно обращаться к файлам?


Ответы (1 шт):

Автор решения: Rahanemin

Хранить текста лучше в TOML (.toml) файлах т.к в Json трудно ориентироваться, а .cfg / .ini даже не рассматриваем, configparser не асинхронная библиотека, а на счет асинхронности, в томл можно использовать aiotoml.

асинхронно обращаться к файлам

Библиотека aiojson/aiofiles в помощь!

→ Ссылка