pre=deploy
This commit is contained in:
225
docs/LOCALIZATION_CHECKLIST.md
Normal file
225
docs/LOCALIZATION_CHECKLIST.md
Normal file
@@ -0,0 +1,225 @@
|
||||
# Чеклист локализации
|
||||
|
||||
## Фаза 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% (инфраструктура готова)
|
||||
Reference in New Issue
Block a user