Files

107 lines
5.2 KiB
Markdown
Raw Permalink Normal View History

2026-05-31 18:45:40 +08:00
# Сводка изменений: Система локализации
## ✅ Выполнено
### 1. Создана структура локализации
```
lang/
├── README.md # Инструкция по добавлению языков
├── en.json # Английский язык
├── ru.json # Русский язык
└── kz.json # Казахский язык (пример)
```
### 2. Модифицирован бэкенд (main.py)
- ✅ Добавлена константа `LANG_DIR` для папки локализаций
- ✅ Функция `get_available_languages()` — сканирует папку lang
- ✅ Функция `load_language(lang_code)` — загружает JSON локализации
- ✅ API эндпоинт `GET /api/languages` — список доступных языков
- ✅ API эндпоинт `GET /api/language/{lang_code}` — получение переводов
- ✅ Поле `language` добавлено в `config.json` и `SettingsModel`
### 3. Модифицирован фронтенд (Vue 3)
- ✅ Реактивная система локализации с функцией `t(key, params)`
- ✅ Автоматическая загрузка языка при старте приложения
- ✅ Селектор языка в настройках
- ✅ Мгновенная смена языка без перезагрузки страницы
- ✅ Все текстовые строки заменены на вызовы `t()`
- ✅ Поддержка параметров в строках: `{id}`, `{words}`, `{error}`
### 4. Документация
-`lang/README.md` — инструкция по добавлению языков
-`LOCALIZATION.md` — техническая документация
- ✅ Обновлён основной `README.md`
## 🎯 Как это работает
### Добавление нового языка
1. Создайте файл `lang/код.json` (например, `de.json` для немецкого)
2. Скопируйте содержимое из `en.json` или `ru.json`
3. Переведите значения (не меняя ключи)
4. Перезапустите приложение
5. **Готово!** Язык автоматически появится в настройках
### Смена языка пользователем
1. Открыть настройки (⚙️)
2. Выбрать язык в выпадающем списке "🌍 Язык интерфейса"
3. Интерфейс мгновенно переключится
4. Сохранить настройки
## 📊 Статистика
- **Строк кода в main.py:** 1375 (было ~1246)
- **Файлов локализации:** 3 (en, ru, kz)
- **Локализованных строк:** ~50 ключей
- **API эндпоинтов:** +2 новых
## 🌍 Доступные языки
- 🇬🇧 **English** (`en.json`)
- 🇷🇺 **Русский** (`ru.json`)
- 🇰🇿 **Қазақша** (`kz.json`) — пример для демонстрации
## 🔧 Технические особенности
- **Динамическое обнаружение:** Новые языки обнаруживаются автоматически
- **Горячая замена:** Язык меняется без перезагрузки страницы
- **Параметризация:** Поддержка подстановки значений в строки
- **Fallback:** Если перевод не найден, показывается ключ
- **UTF-8:** Полная поддержка Unicode для всех языков
- **Реактивность:** Vue 3 автоматически обновляет интерфейс
## 🎨 Пример использования в коде
### Простая строка
```javascript
{{ t('app_title') }} // → "Readeck Importer"
```
### Строка с параметрами
```javascript
{{ t('content_stats', { words: wordCount }) }} // → "симв. · 42 слов"
t('success_bookmark_created', { id: '123' }) // → "Успешно! Закладка создана (ID: 123)"
```
## 📝 Структура файла локализации
```json
{
"lang_name": "Название языка на этом языке",
"lang_code": "код_языка",
"ключ": "Переведённое значение",
"ключ_с_параметром": "Текст с {параметром}"
}
```
## ✨ Преимущества реализации
1. **Простота** — добавить язык = создать один JSON файл
2. **Автоматизация** — не нужно менять код для добавления языка
3. **Масштабируемость** — можно добавить неограниченное количество языков
4. **UX** — мгновенная смена языка без перезагрузки
5. **Поддержка** — легко обновлять и исправлять переводы
---
**Система готова к использованию!** 🚀