Files
toreadeck/CHANGES.md
T
dinlo e1b2485156 Initial commit
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 18:45:40 +08:00

5.2 KiB

Сводка изменений: Система локализации

Выполнено

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 автоматически обновляет интерфейс

🎨 Пример использования в коде

Простая строка

{{ t('app_title') }}  // → "Readeck Importer"

Строка с параметрами

{{ t('content_stats', { words: wordCount }) }}  // → "симв. · 42 слов"
t('success_bookmark_created', { id: '123' })    // → "Успешно! Закладка создана (ID: 123)"

📝 Структура файла локализации

{
  "lang_name": "Название языка на этом языке",
  "lang_code": "код_языка",
  "ключ": "Переведённое значение",
  "ключ_с_параметром": "Текст с {параметром}"
}

Преимущества реализации

  1. Простота — добавить язык = создать один JSON файл
  2. Автоматизация — не нужно менять код для добавления языка
  3. Масштабируемость — можно добавить неограниченное количество языков
  4. UX — мгновенная смена языка без перезагрузки
  5. Поддержка — легко обновлять и исправлять переводы

Система готова к использованию! 🚀