🌐 Interface Localization: - Added i18next for multi-language interface support - Created LocalizationService with language detection - Added translation files for Russian and English - Implemented language selection in user settings 🤖 AI Profile Translation (Premium feature): - Integrated DeepSeek API for profile translation - Added TranslationController for translation management - Premium-only access to profile translation feature - Support for 10 languages (ru, en, es, fr, de, it, pt, zh, ja, ko) �� Database & Models: - Added language field to users table with migration - Updated User model to support language preferences - Added language constraints and indexing 🎛️ User Interface: - Added language settings menu in bot settings - Implemented callback handlers for language selection - Added translate profile button for VIP users - Localized all interface strings 📚 Documentation: - Created comprehensive LOCALIZATION.md guide - Documented API usage and configuration - Added examples for extending language support
5.8 KiB
5.8 KiB
Система локализации Telegram Tinder Bot
Обзор
Система локализации обеспечивает многоязычную поддержку бота с использованием i18next для интерфейса и DeepSeek AI для перевода анкет пользователей.
Архитектура
Компоненты системы
- LocalizationService - основной сервис локализации интерфейса
- DeepSeekTranslationService - сервис для перевода анкет с помощью AI
- TranslationController - контроллер для управления переводами
- Файлы переводов - JSON файлы с переводами для каждого языка
Поддерживаемые языки
- 🇷🇺 Русский (ru) - по умолчанию
- 🇺🇸 Английский (en)
- 🇪🇸 Испанский (es)
- 🇫🇷 Французский (fr)
- 🇩🇪 Немецкий (de)
- 🇮🇹 Итальянский (it)
- 🇵🇹 Португальский (pt)
- 🇨🇳 Китайский (zh)
- 🇯🇵 Японский (ja)
- 🇰🇷 Корейский (ko)
Использование
Локализация интерфейса
import { t } from '../services/localizationService';
// Простой перевод
const message = t('welcome.greeting');
// Перевод с параметрами
const message = t('profile.ageRange', { min: 18, max: 65 });
// Установка языка пользователя
localizationService.setLanguage('en');
Структура файлов переводов
{
"welcome": {
"greeting": "Добро пожаловать в Telegram Tinder Bot! 💕",
"description": "Найди свою вторую половинку прямо здесь!"
},
"profile": {
"name": "Имя",
"age": "Возраст",
"bio": "О себе"
}
}
Перевод анкет (Premium функция)
import DeepSeekTranslationService from '../services/deepSeekTranslationService';
const translationService = DeepSeekTranslationService.getInstance();
// Перевод текста анкеты
const result = await translationService.translateProfile({
text: "Привет! Я люблю путешествовать и читать книги.",
targetLanguage: 'en',
sourceLanguage: 'ru'
});
Настройка
Переменные окружения
# DeepSeek API для перевода анкет
DEEPSEEK_API_KEY=your_deepseek_api_key_here
База данных
Таблица users содержит поле language для хранения предпочитаемого языка пользователя:
ALTER TABLE users
ADD COLUMN language VARCHAR(5) DEFAULT 'ru';
Функции
Автоматическое определение языка
- При регистрации пользователя язык определяется по
language_codeиз Telegram - Пользователь может изменить язык в настройках
- Поддерживается определение языка текста для перевода
Премиум функции перевода
- Перевод анкет - доступен только для премиум пользователей
- AI-перевод - используется DeepSeek API для качественного перевода
- Контекстный перевод - сохраняется тон и стиль исходного текста
Клавиатуры и меню
Все кнопки и меню автоматически локализуются на основе языка пользователя:
// Пример создания локализованной клавиатуры
public getLanguageSelectionKeyboard() {
return {
inline_keyboard: [
[
{ text: '🇷🇺 Русский', callback_data: 'set_language_ru' },
{ text: '🇺🇸 English', callback_data: 'set_language_en' }
]
]
};
}
Расширение
Добавление нового языка
- Создать файл перевода
src/locales/{language_code}.json - Добавить язык в массив поддерживаемых языков в
LocalizationService - Обновить ограничение в базе данных
- Добавить кнопку в меню выбора языка
Добавление новых переводов
- Добавить ключи в основной файл перевода (
ru.json) - Перевести на все поддерживаемые языки
- Использовать в коде через функцию
t()
Безопасность
- API ключ DeepSeek хранится в переменных окружения
- Проверка премиум статуса перед доступом к переводу
- Ограничение по количеству запросов к API
- Таймауты для предотвращения зависания
Мониторинг
- Логирование ошибок перевода
- Отслеживание использования API
- Статистика по языкам пользователей
Производительность
- Кэширование переводов интерфейса
- Ленивая загрузка файлов переводов
- Асинхронная обработка запросов к DeepSeek API
- Индексы в базе данных для быстрого поиска по языку