Files
tg_tinder_bot/LOCALIZATION.md
Andrey K. Choi edddd52589 feat: Complete localization system with i18n and DeepSeek AI translation
🌐 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
2025-09-13 08:59:10 +09:00

5.8 KiB
Raw Blame History

Система локализации Telegram Tinder Bot

Обзор

Система локализации обеспечивает многоязычную поддержку бота с использованием i18next для интерфейса и DeepSeek AI для перевода анкет пользователей.

Архитектура

Компоненты системы

  1. LocalizationService - основной сервис локализации интерфейса
  2. DeepSeekTranslationService - сервис для перевода анкет с помощью AI
  3. TranslationController - контроллер для управления переводами
  4. Файлы переводов - 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' }
            ]
        ]
    };
}

Расширение

Добавление нового языка

  1. Создать файл перевода src/locales/{language_code}.json
  2. Добавить язык в массив поддерживаемых языков в LocalizationService
  3. Обновить ограничение в базе данных
  4. Добавить кнопку в меню выбора языка

Добавление новых переводов

  1. Добавить ключи в основной файл перевода (ru.json)
  2. Перевести на все поддерживаемые языки
  3. Использовать в коде через функцию t()

Безопасность

  • API ключ DeepSeek хранится в переменных окружения
  • Проверка премиум статуса перед доступом к переводу
  • Ограничение по количеству запросов к API
  • Таймауты для предотвращения зависания

Мониторинг

  • Логирование ошибок перевода
  • Отслеживание использования API
  • Статистика по языкам пользователей

Производительность

  • Кэширование переводов интерфейса
  • Ленивая загрузка файлов переводов
  • Асинхронная обработка запросов к DeepSeek API
  • Индексы в базе данных для быстрого поиска по языку