Files
toreadeck/LOCALIZATION.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

4.9 KiB
Raw Blame History

Обновление: Добавлена система локализации

Что изменилось

1. Создана папка lang с файлами локализации

  • en.json — английский язык
  • ru.json — русский язык
  • kz.json — казахский язык (пример)
  • README.md — инструкция по добавлению новых языков

2. Изменения в main.py

Бэкенд:

  • Добавлена константа LANG_DIR для папки с локализациями
  • Добавлена функция get_available_languages() — сканирует папку lang и возвращает список доступных языков
  • Добавлена функция load_language(lang_code) — загружает файл локализации
  • Добавлен эндпоинт GET /api/languages — возвращает список доступных языков
  • Добавлен эндпоинт GET /api/language/{lang_code} — возвращает строки локализации для языка
  • В config.json добавлено поле language (по умолчанию "ru")
  • Обновлена модель SettingsModel с полем language

Фронтенд:

  • Добавлены реактивные переменные:
    • availableLanguages — список доступных языков
    • translations — текущие строки локализации
    • currentLang — текущий выбранный язык
  • Добавлена функция t(key, params) — возвращает локализованную строку с подстановкой параметров
  • Добавлена функция loadLanguage(langCode) — загружает локализацию
  • Добавлена функция changeLanguage(langCode) — меняет язык интерфейса
  • Все текстовые строки в интерфейсе заменены на вызовы t('ключ')
  • В настройках добавлен селектор языка интерфейса
  • При загрузке приложения автоматически загружается язык из настроек

3. Изменения в config.json

Теперь файл содержит дополнительное поле:

{
    "readeck_url": "...",
    "readeck_token": "...",
    "public_host": "...",
    "language": "ru"
}

Как использовать

Смена языка интерфейса

  1. Откройте настройки (кнопка ⚙️)
  2. Выберите язык в выпадающем списке "🌍 Язык интерфейса"
  3. Интерфейс сразу переключится на выбранный язык
  4. Нажмите "Сохранить" чтобы сохранить выбор

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

  1. Создайте файл lang/код_языка.json (например, de.json для немецкого)
  2. Скопируйте структуру из en.json или ru.json
  3. Переведите все значения (не меняя ключи)
  4. Укажите lang_name и lang_code
  5. Перезапустите приложение
  6. Новый язык автоматически появится в настройках!

Пример файла локализации

{
  "lang_name": "Deutsch",
  "lang_code": "de",
  "app_title": "Readeck Importer",
  "app_subtitle": "Lokale Artikel mit Übersetzung in Readeck importieren",
  "settings": "Einstellungen",
  ...
}

Технические детали

  • Локализация загружается асинхронно при старте приложения
  • Язык сохраняется в config.json и восстанавливается при следующем запуске
  • Система поддерживает параметры в строках: {id}, {words}, {error} и т.д.
  • Если файл локализации не найден, используются ключи как fallback
  • Все файлы должны быть в кодировке UTF-8

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

Простота добавления языков — просто положите JSON-файл в папку lang
Автоматическое обнаружение — новые языки появляются в интерфейсе без изменения кода
Горячая замена — язык меняется мгновенно без перезагрузки страницы
Расширяемость — легко добавить любое количество языков
Централизация — все переводы в одном месте