89 lines
4.9 KiB
Markdown
89 lines
4.9 KiB
Markdown
|
|
# Обновление: Добавлена система локализации
|
|||
|
|
|
|||
|
|
## Что изменилось
|
|||
|
|
|
|||
|
|
### 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`
|
|||
|
|
✅ **Автоматическое обнаружение** — новые языки появляются в интерфейсе без изменения кода
|
|||
|
|
✅ **Горячая замена** — язык меняется мгновенно без перезагрузки страницы
|
|||
|
|
✅ **Расширяемость** — легко добавить любое количество языков
|
|||
|
|
✅ **Централизация** — все переводы в одном месте
|