Initial commit

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
dinlo
2026-05-31 18:45:40 +08:00
commit e1b2485156
11 changed files with 2026 additions and 0 deletions
+88
View File
@@ -0,0 +1,88 @@
# Обновление: Добавлена система локализации
## Что изменилось
### 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`
**Автоматическое обнаружение** — новые языки появляются в интерфейсе без изменения кода
**Горячая замена** — язык меняется мгновенно без перезагрузки страницы
**Расширяемость** — легко добавить любое количество языков
**Централизация** — все переводы в одном месте