diff --git a/web/public/locales/ru/audio.json b/web/public/locales/ru/audio.json
index 7018b1115..953c0f688 100644
--- a/web/public/locales/ru/audio.json
+++ b/web/public/locales/ru/audio.json
@@ -26,7 +26,7 @@
"gasp": "Вздох",
"pant": "Пыхтение",
"snort": "Фырканье",
- "sniff": "Принюхивание",
+ "sniff": "Нюхание",
"burping": "Отрыжка",
"cough": "Кашель",
"run": "Бег",
@@ -38,6 +38,392 @@
"gargling": "Полоскание горла",
"stomach_rumble": "Урчание живота",
"hiccup": "Икание",
- "fart": "Газы",
- "footsteps": "Шаги"
+ "fart": "Пукание",
+ "footsteps": "Шаги",
+ "chant": "Песнопение",
+ "hands": "Руки",
+ "finger_snapping": "Щелкать пальцами",
+ "clapping": "Хлопать",
+ "moo": "Мычание",
+ "cowbell": "Коровий колокольчик",
+ "heart_murmur": "Шум в сердце",
+ "cheering": "Ликование",
+ "applause": "Аплодисменты",
+ "chatter": "Болтовня",
+ "crowd": "Толпа",
+ "children_playing": "Игра детей",
+ "animal": "Зверь",
+ "pets": "Домашние животные",
+ "dog": "Собака",
+ "bark": "Лай",
+ "yip": "Тявкать",
+ "howl": "Вой",
+ "whimper_dog": "Собачий скулеж",
+ "cat": "Кошка",
+ "purr": "Мурлыканье",
+ "meow": "Мяуканье",
+ "hiss": "Шипение",
+ "growling": "Рычать",
+ "bow_wow": "Гавканье",
+ "heartbeat": "Сердце биение",
+ "caterwaul": "Кошачий вой",
+ "horse": "Лошадь",
+ "clip_clop": "Цоканье",
+ "neigh": "Ржание",
+ "livestock": "Скот",
+ "cattle": "Крупный рогатый скот",
+ "pig": "Свинья",
+ "oink": "Хрюканье",
+ "bleat": "Блеяние",
+ "sheep": "Овца",
+ "fowl": "Домашняя птица",
+ "goat": "Коза",
+ "chicken": "Курица",
+ "cluck": "Кудахтанье",
+ "cock_a_doodle_doo": "Кукареканье",
+ "turkey": "Индейка",
+ "gobble": "Бормотание индейки",
+ "duck": "Утка",
+ "quack": "Кряканье",
+ "goose": "Гусь",
+ "honk": "Гоготание",
+ "wild_animals": "Дикие животные",
+ "roaring_cats": "Рычащие кошки",
+ "roar": "Рычание",
+ "chirp": "Чириканье",
+ "squawk": "Птичий крик",
+ "pigeon": "Голубь",
+ "coo": "Воркование",
+ "crow": "Ворона",
+ "caw": "Карканье",
+ "owl": "Сова",
+ "hoot": "Уханье",
+ "flapping_wings": "Хлопание крыльев",
+ "dogs": "Собаки",
+ "rats": "Крысы",
+ "mouse": "Мышь",
+ "insect": "Насекомое",
+ "cricket": "Сверчок",
+ "mosquito": "Комар",
+ "fly": "Муха",
+ "buzz": "Жужжание",
+ "frog": "Лягушка",
+ "croak": "Кваканье",
+ "snake": "Змея",
+ "rattle": "Треск",
+ "music": "Музыка",
+ "musical_instrument": "Музыкальный инструмент",
+ "whale_vocalization": "Пение кита",
+ "plucked_string_instrument": "Щипковый струнный инструмент",
+ "guitar": "Гитара",
+ "patter": "Шорох",
+ "bass_guitar": "Бас-гитара",
+ "steel_guitar": "Стальная гитара",
+ "tapping": "Постукивание",
+ "car": "Автомобиль",
+ "motorcycle": "Мотоцикл",
+ "bicycle": "Велосипед",
+ "bird": "Птица",
+ "electric_guitar": "Электрогитара",
+ "acoustic_guitar": "Акустическая гитара",
+ "scream": "Крик",
+ "strum": "Звук струн",
+ "banjo": "Банджо",
+ "zither": "Цитра",
+ "ukulele": "Укулеле",
+ "keyboard": "Клавишный инструмент",
+ "electric_piano": "Электропианино",
+ "organ": "Орган",
+ "electronic_organ": "Электроорган",
+ "synthesizer": "Синтезатор",
+ "hammond_organ": "Орган Хаммонда",
+ "sampler": "Сэмплер",
+ "harpsichord": "Клавесин",
+ "percussion": "Ударные инструменты",
+ "drum_kit": "Ударная установка",
+ "drum_machine": "Драммашина",
+ "drum": "Барабан",
+ "snare_drum": "Малый барабан",
+ "rimshot": "Обод барабана",
+ "drum_roll": "Барабанная дробь",
+ "bass_drum": "Бас-барабан",
+ "timpani": "Литавры",
+ "tabla": "Табла",
+ "cymbal": "Тарелка",
+ "hi_hat": "Хай-хэт",
+ "wood_block": "Вуд-блок",
+ "tambourine": "Бубен",
+ "maraca": "Маракас",
+ "gong": "Гонг",
+ "tubular_bells": "Трубчатые колокола",
+ "mallet_percussion": "Маллет-перкуссия",
+ "marimba": "Маримба",
+ "glockenspiel": "Колокольчики",
+ "vibraphone": "Вибрафон",
+ "steelpan": "Стальной барабан",
+ "orchestra": "Оркестр",
+ "brass_instrument": "Медный духовой инструмент",
+ "french_horn": "Валторна",
+ "trumpet": "Труба",
+ "trombone": "Тромбон",
+ "bowed_string_instrument": "Смычковый струнный инструмент",
+ "string_section": "Струнная секция",
+ "mandolin": "Мандолина",
+ "piano": "Пианино",
+ "sitar": "Ситар",
+ "violin": "Скрипка",
+ "pizzicato": "Пиццикато",
+ "cello": "Виолончель",
+ "double_bass": "Контрабас",
+ "wind_instrument": "Духовой инструмент",
+ "flute": "Флейта",
+ "saxophone": "Саксофон",
+ "clarinet": "Кларнет",
+ "harp": "Арфа",
+ "bell": "Колокол",
+ "church_bell": "Церковный колокол",
+ "jingle_bell": "Бубенчик",
+ "bicycle_bell": "Велосипедный звонок",
+ "tuning_fork": "Камертон",
+ "chime": "Колокольчик",
+ "wind_chime": "Музыка ветра",
+ "harmonica": "Губная гармошка",
+ "accordion": "Аккордеон",
+ "bagpipes": "Волынка",
+ "didgeridoo": "Диджериду",
+ "theremin": "Терменвокс",
+ "singing_bowl": "Поющая чаша",
+ "scratching": "Скрэтчинг",
+ "pop_music": "Поп-музыка",
+ "hip_hop_music": "Хип-хоп",
+ "beatboxing": "Битбоксинг",
+ "rock_music": "Рок-музыка",
+ "heavy_metal": "Хеви-метал",
+ "punk_rock": "Панк-рок",
+ "grunge": "Гранж",
+ "progressive_rock": "Прогрессив-рок",
+ "rock_and_roll": "Рок-н-ролл",
+ "psychedelic_rock": "Психоделический рок",
+ "rhythm_and_blues": "Ритм-н-блюз",
+ "soul_music": "Соул",
+ "bluegrass": "Блюграсс",
+ "funk": "Фанк",
+ "middle_eastern_music": "Ближневосточная музыка",
+ "jazz": "Джаз",
+ "disco": "Диско",
+ "classical_music": "Классическая музыка",
+ "opera": "Опера",
+ "house_music": "Хаус",
+ "techno": "Техно",
+ "dubstep": "Дабстеп",
+ "drum_and_bass": "Драм-н-бейс",
+ "electronica": "Электроника",
+ "electronic_dance_music": "Электронная танцевальная музыка",
+ "ambient_music": "Эмбиент",
+ "music_of_latin_america": "Латиноамериканская музыка",
+ "salsa_music": "Сальса",
+ "flamenco": "Фламенко",
+ "blues": "Блюз",
+ "music_for_children": "Детская музыка",
+ "new-age_music": "Нью-эйдж",
+ "a_capella": "А капелла",
+ "music_of_africa": "Африканская музыка",
+ "afrobeat": "Афробит",
+ "christian_music": "Христианская музыка",
+ "gospel_music": "Госпел",
+ "music_of_asia": "Азиатская музыка",
+ "carnatic_music": "Карнатическая музыка",
+ "music_of_bollywood": "Музыка Болливуда",
+ "ska": "Ска",
+ "traditional_music": "Традиционная музыка",
+ "independent_music": "Инди",
+ "song": "Песня",
+ "background_music": "Фоновая музыка",
+ "theme_music": "Тематическая музыка",
+ "jingle": "Джингл",
+ "soundtrack_music": "Саундтрек",
+ "lullaby": "Колыбельная",
+ "video_game_music": "Музыка из видеоигр",
+ "christmas_music": "Рождественская музыка",
+ "dance_music": "Танцевальная музыка",
+ "wedding_music": "Свадебная музыка",
+ "happy_music": "Весёлая музыка",
+ "sad_music": "Грустная музыка",
+ "tender_music": "Нежная музыка",
+ "exciting_music": "Энергичная музыка",
+ "angry_music": "Гневная музыка",
+ "scary_music": "Страшная музыка",
+ "wind": "Ветер",
+ "rustling_leaves": "Шуршание листьев",
+ "wind_noise": "Шум ветра",
+ "thunderstorm": "Гроза",
+ "thunder": "Гром",
+ "water": "Вода",
+ "rain": "Дождь",
+ "raindrop": "Капли дождя",
+ "rain_on_surface": "Дождь на поверхности",
+ "stream": "Поток",
+ "waterfall": "Водопад",
+ "gurgling": "Журчание",
+ "fire": "Огонь",
+ "crackle": "Потрескивание",
+ "vehicle": "Транспорт",
+ "boat": "Лодка",
+ "sailboat": "Парусник",
+ "rowboat": "Вёсельная лодка",
+ "motorboat": "Моторная лодка",
+ "ship": "Корабль",
+ "motor_vehicle": "Моторный транспорт",
+ "power_windows": "Электростеклоподъемники",
+ "skidding": "Занос",
+ "tire_squeal": "Визг шин",
+ "car_passing_by": "Проезжающая машина",
+ "race_car": "Гоночный автомобиль",
+ "truck": "Грузовик",
+ "air_brake": "Пневматический тормоз",
+ "air_horn": "Пневматический гудок",
+ "reversing_beeps": "Сигнал заднего хода",
+ "ice_cream_truck": "Грузовик с мороженым",
+ "bus": "Автобус",
+ "emergency_vehicle": "Транспорт экстренных служб",
+ "police_car": "Полицейский автомобиль",
+ "fire_engine": "Пожарная машина",
+ "rail_transport": "Рельсовый транспорт",
+ "train": "Поезд",
+ "train_whistle": "Свисток поезда",
+ "train_horn": "Гудок поезда",
+ "railroad_car": "Железнодорожный вагон",
+ "train_wheels_squealing": "Визг колес поезда",
+ "subway": "Метро",
+ "aircraft": "Воздушное судно",
+ "aircraft_engine": "Двигатель воздушного судна",
+ "jet_engine": "Реактивный двигатель",
+ "propeller": "Пропеллер",
+ "fixed-wing_aircraft": "Самолет с неподвижным крылом",
+ "skateboard": "Скейтборд",
+ "engine": "Двигатель",
+ "light_engine": "Легкий двигатель",
+ "dental_drill's_drill": "Стоматологическая бормашина",
+ "medium_engine": "Средний двигатель",
+ "heavy_engine": "Тяжёлый двигатель",
+ "engine_knocking": "Детонация двигателя",
+ "engine_starting": "Запуск двигателя",
+ "idling": "Холостой ход",
+ "accelerating": "Ускорение",
+ "ding-dong": "Дин-дон",
+ "sliding_door": "Раздвижная дверь",
+ "slam": "Хлопок",
+ "knock": "Стук",
+ "tap": "Небольшой стук",
+ "squeak": "Скрип",
+ "cupboard_open_or_close": "Открытие или закрытие шкафа",
+ "drawer_open_or_close": "Открытие или закрытие ящика",
+ "dishes": "Тарелки",
+ "cutlery": "Столовые приборы",
+ "chopping": "Нарезание",
+ "frying": "Жарка",
+ "microwave_oven": "Микроволновка",
+ "blender": "Блендер",
+ "water_tap": "Водопроводный кран",
+ "sink": "Раковина",
+ "bathtub": "Ванна",
+ "hair_dryer": "Фен",
+ "toilet_flush": "Слив унитаза",
+ "toothbrush": "Зубная щетка",
+ "zipper": "Молния на одежде",
+ "keys_jangling": "Бряканье ключей",
+ "coin": "Монета",
+ "scissors": "Ножницы",
+ "electric_shaver": "Электробритва",
+ "shuffling_cards": "Тасование карт",
+ "typing": "Печатание",
+ "typewriter": "Печатная машинка",
+ "computer_keyboard": "Компьютерная клавиатура",
+ "writing": "Письмо",
+ "alarm": "Сигнализация",
+ "telephone": "Телефон",
+ "telephone_bell_ringing": "Звонок телефона",
+ "ringtone": "Рингтон",
+ "telephone_dialing": "Набор телефонного номера",
+ "dial_tone": "Телефонный гудок",
+ "busy_signal": "Сигнал занято",
+ "alarm_clock": "Будильник",
+ "siren": "Сирена",
+ "civil_defense_siren": "Сирена гражданской обороны",
+ "foghorn": "Туманный горн",
+ "whistle": "Свисток",
+ "steam_whistle": "Паровой свисток",
+ "mechanisms": "Механизмы",
+ "clock": "Часы",
+ "tick": "Тик",
+ "tick-tock": "Тик-так",
+ "gears": "Шестерни",
+ "pulleys": "Шкивы",
+ "sewing_machine": "Швейная машинка",
+ "mechanical_fan": "Механический вентилятор",
+ "printer": "Принтер",
+ "camera": "Камера",
+ "single-lens_reflex_camera": "Зеркальная камера",
+ "tools": "Инструменты",
+ "sawing": "Распиловка",
+ "filing": "Звук напильника",
+ "sanding": "Шлифовка",
+ "power_tool": "Электроинструмент",
+ "drill": "Дрель",
+ "explosion": "Взрыв",
+ "gunshot": "Выстрел",
+ "machine_gun": "Автомат",
+ "fusillade": "Оружейная очередь",
+ "artillery_fire": "Артиллерийский огонь",
+ "burst": "Очередь выстрелов",
+ "eruption": "Извержение",
+ "boom": "Бум",
+ "wood": "Дерево",
+ "chop": "Рубка",
+ "splinter": "Щепка",
+ "glass": "Стекло",
+ "crack": "Трещина",
+ "chink": "Звон",
+ "shatter": "Разбитие",
+ "silence": "Тишина",
+ "sound_effect": "Звуковой эффект",
+ "environmental_noise": "Шум окружающей среды",
+ "static": "Статический шум",
+ "field_recording": "Полевая запись",
+ "country": "Кантри",
+ "vocal_music": "Вокальная музыка",
+ "electronic_music": "Электронная музыка",
+ "folk_music": "Фолк-музыка",
+ "trance_music": "Транс",
+ "swing_music": "Свинг",
+ "reggae": "Регги",
+ "waves": "Волны",
+ "ambulance": "Скорая помощь",
+ "helicopter": "Вертолет",
+ "radio": "Радио",
+ "lawn_mower": "Газонокосилка",
+ "electric_toothbrush": "Электрическая зубная щетка",
+ "air_conditioning": "Кондиционер",
+ "toot": "Гудок",
+ "traffic_noise": "Дорожный шум",
+ "ocean": "Океан",
+ "steam": "Пар",
+ "car_alarm": "Автомобильная сигнализация",
+ "buzzer": "Зуммер",
+ "chainsaw": "Цепная пила",
+ "door": "Дверь",
+ "doorbell": "Дверной звонок",
+ "smoke_detector": "Датчик дыма",
+ "white_noise": "Белый шум",
+ "cash_register": "Касса",
+ "vacuum_cleaner": "Пылесос",
+ "fire_alarm": "Пожарная сигнализация",
+ "ratchet": "Трещотка",
+ "cap_gun": "Игрушечный пистолет",
+ "fireworks": "Фейерверк",
+ "jackhammer": "Отбойный молоток",
+ "pink_noise": "Розовый шум",
+ "hammer": "Молоток",
+ "firecracker": "Петарда",
+ "television": "Телевидение"
}
diff --git a/web/public/locales/ru/common.json b/web/public/locales/ru/common.json
index 0967ef424..ea5a430bc 100644
--- a/web/public/locales/ru/common.json
+++ b/web/public/locales/ru/common.json
@@ -1 +1,242 @@
-{}
+{
+ "time": {
+ "untilForTime": "До {{time}}",
+ "untilForRestart": "До перезапуска Frigate.",
+ "untilRestart": "До перезапуска",
+ "ago": "{{timeAgo}} назад",
+ "justNow": "Только что",
+ "today": "Сегодня",
+ "yesterday": "Вчера",
+ "thisWeek": "На этой неделе",
+ "last14": "Последние 14 дней",
+ "last30": "Последние 30 дней",
+ "last7": "Последние 7 дней",
+ "thisMonth": "В этом месяце",
+ "5minutes": "5 минут",
+ "30minutes": "30 минут",
+ "1hour": "1 час",
+ "12hours": "12 часов",
+ "24hours": "24 часа",
+ "pm": "pm",
+ "am": "am",
+ "yr": "{{time}}л",
+ "year_one": "{{time}} год",
+ "year_few": "{{time}} года",
+ "year_many": "{{time}} лет",
+ "mo": "{{time}}мес",
+ "month_one": "{{time}} месяц",
+ "month_few": "{{time}} месяца",
+ "month_many": "{{time}} месяцев",
+ "d": "{{time}}д",
+ "h": "{{time}}ч",
+ "hour_one": "{{time}} час",
+ "hour_few": "{{time}} часа",
+ "hour_many": "{{time}} часов",
+ "m": "{{time}}мин",
+ "minute_one": "{{time}} минута",
+ "minute_few": "{{time}} минуты",
+ "minute_many": "{{time}} минут",
+ "day_one": "{{time}} день",
+ "day_few": "{{time}} дня",
+ "day_many": "{{time}} дней",
+ "lastWeek": "На прошлой неделе",
+ "lastMonth": "В прошлом месяце",
+ "10minutes": "10 минут",
+ "s": "{{time}}с",
+ "second_one": "{{time}} секунда",
+ "second_few": "{{time}} секунды",
+ "second_many": "{{time}} секунд",
+ "formattedTimestampExcludeSeconds": {
+ "24hour": "%b %-d, %H:%M",
+ "12hour": "%b %-d, %I:%M %p"
+ },
+ "formattedTimestampWithYear": {
+ "24hour": "%b %-d %Y, %H:%M",
+ "12hour": "%b %-d %Y, %I:%M %p"
+ },
+ "formattedTimestamp2": {
+ "24hour": "%d %b %H:%M:%S",
+ "12hour": "%m/%d %I:%M:%S%P"
+ },
+ "formattedTimestamp": {
+ "12hour": "%b %-d, %I:%M:%S %p",
+ "24hour": "%b %-d, %H:%M:%S"
+ },
+ "formattedTimestampOnlyMonthAndDay": "%b %-d"
+ },
+ "selectItem": "Выбор {{item}}",
+ "button": {
+ "apply": "Принять",
+ "done": "Готово",
+ "enabled": "Включено",
+ "enable": "Включить",
+ "save": "Сохранить",
+ "saving": "Сохранение...",
+ "fullscreen": "Полноэкранный режим",
+ "pictureInPicture": "Картинка в картинке",
+ "twoWayTalk": "Двусторонняя связь",
+ "cameraAudio": "Аудио с камеры",
+ "on": "Вкл",
+ "edit": "Редактировать",
+ "copyCoordinates": "Копировать координаты",
+ "delete": "Удалить",
+ "yes": "Да",
+ "no": "Нет",
+ "download": "Загрузить",
+ "info": "Информация",
+ "suspended": "Приостановлено",
+ "cancel": "Отменить",
+ "disable": "Отключить",
+ "reset": "Сбросить",
+ "disabled": "Отключено",
+ "close": "Закрыть",
+ "copy": "Копировать",
+ "back": "Назад",
+ "history": "История",
+ "off": "Выкл",
+ "exitFullscreen": "Выйти из полноэкранного режима",
+ "unsuspended": "Возобновить",
+ "play": "Воспроизвести",
+ "unselect": "Снять выбор",
+ "export": "Экспорт",
+ "deleteNow": "Удалить сейчас",
+ "next": "Следующий"
+ },
+ "label": {
+ "back": "Вернуться"
+ },
+ "unit": {
+ "speed": {
+ "kph": "км/ч",
+ "mph": "миль/ч"
+ }
+ },
+ "menu": {
+ "configuration": "Конфигурация",
+ "systemLogs": "Системные логи",
+ "settings": "Настройки",
+ "configurationEditor": "Редактор конфигурации",
+ "system": "Система",
+ "systemMetrics": "Метрики системы",
+ "languages": "Языки",
+ "language": {
+ "en": "English (Английский)",
+ "zhCN": "简体中文 (Упрощённый китайский)",
+ "es": "Español (Испанский)",
+ "hi": "हिन्दी (Хинди)",
+ "fr": "Français (Французский)",
+ "ar": "العربية (Арабский)",
+ "pt": "Português (Португальский)",
+ "ru": "Русский",
+ "tr": "Türkçe (Турецкий)",
+ "nl": "Nederlands (Нидерландский)",
+ "cs": "Čeština (Чешский)",
+ "nb": "Norsk Bokmål (Норвежский (букмол))",
+ "vi": "Tiếng Việt (Вьетнамский)",
+ "fa": "فارسی (Фарси)",
+ "pl": "Polski (Польский)",
+ "uk": "Українська (Украинский)",
+ "el": "Ελληνικά (Греческий)",
+ "da": "Dansk (Датский)",
+ "sk": "Slovenčina (Словацкий)",
+ "sv": "Svenska (Шведский)",
+ "hu": "Magyar (Венгерский)",
+ "fi": "Suomi (Финский)",
+ "ro": "Română (Румынский)",
+ "ja": "日本語 (Японский)",
+ "it": "Italiano (Итальянский)",
+ "de": "Deutsch (Немецкий)",
+ "ko": "한국어 (Корейский)",
+ "he": "עברית (Иврит)",
+ "withSystem": {
+ "label": "Использовать системные языковые настройки"
+ }
+ },
+ "darkMode": {
+ "withSystem": {
+ "label": "Использовать системные настройки светлого или тёмного режимов"
+ },
+ "label": "Тёмный режим",
+ "light": "Светлый",
+ "dark": "Тёмный"
+ },
+ "withSystem": "Система",
+ "theme": {
+ "label": "Тема",
+ "blue": "Синяя",
+ "default": "По умолчанию",
+ "green": "Зелёная",
+ "nord": "Северная",
+ "red": "Красная",
+ "contrast": "Высокий контраст"
+ },
+ "help": "Помощь",
+ "documentation": {
+ "title": "Документация",
+ "label": "Документация по Frigate"
+ },
+ "explore": "Обзор",
+ "restart": "Перезапуск Frigate",
+ "live": {
+ "title": "Прямой эфир",
+ "allCameras": "Все камеры",
+ "cameras": {
+ "count_one": "{{count}} камера",
+ "count_few": "{{count}} камеры",
+ "count_many": "{{count}} камер",
+ "title": "Камеры"
+ }
+ },
+ "review": "Просмотр",
+ "export": "Экспорт",
+ "uiPlayground": "Среда тестирования интерфейсов",
+ "faceLibrary": "Библиотека Лиц",
+ "user": {
+ "title": "Пользователь",
+ "account": "Аккаунт",
+ "current": "Текущий пользователь: {{user}}",
+ "anonymous": "anonymous",
+ "logout": "Выход",
+ "setPassword": "Установить пароль"
+ },
+ "appearance": "Внешний вид"
+ },
+ "pagination": {
+ "label": "пагинация",
+ "previous": {
+ "title": "Предыдущая",
+ "label": "Переход на предыдущую страницу"
+ },
+ "next": {
+ "title": "Следующая",
+ "label": "Переход на следующую страницу"
+ },
+ "more": "Больше страниц"
+ },
+ "accessDenied": {
+ "desc": "У вас нет разрешения на просмотр этой страницы.",
+ "documentTitle": "Доступ запрещён - Frigate",
+ "title": "Доступ запрещён"
+ },
+ "notFound": {
+ "desc": "Страница не найдена",
+ "documentTitle": "Не найдена - Frigate",
+ "title": "404"
+ },
+ "toast": {
+ "copyUrlToClipboard": "URL скопирован в буфер обмена.",
+ "save": {
+ "error": {
+ "noMessage": "Не удалось сохранить изменения конфигурации",
+ "title": "Не удалось сохранить изменения конфигурации: {{errorMessage}}"
+ },
+ "title": "Сохранить"
+ }
+ },
+ "role": {
+ "title": "Роль",
+ "admin": "Администратор",
+ "viewer": "Наблюдатель",
+ "desc": "Администраторы имеют полный доступ ко всем функциям в интерфейсе Frigate. Наблюдатели ограничены просмотром камер, элементов просмотра и архивных записей."
+ }
+}
diff --git a/web/public/locales/ru/components/auth.json b/web/public/locales/ru/components/auth.json
index 0967ef424..b227af835 100644
--- a/web/public/locales/ru/components/auth.json
+++ b/web/public/locales/ru/components/auth.json
@@ -1 +1,15 @@
-{}
+{
+ "form": {
+ "user": "Имя пользователя",
+ "password": "Пароль",
+ "login": "Логин",
+ "errors": {
+ "usernameRequired": "Необходимо ввести имя пользователя",
+ "passwordRequired": "Необходимо ввести пароль",
+ "rateLimit": "Превышение числа попыток. Попробуй еще раз позже.",
+ "loginFailed": "Ошибка входа",
+ "unknownError": "Неизвестная ошибка. Проверьте логи.",
+ "webUnknownError": "Неизвестная ошибка. Проверьте логи консоли."
+ }
+ }
+}
diff --git a/web/public/locales/ru/components/camera.json b/web/public/locales/ru/components/camera.json
index 0967ef424..88ed8e9c0 100644
--- a/web/public/locales/ru/components/camera.json
+++ b/web/public/locales/ru/components/camera.json
@@ -1 +1,83 @@
-{}
+{
+ "group": {
+ "label": "Группы камер",
+ "add": "Добавить группу камер",
+ "edit": "Редактирование группы камер",
+ "delete": {
+ "label": "Удалить группу камер",
+ "confirm": {
+ "title": "Подтвердить удаление",
+ "desc": "Вы уверены, что хотите удалить группу камер {{name}}?"
+ }
+ },
+ "name": {
+ "label": "Название",
+ "placeholder": "Введите название...",
+ "errorMessage": {
+ "exists": "Такое название группы камер уже существует.",
+ "nameMustNotPeriod": "Название группы камер не должно содержать точки.",
+ "invalid": "Неверное название группы камер.",
+ "mustLeastCharacters": "Название группы камер должно содержать не менее 2 символов."
+ }
+ },
+ "cameras": {
+ "label": "Камеры",
+ "desc": "Выберите камеры для этой группы."
+ },
+ "icon": "Иконка",
+ "success": "Группа камер {{name}} сохранена.",
+ "camera": {
+ "setting": {
+ "label": "Настройки видеопотока",
+ "desc": "Изменить параметры прямой трансляции для панели этой группы камер. Эти настройки зависят от устройства/браузера.",
+ "audioIsAvailable": "Для этого потока доступен звук",
+ "audioIsUnavailable": "Для этого потока звук недоступен",
+ "audio": {
+ "tips": {
+ "title": "Аудио должно выводиться с вашей камеры и быть настроено в go2rtc для этого потока.",
+ "document": "Прочитать документацию "
+ }
+ },
+ "streamMethod": {
+ "label": "Метод стриминга",
+ "method": {
+ "noStreaming": {
+ "label": "Нет потока",
+ "desc": "Изображения с камеры будут обновляться только раз в минуту, и прямая трансляция происходить не будет."
+ },
+ "smartStreaming": {
+ "label": "Умный поток (рекомендуется)",
+ "desc": "Умный поток будет обновлять изображение с камеры раз в минуту при отсутствии активности для экономии трафика и ресурсов. При обнаружении активности изображение автоматически переключается на прямую трансляцию."
+ },
+ "continuousStreaming": {
+ "label": "Непрерывный поток",
+ "desc": {
+ "warning": "Непрерывная потоковая передача может привести к высокому потреблению трафика и проблемам с производительностью. Используйте с осторожностью.",
+ "title": "Изображение с камеры всегда будет транслироваться в реальном времени при отображении на панели, даже если активность не обнаружена."
+ }
+ }
+ }
+ },
+ "compatibilityMode": {
+ "label": "Режим совместимости",
+ "desc": "Включите эту опцию только если прямая трансляция с вашей камеры отображает цветовые артефакты и имеет диагональную линию с правой стороны изображения."
+ },
+ "title": "Настройки видеопотока {{cameraName}}"
+ }
+ }
+ },
+ "debug": {
+ "options": {
+ "label": "Настройки",
+ "title": "Опции",
+ "hideOptions": "Скрыть опции",
+ "showOptions": "Показать опции"
+ },
+ "boundingBox": "Ограничивающая рамка",
+ "timestamp": "Метка времени",
+ "zones": "Зоны",
+ "mask": "Маска",
+ "motion": "Движение",
+ "regions": "Регионы"
+ }
+}
diff --git a/web/public/locales/ru/components/dialog.json b/web/public/locales/ru/components/dialog.json
index 0967ef424..531ee4b66 100644
--- a/web/public/locales/ru/components/dialog.json
+++ b/web/public/locales/ru/components/dialog.json
@@ -1 +1,116 @@
-{}
+{
+ "restart": {
+ "title": "Вы уверены, что хотите перезапустить Frigate?",
+ "button": "Перезапуск",
+ "restarting": {
+ "title": "Frigate перезапускается",
+ "content": "Эта страница перезагрузится через {{countdown}} сек.",
+ "button": "Принудительно перезагрузить сейчас"
+ }
+ },
+ "explore": {
+ "plus": {
+ "submitToPlus": {
+ "label": "Отправить в Frigate+",
+ "desc": "Объекты в местах, которых вы хотите избежать, не являются ложными срабатываниями. Отправка их как ложных срабатываний запутает модель."
+ },
+ "review": {
+ "true": {
+ "label": "Подтвердите метку для Frigate Plus",
+ "true_one": "Это {{label}}",
+ "true_few": "Это {{label}}",
+ "true_many": "Это {{label}}"
+ },
+ "false": {
+ "label": "Не подтверждать эту метку для Frigate Plus",
+ "false_one": "Это не {{label}}",
+ "false_few": "Это не {{label}}",
+ "false_many": "Это не {{label}}"
+ },
+ "state": {
+ "submitted": "Отправлено"
+ }
+ }
+ },
+ "video": {
+ "viewInHistory": "Посмотреть в Истории"
+ }
+ },
+ "export": {
+ "time": {
+ "fromTimeline": "Выберите из Таймлайна",
+ "custom": "Пользовательский",
+ "start": {
+ "title": "Время начала",
+ "label": "Выберите время начала"
+ },
+ "end": {
+ "title": "Время окончания",
+ "label": "Выберите время окончания"
+ },
+ "lastHour_one": "Последний час",
+ "lastHour_few": "Последние {{count}} часа",
+ "lastHour_many": "Последние {{count}} часов"
+ },
+ "name": {
+ "placeholder": "Назовите экспорт"
+ },
+ "select": "Выбрать",
+ "export": "Экспорт",
+ "selectOrExport": "Выбрать или экспортировать",
+ "toast": {
+ "success": "Экспорт успешно запущен. Файл доступен в папке /exports.",
+ "error": {
+ "failed": "Не удалось запустить экспорт: {{error}}",
+ "noVaildTimeSelected": "Не выбран допустимый временной диапазон",
+ "endTimeMustAfterStartTime": "Время окончания должно быть после времени начала"
+ }
+ },
+ "fromTimeline": {
+ "saveExport": "Сохранить экспорт",
+ "previewExport": "Предпросмотр экспорта"
+ }
+ },
+ "streaming": {
+ "label": "Поток",
+ "restreaming": {
+ "disabled": "Рестриминг не включён для этой камеры.",
+ "desc": {
+ "title": "Настройте go2rtc для дополнительных вариантов просмотра в реальном времени и аудио для этой камеры.",
+ "readTheDocumentation": "Прочитать документацию "
+ }
+ },
+ "debugView": "Режим отладки",
+ "showStats": {
+ "label": "Показать статистику потока",
+ "desc": "Включите эту опцию, чтобы отображать статистику потока в виде наложения на изображение с камеры."
+ }
+ },
+ "search": {
+ "saveSearch": {
+ "label": "Сохранить поиск",
+ "placeholder": "Введите название для вашего поиска",
+ "overwrite": "{{searchName}} уже существует. Сохранение перезапишет существующее значение.",
+ "success": "Поиск {{searchName}} был сохранен.",
+ "button": {
+ "save": {
+ "label": "Сохранить этот поиск"
+ }
+ },
+ "desc": "Укажите название этого сохранённого поиска."
+ }
+ },
+ "recording": {
+ "confirmDelete": {
+ "title": "Подтвердить удаление",
+ "desc": {
+ "selected": "Вы уверены, что хотите удалить все записанное видео, связанное с этим элементом просмотра?
Удерживайте клавишу Shift, чтобы пропустить это окно в будущем."
+ }
+ },
+ "button": {
+ "export": "Экспорт",
+ "markAsReviewed": "Пометить как просмотренное",
+ "deleteNow": "Удалить сейчас"
+ }
+ }
+}
diff --git a/web/public/locales/ru/components/filter.json b/web/public/locales/ru/components/filter.json
index 0967ef424..653a684ec 100644
--- a/web/public/locales/ru/components/filter.json
+++ b/web/public/locales/ru/components/filter.json
@@ -1 +1,126 @@
-{}
+{
+ "filter": "Фильтр",
+ "labels": {
+ "label": "Метки",
+ "all": {
+ "title": "Все метки",
+ "short": "Метки"
+ },
+ "count": "{{count}} меток",
+ "count_one": "{{count}} Метка",
+ "count_other": "{{count}} меток"
+ },
+ "zones": {
+ "all": {
+ "title": "Все зоны",
+ "short": "Зоны"
+ },
+ "label": "Зоны"
+ },
+ "dates": {
+ "all": {
+ "title": "Все даты",
+ "short": "Даты"
+ }
+ },
+ "timeRange": "Временной диапазон",
+ "subLabels": {
+ "label": "Вторичные метки",
+ "all": "Все вторичные метки"
+ },
+ "score": "Оценка",
+ "estimatedSpeed": "Расчетная скорость ({{unit}})",
+ "more": "Больше фильтров",
+ "reset": {
+ "label": "Сбросить фильтры к значениям по умолчанию"
+ },
+ "features": {
+ "hasSnapshot": "Есть снимок",
+ "hasVideoClip": "Есть видеоклип",
+ "submittedToFrigatePlus": {
+ "label": "Отправлено в Frigate+",
+ "tips": "Сначала необходимо отфильтровать отслеживаемые объекты, у которых есть снимок.
Отслеживаемые объекты без снимка нельзя отправить в Frigate+."
+ },
+ "label": "Функции"
+ },
+ "sort": {
+ "speedAsc": "Расчетная скорость (по возрастанию)",
+ "speedDesc": "Расчетная скорость (по убыванию)",
+ "label": "Сортировка",
+ "dateAsc": "Дата (по возрастанию)",
+ "dateDesc": "Дата (по убыванию)",
+ "scoreAsc": "Оценка объекта (по возрастанию)",
+ "scoreDesc": "Оценка объекта (по убыванию)",
+ "relevance": "Релевантность"
+ },
+ "cameras": {
+ "label": "Фильтр камер",
+ "all": {
+ "title": "Все камеры",
+ "short": "Камеры"
+ }
+ },
+ "explore": {
+ "settings": {
+ "defaultView": {
+ "unfilteredGrid": "Нефильтрованная сетка",
+ "summary": "Сводка",
+ "title": "Вид по умолчанию",
+ "desc": "При отсутствии выбранных фильтров отображать сводку последних отслеживаемых объектов для каждой метки или показывать нефильтрованную сетку."
+ },
+ "gridColumns": {
+ "title": "Столбцы сетки",
+ "desc": "Выберите количество столбцов сетки."
+ },
+ "searchSource": {
+ "label": "Источник поиска",
+ "desc": "Выберите, выполнять поиск по миниатюрам или описаниям отслеживаемых объектов.",
+ "options": {
+ "thumbnailImage": "Изображение миниатюры",
+ "description": "Описание"
+ }
+ },
+ "title": "Настройки"
+ },
+ "date": {
+ "selectDateBy": {
+ "label": "Выберите дату для фильтрации"
+ }
+ }
+ },
+ "logSettings": {
+ "filterBySeverity": "Фильтровать логи по уровню важности",
+ "loading": {
+ "title": "Загрузка",
+ "desc": "При прокрутке панели логов в самый низ новые записи автоматически отображаются по мере их добавления."
+ },
+ "label": "Уровень детализации логов",
+ "allLogs": "Все логи",
+ "disableLogStreaming": "Отключить потоковую передачу логов"
+ },
+ "trackedObjectDelete": {
+ "title": "Подтвердить удаление",
+ "toast": {
+ "error": "Не удалось удалить отслеживаемые объекты: {{errorMessage}}",
+ "success": "Отслеживаемые объекты успешно удалены."
+ },
+ "desc": "Удаление этих {{objectLength}} отслеживаемых объектов приведёт к удалению их снимков, сохранённых эмбеддингов и записей жизненного цикла. НО сами записи в разделе «История» останутся.
Вы уверены, что хотите продолжить?
Удерживайте Shift, чтобы пропустить это окно в будущем."
+ },
+ "zoneMask": {
+ "filterBy": "Фильтр по маске зоны"
+ },
+ "recognizedLicensePlates": {
+ "noLicensePlatesFound": "Номерных знаков не найдено.",
+ "placeholder": "Введите номер для поиска знака...",
+ "title": "Распознанные номерные знаки",
+ "loadFailed": "Не удалось загрузить распознанные номерные знаки.",
+ "loading": "Загрузка распознанных номерных знаков...",
+ "selectPlatesFromList": "Выберите один или более знаков из списка."
+ },
+ "review": {
+ "showReviewed": "Показать просмотренные"
+ },
+ "motion": {
+ "showMotionOnly": "Показывать только движение"
+ }
+}
diff --git a/web/public/locales/ru/components/icons.json b/web/public/locales/ru/components/icons.json
index 0967ef424..792966741 100644
--- a/web/public/locales/ru/components/icons.json
+++ b/web/public/locales/ru/components/icons.json
@@ -1 +1,8 @@
-{}
+{
+ "iconPicker": {
+ "selectIcon": "Выберите иконку",
+ "search": {
+ "placeholder": "Поиск иконки..."
+ }
+ }
+}
diff --git a/web/public/locales/ru/components/input.json b/web/public/locales/ru/components/input.json
index 0967ef424..149b56d0a 100644
--- a/web/public/locales/ru/components/input.json
+++ b/web/public/locales/ru/components/input.json
@@ -1 +1,10 @@
-{}
+{
+ "button": {
+ "downloadVideo": {
+ "label": "Скачать видео",
+ "toast": {
+ "success": "Загрузка видео начата."
+ }
+ }
+ }
+}
diff --git a/web/public/locales/ru/components/player.json b/web/public/locales/ru/components/player.json
index 0967ef424..f0a44efcd 100644
--- a/web/public/locales/ru/components/player.json
+++ b/web/public/locales/ru/components/player.json
@@ -1 +1,51 @@
-{}
+{
+ "noRecordingsFoundForThisTime": "Не найдено ни одной записи",
+ "noPreviewFound": "Предпросмотр не найден",
+ "submitFrigatePlus": {
+ "title": "Отправить этот кадр в Frigate+?",
+ "submit": "Отправить"
+ },
+ "noPreviewFoundFor": "Не найдено предпросмотра для {{cameraName}}",
+ "livePlayerRequiredIOSVersion": "iOS 17.1 или выше требуется для этого типа стрима.",
+ "streamOffline": {
+ "title": "Поток оффлайн",
+ "desc": "С потока detect
камеры {{cameraName}} не получено кадров, проверьте логи ошибок"
+ },
+ "cameraDisabled": "Камера отключена",
+ "stats": {
+ "streamType": {
+ "title": "Тип потока:",
+ "short": "Тип"
+ },
+ "bandwidth": {
+ "title": "Пропускная способность:",
+ "short": "Пропускная способность"
+ },
+ "latency": {
+ "title": "Задержка:",
+ "value": "{{seconds}} сек",
+ "short": {
+ "title": "Задержка",
+ "value": "{{seconds}} сек"
+ }
+ },
+ "totalFrames": "Всего кадров:",
+ "droppedFrames": {
+ "title": "Пропущено кадров:",
+ "short": {
+ "title": "Пропущено",
+ "value": "{{droppedFrames}} кадров"
+ }
+ },
+ "decodedFrames": "Декодированные кадры:",
+ "droppedFrameRate": "Частота пропущенных кадров:"
+ },
+ "toast": {
+ "error": {
+ "submitFrigatePlusFailed": "Не удалось отправить кадр в Frigate+"
+ },
+ "success": {
+ "submittedFrigatePlus": "Кадр успешно загружен в Frigate+"
+ }
+ }
+}
diff --git a/web/public/locales/ru/objects.json b/web/public/locales/ru/objects.json
index 0967ef424..659ff402c 100644
--- a/web/public/locales/ru/objects.json
+++ b/web/public/locales/ru/objects.json
@@ -1 +1,120 @@
-{}
+{
+ "dog": "Собака",
+ "cat": "Кошка",
+ "animal": "Зверь",
+ "bark": "Лай",
+ "person": "Человек",
+ "bicycle": "Велосипед",
+ "car": "Автомобиль",
+ "motorcycle": "Мотоцикл",
+ "bird": "Птица",
+ "horse": "Лошадь",
+ "sheep": "Овца",
+ "mouse": "Мышь",
+ "goat": "Коза",
+ "airplane": "Самолет",
+ "keyboard": "Клавишный инструмент",
+ "boat": "Лодка",
+ "bus": "Автобус",
+ "train": "Поезд",
+ "skateboard": "Скейтборд",
+ "door": "Дверь",
+ "blender": "Блендер",
+ "sink": "Раковина",
+ "clock": "Часы",
+ "vehicle": "Транспорт",
+ "hair_dryer": "Фен",
+ "toothbrush": "Зубная щетка",
+ "scissors": "Ножницы",
+ "traffic_light": "Светофор",
+ "fire_hydrant": "Пожарный гидрант",
+ "street_sign": "Дорожный знак",
+ "stop_sign": "Знак Стоп",
+ "parking_meter": "Парковочный счётчик",
+ "bench": "Скамейка",
+ "cow": "Корова",
+ "elephant": "Слон",
+ "bear": "Медведь",
+ "zebra": "Зебра",
+ "giraffe": "Жираф",
+ "hat": "Шляпа",
+ "backpack": "Рюкзак",
+ "umbrella": "Зонтик",
+ "shoe": "Обувь",
+ "eye_glasses": "Очки",
+ "tie": "Галстук",
+ "suitcase": "Чемодан",
+ "handbag": "Сумочка",
+ "frisbee": "Фрисби",
+ "skis": "Лыжи",
+ "snowboard": "Сноуборд",
+ "kite": "Воздушный змей",
+ "baseball_bat": "Бейсбольная бита",
+ "baseball_glove": "Бейсбольная перчатка",
+ "sports_ball": "Спортивный мяч",
+ "surfboard": "Доска для серфинга",
+ "tennis_racket": "Теннисная ракетка",
+ "bottle": "Бутылка",
+ "plate": "Тарелка",
+ "wine_glass": "Винный бокал",
+ "cup": "Чашка",
+ "fork": "Вилка",
+ "spoon": "Ложка",
+ "bowl": "Миска",
+ "banana": "Банан",
+ "apple": "Яблоко",
+ "orange": "Апельсин",
+ "broccoli": "Брокколи",
+ "sandwich": "Сэндвич",
+ "carrot": "Морковь",
+ "hot_dog": "Хот-дог",
+ "pizza": "Пицца",
+ "donut": "Пончик",
+ "cake": "Торт",
+ "chair": "Стул",
+ "couch": "Диван",
+ "potted_plant": "Комнатное растение",
+ "bed": "Кровать",
+ "mirror": "Зеркало",
+ "dining_table": "Обеденный стол",
+ "window": "Окно",
+ "desk": "Стол",
+ "toilet": "Туалет",
+ "tv": "ТВ",
+ "laptop": "Ноутбук",
+ "remote": "Пульт дистанционного управления",
+ "cell_phone": "Мобильный телефон",
+ "microwave": "Микроволновка",
+ "oven": "Духовка",
+ "toaster": "Тостер",
+ "refrigerator": "Холодильник",
+ "book": "Книга",
+ "vase": "Ваза",
+ "teddy_bear": "Плюшевый мишка",
+ "hair_brush": "Расчёска",
+ "squirrel": "Белка",
+ "deer": "Олень",
+ "fox": "Лиса",
+ "rabbit": "Кролик",
+ "raccoon": "Енот",
+ "robot_lawnmower": "Роботизированная газонокосилка",
+ "waste_bin": "Мусорное ведро",
+ "on_demand": "По требованию",
+ "face": "Лицо",
+ "license_plate": "Номерной знак",
+ "package": "Посылка",
+ "bbq_grill": "Гриль для барбекю",
+ "amazon": "Amazon",
+ "usps": "USPS",
+ "ups": "UPS",
+ "fedex": "FedEx",
+ "dhl": "DHL",
+ "an_post": "An Post",
+ "purolator": "Purolator",
+ "knife": "Нож",
+ "postnl": "PostNL",
+ "nzpost": "NZPost",
+ "postnord": "PostNord",
+ "gls": "GLS",
+ "dpd": "DPD"
+}
diff --git a/web/public/locales/ru/views/configEditor.json b/web/public/locales/ru/views/configEditor.json
index 0967ef424..e82cbf6ff 100644
--- a/web/public/locales/ru/views/configEditor.json
+++ b/web/public/locales/ru/views/configEditor.json
@@ -1 +1,15 @@
-{}
+{
+ "configEditor": "Редактор конфига",
+ "copyConfig": "Скопировать конфигурацию",
+ "saveAndRestart": "Сохранить и перезапустить",
+ "saveOnly": "Только сохранить",
+ "documentTitle": "Редактор конфигурации - Frigate",
+ "toast": {
+ "success": {
+ "copyToClipboard": "Конфигурация скопирована в буфер обмена."
+ },
+ "error": {
+ "savingError": "Ошибка сохранения конфигурации"
+ }
+ }
+}
diff --git a/web/public/locales/ru/views/events.json b/web/public/locales/ru/views/events.json
index 0967ef424..de63641ad 100644
--- a/web/public/locales/ru/views/events.json
+++ b/web/public/locales/ru/views/events.json
@@ -1 +1,35 @@
-{}
+{
+ "alerts": "Оповещения",
+ "detections": "Обнаружения",
+ "motion": {
+ "label": "Движение",
+ "only": "Только движение"
+ },
+ "allCameras": "Все камеры",
+ "camera": "Камера",
+ "empty": {
+ "alert": "Отсутствуют оповещения для просмотра",
+ "detection": "Отсутствуют обнаружения для просмотра",
+ "motion": "Не найдено данных о движении"
+ },
+ "timeline": "Таймлайн",
+ "timeline.aria": "Выбор таймлайна",
+ "events": {
+ "label": "События",
+ "aria": "Выбор событий",
+ "noFoundForTimePeriod": "Для этого периода времени не найдено ни одного события."
+ },
+ "documentTitle": "Просмотр - Frigate",
+ "recordings": {
+ "documentTitle": "Записи - Frigate"
+ },
+ "calendarFilter": {
+ "last24Hours": "Последние 24 часа"
+ },
+ "markAsReviewed": "Пометить как просмотренное",
+ "newReviewItems": {
+ "label": "Посмотреть новые элементы для просмотра",
+ "button": "Новые элементы для просмотра"
+ },
+ "markTheseItemsAsReviewed": "Пометить эти элементы как просмотренные"
+}
diff --git a/web/public/locales/ru/views/explore.json b/web/public/locales/ru/views/explore.json
index 0967ef424..93080daf0 100644
--- a/web/public/locales/ru/views/explore.json
+++ b/web/public/locales/ru/views/explore.json
@@ -1 +1,194 @@
-{}
+{
+ "exploreIsUnavailable": {
+ "embeddingsReindexing": {
+ "context": "Обзор станет доступен после завершения переиндексации эмбеддингов отслеживаемых объектов.",
+ "startingUp": "Запуск...",
+ "estimatedTime": "Оставшееся время:",
+ "finishingShortly": "Скоро завершится",
+ "step": {
+ "descriptionsEmbedded": "Встроенные описания: ",
+ "trackedObjectsProcessed": "Обработанные отслеживаемые объекты: ",
+ "thumbnailsEmbedded": "Встроенные миниатюры: "
+ }
+ },
+ "title": "Обзор недоступен",
+ "downloadingModels": {
+ "setup": {
+ "visionModel": "Модель компьютерного зрения",
+ "visionModelFeatureExtractor": "Экстрактор признаков модели компьютерного зрения",
+ "textModel": "Текстовая модель",
+ "textTokenizer": "Текстовый токенизатор"
+ },
+ "tips": {
+ "context": "Возможно, вы захотите переиндексировать эмбеддинги отслеживаемых объектов после загрузки моделей.",
+ "documentation": "Прочитать документацию"
+ },
+ "context": "Frigate загружает необходимые модели эмбеддингов для поддержки функции семантического поиска. Это может занять несколько минут в зависимости от скорости вашего интернет-соединения.",
+ "error": "Произошла ошибка. Проверьте логи Frigate."
+ }
+ },
+ "generativeAI": "Генеративный ИИ",
+ "documentTitle": "Обзор - Frigate",
+ "details": {
+ "timestamp": "Метка времени",
+ "item": {
+ "title": "Детали элемента просмотра",
+ "desc": "Детали элемента просмотра",
+ "button": {
+ "share": "Поделиться этим элементом просмотра",
+ "viewInExplore": "Смотреть в Обзоре"
+ },
+ "tips": {
+ "hasMissingObjects": "Настройте конфигурацию, если хотите, чтобы Frigate сохранял отслеживаемые объекты для следующих меток: {{objects}}",
+ "mismatch_one": "{{count}} недоступный объект обнаружен и включен в этот элемент просмотра. Эти объекты либо не соответствовали критериям тревоги/детекции, либо уже были удалены.",
+ "mismatch_few": "{{count}} недоступных объекта обнаружено и включено в этот элемент просмотра. Эти объекты либо не соответствовали критериям тревоги/детекции, либо уже были удалены.",
+ "mismatch_many": "{{count}} недоступных объектов обнаружено и включено в этот элемент просмотра. Эти объекты либо не соответствовали критериям тревоги/детекции, либо уже были удалены."
+ },
+ "toast": {
+ "success": {
+ "updatedSublabel": "Успешно обновлена вторичная метка.",
+ "updatedLPR": "Номерной знак успешно обновлён.",
+ "regenerate": "Новое описание запрошено у {{provider}}. В зависимости от скорости работы вашего провайдера, генерация нового описания может занять некоторое время."
+ },
+ "error": {
+ "updatedSublabelFailed": "Не удалось обновить вторичную метку: {{errorMessage}}",
+ "updatedLPRFailed": "Не удалось обновить номерной знак: {{errorMessage}}",
+ "regenerate": "Не удалось запросить новое описание у {{provider}}: {{errorMessage}}"
+ }
+ }
+ },
+ "editSubLabel": {
+ "descNoLabel": "Введите новую вторичную метку для этого отслеживаемого объекта",
+ "title": "Редактирование вторичной метки",
+ "desc": "Введите новую вторичную метку для {{label}}"
+ },
+ "topScore": {
+ "label": "Лучшая оценка",
+ "info": "Лучшая оценка — это наивысшая медианный оценка для отслеживаемого объекта, поэтому она может отличаться от оценки, показанной на миниатюре результата поиска."
+ },
+ "estimatedSpeed": "Расчётная скорость",
+ "tips": {
+ "saveDescriptionFailed": "Не удалось обновить описание: {{errorMessage}}",
+ "descriptionSaved": "Описание успешно сохранено"
+ },
+ "label": "Метка",
+ "editLPR": {
+ "title": "Редактирование номерного знака",
+ "descNoLabel": "Введите новое значение номерного знака для этого отслеживаемого объекта",
+ "desc": "Введите новое значение номерного знака для {{label}}"
+ },
+ "recognizedLicensePlate": "Распознанный номерной знак",
+ "objects": "Объекты",
+ "camera": "Камера",
+ "zones": "Зоны",
+ "button": {
+ "findSimilar": "Найти похожее",
+ "regenerate": {
+ "title": "Перегенерировать",
+ "label": "Перегенерировать описание отслеживаемого объекта"
+ }
+ },
+ "description": {
+ "label": "Описание",
+ "aiTips": "Frigate не будет запрашивать описание у вашего генеративного ИИ-провайдера, пока жизненный цикл отслеживаемого объекта не завершится.",
+ "placeholder": "Описание отслеживаемого объекта"
+ },
+ "expandRegenerationMenu": "Развернуть меню перегенерации",
+ "regenerateFromSnapshot": "Перегенерировать из снимка",
+ "regenerateFromThumbnails": "Перегенерировать из миниатюры"
+ },
+ "trackedObjectDetails": "Детали отслеживаемого объекта",
+ "type": {
+ "details": "детали",
+ "snapshot": "снимок",
+ "video": "видео",
+ "object_lifecycle": "жизненный цикл объекта"
+ },
+ "objectLifecycle": {
+ "title": "Жизненный цикл объекта",
+ "noImageFound": "Для этой метки времени изображение не найдено.",
+ "createObjectMask": "Создать маску объекта",
+ "adjustAnnotationSettings": "Изменить настройки аннотаций",
+ "scrollViewTips": "Прокрутите, чтобы просмотреть ключевые моменты жизненного цикла этого объекта.",
+ "autoTrackingTips": "Позиции ограничивающих рамок будут неточными для камер с автотрекингом.",
+ "lifecycleItemDesc": {
+ "visible": "Обнаружен(а) {{label}}",
+ "entered_zone": "{{label}} зафиксирован(а) в {{zones}}",
+ "active": "{{label}} активировался(ась)",
+ "stationary": "{{label}} перестал(а) двигаться",
+ "attribute": {
+ "faceOrLicense_plate": "{{attribute}} обнаружен для {{label}}",
+ "other": "{{label}} распознан(а) как {{attribute}}"
+ },
+ "gone": "{{label}} покинул(а) зону",
+ "heard": "Обнаружен звук {{label}}",
+ "external": "Обнаружен(а) {{label}}"
+ },
+ "annotationSettings": {
+ "title": "Настройки аннотаций",
+ "showAllZones": {
+ "title": "Показать все зоны",
+ "desc": "Всегда показывать зоны на кадрах, где объекты вошли в зону."
+ },
+ "offset": {
+ "label": "Сдвиг аннотаций",
+ "desc": "Эти данные поступают из потока детекции вашей камеры, но накладываются на изображения из потока записи. Потоки вряд ли идеально синхронизированы, поэтому ограничивающая рамка и видео могут не совпадать. Для корректировки используйте поле annotation_offset
.",
+ "millisecondsToOffset": "Смещение аннотаций детекции в миллисекундах. По умолчанию: 0",
+ "documentation": "Прочитать документацию ",
+ "tips": "СОВЕТ: Представьте, у вас клип события, где человек идёт слева направо. Если рамка на таймлайне постоянно смещена влево от человека — уменьшите значение. Если рамка опережает движение — увеличьте значение."
+ }
+ },
+ "carousel": {
+ "previous": "Предыдущий слайд",
+ "next": "Следующий слайд"
+ }
+ },
+ "itemMenu": {
+ "downloadVideo": {
+ "label": "Скачать видео",
+ "aria": "Скачать видео"
+ },
+ "downloadSnapshot": {
+ "label": "Скачать снимок",
+ "aria": "Скачать снимок"
+ },
+ "viewObjectLifecycle": {
+ "label": "Просмотр жизненного цикла объекта",
+ "aria": "Показать жизненный цикл объекта"
+ },
+ "findSimilar": {
+ "label": "Найти похожее",
+ "aria": "Найти похожие отслеживаемые объекты"
+ },
+ "submitToPlus": {
+ "label": "Отправить в Frigate+",
+ "aria": "Отправить в Frigate Plus"
+ },
+ "viewInHistory": {
+ "label": "Посмотреть в Истории",
+ "aria": "Посмотреть в Истории"
+ },
+ "deleteTrackedObject": {
+ "label": "Удалить этот отслеживаемый объект"
+ }
+ },
+ "dialog": {
+ "confirmDelete": {
+ "title": "Подтвердить удаление",
+ "desc": "Удаление этого отслеживаемого объекта приведёт к удалению его снимка, всех сохранённых эмбеддингов и записей жизненного цикла. Сами записи в разделе История НЕ будут удалены.
Вы уверены, что хотите продолжить?"
+ }
+ },
+ "noTrackedObjects": "Не найдено отслеживаемых объектов",
+ "fetchingTrackedObjectsFailed": "При получении списка отслеживаемых объектов произошла ошибка: {{errorMessage}}",
+ "trackedObjectsCount_one": "{{count}} отслеживаемый объект ",
+ "trackedObjectsCount_few": "{{count}} отслеживаемых объекта ",
+ "trackedObjectsCount_many": "{{count}} отслеживаемых объектов ",
+ "searchResult": {
+ "deleteTrackedObject": {
+ "toast": {
+ "success": "Отслеживаемый объект успешно удалён.",
+ "error": "Не удалось удалить отслеживаемый объект: {{errorMessage}}"
+ }
+ }
+ }
+}
diff --git a/web/public/locales/ru/views/exports.json b/web/public/locales/ru/views/exports.json
index 0967ef424..f48fb3e71 100644
--- a/web/public/locales/ru/views/exports.json
+++ b/web/public/locales/ru/views/exports.json
@@ -1 +1,17 @@
-{}
+{
+ "documentTitle": "Экспорт - Frigate",
+ "search": "Поиск",
+ "noExports": "Не найдено файлов экспорта",
+ "deleteExport": "Удалить экспорт",
+ "deleteExport.desc": "Вы уверены, что хотите удалить {{exportName}}?",
+ "editExport": {
+ "title": "Переименовать экспорт",
+ "desc": "Введите новое имя для этого экспорта.",
+ "saveExport": "Сохранить экспорт"
+ },
+ "toast": {
+ "error": {
+ "renameExportFailed": "Не удалось переименовать экспорт: {{errorMessage}}"
+ }
+ }
+}
diff --git a/web/public/locales/ru/views/faceLibrary.json b/web/public/locales/ru/views/faceLibrary.json
index 0967ef424..4dee9b964 100644
--- a/web/public/locales/ru/views/faceLibrary.json
+++ b/web/public/locales/ru/views/faceLibrary.json
@@ -1 +1,73 @@
-{}
+{
+ "details": {
+ "person": "Человек",
+ "timestamp": "Метка времени",
+ "face": "Подробности о лице",
+ "faceDesc": "Подробности о лице и связанном объекте",
+ "confidence": "Достоверность"
+ },
+ "documentTitle": "Библиотека лиц - Frigate",
+ "description": {
+ "placeholder": "Введите название коллекции",
+ "addFace": "Пошаговое добавление новой коллекции в Библиотеку лиц."
+ },
+ "createFaceLibrary": {
+ "desc": "Создание новой коллекции",
+ "nextSteps": "Для создания надежной базы:
mode: {{effectiveRetainMode}}
, поэтому эта запись по запросу будет сохранять только сегменты с {{effectiveRetainModeName}}."
+ },
+ "editLayout": {
+ "label": "Редактировать макет",
+ "group": {
+ "label": "Редактирование группы камер"
+ },
+ "exitEdit": "Выход из редактирования"
+ },
+ "audio": "Аудио",
+ "notifications": "Уведомления"
+}
diff --git a/web/public/locales/ru/views/recording.json b/web/public/locales/ru/views/recording.json
index 0967ef424..3a7f427c3 100644
--- a/web/public/locales/ru/views/recording.json
+++ b/web/public/locales/ru/views/recording.json
@@ -1 +1,12 @@
-{}
+{
+ "filter": "Фильтр",
+ "export": "Экспорт",
+ "calendar": "Календарь",
+ "filters": "Фильтры",
+ "toast": {
+ "error": {
+ "endTimeMustAfterStartTime": "Конечное время должно быть позже начального",
+ "noValidTimeSelected": "Выыбран недопустимый временной диапазон"
+ }
+ }
+}
diff --git a/web/public/locales/ru/views/search.json b/web/public/locales/ru/views/search.json
index 0967ef424..ae33aeb18 100644
--- a/web/public/locales/ru/views/search.json
+++ b/web/public/locales/ru/views/search.json
@@ -1 +1,67 @@
-{}
+{
+ "savedSearches": "Сохраненные поиски",
+ "button": {
+ "clear": "Очистить поиск",
+ "save": "Сохранить поиск",
+ "delete": "Удалить сохранённый поиск",
+ "filterActive": "Активные фильтры",
+ "filterInformation": "Информация о фильтре"
+ },
+ "search": "Поиск",
+ "searchFor": "Поиск {{inputValue}}",
+ "trackedObjectId": "ID отслеживаемого объекта",
+ "filter": {
+ "label": {
+ "cameras": "Камеры",
+ "zones": "Зоны",
+ "sub_labels": "Вторичные метки",
+ "search_type": "Тип поиска",
+ "time_range": "Временной диапазон",
+ "before": "До",
+ "after": "После",
+ "min_score": "Мин. оценка",
+ "max_score": "Макс. оценка",
+ "min_speed": "Мин. скорость",
+ "recognized_license_plate": "Распознанный номерной знак",
+ "max_speed": "Макс. скорость",
+ "has_clip": "Есть клип",
+ "has_snapshot": "Есть снимок",
+ "labels": "Метки"
+ },
+ "searchType": {
+ "thumbnail": "Миниатюра",
+ "description": "Описание"
+ },
+ "toast": {
+ "error": {
+ "beforeDateBeLaterAfter": "Дата 'до' должна быть позже, чем дата 'после'.",
+ "afterDatebeEarlierBefore": "Дата 'после' должна быть раньше, чем дата 'до'.",
+ "minScoreMustBeLessOrEqualMaxScore": "Значение 'min_score' должно быть меньше или равно значению 'max_score'.",
+ "maxScoreMustBeGreaterOrEqualMinScore": "Значение 'max_score' должно быть больше или равно значению 'min_score'.",
+ "minSpeedMustBeLessOrEqualMaxSpeed": "Значение 'min_speed' должно быть меньше или равно значению 'max_speed'.",
+ "maxSpeedMustBeGreaterOrEqualMinSpeed": "Значение 'max_speed' должно быть больше или равно значению 'min_speed'."
+ }
+ },
+ "tips": {
+ "title": "Как использовать текстовые фильтры",
+ "desc": {
+ "text": "Фильтры помогают уточнить результаты поиска. Вот как их использовать в поле ввода:",
+ "step": "cameras:front_door label:person before:01012024 time_range:3:00PM-4:00PM
"
+ }
+ },
+ "header": {
+ "currentFilterType": "Значения фильтров",
+ "noFilters": "Фильтры",
+ "activeFilters": "Активные фильтры"
+ }
+ },
+ "similaritySearch": {
+ "title": "Поиск похожего",
+ "active": "Активен поиск похожего",
+ "clear": "Очистить поиск похожего"
+ },
+ "placeholder": {
+ "search": "Поиск..."
+ }
+}
diff --git a/web/public/locales/ru/views/settings.json b/web/public/locales/ru/views/settings.json
index 0967ef424..afb783f9f 100644
--- a/web/public/locales/ru/views/settings.json
+++ b/web/public/locales/ru/views/settings.json
@@ -1 +1,585 @@
-{}
+{
+ "documentTitle": {
+ "default": "Настройки - Frigate",
+ "camera": "Настройки камеры - Frigate",
+ "masksAndZones": "Маски и Зоны - Frigate",
+ "motionTuner": "Детекции движения - Frigate",
+ "general": "Общие настройки - Frigate",
+ "frigatePlus": "Настройки Frigate+ - Frigate",
+ "authentication": "Настройки аутентификации - Frigate",
+ "classification": "Настройки распознавания - Frigate",
+ "object": "Настройка объектов - Frigate"
+ },
+ "menu": {
+ "cameras": "Настройки камеры",
+ "masksAndZones": "Маски / Зоны",
+ "motionTuner": "Детекции движения",
+ "debug": "Отладка",
+ "users": "Пользователи",
+ "notifications": "Уведомления",
+ "frigateplus": "Frigate+",
+ "ui": "Интерфейс",
+ "classification": "Распознование"
+ },
+ "dialog": {
+ "unsavedChanges": {
+ "title": "У вас есть несохраненные изменения.",
+ "desc": "Хотите сохранить изменения перед продолжением?"
+ }
+ },
+ "cameraSetting": {
+ "camera": "Камера",
+ "noCamera": "Нет камеры"
+ },
+ "general": {
+ "title": "Общие настройки",
+ "liveDashboard": {
+ "title": "Панель мониторинга",
+ "automaticLiveView": {
+ "desc": "Автоматически переключаться на просмотр камеры в реальном времени при обнаружении активности. Если отключить эту опцию, статичные изображения камер на панели мониторинга будут обновляться только раз в минуту.",
+ "label": "Автоматический просмотр в реальном времени"
+ },
+ "playAlertVideos": {
+ "label": "Воспроизводить видео с тревогами",
+ "desc": "По умолчанию последние тревоги на панели мониторинга воспроизводятся как короткие зацикленные видео. Отключите эту опцию, чтобы показывать только статичное изображение последних оповещений на этом устройстве/браузере."
+ }
+ },
+ "calendar": {
+ "title": "Календарь",
+ "firstWeekday": {
+ "sunday": "Воскресенье",
+ "monday": "Понедельник",
+ "label": "Первый день недели",
+ "desc": "День, с которого начинаются недели в календаре обзоров."
+ }
+ },
+ "recordingsViewer": {
+ "title": "Просмотр записей",
+ "defaultPlaybackRate": {
+ "label": "Скорость воспроизведения по умолчанию",
+ "desc": "Скорость воспроизведения записей по умолчанию."
+ }
+ },
+ "storedLayouts": {
+ "clearAll": "Сбросить все макеты",
+ "desc": "Расположение камер в группе можно настраивать перетаскиванием и изменением размера. Позиции сохраняются в локальном хранилище браузера.",
+ "title": "Сохранённые макеты"
+ },
+ "cameraGroupStreaming": {
+ "title": "Настройки трансляции группы камер",
+ "desc": "Настройки трансляции для каждой группы камер хранятся локально в вашем браузере.",
+ "clearAll": "Очистить все настройки трансляции"
+ },
+ "toast": {
+ "success": {
+ "clearStoredLayout": "Сохранённый макет для {{cameraName}} удалён",
+ "clearStreamingSettings": "Настройки потоков для всех групп камер сброшены."
+ },
+ "error": {
+ "clearStoredLayoutFailed": "Не удалось удалить макет: {{errorMessage}}",
+ "clearStreamingSettingsFailed": "Не удалось очистить настройки потока: {{errorMessage}}"
+ }
+ }
+ },
+ "classification": {
+ "semanticSearch": {
+ "title": "Семантический поиск",
+ "readTheDocumentation": "Открыть документацию",
+ "reindexNow": {
+ "label": "Переиндексировать сейчас",
+ "confirmButton": "Переиндексировать",
+ "alreadyInProgress": "Переиндексация уже выполняется.",
+ "desc": "Переиндексация заново сгенерирует векторные представления для всех отслеживаемых объектов. Этот процесс выполняется в фоновом режиме и может максимально загрузить ваш процессор, а также занять значительное время в зависимости от количества отслеживаемых объектов.",
+ "confirmTitle": "Подтвердить переиндексацию",
+ "success": "Реиндексация запущена успешно.",
+ "error": "Не удалось начать реиндексацию: {{errorMessage}}",
+ "confirmDesc": "Вы уверены, что хотите переиндексировать все векторные представления отслеживаемых объектов? Этот процесс будет выполняться в фоновом режиме, но может максимально загрузить ваш процессор и занять довольно много времени. Вы можете следить за ходом выполнения на странице «Обзор»."
+ },
+ "desc": "Семантический поиск во Frigate позволяет находить отслеживаемые объекты в записях с помощью самого изображения, пользовательского текстового описания или автоматически сгенерированного описания.",
+ "modelSize": {
+ "label": "Размер модели",
+ "desc": "Размер модели, используемой для эмбеддингов семантического поиска.",
+ "small": {
+ "title": "маленький",
+ "desc": "Использование маленький задействует квантованную версию модели, которая потребляет меньше оперативной памяти и работает быстрее на CPU с очень незначительной разницей в качестве эмбеддингов."
+ },
+ "large": {
+ "title": "большой",
+ "desc": "Использование большой задействует полную модель Jina и автоматически запускается на GPU, если это возможно."
+ }
+ }
+ },
+ "faceRecognition": {
+ "desc": "Функция распознавания лиц позволяет присваивать людям имена, и когда их лицо будет распознано, Frigate присвоит имя человека в качестве дополнительной метки. Эта информация содержится в пользовательском интерфейсе, фильтрах, а также в уведомлениях.",
+ "title": "Распознавание лиц",
+ "readTheDocumentation": "Открыть документацию",
+ "modelSize": {
+ "label": "Размер модели",
+ "desc": "Размер модели, используемой для распознавания лиц.",
+ "small": {
+ "title": "малый",
+ "desc": "Использование маленький задействует модель FaceNet для эмбеддингов лиц, которая эффективно работает на большинстве CPU."
+ },
+ "large": {
+ "title": "большой",
+ "desc": "Использование большой задействует модель ArcFace для эмбеддингов лиц и автоматически запускается на GPU, если это возможно."
+ }
+ }
+ },
+ "licensePlateRecognition": {
+ "title": "Распознавание номерных знаков",
+ "readTheDocumentation": "Открыть документацию",
+ "desc": "Frigate может распознавать номерные знаки на транспортных средствах и автоматически добавлять обнаруженные символы в поле recognized_license_plate или известное имя в качестве sub_label для объектов типа car. Типичный пример использования — чтение номеров машин, заезжающих на подъездную дорожку или проезжающих по улице."
+ },
+ "toast": {
+ "success": "Настройки классификации сохранены. Перезапустите Frigate, чтобы применить внесенные изменения.",
+ "error": "Не удалось сохранить изменения конфигурации: {{errorMessage}}"
+ },
+ "title": "Настройки классификации",
+ "birdClassification": {
+ "title": "Классификация птиц",
+ "desc": "Классификация птиц определяет известные виды с помощью квантованной модели TensorFlow. При распознавании птицы её общепринятое название добавляется как sub_label. Эти данные отображаются в интерфейсе, фильтрах и уведомлениях."
+ }
+ },
+ "users": {
+ "dialog": {
+ "passwordSetting": {
+ "updatePassword": "Обновить пароль для {{username}}",
+ "setPassword": "Установить пароль",
+ "desc": "Создайте надежный пароль для защиты аккаунта."
+ },
+ "deleteUser": {
+ "warn": "Вы уверены, что хотите удалить пользователя {{username}}?",
+ "title": "Удалить пользователя",
+ "desc": "Это действие необратимо. Учётная запись пользователя и все связанные с ней данные будут удалены без возможности восстановления."
+ },
+ "changeRole": {
+ "title": "Изменить роль пользователя",
+ "desc": "Обновить права доступа для {{username}}",
+ "roleInfo": "Выберите подходящую роль для этого пользователя:
https://...
). Это ограничение браузера. Получите безопасный доступ к Frigate, чтобы использовать уведомления."
+ },
+ "email": {
+ "title": "Email",
+ "desc": "Для уведомлений о проблемах с push-сервисом требуется указать действующий адрес электронной почты.",
+ "placeholder": "например, example@email.com"
+ },
+ "globalSettings": {
+ "title": "Глобальные настройки",
+ "desc": "Временно приостановить уведомления для определённых камер на всех зарегистрированных устройствах."
+ },
+ "cameras": {
+ "title": "Камеры",
+ "noCameras": "Нет доступных камер",
+ "desc": "Выберите камеры для активации уведомлений."
+ },
+ "deviceSpecific": "Настройки для конкретного устройства",
+ "registerDevice": "Зарегистрировать это устройство",
+ "unregisterDevice": "Отменить регистрацию этого устройства",
+ "suspended": "Уведомления приостановлены {{time}}",
+ "sendTestNotification": "Отправить тестовое уведомление",
+ "active": "Уведомления активны",
+ "suspendTime": {
+ "30minutes": "Приостановить на 30 минут",
+ "1hour": "Приостановить на 1 час",
+ "12hours": "Приостановить на 12 часов",
+ "24hours": "Приостановить на 24 часа",
+ "untilRestart": "Приостановить до перезапуска",
+ "5minutes": "Приостановить на 5 минут",
+ "10minutes": "Приостановить на 10 минут"
+ },
+ "toast": {
+ "success": {
+ "settingSaved": "Настройки уведомлений сохранены.",
+ "registered": "Регистрация для уведомлений успешно завершена. Перезапуск Frigate необходим перед отправкой любых уведомлений (включая тестовое уведомление)."
+ },
+ "error": {
+ "registerFailed": "Не удалось сохранить регистрацию уведомлений."
+ }
+ },
+ "cancelSuspension": "Отменить приостановку"
+ },
+ "camera": {
+ "review": {
+ "alerts": "Тревоги ",
+ "desc": "Включить или отключить тревоги и обнаружения для этой камеры. В отключенном состоянии новые события не будут записываться.",
+ "detections": "Обнаружения ",
+ "title": "Просмотр"
+ },
+ "reviewClassification": {
+ "objectAlertsTips": "Все объекты {{alertsLabels}} на камере {{cameraName}} будут отображаться как Тревоги.",
+ "desc": "Frigate разделяет записи для проверки на два типа как «Тревоги» и «Обнаружения». По умолчанию все объекты person и car считаются Тревогами. Вы можете уточнить эту классификацию, настроив для них требуемые зоны.",
+ "selectAlertsZones": "Выберите зоны для тревог",
+ "zoneObjectDetectionsTips": {
+ "notSelectDetections": "Все объекты {{detectionsLabels}}, обнаруженные в {{zone}} на камере {{cameraName}}, которые не отнесены к Тревогам, будут отображаться как Обнаружения, независимо от того, в какой зоне они находятся.",
+ "text": "Все объекты {{detectionsLabels}}, не отнесённые к категории в {{zone}} на камере {{cameraName}}, будут отображаться как обнаружения.",
+ "regardlessOfZoneObjectDetectionsTips": "Все объекты {{detectionsLabels}}, не отнесённые к категории на камере {{cameraName}}, будут отображаться как обнаружения, независимо от того, в какой зоне они находятся."
+ },
+ "zoneObjectAlertsTips": "Все объекты {{alertsLabels}}, обнаруженные в {{zone}} на камере {{cameraName}}, будут отображаться как Тревоги.",
+ "selectDetectionsZones": "Выберите зоны для обнаружения",
+ "noDefinedZones": "Для этой камеры не определено ни одной зоны.",
+ "objectDetectionsTips": "Все объекты {{detectionsLabels}}, не отнесённые к категории на камере {{cameraName}}, будут отображаться как обнаружения, независимо от того, в какой зоне они находятся.",
+ "title": "Классификация просмотра",
+ "readTheDocumentation": "Прочитать документацию",
+ "limitDetections": "Ограничить детекции отдельными зонами",
+ "toast": {
+ "success": "Конфигурация классификации просмотра была сохранена. Перезапустите Frigate для применения изменений."
+ }
+ },
+ "title": "Настройки камеры",
+ "streams": {
+ "title": "Потоки",
+ "desc": "Отключение камеры полностью останавливает обработку Frigate потоков с этой камеры. Обнаружение, запись и отладка будут недоступны.Области движения
Красные рамки будут наложены на участки кадра, где в данный момент обнаружено движение
" + }, + "regions": { + "title": "Регионы", + "desc": "Показать рамку области интереса, отправленной детектору объектов", + "tips": "Рамки областей интереса
Ярко-зелёные рамки будут наложены на области интереса в кадре, которые отправляются детектору объектов.
" + } + }, + "frigatePlus": { + "snapshotConfig": { + "documentation": "Прочитать документацию", + "title": "Настройки снимков", + "cleanCopyWarning": "У некоторых камер включены снимки (snapshots), но отключена опция чистой копии (clean copy). Чтобы иметь возможность отправлять изображения с этих камер в Frigate+, необходимо включить параметрclean_copy
в конфигурации снимков.",
+ "table": {
+ "cleanCopySnapshots": "Снимки clean_copy
",
+ "camera": "Камера",
+ "snapshots": "Снимки"
+ },
+ "desc": "Отправка в Frigate+ требует, чтобы в вашей конфигурации были включены как снимки (snapshots), так и снимки clean_copy
."
+ },
+ "title": "Настройки Frigate+",
+ "apiKey": {
+ "title": "Ключ API Frigate+",
+ "validated": "Ключ API Frigate+ найден и проверен",
+ "notValidated": "Ключ API Frigate+ не найден или не проверен",
+ "desc": "Ключ API Frigate+ включает интеграцию с сервисом Frigate+.",
+ "plusLink": "Подробнее про Frigate+"
+ },
+ "modelInfo": {
+ "title": "Информация о модели",
+ "modelType": "Тип модели",
+ "trainDate": "Дата обучения",
+ "error": "Не удалось загрузить информацию о модели",
+ "availableModels": "Доступные модели",
+ "loadingAvailableModels": "Загрузка доступных моделей...",
+ "modelSelect": "Здесь можно выбрать ваши доступные модели на Frigate+. Обратите внимание, что могут быть выбраны только модели, совместимые с текущей конфигурацией детектора.",
+ "baseModel": "Базовая модель",
+ "supportedDetectors": "Поддерживаемые детекторы",
+ "dimensions": "Размеры",
+ "loading": "Загрузка информации о модели...",
+ "cameras": "Камеры"
+ },
+ "toast": {
+ "success": "Настройки Frigate+ были сохранены. Перезапустите Frigate, чтобы применить изменения.",
+ "error": "Не удалось сохранить изменения конфигурации: {{errorMessage}}"
+ }
+ }
+}
diff --git a/web/public/locales/ru/views/system.json b/web/public/locales/ru/views/system.json
index 0967ef424..b8dbf381c 100644
--- a/web/public/locales/ru/views/system.json
+++ b/web/public/locales/ru/views/system.json
@@ -1 +1,157 @@
-{}
+{
+ "documentTitle": {
+ "cameras": "Статистика камер - Frigate",
+ "storage": "Статистика хранилища - Frigate",
+ "general": "Общая статистика - Frigate",
+ "enrichments": "Статистика улучшений - Frigate",
+ "logs": {
+ "frigate": "Логи Frigate - Frigate",
+ "go2rtc": "Логи Go2RTC - Frigate",
+ "nginx": "Логи Nginx - Frigate"
+ }
+ },
+ "title": "Система",
+ "metrics": "Показатели системы",
+ "logs": {
+ "download": {
+ "label": "Загрузить логи"
+ },
+ "copy": {
+ "label": "Копировать в буфер",
+ "success": "Логи копированы в буфер",
+ "error": "Не удалось скопировать логи в буфер обмена"
+ },
+ "type": {
+ "label": "Тип",
+ "timestamp": "Метка времени",
+ "tag": "Тег",
+ "message": "Сообщение"
+ },
+ "tips": "Логи передаются с сервера в потоковом режиме",
+ "toast": {
+ "error": {
+ "fetchingLogsFailed": "Ошибка получения логов: {{errorMessage}}",
+ "whileStreamingLogs": "Ошибка при потоковой передаче логов: {{errorMessage}}"
+ }
+ }
+ },
+ "general": {
+ "title": "Общее",
+ "detector": {
+ "title": "Детекторы",
+ "inferenceSpeed": "Скорость вывода детектора",
+ "cpuUsage": "Использование CPU детектором",
+ "memoryUsage": "Использование памяти детектором"
+ },
+ "hardwareInfo": {
+ "title": "Информация об оборудовании",
+ "gpuUsage": "Использование GPU",
+ "gpuMemory": "Память GPU",
+ "gpuEncoder": "GPU-кодировщик",
+ "gpuDecoder": "GPU-декодер",
+ "gpuInfo": {
+ "vainfoOutput": {
+ "title": "Вывод Vainfo",
+ "returnCode": "Код возврата: {{code}}",
+ "processOutput": "Вывод процесса:",
+ "processError": "Ошибка процесса:"
+ },
+ "nvidiaSMIOutput": {
+ "title": "Вывод Nvidia SMI",
+ "name": "Название: {{name}}",
+ "driver": "Драйвер: {{driver}}",
+ "cudaComputerCapability": "CUDA Compute Capability: {{cuda_compute}}",
+ "vbios": "Информация VBios: {{vbios}}"
+ },
+ "closeInfo": {
+ "label": "Закрыть информацию GPU"
+ },
+ "copyInfo": {
+ "label": "Скопировать информацию GPU"
+ },
+ "toast": {
+ "success": "Информация GPU скопирована в буфер обмена"
+ }
+ }
+ },
+ "otherProcesses": {
+ "title": "Другие процессы",
+ "processCpuUsage": "Использование CPU процессом",
+ "processMemoryUsage": "Использование памяти процессом"
+ }
+ },
+ "storage": {
+ "title": "Хранилище",
+ "overview": "Обзор",
+ "recordings": {
+ "title": "Записи",
+ "tips": "Это значение показывает общий объём хранилища, занятый записями в базе данных Frigate. Frigate не отслеживает использование хранилища для всех файлов на диске.",
+ "earliestRecording": "Самая ранняя доступная запись:"
+ },
+ "cameraStorage": {
+ "title": "Хранилище камеры",
+ "camera": "Камера",
+ "unusedStorageInformation": "Информация о неиспользованном хранилище",
+ "storageUsed": "Хранилище",
+ "percentageOfTotalUsed": "Процент от общего объёма",
+ "bandwidth": "Пропускная способность",
+ "unused": {
+ "title": "Не используется",
+ "tips": "Это значение может неточно отражать свободное место, доступное Frigate, если на вашем диске есть другие файлы помимо записей Frigate. Frigate не отслеживает использование хранилища за пределами своих записей."
+ }
+ }
+ },
+ "cameras": {
+ "title": "Камеры",
+ "overview": "Обзор",
+ "info": {
+ "cameraProbeInfo": "Информация о тестировании камеры {{camera}}",
+ "streamDataFromFFPROBE": "Данные о потоке получены от ffprobe
.",
+ "fetching": "Получение данных камеры",
+ "stream": "Поток {{idx}}",
+ "video": "Видео:",
+ "codec": "Кодек:",
+ "resolution": "Разрешение:",
+ "fps": "FPS:",
+ "unknown": "Неизвестно",
+ "audio": "Аудио:",
+ "error": "Ошибка: {{error}}",
+ "tips": {
+ "title": "Информация о тестировании камеры"
+ }
+ },
+ "framesAndDetections": "Кадры/детекции",
+ "label": {
+ "ffmpeg": "ffmpeg",
+ "camera": "камера",
+ "capture": "захват",
+ "skipped": "пропущено",
+ "detect": "детекция"
+ },
+ "toast": {
+ "success": {
+ "copyToClipboard": "Данные тестирования скопированы в буфер обмена."
+ },
+ "error": {
+ "unableToProbeCamera": "Не удалось протестировать камеру: {{errorMessage}}"
+ }
+ }
+ },
+ "lastRefreshed": "Последнее обновление: ",
+ "stats": {
+ "ffmpegHighCpuUsage": "Камера {{camera}} использует чрезмерно много ресурсов CPU в FFMPEG ({{ffmpegAvg}}%)",
+ "detectHighCpuUsage": "Камера {{camera}} использует слишком много ресурсов CPU для детекции ({{detectAvg}}%)",
+ "healthy": "Система в порядке",
+ "reindexingEmbeddings": "Переиндексация эмбеддингов ({{processed}}% завершено)"
+ },
+ "enrichments": {
+ "title": "Обогащения данных",
+ "infPerSecond": "Выводов в секунду",
+ "embeddings": {
+ "image_embedding_speed": "Скорость генерации эмбеддингов изображений",
+ "plate_recognition_speed": "Скорость распознавания номеров",
+ "text_embedding_speed": "Скорость генерации текстовых эмбеддингов",
+ "face_embedding_speed": "Скорость генерации эмбеддингов лиц"
+ }
+ }
+}