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

89 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Обновление: Добавлена система локализации
## Что изменилось
### 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`
**Автоматическое обнаружение** — новые языки появляются в интерфейсе без изменения кода
**Горячая замена** — язык меняется мгновенно без перезагрузки страницы
**Расширяемость** — легко добавить любое количество языков
**Централизация** — все переводы в одном месте