# Обновление: Добавлена система локализации ## Что изменилось ### 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` Теперь файл содержит дополнительное поле: ```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. Новый язык автоматически появится в настройках! ## Пример файла локализации ```json { "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` ✅ **Автоматическое обнаружение** — новые языки появляются в интерфейсе без изменения кода ✅ **Горячая замена** — язык меняется мгновенно без перезагрузки страницы ✅ **Расширяемость** — легко добавить любое количество языков ✅ **Централизация** — все переводы в одном месте