e1b2485156
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.9 KiB
4.9 KiB
Обновление: Добавлена система локализации
Что изменилось
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"
}
Как использовать
Смена языка интерфейса
- Откройте настройки (кнопка ⚙️)
- Выберите язык в выпадающем списке "🌍 Язык интерфейса"
- Интерфейс сразу переключится на выбранный язык
- Нажмите "Сохранить" чтобы сохранить выбор
Добавление нового языка
- Создайте файл
lang/код_языка.json(например,de.jsonдля немецкого) - Скопируйте структуру из
en.jsonилиru.json - Переведите все значения (не меняя ключи)
- Укажите
lang_nameиlang_code - Перезапустите приложение
- Новый язык автоматически появится в настройках!
Пример файла локализации
{
"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
✅ Автоматическое обнаружение — новые языки появляются в интерфейсе без изменения кода
✅ Горячая замена — язык меняется мгновенно без перезагрузки страницы
✅ Расширяемость — легко добавить любое количество языков
✅ Централизация — все переводы в одном месте