# Чеклист локализации ## Фаза 1: Инфраструктура ✅ ЗАВЕРШЕНО - [x] Добавить колонку `lang` в таблицу `users` - [x] Создать миграцию `sql/add_user_language.sql` - [x] Применить миграцию к БД - [x] Создать `LanguageHandlers` - [x] Добавить методы в `ProfileService` (getUserLanguage, updateUserLanguage) - [x] Интегрировать выбор языка в `/start` - [x] Добавить обработку callback `set_lang_*` - [x] Обновить `ru.json` (секция language) - [x] Обновить `en.json` (секция language) - [x] Создать документацию - [x] Создать скрипт поиска хардкода - [x] Протестировать выбор языка ## Фаза 2: Замена хардкод-текстов ⚠️ В ПРОЦЕССЕ ### Приоритет 1: Обработчики (HIGH) #### callbackHandlers.ts (90 текстов) - [ ] Просмотр профилей (showProfile, showNextCandidate) - ~15 текстов - [ ] Редактирование профиля (edit_name, edit_age, edit_bio) - ~20 текстов - [ ] Лайки и матчи (handleLike, handleMatch) - ~10 текстов - [ ] VIP функции (handleVIPSearch, translateProfile) - ~15 текстов - [ ] Меню и кнопки - ~20 текстов - [ ] Прочие обработчики - ~10 текстов **Прогресс:** 0/90 (0%) #### messageHandlers.ts (21 текст) - [ ] Создание профиля (handleCreateProfile) - ~8 текстов - [ ] Ввод данных профиля (name, age, city, bio) - ~8 текстов - [ ] Валидация ввода - ~5 текстов **Прогресс:** 0/21 (0%) #### notificationHandlers.ts (31 текст) - [ ] Настройки уведомлений - ~15 текстов - [ ] Меню уведомлений - ~10 текстов - [ ] Обработка включения/выключения - ~6 текстов **Прогресс:** 0/31 (0%) ### Приоритет 2: Сервисы (MEDIUM) #### notificationService.ts (22 текста) - [ ] Уведомления о лайках - ~8 текстов - [ ] Уведомления о матчах - ~8 текстов - [ ] Уведомления о сообщениях - ~6 текстов **Прогресс:** 0/22 (0%) ### Приоритет 3: Контроллеры (MEDIUM) #### vipController.ts (21 текст) - [ ] VIP поиск - ~10 текстов - [ ] Фильтры - ~8 текстов - [ ] Перевод анкет - ~3 текста **Прогресс:** 0/21 (0%) #### profileEditController.ts (21 текст) - [ ] Редактирование полей - ~15 текстов - [ ] Валидация - ~6 текстов **Прогресс:** 0/21 (0%) ### Приоритет 4: Команды (LOW) #### commandHandlers.ts (6 текстов) - [ ] Справка (/help) - ~3 текста - [ ] Команды - ~3 текста **Прогресс:** 0/6 (0%) ### Прочие файлы (LOW) - [ ] enhancedChatHandlers.ts (4 текста) - [ ] likeBackHandler.ts (2 текста) **Прогресс:** 0/6 (0%) **ИТОГО ФАЗА 2:** 0/239 (0%) ## Фаза 3: Переводы ⏳ НЕ НАЧАТО ### Базовые секции (для всех 9 языков) - [ ] **language.*** - Секция управления языком - [ ] es (Español) - [ ] fr (Français) - [ ] de (Deutsch) - [ ] it (Italiano) - [ ] pt (Português) - [ ] ko (한국어) - [ ] zh (中文) - [ ] ja (日本語) - [ ] kk (Қазақша) - [ ] uz (O'zbek) ### Полные переводы После завершения Фазы 2, перевести все новые ключи: - [ ] **es.json** (Español) - 0% готовности - [ ] **fr.json** (Français) - 0% готовности - [ ] **de.json** (Deutsch) - 0% готовности - [ ] **it.json** (Italiano) - 0% готовности - [ ] **pt.json** (Português) - 0% готовности - [ ] **ko.json** (한국어) - 0% готовности - [ ] **zh.json** (中文) - 0% готовности - [ ] **ja.json** (日本語) - 0% готовности - [ ] **kk.json** (Қазақша) - 0% готовности - [ ] **uz.json** (O'zbek) - 0% готовности **Примечание:** Нанять native speakers или использовать профессиональные сервисы перевода. ## Фаза 4: Дополнительные функции ⏳ НЕ НАЧАТО - [ ] Добавить кнопку "🌍 Язык" в настройки - [ ] Создать команду `/language` - [ ] Добавить автоопределение языка по `msg.from.language_code` (опционально) - [ ] Написать тесты для локализации - [ ] Создать админ-панель для управления переводами (опционально) ## Прогресс по файлам | Файл | Текстов | Заменено | % | Статус | |------|---------|----------|---|--------| | callbackHandlers.ts | 90 | 0 | 0% | ⏳ Не начато | | notificationHandlers.ts | 31 | 0 | 0% | ⏳ Не начато | | notificationService.ts | 22 | 0 | 0% | ⏳ Не начато | | messageHandlers.ts | 21 | 0 | 0% | ⏳ Не начато | | vipController.ts | 21 | 0 | 0% | ⏳ Не начато | | profileEditController.ts | 21 | 0 | 0% | ⏳ Не начато | | commandHandlers.ts | 6 | 0 | 0% | ⏳ Не начато | | enhancedChatHandlers.ts | 4 | 0 | 0% | ⏳ Не начато | | likeBackHandler.ts | 2 | 0 | 0% | ⏳ Не начато | **ОБЩИЙ ПРОГРЕСС:** 0/218 (0%) *(Исключены скрипты: cleanDb.ts, createTestData.ts, getDatabaseInfo.ts, enhanceNotifications.ts, add-premium-columns.ts)* ## Оценка времени | Фаза | Задача | Время | Статус | |------|--------|-------|--------| | 1 | Инфраструктура | 4-6 ч | ✅ Завершено | | 2 | Замена хардкода | 15-22 ч | ⏳ 0% | | 3 | Переводы (9 языков) | 18-27 ч | ⏳ 0% | | 4 | Доп. функции | 3-5 ч | ⏳ 0% | **ИТОГО:** 40-60 часов работы **ВЫПОЛНЕНО:** ~5 часов (инфраструктура) **ОСТАЛОСЬ:** ~35-55 часов ## Еженедельные цели ### Неделя 1 (текущая) - [x] Создать инфраструктуру локализации - [ ] Заменить тексты в callbackHandlers.ts (90 текстов) - [ ] Заменить тексты в messageHandlers.ts (21 текст) **Цель:** Завершить 111 замен (46% от общего) ### Неделя 2 - [ ] Заменить тексты в notificationHandlers.ts (31 текст) - [ ] Заменить тексты в notificationService.ts (22 текста) - [ ] Заменить тексты в контроллерах (42 текста) **Цель:** Завершить 95 замен (40% от общего) ### Неделя 3 - [ ] Заменить оставшиеся тексты (12 текстов) - [ ] Начать переводы базовых секций (language.*) - [ ] Перевести 3-4 языка **Цель:** Завершить замены (100%), переводы (40%) ### Неделя 4 - [ ] Завершить переводы всех 9 языков - [ ] Добавить кнопку смены языка в настройки - [ ] Финальное тестирование - [ ] Деплой в production **Цель:** 100% готовности системы локализации ## Метрики качества - [ ] Все хардкод-тексты заменены (0/218) - [ ] Все языковые файлы содержат одинаковые ключи (0/10) - [ ] Нет TypeScript ошибок - [ ] Нет runtime ошибок при переключении языков - [ ] Все кнопки и меню работают на всех языках - [ ] Документация обновлена - [ ] Написаны тесты (опционально) ## Как обновлять этот файл После замены текстов в файле, обновите прогресс: ```markdown #### callbackHandlers.ts (90 текстов) - [x] Просмотр профилей (showProfile, showNextCandidate) - ~15 текстов ✅ - [ ] Редактирование профиля (edit_name, edit_age, edit_bio) - ~20 текстов ... **Прогресс:** 15/90 (17%) ⚠️ В процессе ``` ## Примечания - **⏳** = Не начато - **⚠️** = В процессе - **✅** = Завершено - **❌** = Заблокировано --- **Последнее обновление:** 06.11.2025 **Статус проекта:** Фаза 1 завершена, Фаза 2 готова к старту **Общий прогресс:** ~10% (инфраструктура готова)