All checks were successful
Validate / Hassfest (push) Successful in 3s
Audit and fix all template variable references: - template_vars.py: Add missing fields (album_id, old_shared, new_shared, latitude, longitude, owner_id, people per asset) - _SAMPLE_CONTEXT: Use proper structured data matching build_asset_detail() output (id, owner_id, latitude, longitude, people per asset, playback_url for videos) - i18n: Fix all variable descriptions for accuracy, add missing fields, mark scheduler-dependent slots as "not yet implemented" - Variables modal: Add album_fields section for periodic_summary - Shared _ASSET_FIELDS and _ALBUM_FIELDS dicts in template_vars.py to keep scheduled/memory slots DRY Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
380 lines
21 KiB
JSON
380 lines
21 KiB
JSON
{
|
||
"app": {
|
||
"name": "Immich Watcher",
|
||
"tagline": "Уведомления об альбомах"
|
||
},
|
||
"nav": {
|
||
"dashboard": "Главная",
|
||
"servers": "Серверы",
|
||
"trackers": "Трекеры",
|
||
"trackingConfigs": "Отслеживание",
|
||
"templateConfigs": "Шаблоны",
|
||
"telegramBots": "Боты",
|
||
"targets": "Получатели",
|
||
"users": "Пользователи",
|
||
"logout": "Выход"
|
||
},
|
||
"auth": {
|
||
"signIn": "Войти",
|
||
"signInTitle": "Вход в аккаунт",
|
||
"signingIn": "Вход...",
|
||
"username": "Имя пользователя",
|
||
"password": "Пароль",
|
||
"confirmPassword": "Подтвердите пароль",
|
||
"setupTitle": "Добро пожаловать",
|
||
"setupDescription": "Создайте учётную запись администратора",
|
||
"createAccount": "Создать аккаунт",
|
||
"creatingAccount": "Создание...",
|
||
"passwordMismatch": "Пароли не совпадают",
|
||
"passwordTooShort": "Пароль должен быть не менее 6 символов",
|
||
"loginWithImmich": "Войти через Immich",
|
||
"or": "или"
|
||
},
|
||
"dashboard": {
|
||
"title": "Главная",
|
||
"description": "Обзор настроек Immich Watcher",
|
||
"servers": "Серверы",
|
||
"activeTrackers": "Активные трекеры",
|
||
"targets": "Получатели",
|
||
"recentEvents": "Последние события",
|
||
"noEvents": "Событий пока нет. Создайте трекер для отслеживания альбомов.",
|
||
"loading": "Загрузка..."
|
||
},
|
||
"servers": {
|
||
"title": "Серверы",
|
||
"description": "Управление подключениями к Immich",
|
||
"addServer": "Добавить сервер",
|
||
"cancel": "Отмена",
|
||
"name": "Название",
|
||
"url": "URL Immich",
|
||
"urlPlaceholder": "http://immich:2283",
|
||
"apiKey": "API ключ",
|
||
"apiKeyKeep": "API ключ (оставьте пустым, чтобы сохранить текущий)",
|
||
"connecting": "Подключение...",
|
||
"noServers": "Серверы не настроены.",
|
||
"delete": "Удалить",
|
||
"confirmDelete": "Удалить этот сервер?",
|
||
"online": "В сети",
|
||
"offline": "Не в сети",
|
||
"checking": "Проверка...",
|
||
"loadError": "Не удалось загрузить серверы."
|
||
},
|
||
"trackers": {
|
||
"title": "Трекеры",
|
||
"description": "Отслеживание изменений в альбомах",
|
||
"newTracker": "Новый трекер",
|
||
"cancel": "Отмена",
|
||
"name": "Название",
|
||
"namePlaceholder": "Трекер семейных фото",
|
||
"server": "Сервер",
|
||
"selectServer": "Выберите сервер...",
|
||
"albums": "Альбомы",
|
||
"eventTypes": "Типы событий",
|
||
"notificationTargets": "Получатели уведомлений",
|
||
"scanInterval": "Интервал проверки (секунды)",
|
||
"createTracker": "Создать трекер",
|
||
"noTrackers": "Трекеров пока нет. Сначала добавьте сервер, затем создайте трекер.",
|
||
"active": "Активен",
|
||
"paused": "Приостановлен",
|
||
"pause": "Пауза",
|
||
"resume": "Возобновить",
|
||
"delete": "Удалить",
|
||
"confirmDelete": "Удалить этот трекер?",
|
||
"albums_count": "альбом(ов)",
|
||
"every": "каждые",
|
||
"trackImages": "Отслеживать фото",
|
||
"trackVideos": "Отслеживать видео",
|
||
"favoritesOnly": "Только избранные",
|
||
"includePeople": "Включать людей в уведомления",
|
||
"includeAssetDetails": "Включать детали файлов",
|
||
"maxAssetsToShow": "Макс. файлов в уведомлении",
|
||
"sortBy": "Сортировка",
|
||
"sortOrder": "Порядок",
|
||
"sortNone": "Исходный порядок",
|
||
"sortDate": "Дата",
|
||
"sortRating": "Рейтинг",
|
||
"sortName": "Имя",
|
||
"sortRandom": "Случайный",
|
||
"ascending": "По возрастанию",
|
||
"descending": "По убыванию",
|
||
"quietHoursStart": "Тихие часы начало",
|
||
"quietHoursEnd": "Тихие часы конец"
|
||
},
|
||
"templates": {
|
||
"title": "Шаблоны",
|
||
"description": "Шаблоны сообщений Jinja2 для уведомлений",
|
||
"newTemplate": "Новый шаблон",
|
||
"cancel": "Отмена",
|
||
"name": "Название",
|
||
"body": "Текст шаблона (Jinja2)",
|
||
"variables": "Переменные",
|
||
"preview": "Предпросмотр",
|
||
"edit": "Редактировать",
|
||
"delete": "Удалить",
|
||
"confirmDelete": "Удалить этот шаблон?",
|
||
"create": "Создать шаблон",
|
||
"update": "Обновить шаблон",
|
||
"noTemplates": "Шаблонов пока нет. Без шаблона будет использован шаблон по умолчанию.",
|
||
"eventType": "Тип события",
|
||
"allEvents": "Все события",
|
||
"assetsAdded": "Добавлены файлы",
|
||
"assetsRemoved": "Удалены файлы",
|
||
"albumRenamed": "Альбом переименован",
|
||
"albumDeleted": "Альбом удалён"
|
||
},
|
||
"targets": {
|
||
"title": "Получатели",
|
||
"description": "Адреса уведомлений (Telegram, вебхуки)",
|
||
"addTarget": "Добавить получателя",
|
||
"cancel": "Отмена",
|
||
"type": "Тип",
|
||
"name": "Название",
|
||
"namePlaceholder": "Мои уведомления",
|
||
"botToken": "Токен бота",
|
||
"chatId": "ID чата",
|
||
"webhookUrl": "URL вебхука",
|
||
"create": "Добавить",
|
||
"test": "Тест",
|
||
"delete": "Удалить",
|
||
"confirmDelete": "Удалить этого получателя?",
|
||
"noTargets": "Получатели уведомлений не настроены.",
|
||
"testSent": "Тестовое уведомление отправлено!",
|
||
"aiCaptions": "Включить AI подписи",
|
||
"telegramSettings": "Настройки Telegram",
|
||
"maxMedia": "Макс. медиафайлов",
|
||
"maxGroupSize": "Макс. размер группы",
|
||
"chunkDelay": "Задержка между группами (мс)",
|
||
"maxAssetSize": "Макс. размер файла (МБ)",
|
||
"videoWarning": "Предупреждение о размере видео",
|
||
"disableUrlPreview": "Отключить превью ссылок",
|
||
"sendLargeAsDocuments": "Отправлять большие фото как документы"
|
||
},
|
||
"users": {
|
||
"title": "Пользователи",
|
||
"description": "Управление аккаунтами (только админ)",
|
||
"addUser": "Добавить пользователя",
|
||
"cancel": "Отмена",
|
||
"username": "Имя пользователя",
|
||
"password": "Пароль",
|
||
"role": "Роль",
|
||
"roleUser": "Пользователь",
|
||
"roleAdmin": "Администратор",
|
||
"create": "Создать",
|
||
"delete": "Удалить",
|
||
"confirmDelete": "Удалить этого пользователя?",
|
||
"joined": "зарегистрирован"
|
||
},
|
||
"telegramBot": {
|
||
"title": "Telegram боты",
|
||
"description": "Регистрация и управление Telegram ботами",
|
||
"addBot": "Добавить бота",
|
||
"name": "Отображаемое имя",
|
||
"namePlaceholder": "Бот семейных уведомлений",
|
||
"token": "Токен бота",
|
||
"tokenPlaceholder": "123456:ABC-DEF...",
|
||
"noBots": "Ботов пока нет.",
|
||
"chats": "Чаты",
|
||
"noChats": "Чатов не найдено. Сначала отправьте сообщение боту.",
|
||
"refreshChats": "Обновить",
|
||
"selectBot": "Выберите бота",
|
||
"selectChat": "Выберите чат",
|
||
"private": "Личный",
|
||
"group": "Группа",
|
||
"supergroup": "Супергруппа",
|
||
"channel": "Канал",
|
||
"confirmDelete": "Удалить этого бота?"
|
||
},
|
||
"trackingConfig": {
|
||
"title": "Конфигурации отслеживания",
|
||
"description": "Определите, на какие события и файлы реагировать",
|
||
"newConfig": "Новая конфигурация",
|
||
"name": "Название",
|
||
"namePlaceholder": "Основное отслеживание",
|
||
"noConfigs": "Конфигураций отслеживания пока нет.",
|
||
"eventTracking": "Отслеживание событий",
|
||
"assetsAdded": "Добавлены файлы",
|
||
"assetsRemoved": "Удалены файлы",
|
||
"albumRenamed": "Альбом переименован",
|
||
"albumDeleted": "Альбом удалён",
|
||
"trackImages": "Фото",
|
||
"trackVideos": "Видео",
|
||
"favoritesOnly": "Только избранные",
|
||
"assetDisplay": "Отображение файлов",
|
||
"includePeople": "Включать людей",
|
||
"includeDetails": "Включать детали",
|
||
"maxAssets": "Макс. файлов",
|
||
"sortBy": "Сортировка",
|
||
"sortOrder": "Порядок",
|
||
"periodicSummary": "Периодическая сводка",
|
||
"enabled": "Включено",
|
||
"intervalDays": "Интервал (дни)",
|
||
"startDate": "Дата начала",
|
||
"times": "Время (ЧЧ:ММ)",
|
||
"scheduledAssets": "Запланированные фото",
|
||
"albumMode": "Режим альбомов",
|
||
"limit": "Лимит",
|
||
"assetType": "Тип файлов",
|
||
"minRating": "Мин. рейтинг",
|
||
"memoryMode": "Воспоминания (В этот день)",
|
||
"test": "Тест",
|
||
"confirmDelete": "Удалить эту конфигурацию отслеживания?",
|
||
"sortNone": "Нет",
|
||
"sortDate": "Дата",
|
||
"sortRating": "Рейтинг",
|
||
"sortName": "Имя",
|
||
"orderDesc": "По убыванию",
|
||
"orderAsc": "По возрастанию",
|
||
"albumModePerAlbum": "По альбомам",
|
||
"albumModeCombined": "Объединённый",
|
||
"albumModeRandom": "Случайный",
|
||
"assetTypeAll": "Все",
|
||
"assetTypePhoto": "Фото",
|
||
"assetTypeVideo": "Видео"
|
||
},
|
||
"templateConfig": {
|
||
"title": "Конфигурации шаблонов",
|
||
"description": "Определите формат уведомлений",
|
||
"newConfig": "Новая конфигурация",
|
||
"name": "Название",
|
||
"namePlaceholder": "По умолчанию RU",
|
||
"descriptionPlaceholder": "напр. Русские шаблоны для семейных уведомлений",
|
||
"noConfigs": "Конфигураций шаблонов пока нет.",
|
||
"eventMessages": "Сообщения о событиях",
|
||
"assetsAdded": "Добавлены файлы",
|
||
"assetsRemoved": "Удалены файлы",
|
||
"albumRenamed": "Альбом переименован",
|
||
"albumDeleted": "Альбом удалён",
|
||
"assetFormatting": "Форматирование файлов",
|
||
"imageTemplate": "Шаблон фото",
|
||
"videoTemplate": "Шаблон видео",
|
||
"assetsWrapper": "Обёртка списка",
|
||
"moreMessage": "Сообщение \"ещё\"",
|
||
"peopleFormat": "Формат людей",
|
||
"dateLocation": "Дата и место",
|
||
"dateFormat": "Формат даты",
|
||
"commonDate": "Общая дата",
|
||
"uniqueDate": "Дата файла",
|
||
"locationFormat": "Формат места",
|
||
"commonLocation": "Общее место",
|
||
"uniqueLocation": "Место файла",
|
||
"favoriteIndicator": "Индикатор избранного",
|
||
"scheduledMessages": "Запланированные сообщения",
|
||
"periodicSummary": "Периодическая сводка",
|
||
"periodicAlbum": "Элемент альбома",
|
||
"scheduledAssets": "Запланированные фото",
|
||
"memoryMode": "Воспоминания",
|
||
"telegramSettings": "Telegram",
|
||
"videoWarning": "Предупреждение о видео",
|
||
"preview": "Предпросмотр",
|
||
"variables": "Переменные",
|
||
"assetFields": "Поля файла (в {% for asset in added_assets %})",
|
||
"albumFields": "Поля альбома (в {% for album in albums %})",
|
||
"confirmDelete": "Удалить эту конфигурацию шаблона?"
|
||
},
|
||
"templateVars": {
|
||
"message_assets_added": { "description": "Уведомление о добавлении файлов в альбом" },
|
||
"message_assets_removed": { "description": "Уведомление об удалении файлов из альбома" },
|
||
"message_album_renamed": { "description": "Уведомление о переименовании альбома" },
|
||
"message_album_deleted": { "description": "Уведомление об удалении альбома" },
|
||
"periodic_summary_message": { "description": "Периодическая сводка альбомов (планировщик не реализован)" },
|
||
"scheduled_assets_message": { "description": "Запланированная подборка фото (планировщик не реализован)" },
|
||
"memory_mode_message": { "description": "«В этот день» — воспоминания (планировщик не реализован)" },
|
||
"album_id": "ID альбома (UUID)",
|
||
"album_name": "Название альбома",
|
||
"album_url": "Публичная ссылка (пусто, если не расшарен)",
|
||
"added_count": "Количество добавленных файлов",
|
||
"removed_count": "Количество удалённых файлов",
|
||
"change_type": "Тип изменения (assets_added, assets_removed, album_renamed, album_deleted)",
|
||
"people": "Обнаруженные люди (список, {{ people | join(', ') }})",
|
||
"added_assets": "Список файлов ({% for asset in added_assets %})",
|
||
"removed_assets": "Список ID удалённых файлов (строки)",
|
||
"shared": "Общий альбом (boolean)",
|
||
"video_warning": "Предупреждение о видео (из конфига шаблона, если есть видео)",
|
||
"old_name": "Прежнее название альбома (при переименовании)",
|
||
"new_name": "Новое название альбома (при переименовании)",
|
||
"old_shared": "Был ли общим до переименования (boolean)",
|
||
"new_shared": "Является ли общим после переименования (boolean)",
|
||
"albums": "Список альбомов ({% for album in albums %})",
|
||
"assets": "Список файлов ({% for asset in assets %})",
|
||
"date": "Текущая дата",
|
||
"asset_id": "ID файла (UUID)",
|
||
"asset_filename": "Имя файла",
|
||
"asset_type": "IMAGE или VIDEO",
|
||
"asset_created_at": "Дата создания (ISO 8601)",
|
||
"asset_owner": "Имя владельца",
|
||
"asset_owner_id": "ID владельца",
|
||
"asset_description": "Описание (EXIF или пользовательское)",
|
||
"asset_people": "Люди на этом файле (список)",
|
||
"asset_is_favorite": "В избранном (boolean)",
|
||
"asset_rating": "Рейтинг (1-5 или null)",
|
||
"asset_latitude": "GPS широта (float или null)",
|
||
"asset_longitude": "GPS долгота (float или null)",
|
||
"asset_city": "Город",
|
||
"asset_state": "Регион",
|
||
"asset_country": "Страна",
|
||
"asset_url": "Ссылка для просмотра (если расшарен)",
|
||
"asset_download_url": "Ссылка для скачивания (если расшарен)",
|
||
"asset_photo_url": "URL превью (только фото, если расшарен)",
|
||
"asset_playback_url": "URL видео (только видео, если расшарен)",
|
||
"album_name_field": "Название альбома (в списке альбомов)",
|
||
"album_asset_count": "Всего файлов в альбоме",
|
||
"album_url_field": "Ссылка на альбом",
|
||
"album_shared": "Общий альбом"
|
||
},
|
||
"hints": {
|
||
"periodicSummary": "Отправляет плановую сводку по всем отслеживаемым альбомам в указанное время. Подходит для ежедневных/еженедельных дайджестов.",
|
||
"scheduledAssets": "Отправляет случайные или выбранные фото из альбомов по расписанию. Как ежедневная подборка фото.",
|
||
"memoryMode": "\"В этот день\" — отправляет фото, сделанные в этот день в прошлые годы. Ностальгические воспоминания.",
|
||
"favoritesOnly": "Включать только ассеты, отмеченные как избранные в Immich.",
|
||
"maxAssets": "Максимальное количество ассетов в одном уведомлении.",
|
||
"periodicStartDate": "Опорная дата для расчёта интервалов. Сводки отправляются каждые N дней от этой даты.",
|
||
"times": "Время отправки уведомлений в формате ЧЧ:ММ. Для нескольких значений через запятую: 09:00,18:00",
|
||
"albumMode": "По альбому: отдельное уведомление для каждого. Объединённый: одно уведомление со всеми. Случайный: выбирается один альбом.",
|
||
"minRating": "Включать только ассеты с рейтингом не ниже указанного (0 = без фильтра).",
|
||
"eventMessages": "Шаблоны уведомлений о событиях в реальном времени. Используйте {переменные} для динамического контента.",
|
||
"assetFormatting": "Форматирование отдельных ассетов в сообщениях уведомлений.",
|
||
"dateLocation": "Форматирование даты и местоположения. Использует синтаксис strftime для дат.",
|
||
"scheduledMessages": "Шаблоны для периодических сводок, подборок фото и воспоминаний «В этот день».",
|
||
"aiCaptions": "Использовать Claude AI для генерации описания уведомления вместо шаблона.",
|
||
"maxMedia": "Максимальное количество фото/видео в одном уведомлении (0 = только текст).",
|
||
"groupSize": "Медиагруппы Telegram содержат 2-10 элементов. Большие пакеты разбиваются на части.",
|
||
"chunkDelay": "Задержка в миллисекундах между отправкой порций медиа. Предотвращает ограничение Telegram.",
|
||
"maxAssetSize": "Пропускать файлы больше указанного размера в МБ. Лимит Telegram — 50 МБ.",
|
||
"trackingConfig": "Управляет тем, какие события вызывают уведомления и как фильтруются ассеты.",
|
||
"templateConfig": "Управляет форматом сообщений. Используются шаблоны по умолчанию, если не задано.",
|
||
"scanInterval": "Как часто опрашивать сервер Immich на предмет изменений (в секундах). Меньше = быстрее обнаружение, но больше запросов к API."
|
||
},
|
||
"common": {
|
||
"loading": "Загрузка...",
|
||
"save": "Сохранить",
|
||
"cancel": "Отмена",
|
||
"delete": "Удалить",
|
||
"edit": "Редактировать",
|
||
"description": "Описание",
|
||
"close": "Закрыть",
|
||
"confirm": "Подтвердить",
|
||
"error": "Ошибка",
|
||
"success": "Успешно",
|
||
"none": "Нет",
|
||
"noneDefault": "Нет (по умолчанию)",
|
||
"loadError": "Не удалось загрузить данные",
|
||
"headersInvalid": "Невалидный JSON",
|
||
"language": "Язык",
|
||
"theme": "Тема",
|
||
"light": "Светлая",
|
||
"dark": "Тёмная",
|
||
"system": "Системная",
|
||
"test": "Тест",
|
||
"create": "Создать",
|
||
"changePassword": "Сменить пароль",
|
||
"currentPassword": "Текущий пароль",
|
||
"newPassword": "Новый пароль",
|
||
"passwordChanged": "Пароль успешно изменён",
|
||
"expand": "Развернуть",
|
||
"collapse": "Свернуть",
|
||
"syntaxError": "Ошибка синтаксиса",
|
||
"undefinedVar": "Неизвестная переменная",
|
||
"line": "строка"
|
||
}
|
||
}
|