Files
houseplan-card/src/i18n/ru.json
T
Sergey MatyuninandClaude Opus 5.5 c8c470ed57 feat(view): the moon in its phase over the "Follow the Sun" background (#661)
At dawn, dusk and night the environment shows the moon in the top-left
corner of the scene, behind the plan: computed in the card from the home
coordinates and the browser clock (short Meeus series + topocentric
parallax, within 1.4° / 1.8 pp of JPL Horizons), one designer image under
a continuous phase mask with the lit side always on the left (owner
2026-09-29), a feathered terminator, 3°/3 % thresholds and the 2 s fade of
the window rays. Everything but a small gate lives in the lazy
moon-runtime chunk, with its own 30 s ticker. General settings: "Sun"
becomes "Sun and Moon" with one switch, on for new installations
(DEFAULT_CONFIG), off for existing ones.

The initial View graph sat 728 B under its budget: the gate is paid for by
moving fifteen dialog-only strings of General settings into the lazy
settings dictionary (#459) and by one build fingerprint literal instead of
three, so the graph ends 4 B above dev. Golden: two new moon scenes, and
the two General settings help frames show «Sun and Moon»; the WSL artifact
test fixture now models scenes whose first capture awaits acceptance.

Issue: #661
User-Visible: yes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd
2026-09-30 12:25:46 +03:00

1410 lines
130 KiB
JSON
Raw 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.
{
"editor.context_actions": "Действия: {object}",
"editor.tool_options": "Параметры инструмента: {tool}",
"editor.palette": "Палитра: {tool}",
"editor.open_group": "Группа инструментов: {group}",
"editor.group_active": "{group} — активно: {item}",
"editor.disabled_action": "{action} недоступно: {reason}",
"editor.loading": "Загрузка…",
"editor.loading_aria": "Редактор плана загружается",
"editor.load_failed": "Не удалось загрузить редактор.",
"editor.refresh_advice": "Обновите страницу и повторите попытку.",
"editor.retry_advice": "Проверьте сеть и нажмите ещё раз.",
"version_mismatch.title": "Версии House Plan не совпадают",
"version_mismatch.body": "Если Home Assistant ещё перезапускается, дождитесь завершения, затем перезагрузите эту страницу.",
"version_mismatch.frontend": "Карточка",
"version_mismatch.backend": "Интеграция",
"version_mismatch.reload": "Перезагрузить страницу",
"color_picker.title": "Выбор цвета",
"color_picker.hue": "Оттенок",
"color_picker.saturation": "Насыщенность",
"color_picker.value": "Яркость",
"color_picker.hex": "Цвет HEX",
"color_picker.invalid_hex": "Введите цвет HEX из 3 или 6 цифр",
"color_picker.confirm": "ОК",
"btn.properties": "Свойства",
"btn.keep_as_walls": "Оставить стенами",
"btn.delete_room_keep_walls": "Удалить комнату, оставить стены",
"btn.delete_room_with_walls": "Удалить комнату и стены",
"title.markup_select": "Выбор и редактирование стен и колонн",
"title.markup_column": "Колонна: кликните точку сетки для квадратной колонны",
"markup.partition": "Перегородка",
"markup.column": "Колонна",
"markup.stairs": "Лестница",
"stairs.straight": "Прямая",
"stairs.spiral": "Винтовая",
"stairs.properties": "Свойства лестницы",
"stairs.type": "Тип",
"stairs.length": "Длина",
"stairs.width": "Ширина",
"stairs.radius": "Радиус",
"stairs.rotation": "Поворот",
"stairs.direction": "Направление подъёма",
"stairs.up": "Вверх",
"stairs.down": "Вниз",
"stairs.line_color": "Цвет ступеней и стрелки",
"stairs.fill_color": "Цвет заливки",
"stairs.clockwise": "По часовой стрелке",
"stairs.counterclockwise": "Против часовой стрелки",
"stairs.target": "Ведёт на этаж",
"stairs.no_target": "Не выбран",
"stairs.target_warning": "Выберите другой существующий этаж, чтобы включить переход.",
"stairs.fixed_floor": "В карточке с фиксированным этажом переход отключён.",
"stairs.tooltip_navigate": "Переход на этаж {title}",
"history.stair_add": "Добавить лестницу",
"history.stair_edit": "Изменить лестницу",
"history.stair_move": "Переместить лестницу",
"history.stair_delete": "Удалить лестницу",
"history.stair_resize": "Изменить размер лестницы",
"history.stair_rotate": "Повернуть лестницу",
"markup.hint_column": "кликните точку сетки, чтобы поставить квадратную колонну",
"history.wall_segment": "Добавление отрезка стены",
"history.column_add": "Добавление колонны",
"history.physical_edit": "Изменение физического объекта",
"history.physical_delete": "Удаление физического объекта",
"history.physical_move": "Перемещение физического объекта",
"history.wall_face_batch": "Создание комнат из стен",
"toast.column_duplicate": "Колонна с тем же центром и внешним размером уже существует",
"physical.partition_properties": "Свойства перегородки",
"physical.column_properties": "Свойства колонны",
"physical.shape": "Форма",
"physical.square": "Квадрат",
"physical.circle": "Круг",
"physical.diameter": "Диаметр",
"physical.side": "Сторона",
"physical.rotation": "Угол поворота",
"physical.length": "Длина",
"physical.allowed_range": "Допустимо: {min}–{max} {unit}",
"physical.column_size_title": "Внешняя сторона квадратной колонны, создаваемой кликом (1–150 см).",
"card.title": "План дома",
"empty.no_spaces": "Пространств пока нет.",
"nav.spaces": "Пространства House Plan",
"empty.add_first": "Добавьте первое пространство и загрузите план этажа.",
"empty.read_only": "Пространства не настроены. Попросите администратора добавить первое.",
"empty.install": "Установите интеграцию House Plan и добавьте запись в «Устройства и службы».",
"btn.add_space": "Добавить пространство",
"btn.cancel": "Отмена",
"btn.save": "Сохранить",
"btn.close": "Закрыть",
"btn.delete": "Удалить",
"btn.copy": "Копировать",
"btn.edit": "Редактировать",
"btn.open_in_ha": "Открыть в HA",
"btn.reset": "Сброс",
"btn.attach": "Прикрепить…",
"btn.upload": "Загрузить…",
"btn.replace": "Заменить…",
"title.zoom_in": "Приблизить",
"title.zoom_out": "Отдалить",
"title.zoom_fit": "Вписать всё",
"title.configure_space": "Настроить пространство",
"title.add_space": "Добавить пространство",
"title.markup_add": "Стены: рисуйте непрерывную цепочку; каждый принятый отрезок сохраняется отдельно. Shift фиксирует 45°",
"title.markup_merge": "Объединить: клик по одной комнате, затем по соседней с общей стеной",
"title.markup_split": "Разделить комнату: клик по комнате, затем две точки на её стенах",
"title.markup_delroom": "Удалить комнату: кликните внутри комнаты и подтвердите удаление",
"markup.add": "Стены",
"markup.merge": "Объединить",
"markup.split": "Разделить",
"markup.resize": "Размер",
"title.markup_resize": "Изменение размера комнат: тяните доступную ручку горизонтальной или вертикальной стены",
"markup.hint_resize": "тяните доступную ручку стены · стена упирается в первую небезопасную позицию · Esc — отмена · Ctrl+Z — отмена шага",
"resize.disabled.diagonal": "Стена расположена под углом: Resize поддерживает только горизонтальные и вертикальные стены",
"resize.disabled.side-angle": "Примыкающая стена расположена под углом: для Resize обе примыкающие стены должны образовывать прямой угол",
"resize.disabled.duplicate-physical-wall": "Стену перекрывает отдельная перегородка или колонна; удалите или переместите её перед изменением размера",
"resize.disabled.partial-shared": "Соседняя комната использует только часть этой стены, поэтому её нельзя безопасно двигать как одну общую стену",
"resize.disabled.unequal-shared": "У соседней комнаты другие конечные точки или длина стены, поэтому стены нельзя безопасно двигать вместе",
"resize.disabled.multiple-rooms": "Перемещение затронуло бы больше двух комнат",
"resize.disabled.thickness-conflict": "Толщину стены нельзя безопасно сохранить",
"resize.disabled.opening-conflict": "Проём на этой стене нельзя безопасно переместить",
"resize.disabled.invalid-geometry": "Эту стену нельзя переместить без изменения структуры плана",
"resize.limit_stopped": "Стена остановлена: дальше нарушается ограничение стыков",
"resize.commit_failed": "Изменение размера отменено: итоговый план не прошёл проверку геометрии",
"resize.preview_failed": "Стена остановлена в последней безопасной позиции: геометрию плана нельзя сохранить без потерь",
"markup.opening": "Проём",
"markup.delete_room": "Удалить комнату",
"history.undo": "Отменить",
"history.redo": "Повторить",
"history.undo_named": "Отменить: {name} (Ctrl+Z)",
"history.redo_named": "Повторить: {name} (Ctrl+Shift+Z / Ctrl+Y)",
"history.undo_empty": "Нет операций для отмены",
"history.redo_empty": "Нет операций для повтора",
"history.undone": "Отменено: {name}",
"history.redone": "Повторено: {name}",
"history.add_room": "Создание комнаты",
"history.split_room": "Разделение комнаты",
"history.merge_rooms": "Объединение комнат",
"history.resize_room": "Изменение размера комнаты",
"history.wall_thickness": "Изменение толщины стены",
"history.add_opening": "Добавление дверного или оконного проёма",
"history.edit_opening": "Изменение проёма",
"history.move_opening": "Перемещение проёма",
"history.delete_opening": "Удаление проёма",
"history.delete_room_keep_walls": "Удаление комнаты с сохранением стен",
"history.delete_room_with_walls": "Удаление комнаты и её стен",
"history.decor_add": "Добавление объекта декора",
"history.decor_edit": "Изменение объекта декора",
"history.decor_move": "Перемещение объекта декора",
"history.decor_transform": "Трансформация объекта декора",
"history.decor_delete": "Удаление объекта декора",
"history.backdrop_transform": "Трансформация подложки плана",
"history.device_move": "Перемещение: {name}",
"history.device_stale": "История позиций больше неприменима и была очищена",
"opening.new": "Новый проём",
"opening.edit": "Проём",
"opening.door": "Дверь",
"opening.window": "Окно",
"opening.gate": "Ворота",
"opening.passage": "Открытый проём",
"opening.passage_binding_warning": "При сохранении датчик открытия и замок будут удалены.",
"opening.invalid_passage_fields": "У открытого проёма на плане «{room}» есть недопустимые параметры: {fields}.",
"opening.type_label": "Тип",
"opening.length_label": "Длина, см",
"opening.contact_label": "Датчик открытия",
"opening.lock_label": "Замок",
"opening.none": "— нет —",
"opening.search_ph": "Поиск: имя или entity_id…",
"opening.invert": "Инвертировать открыто/закрыто",
"opening.flip_h": "Петли с другой стороны",
"opening.flip_v": "Открывается в другую сторону",
"opening.open": "Открыто",
"opening.closed": "Закрыто",
"opening.locked": "Заперто",
"opening.unlocked": "Не заперто",
"opening.state_unknown": "недоступно",
"opening.no_entities": "Датчики не привязаны — статичный символ на плане.",
"toast.opening_no_wall": "Кликните рядом со стеной комнаты или независимой стеной",
"opening.host_partition": "Независимая стена",
"opening.partition_orphan": "Независимая стена этого проёма больше не существует",
"opening.partition_jamb_margin": "Оставьте от края проёма до торца стены минимум {distance}",
"opening.rebind_partition": "Привязать к другой независимой стене",
"confirm.delete_partition_openings_title": "Удалить стену и проёмы?",
"confirm.delete_partition_openings_body": "В стене есть проёмы: {count}. Они будут удалены вместе со стеной.",
"confirm.delete_partition_openings_item": "• {type}, {length}",
"markup.hint_points": "точек: {n} · Shift — шаг 45° · Esc — завершить цепочку · Ctrl+Z — убрать точку · при замыкании будет предложена комната",
"markup.hint_start": "кликните точку сетки, чтобы начать цепочку стен",
"tip.lqi": "средний сигнал zigbee:",
"tip.area": "площадь: {value}",
"info.device_header": "Устройство на плане",
"info.model": "Модель",
"info.state": "Состояние",
"info.link": "Ссылка",
"info.manuals": "Инструкции",
"info.none": "Нет дополнительной информации",
"marker.new_device": "Новое устройство",
"marker.name_label": "Название",
"marker.name_ph": "Название",
"marker.binding_label": "Привязка к устройству HA",
"marker.binding_disabled": "деактивировано в Home Assistant",
"marker.virtual_option": "Виртуальное устройство (без привязки)",
"marker.search_ph": "Поиск устройства / группы…",
"marker.nothing_found": "ничего не найдено",
"marker.room_label": "Комната",
"marker.room_choose": "— выберите комнату —",
"marker.room_auto": "— по зоне устройства (авто) —",
"marker.icon_label": "Иконка",
"marker.icon_ph": "mdi:… (пусто = авто)",
"marker.display_label": "Отображение",
"display.badge": "Значок + состояние",
"display.icon_ripple": "Значок + состояние и активность",
"display.static_icon": "Всегда статичный значок",
"display.value_static_icon": "Значение + статичный значок",
"marker.display_hint_badge": "Значок и динамическая подложка показывают состояние устройства без обычной пульсации активности. Красная тревога сохраняется.",
"marker.display_hint_icon_ripple": "Значок, динамическая подложка и пульсация: короткая — для событий, постоянная — для работы, движения или присутствия. Красная тревога имеет отдельный приоритет.",
"marker.display_hint_value": "Значок заменяется выбранным или автоматически найденным значением Home Assistant; подложка продолжает показывать состояние. Красная тревога сохраняется.",
"marker.display_hint_static_icon": "Подложка в цветах темы и значок всегда остаются одинаковыми. Состояния, активность, недоступность и тревоги не меняют отображение.",
"marker.display_hint_value_static_icon": "Маркер показывает выбранное значение, а подложка остаётся в цветах темы. Состояния, активность, недоступность и тревоги не меняют цвет маркера.",
"marker.static_alarm_warning": "Это устройство может сообщать о тревогах. Статичный режим скрывает визуальную тревогу маркера.",
"marker.preview.title": "Предпросмотр отображения",
"marker.preview.actual": "Сейчас",
"marker.preview.example": "Пример",
"marker.preview.integration": "Интеграция",
"marker.preview.source": "Источник отображения",
"marker.preview.current_state": "Текущее состояние",
"marker.preview.result": "На плане",
"marker.preview.details": "Подробнее об источниках",
"marker.preview.select_source": "Выберите устройство или сущность Home Assistant, чтобы увидеть фактическое отображение.",
"marker.preview.unknown_provider": "Интеграция неизвестна",
"marker.preview.virtual_provider": "House Plan · виртуальное устройство",
"marker.preview.no_source": "Нет активного источника",
"marker.preview.no_state": "Нет текущего состояния",
"marker.preview.mixed_states": "Несколько разных состояний",
"marker.preview.multiple_sources": "Источников: {n}",
"marker.preview.more_sources": "ещё {n}",
"marker.preview.scaled": "Предпросмотр уменьшен до {n}%, чтобы поместиться. Сохранённый размер не изменится.",
"marker.preview.demo_short": "Показать краткую активность",
"marker.preview.demo_continuous": "Показать постоянную активность",
"marker.preview.stop_continuous": "Остановить постоянную активность",
"marker.preview.demo_short_notice": "Пример краткой активности; фактическое состояние устройства не меняется.",
"marker.preview.demo_continuous_notice": "Пример постоянной активности; фактическое состояние устройства не меняется.",
"marker.preview.demo_already_visible": "Текущее состояние уже показывает реальную активность или тревогу.",
"marker.preview.reduced_motion": "В системе включено уменьшение движения, поэтому обычная активность показана точкой.",
"marker.preview.reason.neutral": "Нейтральная тёмная подложка",
"marker.preview.reason.working": "Жёлтая подложка: устройство сейчас работает",
"marker.preview.reason.working_activity": "Жёлтая подложка и эффект активности: устройство сейчас работает",
"marker.preview.reason.open": "Оранжевая подложка: физически открыто или разблокировано",
"marker.preview.reason.cover_icon_state": "Нейтральная подложка; состояние и значок определяет сущность шторы или заслонки",
"marker.preview.reason.presence": "Эффект активности, пока обнаружено присутствие",
"marker.preview.reason.event": "Короткий эффект активности после события",
"marker.preview.reason.transition": "Эффект активности во время движения или смены состояния",
"marker.preview.reason.media_neutral": "Медиаустройство остаётся на нейтральной тёмной подложке, пока доступно",
"marker.preview.reason.unavailable": "Приглушённая нейтральная подложка: отключено или недоступно",
"marker.preview.reason.alarm": "Красная тревожная подложка; тревога отображается всегда",
"marker.preview.reason.live_states_disabled": "Оформление по живым состояниям отключено в настройках карточки",
"marker.preview.reason.value_no_state": "Нет подходящего значения состояния — вместо него показан значок",
"marker.preview.reason.value_ambiguous_sources": "Подходит несколько источников значения — вместо него показан значок",
"marker.preview.reason.value_non_scalar": "Источник вернул не простое значение — вместо него показан значок",
"marker.preview.reason.value_virtual": "У виртуального устройства нет значения HA — вместо него показан значок",
"marker.preview.reason.vacuum_live_plan_only": "Живая позиция и след пылесоса доступны только на полном плане",
"marker.preview.reason.hidden_design_preview": "Устройство скрыто на плане, но его оформление видно в предпросмотре",
"marker.preview.reason.composite_power_source": "Состояние берётся из сущности питания устройства; вспомогательные переключатели не учитываются",
"marker.preview.reason.activity_display_disabled": "Выбранный режим отображения не показывает обычные эффекты активности",
"marker.preview.reason.ha_disabled": "Привязка отключена в Home Assistant, поэтому устройство будет скрыто на плане",
"marker.preview.reason.orphaned": "Сохранённая привязка Home Assistant больше не найдена",
"marker.preview.reason.static_icon": "Статичный режим: состояние устройства не меняет значок",
"marker.preview.reason.value_static_icon": "Статичный режим со значением: состояние устройства не меняет цвет маркера",
"marker.activity_color": "Цвет пульсации активности",
"marker.ripple_size": "Размер пульсации активности",
"marker.activity_alarm_note": "Цвет и размер относятся только к обычной активности и не влияют на красную тревогу.",
"marker.pulse_a11y_alarm": "Тревога",
"marker.pulse_a11y_event": "Недавнее событие",
"marker.pulse_a11y_presence": "Обнаружено присутствие",
"marker.pulse_a11y_transition": "Изменение состояния",
"marker.pulse_a11y_running": "Работает",
"marker.state_a11y_neutral": "Обычное состояние",
"marker.state_a11y_working": "Работает",
"marker.state_a11y_open": "Открыто",
"marker.state_a11y_locked": "Заблокировано",
"marker.state_a11y_unlocked": "Разблокировано",
"marker.state_a11y_alarm": "Тревога",
"marker.state_a11y_unavailable": "Недоступно",
"marker.lqi_a11y_low": "LQI {value}, слабый сигнал",
"marker.lqi_a11y_mid": "LQI {value}, средний сигнал",
"marker.lqi_a11y_high": "LQI {value}, сильный сигнал",
"marker.size_label": "Размер и поворот иконки",
"marker.angle_label": "Поворот",
"marker.model_label": "Модель",
"marker.model_ph": "напр. Aqara T&H",
"marker.link_label": "Ссылка",
"marker.desc_label": "Описание",
"marker.desc_ph": "Заметки, характеристики…",
"marker.manuals_label": "Инструкции (PDF и т.п.)",
"marker.sub_device": "устройство",
"marker.sub_z2m_group": " · Z2M-группа",
"marker.sub_group": "группа",
"marker.sub_helper": "хелпер",
"space.new": "Новое пространство",
"space.copy_title": "Копирование пространства",
"space.copy_name": "Название нового пространства",
"space.copy_fallback": "Пространство",
"space.copy_create": "Создать копию",
"space.copy_optimize_title": "Оптимизировать перед копированием?",
"space.copy_optimize_body": "Перед созданием «{name}» House Plan должен оптимизировать весь план, включая другие пространства. Продолжить?",
"space.copy_optimize_confirm": "Оптимизировать и скопировать",
"space.copy_error_changed": "План изменился, пока было открыто подтверждение. Проверьте его и повторите попытку.",
"space.copy_error_source_missing": "Исходного пространства больше нет. Снова откройте его настройки и повторите попытку.",
"space.copy_error_source_invalid": "House Plan не смог проверить все стены этого пространства. Исправьте исходное пространство и повторите попытку.",
"space.copy_error_spaces_limit": "В House Plan уже создано максимальное число пространств.",
"space.copy_error_partitions_limit": "В этом пространстве слишком много стен для копирования.",
"space.copy_error_openings_limit": "В этом пространстве слишком много проёмов для копирования.",
"space.copy_error_decor_limit": "В этом пространстве слишком много элементов подложки для копирования.",
"space.copy_error_stairs_limit": "В этом пространстве слишком много лестниц для копирования.",
"space.copy_error_columns_limit": "В этом пространстве слишком много колонн для копирования.",
"space.copy_error_opening_host": "Один из проёмов больше не привязан к стене. Исправьте или удалите его перед копированием.",
"space.copy_error_geometry": "Копия создаст небезопасную геометрию стен. Исправьте исходное пространство и повторите попытку.",
"space.copy_error_optimize_geometry": "Копирование остановлено: оптимизация всего плана небезопасна для одного из пространств.",
"space.header": "Пространство",
"space.title_label": "Название пространства",
"space.title_ph": "Например: Гараж",
"space.plan_label": "Подложка",
"space.no_plan": "нет подложки",
"space.plan_alt": "план",
"room.new": "Новая комната",
"room.name_label": "Отображаемое имя",
"room.name_ph": "Например: Терраса",
"room.area_label": "Зона Home Assistant",
"room.no_area_option": "— без зоны —",
"room.default_name": "Комната",
"device.unnamed": "без имени",
"device.light_group": "группа света",
"device.fallback": "устройство",
"device.virtual": "виртуальное устройство",
"confirm.delete_room_title": "Удалить комнату «{name}»?",
"confirm.delete_room_body": "Выберите, нужно ли оставить физические стены, принадлежащие только этой комнате. Общие с другой комнатой стены сохраняются всегда.",
"confirm.remove_marker_title": "Удалить устройство с плана?",
"confirm.remove_marker_body": "Устройство исчезнет полностью и перестанет участвовать в данных плана. Позже его можно будет добавить заново.",
"confirm.erase_decor": "Стереть объект «{kind}»? Действие можно отменить из истории редактора.",
"confirm.delete_space_title": "Удалить пространство?",
"confirm.delete_space_body": "Пространство, все его комнаты и вся разметка плана будут удалены.",
"confirm.delete_space_vac_routes": "Также будет снято сопоставление карт роботов: {count}.",
"space.delete_blocked": "Это пространство всё ещё используется устройствами: {n}. Сначала перенесите их в другое пространство или удалите.",
"toast.pos_save_failed": "Не удалось сохранить позицию: {err}",
"toast.no_entity": "У устройства нет подходящей сущности",
"toast.ha_disabled_action": "Деактивированный объект Home Assistant нельзя использовать на плане.",
"toast.ha_disabled_show_device": "Деактивированное в Home Assistant устройство нельзя показать на плане. Сначала активируйте его в Home Assistant.",
"toast.ha_disabled_show_entity": "Деактивированную в Home Assistant сущность нельзя показать на плане. Сначала активируйте её в Home Assistant.",
"toast.ha_disabled_add": "Деактивированный объект Home Assistant нельзя добавить на план. Сначала активируйте его в Home Assistant.",
"toast.ha_binding_unverified": "Статус объекта не удалось подтвердить по реестру Home Assistant. Отображение и действия временно недоступны.",
"toast.markup_needs_server": "Разметка доступна после переноса конфига на сервер",
"toast.space_order_changed": "Порядок изменён. Если где-то этаж карточки задан номером, проверьте такие панели.",
"toast.conflict": "Конфиг изменён в другом окне — данные обновлены, повторите последнее действие",
"toast.cfg_save_failed": "Не удалось сохранить конфиг: {err}",
"toast.room_overlap": "Контур накладывается на комнату «{name}» — комнаты не должны накладываться",
"toast.contour_cannot_close": "Контур нельзя замкнуть: он вырожден или пересекает сам себя",
"toast.merge_not_adjacent": "Объединять можно только комнаты с общей стеной",
"toast.rooms_merged": "Комнаты объединены в «{name}»",
"toast.split_pick_wall": "Начните разрез на стене комнаты",
"toast.split_bad_cut": "Разрез — от стены до стены внутри комнаты, без пересечения стен и самого себя",
"merge.header": "Объединение комнат",
"merge.hint": "У объединённой комнаты одно имя и одна зона. Вторая зона освобождается — её устройства уйдут с плана, пока их не заберёт другая комната.",
"merge.keep": "Оставить",
"merge.no_area": "без зоны",
"toast.room_saved": "Комната сохранена ({n}). Устройств добавлено: {added}. Обведите следующую или выйдите из разметки.",
"toast.room_saved_no_area": "Комната сохранена ({n}, без зоны). Обведите следующую или выйдите из разметки.",
"toast.marker_needs_server": "Редактирование устройств доступно после переноса конфига на сервер",
"toast.marker_saved": "Устройство сохранено",
"toast.marker_removed": "Устройство удалено с плана",
"toast.integration_missing": "Интеграция House Plan не установлена — управление недоступно",
"toast.plan_formats": "Поддерживаются SVG, PNG, JPG, WebP",
"toast.plan_too_large": "Файл больше {mb} МБ — это предел для плана. Уменьшите изображение и загрузите снова.",
"toast.plan_required": "Загрузите подложку — план этажа обязателен",
"toast.space_added_onboard": "Пространство добавлено. Обведите комнаты: кликайте по точкам сетки и замкните контур.",
"toast.space_added": "Пространство добавлено",
"toast.space_copied": "Пространство «{name}» создано",
"toast.space_saved": "Пространство сохранено",
"toast.space_deleted": "Пространство удалено",
"toast.delete_failed": "Ошибка удаления: {err}",
"toast.error": "Ошибка: {err}",
"toast.toggle_target_unavailable": "Цель «{name}» недоступна — действие не выполнено",
"toast.toggle_targets_unavailable": "Цели недоступны: {names}. Действие не выполнено",
"toast.file_failed": "Файл «{name}» не загружен: {err}",
"toast.files_attached": "Прикреплено файлов: {n}",
"err.unknown": "неизвестная ошибка",
"err.code": "код {code}",
"err.too_large": "файл больше {mb} МБ",
"err.bad_ext": "недопустимый тип (нужен PDF/изображение)",
"err.unauthorized": "нужны права администратора",
"editor.title": "Заголовок",
"editor.default_floor": "Стартовое пространство",
"editor.default_floor_missing": "Стартовое пространство «{id}» больше не существует. Выберите другое.",
"editor.floor": "Закреплённое пространство",
"editor.floor_none": "— не закреплять —",
"editor.floor_index": "YAML-индекс {index} (сохранён)",
"fixed_floor.loading": "Загружаем закреплённое пространство…",
"fixed_floor.invalid_title": "Закреплённое пространство недоступно",
"fixed_floor.invalid_body": "Проверьте floor в конфигурации карточки. Настроенное значение: {value}",
"editor.icon_size": "Размер иконок, % ширины плана",
"editor.show_temperature": "Показывать температуру",
"editor.live_states": "Живые состояния (вкл/выкл, открыто…)",
"editor.light_pools": "Световые пулы и тени от стен",
"editor.show_signal": "Показывать сигнал zigbee (LQI)",
"editor.language": "Язык интерфейса",
"editor.lang_auto": "Авто (профиль HA)",
"title.icon_rules": "Правила иконок: какая MDI-иконка достаётся устройству по имени",
"rules.title": "Правила иконок",
"rules.hint": "Правила проверяются сверху вниз по строке «имя устройства + модель» (regex без учёта регистра); срабатывает первое совпадение. Если ничего не подошло — решает device class сущности, затем — иконка-заглушка.",
"rules.pattern_ph": "regex, напр. розетк|plug",
"rules.icon_ph": "mdi:power-socket-de",
"rules.add": "Добавить правило",
"rules.reset": "Сбросить к умолчаниям",
"rules.test_ph": "Проверьте имя устройства…",
"rules.invalid": "некорректный regex",
"rules.saved": "Правила иконок сохранены",
"btn.up": "Вверх",
"btn.down": "Вниз",
"tap.info": "Карточка устройства",
"tap.more_info": "Диалог HA (more-info)",
"tap.toggle": "Переключить состояние",
"marker.tap_label": "Действие по нажатию для этого устройства",
"tap.toggle_note": "Под селектором показано, какое состояние изменится. Защищённые устройства не переключаются с плана.",
"import.title": "Создать пространства из этажей HA",
"import.hint": "Home Assistant уже знает эти этажи. Отметьте, какие превратить в пространства плана — далее для каждого попросим картинку плана. Комнаты затем обводятся вручную по плану.",
"import.start": "Создать: {n}",
"import.manual": "Начать с нуля",
"import.progress": "Этаж {i} из {n}",
"import.done": "Пространства созданы. Обведите комнаты: кликайте по точкам сетки и замкните контур.",
"btn.skip": "Пропустить",
"space.scale_label": "Масштаб (размер клетки сетки)",
"space.cell_cm.help": "Связывает сетку с реальными размерами: от значения зависят длины и площади, толщина стен, размеры проёмов и радиус свечения. Изменение после разметки меняет расчётные размеры всего пространства, но не двигает его точки на плане.",
"space.cell_cm.help.aria": "Подсказка: масштаб пространства",
"space.scale_unit": "см на клетку",
"space.scale_unit_imperial": "дюйм на клетку",
"space.display_section": "Внешний вид",
"space.show_borders": "Всегда отображать границы комнат",
"space.zero_wall_style": "Стены нулевой толщины",
"space.zero_wall_style.help": "Пунктирные стены нулевой толщины пропускают Glow и солнечные лучи, сплошные блокируют их как барьер нулевой площади. Выбор меняет все такие стены пространства, даже когда их линии скрыты в просмотре.",
"space.zero_wall_style.help.aria": "Подсказка: вид стен нулевой толщины",
"space.zero_wall_dashed": "Пунктирные",
"space.zero_wall_solid": "Сплошные",
"space.show_names": "Показывать названия комнат",
"space.room_color": "Цвет границ и названий",
"space.opacity": "Прозрачность",
"space.fill_label": "Заливка комнат",
"space.fill_mode.help": "«Свой цвет» задаёт оформление, а «Свет», «Температура» и «LQI» используют текущие данные Home Assistant; Glow включается отдельно.",
"space.fill_mode.help.aria": "Подсказка: режим заливки комнат",
"fill.none": "Нет",
"fill.lqi": "По силе зигби-сигнала",
"fill.light": "По освещению",
"fill.custom": "Свой цвет",
"space.custom_fill": "Цвет заливки",
"space.source_file": "Использовать изображение плана",
"space.source_draw": "Нарисовать вручную",
"fill.temp": "По температуре",
"tip.temp_avg": "средняя температура:",
"tip.hum_avg": "средняя влажность:",
"space_card.button": "Перейти к пространству",
"space_card.not_found": "Пространство «{id}» не найдено",
"space_card.loading": "Загрузка…",
"continuity.restore_plan": "Восстанавливаем план…",
"continuity.restore_connection": "Восстанавливаем подключение к устройствам…",
"continuity.retry": "Повторить",
"editor.space": "Пространство",
"editor.framing": "Кадрирование",
"editor.fit_content": "Всё видимое содержимое",
"editor.fit_house": "Плотно по геометрии дома",
"editor.show_button": "Показывать кнопку",
"editor.button_label": "Текст кнопки",
"editor.button_target": "Путь дашборда (куда вести)",
"marker.sub_entity": "сущность",
"title.general_settings": "Общие настройки",
"title.header_menu": "Действия и настройки",
"title.export_pdf": "Сохранить в PDF",
"pdf.title": "Сохранение в PDF",
"pdf.dimensions": "Отображать размеры и площади",
"pdf.decor": "Отображать мебель и другой декор",
"pdf.room_names": "Отображать названия комнат",
"pdf.backdrop": "Отображать подложку",
"pdf.save": "Сохранить",
"pdf.saving": "Формируем…",
"pdf.failed": "Не удалось создать PDF.",
"pdf.too_large": "Размер изображений превышает лимит PDF 25 МБ.",
"pdf.asset_failed": "Не удалось загрузить подложку или изображение декора.",
"pdf.scale": "Масштаб 1:{n}",
"pdf.north": "Север",
"gs.light_on": "Свет включён",
"gs.light_off": "Весь свет выключен",
"gs.temp_cold": "Холодно",
"gs.temp_ok": "Комфорт",
"gs.temp_hot": "Жарко",
"gs.lqi_low": "Слабый сигнал",
"gs.lqi_high": "Сильный сигнал",
"gs.reset": "Сбросить к умолчаниям",
"gs.saved": "Общие настройки сохранены",
"gs.volumetric_view": "Объёмный вид плана (2.5D)",
"radar.title": "Присутствие на плане",
"radar.help": "Свяжите маркер с точными сущностями радара Home Assistant, укажите положение датчика и профиль координат. Живые позиции обрезаются по выбранной комнате.",
"radar.help.aria": "Подсказка: настройки радара присутствия",
"radar.enabled": "Использовать этот радар присутствия",
"radar.show_live": "Показывать живые цели",
"radar.configure": "Настроить радар",
"radar.configure_on_plan": "Настроить на плане",
"radar.change_installation": "Сменить установку",
"radar.no_contour": "У комнаты нет контура. Точки радара не будут обрезаться по комнате.",
"radar.discard_setup_title": "Отменить настройку радара?",
"radar.discard_setup": "Несохранённая настройка радара будет потеряна.",
"radar.step_place_mount": "Укажите физическое положение датчика",
"radar.step_place_heading": "Укажите точку прямо перед датчиком",
"radar.step_reference": "Укажите контрольное положение {n}, затем начните измерение",
"radar.step_check_reference": "Укажите независимое проверочное положение",
"radar.start_measure": "Начать измерение",
"radar.countdown": "Встаньте в отмеченное место через {seconds} с",
"radar.capturing": "Стойте неподвижно и в одиночестве…",
"radar.fit_ready": "Калибровка готова",
"radar.check_third": "Проверить в другом положении",
"radar.check_complete": "Независимая проверка завершена",
"radar.error_distance": "Расхождение положения: {distance}",
"radar.ambiguous_target": "Обнаружено несколько целей. Повторите измерение в одиночестве.",
"radar.insufficient_samples": "Недостаточно актуальных координат. Повторите или настройте вручную.",
"radar.bad_references": "Выберите разнесённые положения в разных направлениях от датчика.",
"radar.ambiguous_sources": "Измерения допускают два одинаково вероятных направления. Выберите точки, по которым можно различить левую и правую стороны.",
"radar.bad_fit": "Измерения не совпадают. Проверьте единицы, положение датчика и контрольные точки.",
"radar.desktop_hint": "Для точной настройки используйте компьютер. Редактирование на тач-устройствах поддерживается по остаточному принципу.",
"radar.detected": "House Plan распознал признаки радара у этого устройства. Перед сохранением проверьте точные источники.",
"radar.detected_ld2450": "House Plan нашёл набор координат ESPHome LD2450. Перед сохранением проверьте точные источники X/Y.",
"radar.additional_actions": "Дополнительные действия",
"radar.declare": "Это радар присутствия",
"radar.profile": "Профиль данных",
"radar.profile_esphome_ld2450_v1": "ESPHome LD2450 (цели X/Y)",
"radar.profile_cartesian_v1": "Декартовы цели (X/Y)",
"radar.profile_polar_v1": "Полярная цель (дальность/угол)",
"radar.profile_range_v1": "Только дальность",
"radar.profile_zones_v1": "Состояния зон",
"radar.profile_presence_v1": "Только присутствие",
"radar.room": "Комната радара",
"radar.room_choose": "Выберите комнату",
"radar.target": "Цель {n}",
"radar.axis_x": "Сущность координаты X",
"radar.axis_y": "Сущность координаты Y",
"radar.add_target": "Добавить слот цели",
"radar.range_channel": "Канал дальности {n}",
"radar.add_range": "Добавить канал дальности",
"radar.presence_gate": "Сущность присутствия для слота",
"radar.swap_axes": "Поменять оси X и Y местами",
"radar.axis_x_sign": "Направление X",
"radar.axis_y_sign": "Направление Y",
"radar.distance_source": "Сущность дальности",
"radar.angle_source": "Сущность угла",
"radar.angle_unit": "Единица угла",
"radar.degrees": "Градусы",
"radar.radians": "Радианы",
"radar.angle_zero": "Направление нулевого угла",
"radar.angle_forward": "Вперёд",
"radar.angle_right": "Вправо",
"radar.angle_clockwise": "Угол растёт по часовой стрелке",
"radar.zone_source": "Сущность зоны",
"radar.occupancy_source": "Сущность присутствия",
"radar.count_source": "Сущность количества целей",
"radar.availability_source": "Сущность доступности",
"radar.source_choose": "Выберите сущность",
"radar.source_optional": "Необязательно",
"radar.source_missing": "сейчас недоступна",
"radar.saved_unsupported": "Сохранённая настройка радара не поддерживается или неполна. Она неактивна; удалите её либо обновите House Plan перед повторной настройкой.",
"radar.occupancy": "Присутствие (вкл/выкл)",
"radar.count": "Количество",
"radar.mount": "Положение и направление",
"radar.mount_hint": "Это физическое положение датчика. Перемещение его декоративного маркера не меняет установку.",
"radar.heading": "Направление, °",
"radar.range_cm": "Дальность, см",
"radar.fov_deg": "Угол обзора, °",
"radar.unit": "Единица источника",
"radar.mirror": "Отразить ось влево/вправо",
"radar.remove": "Удалить настройки радара",
"radar.invalid": "Перед сохранением заполните комнату, источники и положение радара.",
"radar.check_sources": "Проверить живые данные",
"radar.checking": "Проверяем…",
"radar.health": "Состояние подключения",
"radar.live_summary": "Текущих целей: {targets}; дуг дальности: {ranges}",
"radar.health_ok": "Актуальные данные получены",
"radar.health_off": "Цели не обнаружены",
"radar.health_stale": "Часть координат устарела",
"radar.health_partial": "Часть источников актуальна, часть устарела",
"radar.health_restricted": "Нет доступа к одному или нескольким источникам",
"radar.health_incomplete": "Текущий отчёт радара неполон",
"radar.health_position_unavailable": "Есть присутствие, но актуальное положение недоступно",
"radar.health_unavailable": "Данные датчика недоступны",
"radar.health_needs_setup": "Требуется настроить установку",
"radar.health_inconsistent": "Источники передают противоречивые данные",
"radar.health_unknown": "Текущее состояние неизвестно",
"radar.health_disabled": "Радар отключён",
"radar.error_invalid_radar": "Проверьте настройки радара.",
"radar.error_invalid_selection": "Выберите существующую комнату и допустимые источники.",
"radar.error_source_restricted": "Нет доступа ко всем выбранным источникам.",
"radar.error_rate_limited": "Слишком много запросов. Повторите чуть позже.",
"radar.error_not_ready": "Обработка данных радара ещё не готова.",
"radar.error_conflict": "План изменился. Откройте настройку радара заново и повторите попытку.",
"radar.error_source_unavailable": "Один или несколько выбранных источников радара недоступны.",
"radar.error_unsupported_capability": "Установленная интеграция не поддерживает эту возможность радара.",
"radar.report_age": "{seconds} с назад",
"space.show_lqi": "Сигнал Zigbee рядом с устройствами",
"gs.light_none": "Нет источников света",
"mode.plan": "Редактор плана",
"mode.devices": "Редактор устройств",
"display.value": "Значение + состояние",
"marker.subarea": "без зоны, вручную",
"device.new": "Новое устройство — откройте его редактор, чтобы снять отметку",
"opening.unlock_action": "Открыть замок",
"opening.lock_action": "Закрыть замок",
"opening.lock_pending": "Выполняется…",
"title.close_editor": "Закрыть редактор (вернуться к просмотру)",
"title.add_device": "Добавить устройство на план",
"devbar.add": "Добавить",
"devbar.rules": "Правила иконок",
"device_inbox.button": "Устройства",
"device_inbox.title": "Устройства на плане",
"device_inbox.search": "Поиск по устройствам, сущностям и интеграциям…",
"device_inbox.add_virtual": "Добавить виртуальное устройство",
"device_inbox.tab_on_plan": "На плане",
"device_inbox.tab_available": "Доступны",
"device_inbox.tab_hidden": "Скрытые",
"device_inbox.tab_readd": "Доступны снова",
"device_inbox.only_new": "Только новые",
"device_inbox.show_entities": "Показывать сущности",
"device_inbox.show_hidden": "Показывать скрытые на плане",
"device_inbox.show_hidden.help": "Временно показывает на плане скрытые и деактивированные маркеры служебными призраками только в редакторе устройств. Сохранённая видимость устройств не меняется.",
"device_inbox.show_hidden.help.aria": "Подсказка: показывать скрытые устройства на плане",
"device_inbox.new": "Новое",
"device_inbox.find": "Найти на плане",
"device_inbox.edit": "Настроить",
"device_inbox.hide": "Скрыть",
"device_inbox.show": "Показать",
"device_inbox.add": "Добавить",
"device_inbox.readd": "Добавить заново",
"device_inbox.hide_available": "Скрыть из списка",
"device_inbox.show_more": "Показать ещё",
"device_inbox.more_actions": "Другие действия",
"device_inbox.find_hidden_hint": "Сначала включите «Показывать скрытые на плане»",
"device_inbox.show_disabled": "Перед показом активируйте эту привязку в Home Assistant",
"device_inbox.empty_on_plan": "На плане пока нет подходящих устройств.",
"device_inbox.empty_available": "Нет доступных устройств для добавления.",
"device_inbox.empty_hidden": "Скрытых устройств нет.",
"device_inbox.empty_readd": "Нет удалённых устройств, доступных для повторного добавления.",
"device_inbox.reason_visible_auto": "Найдено автоматически",
"device_inbox.reason_visible_explicit": "Добавлено явно",
"device_inbox.reason_manual_hidden": "Скрыто пользователем",
"device_inbox.reason_automatic_hidden": "Скрыто автоматически",
"device_inbox.reason_service_entry": "Служебная запись реестра",
"device_inbox.reason_excluded_integration": "Исключена интеграция «{integration}»",
"device_inbox.reason_excluded_domain": "Непространственный тип сущности",
"device_inbox.reason_grouped_light": "Представлено группой света комнаты",
"device_inbox.reason_represented_by_parent": "Представлено родительским устройством",
"device_inbox.reason_removed": "Ранее удалено с плана",
"device_inbox.reason_available": "Можно добавить на план",
"device_inbox.reason_no_bound_room": "Зона HA не связана с комнатой плана",
"device_inbox.status_ha_disabled": "Отключено в Home Assistant",
"device_inbox.status_orphaned": "Привязка больше не найдена в Home Assistant",
"device_inbox.status_unverified": "Реестр Home Assistant временно недоступен",
"device_inbox.saved": "Список устройств обновлён",
"device_inbox.select_all": "Выбрать все ({count})",
"device_inbox.select_row": "Выбрать «{name}»",
"device_inbox.selected_count": "Выбрано: {count}",
"device_inbox.clear_selection": "Снять выбор",
"device_inbox.hide_selected": "Скрыть выбранные ({count})",
"device_inbox.show_selected": "Показать выбранные ({count})",
"device_inbox.batch_hidden": "Скрыто: {count}",
"device_inbox.batch_shown": "Показано: {count}",
"device_inbox.select_inactive": "Выбрать можно только активные привязки Home Assistant",
"device_inbox.filters_excluded": "Исключённые интеграции",
"device_inbox.filters_group_lights": "Объединять светильники комнаты в один маркер",
"device_inbox.filters_preview_appear": "появится: {count}",
"device_inbox.filters_preview_hide": "скроется: {count}",
"device_inbox.filters_preview_lights": "затронет светильников: {count}",
"device_inbox.filters_reset": "Вернуть рекомендуемые",
"device_inbox.filters_save": "Сохранить фильтры",
"device_inbox.filters_search_ph": "Добавить интеграцию…",
"device_inbox.filters_title": "Фильтры обнаружения",
"space.roomcard_section": "Карточки комнат",
"space.label_temp": "Температура",
"space.label_hum": "Влажность",
"space.label_lqi": "Средний Zigbee-сигнал",
"space.label_light": "Свет вкл/выкл",
"roomcard.light_on": "Вкл",
"roomcard.light_off": "Выкл",
"roomcard.light_partial": "{on} из {total}",
"toast.split_pick_inside": "Промежуточные точки разреза — внутри комнаты",
"mode.decor": "Редактор подложки",
"decor.select": "Выбрать",
"decor.line": "Линия",
"decor.rect": "Прямоугольник",
"decor.ellipse": "Овал",
"decor.text": "Надпись",
"decor.erase": "Стереть",
"decor.erase_confirm_title": "Стереть объект?",
"decor.color": "Цвет",
"decor.width": "Толщина линии",
"decor.line_style": "Стиль линии",
"decor.line_style_solid": "Сплошная",
"decor.line_style_dashed": "Пунктирная",
"decor.fill": "Заливка",
"decor.fill_color": "Цвет заливки",
"decor.length": "Длина",
"decor.size": "Размер",
"decor.flip_h": "Отзеркалить по горизонтали",
"decor.flip_v": "Отзеркалить по вертикали",
"decor.angle": "Угол поворота, °",
"decor.text_size": "Размер текста",
"decor.backdrop_properties": "Свойства картинки-подложки",
"decor.text_title": "Надпись",
"decor.object_title": "Редактирование: {kind}",
"decor.text_label": "Текст",
"decor.live_group": "Вставить переменную HA",
"decor.live_entity": "Сущность",
"decor.live_entity_ph": "выберите сущность",
"decor.live_attr": "Значение",
"decor.live_attr_ph": "выберите состояние или атрибут",
"decor.live_state": "Состояние",
"decor.backdrop": "Картинка-подложка",
"decor.backdrop_hint": "Тяните картинку — перемещение; угол — размер; верхнюю ручку — поворот. Shift меняет пропорции или снимает шаг угла.",
"decor.backdrop_reset": "Вернуть картинку",
"decor.backdrop_reset_done": "Картинка вернулась на своё место и в свой размер",
"marker.icon_auto": "Авто: {icon} (по правилам иконок; выберите свою, чтобы заменить)",
"marker.icon_pin_auto": "Закрепить",
"mode.plan_tip": "Редактор плана — геометрия дома: рисование и объединение/разделение комнат, привязка к зонам HA, двери, окна и ворота, карточки комнат, масштаб",
"mode.devices_tip": "Редактор устройств — всё про значки: перетаскивание, клик — настройка привязки/иконки/отображения, виртуальные устройства, правила иконок",
"mode.decor_tip": "Редактор подложки — чисто визуальный декор под планом: линии, прямоугольники, овалы и надписи, не реагирующие на клики",
"space.glow_enabled": "Свечение источников света",
"gs.glow_group": "Свечение источников света",
"gs.glow_base": "Темнота дома",
"gs.glow_light": "Цвет света по умолчанию / интенсивность",
"gs.glow_radius.help": "Задаёт общий радиус светового пятна в метрах или футах; персональный радиус устройства заменяет это значение.",
"gs.glow_radius.help.aria": "Подсказка: общий радиус свечения",
"gs.unit_m": "м",
"gs.unit_ft": "фут",
"marker.controls_label": "Управляет другими источниками света",
"marker.controls.help": "При действии «Переключить состояние» перечисленные источники переключаются вместе с этим маркером. Их световые пятна остаются у собственных маркеров, а эта связь сама по себе не делает управляющий маркер источником света.",
"marker.controls.help.aria": "Подсказка: управление другими источниками света",
"marker.controls_filter": "Поиск ламп и выключателей…",
"info.controls": "Управляет",
"marker.glow_radius_label": "Радиус свечения",
"marker.glow_radius.help": "Задаёт радиус свечения в метрах или футах; пустое значение использует радиус из общих настроек.",
"marker.glow_radius.help.aria": "Подсказка: радиус свечения",
"markup.wallthick": "Толщина",
"markup.select": "Выбрать",
"title.markup_wallthick": "Толщина — клик по стене задаёт толщину от 0 до 100 см.",
"markup.hint_wallthick": "клик по стене · Esc закрывает без применения",
"wallthick.field": "Толщина",
"wallthick.unit_cm": "см",
"wallthick.unit_in": "дюйм",
"wallthick.apply_room": "Применить ко всем стенам комнаты",
"markup.draw_wall_title": "Толщина каждого нового сегмента стены (0–100 см). Общие стены сохраняют существующее значение.",
"room.queue_progress": "Комната {current} из {total}",
"toast.wall_rooms_saved": "Создано комнат: {n}",
"toast.wall_chain_saved": "Цепочка стен сохранена",
"toast.wallthick_pick": "Кликните по стене",
"toast.wallthick_set": "Толщина стены задана",
"toast.wallthick_cleared": "Толщина стены убрана",
"toast.physical_range": "Введите значение от {min} до {max} {unit}",
"toast.zero_wall_opening_conflict": "Сначала удалите проём на этом участке стены.",
"toast.zero_wall_ambiguous": "Не удалось однозначно выбрать участок стены. Уточните геометрию узла.",
"toast.zero_wall_migration_blocked": "Пространство не преобразовано: {reason}. Данные не изменены.",
"toast.physical_angle": "Введите угол поворота от 0° до 90°, не включая 90°",
"toast.physical_limit": "В пространстве достигнут лимит объектов этого типа",
"toast.geometry_unsafe": "Изменение отменено: геометрию стен нельзя безопасно построить.",
"junction.limit_angle": "Слишком острый угол между стенами: {actual}°, минимум {limit}°.",
"junction.limit_valence": "Слишком много стен в одном узле: {actual}, максимум {limit}.",
"junction.limit_length": "Слишком короткий участок стены: {actual} см, минимум {limit} см.",
"junction.limit_distance": "Стены и узлы слишком близко: {actual} см, минимум {limit} см.",
"junction.limit_clearance": "Внутри комнаты не остаётся места: {actual} см², минимум {limit} см².",
"junction.limit_check_failed": "Проверку стыков выполнить не удалось — изменение не сохранено",
"toast.wall_model_migration_blocked": "Не удалось обновить модель стен: {reason}. План не изменён. Запустите «Оптимизировать планы»; если ошибка повторится, исправьте конфликтующую геометрию стен.",
"toast.wall_model_client_outdated": "Обновите карточку и перезагрузите страницу перед редактированием плана.",
"wall_model.reason.invalid-room": "некорректный контур комнаты",
"wall_model.reason.zero-length": "отрезок стены нулевой длины",
"wall_model.reason.third-owner": "стена принадлежит более чем двум комнатам",
"wall_model.reason.duplicate-id": "конфликт идентификаторов стен",
"wall_model.reason.thickness-conflict": "конфликт значений толщины стены",
"wall_model.reason.opening-host": "проём нельзя однозначно привязать к стене",
"toast.delete_room_pick": "Кликните внутри комнаты, которую нужно удалить",
"toast.plan_snap_ambiguous": "Увеличьте масштаб, чтобы выбрать узел стены",
"toast.wall_repair_ambiguous": "У контура несколько возможных соединений. Увеличьте масштаб и соедините стены явно.",
"toast.wall_repair_too_large": "Разрыв больше 2 см. Соедините стены перед созданием комнаты.",
"toast.wall_repair_changed": "Геометрия стен изменилась. Попробуйте создать комнату ещё раз.",
"toast.opening_on_zero_wall": "Проёмы на стене нулевой толщины запрещены",
"marker.from_ha_option": "Выбрать из списка HA",
"marker.show_entities": "Показывать сущности",
"marker.show_entities_tip": "Добавляет в список не только устройства, но и все их сущности",
"marker.pick_ph": "Выберите устройство…",
"room.open_area": "Открыть зону в HA",
"room.fit_action": "Вписать комнату {name}",
"kiosk.title": "Размеры на этом экране",
"kiosk.hint": "Хранится только на этом устройстве — у каждого настенного планшета или ТВ свои удобные размеры.",
"kiosk.icon_scale": "Размер значков устройств",
"kiosk.font_scale": "Размер текста карточек комнат",
"editor.kiosk": "Режим настенного устройства (киоск)",
"editor.cycle": "Автосмена пространств каждые N секунд (киоск, 0 = выкл)",
"room.settings_title": "Настройки комнаты",
"room.fill_label": "Заливка в ЭТОЙ комнате",
"fill.inherit": "Как у пространства",
"room.custom_fill_space": "Цвет пространства",
"room.custom_fill_own": "Цвет комнаты",
"room.temp_range_label": "Диапазон комфорта",
"room.temp_range_min": "Нижняя граница комфортной температуры",
"room.temp_range_max": "Верхняя граница комфортной температуры",
"room.temp_range_reset": "Как у пространства",
"room.temp_range.help": "Диапазон применяется только к этой комнате. Пустое поле наследует соответствующую границу пространства; если границы поменялись местами, House Plan использует меньшую как нижнюю, а большую как верхнюю.",
"room.temp_range.help.aria": "О диапазоне комфорта комнаты",
"room.temp_src_label": "Источник температуры",
"room.hum_src_label": "Источник влажности",
"room.src_average": "Среднее по датчикам комнаты",
"room.src_pick": "Конкретное устройство или сущность",
"room.src_ph": "Выберите источник…",
"toast.room_updated": "Комната обновлена",
"space.card_font": "Размер шрифта карточек",
"room.sizes_section": "Размеры шрифтов",
"room.group_basics.help": "Область связывает комнату с зоной Home Assistant: из неё берутся датчики. Без области комната остаётся геометрией.",
"room.group_basics.help.aria": "Подсказка: имя и область комнаты",
"room.group_fill": "Заливка",
"room.group_fill.help": "Заливка этой комнаты перекрывает выбранную для пространства; «Свой цвет» хранится только здесь.",
"room.group_fill.help.aria": "Подсказка: заливка комнаты",
"room.group_sources": "Источники",
"room.group_sources.help": "По умолчанию комната усредняет свои датчики. Выбранный датчик заменяет среднее везде: подсказка, карточка, заливка.",
"room.group_sources.help.aria": "Подсказка: источники температуры и влажности",
"room.sizes_section.help": "Масштабы действуют только в этой комнате и умножаются на общий масштаб карточки из настроек пространства.",
"room.sizes_section.help.aria": "Подсказка: размеры шрифтов комнаты",
"room.name_scale": "Размер названия",
"room.label_scale": "Размер подписей",
"preview.room_name": "Гостиная",
"toast.cfg_reload_failed": "Не удалось перечитать план с сервера: {err}",
"toast.locale_load_failed": "Не удалось загрузить языковой пакет. До перезагрузки страницы используется английский.",
"toast.furniture_art_load_failed": "Не удалось загрузить изображения мебели. Обновите страницу, чтобы их показать.",
"room.settings_short": "Настройки комнаты",
"room.unnamed": "Комната без имени",
"marker.use_climate_temp": "Учитывать температуру устройства в комнате",
"marker.use_climate_temp_tip": "Добавляет current_temperature кондиционера или термостата в среднюю температуру комнаты. Внешний бейдж со значением настраивается отдельно ниже.",
"marker.value_badge_title": "Бейдж со значением",
"marker.value_badge.help": "Показывает одно выбранное значение рядом со значком. Не влияет на комнатные показатели, свет, Glow и действие по нажатию.",
"marker.value_badge.help.aria": "Подсказка: бейдж со значением устройства",
"marker.value_badge_enabled": "Отображать бейдж со значением",
"marker.value_badge_source": "Значение",
"marker.value_badge_source.help": "Выберите конкретное состояние, поддерживаемый атрибут или производное значение этого устройства.",
"marker.value_badge_source.help.aria": "Подсказка: источник значения бейджа",
"marker.value_badge_position": "Расположение",
"marker.value_badge_position.help": "Выбранная сторона сохраняется постоянно и не переворачивается автоматически у края плана.",
"marker.value_badge_position.help.aria": "Подсказка: расположение бейджа",
"marker.value_badge_right": "Справа",
"marker.value_badge_bottom": "Снизу",
"marker.value_badge_left": "Слева",
"marker.value_badge_top": "Сверху",
"marker.value_badge_empty": "У этого устройства нет доступных значений",
"marker.value_badge_static": "Статичный значок не показывает живые значения. Настройка сохранится.",
"marker.value_badge_missing": "Источник недоступен",
"marker.value_badge_missing_hint": "Сохранённый источник сейчас недоступен. Можно сохранить его, отключить бейдж или выбрать другой.",
"marker.value_badge_duplicate": "То же значение уже показано внутри значка.",
"marker.value_badge_state": "Состояние · {name}",
"marker.value_badge_marker_state": "Состояние источника света · {name}",
"marker.value_badge_lqi": "Качество Zigbee-сигнала (среднее)",
"marker.value_badge_attr_current_temperature": "Текущая температура · {name}",
"marker.value_badge_attr_temperature": "Целевая температура · {name}",
"marker.value_badge_attr_current_humidity": "Текущая влажность · {name}",
"marker.value_badge_attr_humidity": "Влажность · {name}",
"marker.value_badge_attr_current_position": "Положение · {name}",
"marker.value_badge_attr_percentage": "Скорость · {name}",
"marker.value_badge_attr_brightness": "Яркость · {name}",
"marker.value_badge_attr_volume_level": "Громкость · {name}",
"marker.value_badge_attr_battery_level": "Заряд батареи · {name}",
"marker.value_badge_attr_fan_speed": "Скорость вентилятора · {name}",
"marker.value_source": "Источник значения",
"marker.value_source.help": "Выберите, что заменит значок. Действие по нажатию не изменится.",
"marker.value_source.help.aria": "Подсказка: источник значения внутри значка",
"marker.value_source_auto": "Автоматически (как раньше)",
"marker.value_source_missing_hint": "Сохранённый источник сейчас недоступен. До его восстановления или выбора другого значения внутри будет показано —.",
"marker.light_role_label": "Является источником света",
"marker.light_role.help": "«Авто» использует фактическую роль привязанного устройства, «Всегда» принудительно создаёт собственный источник, а «Никогда» исключает его; связанные лампы выше остаются независимыми.",
"marker.light_role.help.aria": "Подсказка: является ли устройство источником света",
"marker.light_role_auto_yes": "Автоматически (источник света)",
"marker.light_role_auto_no": "Автоматически (не источник света)",
"marker.light_entity_label": "Ведущая сущность света",
"marker.light_entity.help": "Для составного устройства выберите сущность, состояние, цвет и яркость которой представляют этот источник на плане. Автоматический вариант сохраняет совместимость со старыми планами.",
"marker.light_entity.help.aria": "Подсказка: ведущая сущность света",
"marker.light_entity_auto": "Автоматически ({entity})",
"marker.light_entity_none": "нет управляемой сущности",
"marker.light_entity_missing": "Сохранённая сущность {entity} недоступна. Временно используется {fallback}; выбор восстановится, если сущность вернётся.",
"marker.toggle_entity_label": "Переключаемая сущность",
"marker.toggle_entity.help": "Для составного устройства выберите собственную лампу или переключатель, которой управляет нажатие. Автоматический вариант сохраняет прежние правила цели и не зависит от ведущей сущности света.",
"marker.toggle_entity.help.aria": "Подсказка: переключаемая сущность",
"marker.toggle_entity_auto": "Автоматически ({entity})",
"marker.toggle_entity_none": "нет собственной управляемой сущности",
"marker.toggle_entity_missing": "Сохранённой сущности {entity} больше нет среди выбираемых каналов этого маркера. Временно используется {fallback}; выбор восстановится, если сущность вернётся.",
"marker.glow_color_label": "Цвет и яркость свечения",
"marker.glow_mode.help": "Используйте данные источника, задайте только цвет или зафиксируйте цвет и яркость. Минимум — 1%; чтобы отключить источник, выберите «Никогда».",
"marker.glow_mode.help.aria": "Подсказка: цвет и яркость свечения",
"marker.glow_mode_auto": "Из источника",
"marker.glow_mode_color": "Задать цвет",
"marker.glow_mode_fixed": "Цвет и яркость",
"marker.glow_color": "Цвет свечения",
"marker.glow_brightness": "Яркость",
"marker.glow_disabled_never": "Настройки свечения недоступны: маркер явно исключён из источников света.",
"marker.glow_disabled_auto": "В автоматическом режиме у этого маркера не найден пространственный источник света.",
"marker.glow_disabled_no_entity": "Для пространственного источника нет активной управляемой сущности Home Assistant.",
"marker.glow_passive_hint": "У источника нет собственных данных Home Assistant. Задайте цвет и яркость вручную; радиус остаётся доступным.",
"marker.control_broken": "Сохранённый источник отсутствует или больше не отмечен как источник света",
"marker.control_missing_label": "Отсутствующий источник на плане",
"marker.control_passive": "пассивный источник",
"toast.marker_control_cycle": "Такая связь создаст циклическую цепочку управления светом.",
"toast.marker_binding_required": "Сначала выберите устройство Home Assistant, затем добавьте управляемый источник света.",
"confirm.unlock_title": "Открыть замок?",
"confirm.unlock_body": "House Plan отправит этому замку команду открытия.",
"toast.files_migrate_failed": "Не удалось перенести вложения к новой привязке, ссылки остались на старые файлы: {err}",
"space.pick_saved": "Уже загруженные",
"space.pick_saved_hint": "Планы, сохранённые на сервере, включая отцеплённые ранее",
"space.no_saved": "На сервере пока нет сохранённых планов.",
"space.loading": "Загрузка…",
"space.used_by": "используется: {list}",
"space.in_use": "План используется пространством — сначала отцепите его",
"btn.use": "Выбрать",
"confirm.delete_plan_title": "Удалить файл плана?",
"confirm.delete_plan_body": "Файл будет удалён с сервера. Это действие нельзя отменить.",
"toast.plans_list_failed": "Не удалось получить список планов: {err}",
"toast.plan_delete_failed": "Не удалось удалить план: {err}",
"marker.hide": "Скрыть",
"marker.hide_tip": "Устройство исчезнет с плана после сохранения, но продолжит участвовать в расчёте сигнала комнаты. Вернуть его можно через каталог «Устройства» в редакторе устройств.",
"marker.show": "Показать",
"marker.show_tip": "Устройство снова появится на плане после сохранения.",
"marker.hidden_ghost": "Устройство скрыто пользователем",
"marker.ha_disabled_device": "Устройство деактивировано в Home Assistant и скрыто с плана.",
"marker.ha_disabled_entity": "Сущность деактивирована в Home Assistant и скрыта с плана.",
"marker.ha_disabled_all_entities": "У устройства нет активных сущностей Home Assistant, поэтому оно скрыто с плана.",
"marker.ha_registry_limited": "Полный реестр Home Assistant недоступен этому пользователю. Неподтверждённый объект временно нельзя показывать или использовать.",
"marker.delete_tip": "Полностью удалить устройство с плана и из всех расчётов. Позже его можно добавить заново.",
"tap.run": "Запустить автоматизацию/скрипт/сцену",
"tap.none": "Ничего не делать",
"marker.run_target_label": "Что запускать",
"marker.run_search_ph": "Поиск: автоматизация, скрипт или сцена…",
"marker.run_target_gone": "Цель {id} не найдена — выберите заново",
"marker.tap_confirm": "Спрашивать подтверждение",
"marker.tap_confirm_tip": "Перед выполнением показать диалог подтверждения — защита от случайных нажатий.",
"marker.toggle_hint_single": "Цель: {name} ({id}).",
"marker.virtual_light_target": "Виртуальный свет: {name}.",
"marker.virtual_light_current": "Ручное состояние: {state} → {effect}.",
"marker.virtual_light_state_on": "включён",
"marker.virtual_light_state_off": "выключен",
"marker.toggle_hint_group": "Переключатся источники ({count}): {names}.",
"marker.toggle_hint_current": "Сейчас: {state} → {effect}.",
"marker.toggle_hint_group_current": "Сейчас включено {on} из {count} → {effect}.",
"marker.toggle_hint_skipped": "Не будут затронуты ({count}): {targets}.",
"marker.toggle_effect_turn_on": "включится",
"marker.toggle_effect_turn_off": "выключится",
"marker.toggle_effect_open": "откроется",
"marker.toggle_effect_close": "закроется",
"marker.toggle_effect_stop": "остановится",
"marker.toggle_effect_toggle": "состояние переключится",
"marker.toggle_skip_missing": "не найдено",
"marker.toggle_skip_ha_disabled": "деактивировано в HA",
"marker.toggle_skip_unavailable": "недоступно",
"marker.toggle_skip_unsupported": "переключение не поддерживается",
"marker.toggle_skip_secure": "заблокировано из соображений безопасности",
"marker.toggle_none_no_binding": "У устройства нет привязки, состояние переключать нечем. По нажатию ничего не произойдёт.",
"marker.toggle_none_no_actionable_entity": "У устройства нет состояния, которое можно переключить. По нажатию ничего не произойдёт.",
"marker.toggle_none_configured_targets_missing": "Настроенные цели сейчас недоступны. Собственная сущность устройства не будет подставлена вместо них.",
"marker.toggle_none_ha_disabled": "Цель деактивирована в Home Assistant и не может использоваться на плане.",
"marker.toggle_none_unavailable": "Цель сейчас недоступна. По нажатию ничего не произойдёт.",
"marker.toggle_none_unsupported": "Для этой сущности Home Assistant не предоставляет безопасного переключения. По нажатию ничего не произойдёт.",
"marker.toggle_none_secure": "Переключение замков, сигнализации и защитных ворот с плана заблокировано из соображений безопасности.",
"run.automation": "автоматизация",
"run.script": "скрипт",
"run.scene": "сцена",
"confirm.tap_run": "Запустить «{name}»?",
"confirm.tap_toggle": "Переключить «{name}»?",
"confirm.current_state": "Текущее состояние: {state}",
"confirm.expected_state": "После переключения: {state}",
"confirm.group_current": "включено {on} из {total}",
"confirm.group_all_on": "все включены",
"confirm.group_all_off": "все выключены",
"confirm.unavailable_targets": "Недоступно: {count}",
"confirm.expected_by_ha": "Состояние определит Home Assistant",
"confirm.state_on": "Включено",
"confirm.state_off": "Выключено",
"confirm.state_open": "Открыто",
"confirm.state_closed": "Закрыто",
"confirm.state_opening": "Открывается",
"confirm.state_closing": "Закрывается",
"confirm.state_stopped": "Остановлено",
"confirm.state_unknown": "Неизвестно",
"toast.run_started": "Запущено: {name}",
"toast.run_target_missing": "Цель запуска не найдена — проверьте настройки устройства",
"toast.tap_target_changed": "Цель действия изменилась. Повторите попытку.",
"toast.virtual_light_toggle_failed": "Не удалось переключить виртуальный свет: {err}",
"btn.run": "Выполнить",
"vac.section": "Робот-пылесос: живая позиция",
"vac.autocal": "Настроить автоматически",
"vac.live": "Живая позиция на плане",
"vac.trail": "Показывать путь робота",
"vac.autocal_no_rooms": "Интеграция не отдаёт список комнат — откройте «Подогнать вручную»",
"vac.route_warn_unmapped": "Робот убирает на карте, которая не сопоставлена ни одному этажу",
"vac.route_warn_needs_calibration": "Карта сопоставлена этажу, но не откалибрована",
"vac.route_warn_ambiguous": "Две карты неразличимы — этаж не выбран",
"vac.route_warn_missing_space": "Пространство этой карты удалено",
"vac.autocal_no_match": "Не совпали имена комнат (нужно ≥3 общих) — откройте «Подогнать вручную»",
"vac.autocal_done": "Готово: привязка по {rooms} комнатам. Запустите уборку и проверьте",
"vac.cal_need_pos": "Робот сейчас не отдаёт координаты — запустите уборку и поставьте на паузу",
"vac.cal_done": "Калибровка сохранена. Запустите уборку и проверьте",
"vac.cal_cancelled": "Калибровка отменена",
"vac.fit": "Подогнать вручную",
"vac.fit_hint": "Перетащите карту робота на место, растяните за уголки",
"vac.fit_rotate": "Повернуть 90°",
"vac.fit_mirror": "Отразить",
"vac.trail_never": "Не показывать никогда",
"vac.trail_cleaning": "Во время уборки",
"vac.trail_always": "Показывать всегда",
"gs.bg_color": "Цвет фона вокруг плана",
"gs.bg_default": "Как в теме",
"gs.bg_mode.help": "«Следует за Солнцем» использует sun.sun, а при недоступности — локальные часы браузера; статичный режим всегда показывает выбранный цвет.",
"gs.bg_mode.help.aria": "Подсказка: общий фон плана",
"gs.bg_static": "Статичный цвет",
"gs.bg_daynight": "Следует за Солнцем",
"gs.sun_group": "Солнце и Луна",
"gs.sun_missing": "Сущность sun.sun не найдена — фон следует локальным часам, а оконные лучи недоступны.",
"gs.north": "Север на плане",
"gs.north.help": "Угол отсчитывается по часовой стрелке от верхней вертикали плана; север нужен для оконных лучей, а не для фона «Следует за Солнцем».",
"gs.north.help.aria": "Подсказка: общее направление севера",
"gs.north_clear": "Сбросить",
"gs.north_letter": "С",
"gs.sun_ray_origin": "Лучи солнца",
"gs.sun_ray_origin.inner": "От внутренних углов окон",
"gs.sun_ray_origin.outer": "От внешних углов окон",
"gs.about_version": "Houseplan Card v{v}",
"gs.about_github": "GitHub · документация и issues",
"gs.about_telegram": "Чат в Telegram",
"support.title": "Помощь и обратная связь",
"space.bg_color": "Цвет фона вокруг плана",
"space.bg_inherit": "Наследовать общий",
"space.bg_mode": "Фон плана",
"space.bg_mode.help": "Выберите наследование общего фона либо переопределите это пространство статичным цветом или режимом «Следует за Солнцем».",
"space.bg_mode.help.aria": "Подсказка: фон пространства",
"space.north": "Север на плане",
"space.north.help": "Переопределяет общий север для этого пространства; угол отсчитывается по часовой стрелке от верхней вертикали плана и используется оконными лучами.",
"space.north.help.aria": "Подсказка: север для пространства",
"space.sun_rays": "Солнце в окнах",
"space.sun_inherit": "Общие настройки",
"space.sun_on": "Вкл",
"space.sun_off": "Выкл",
"canvas.far_objects": "Объектов далеко от плана: {n}",
"canvas.show_far": "Показать",
"canvas.home_tip": "План там — нажмите, чтобы вписать",
"gs.align_all": "Оптимизировать планы",
"gs.align_title": "Оптимизировать планы",
"gs.align_none": "Все планы уже используют актуальную и оптимальную модель данных.",
"gs.optimize_no_automatic_changes": "Автоматических изменений нет. Проверьте пункты ниже.",
"gs.align_count": "Сдвинется элементов: {n} из {total}, максимум на {cm} см.",
"gs.align_where": "Наибольший сдвиг — в пространстве «{s}».",
"gs.align_turned": "Проёмов с исправлением угла: {n}.",
"gs.align_preflight_failed": "Не удалось безопасно проверить геометрию следующих пространств: {spaces}{more}.",
"gs.align_preflight_hint": "Планы не изменены. Скопируйте диагностику кнопкой ниже и приложите её к отчёту об ошибке вместе с экспортом пространства.",
"gs.preflight_reason_prepare-exception": "Не удалось подготовить геометрию пространства (исключение при сборке модели)",
"gs.preflight_reason_wall-null": "Тело стен не построилось (объединение вернуло пустоту)",
"gs.preflight_reason_wall-degraded-extra": "Тело стен деградировало с лишней геометрией",
"gs.preflight_reason_wall-failed-core": "Ядро тела стен не собралось",
"gs.preflight_reason_wall-exception": "Построение стен упало с исключением",
"gs.preflight_reason_floor-null": "Контур пола не построился",
"gs.preflight_reason_floor-exception": "Построение пола упало с исключением",
"gs.preflight_copy": "Скопировать диагностику",
"gs.preflight_copied": "Диагностика скопирована",
"gs.preflight_update_hint": "Версии карточки и интеграции различаются — обновите House Plan и повторите.",
"gs.align_preflight_space": "Пространство {n}",
"gs.align_preflight_more": " и ещё {n}",
"gs.optimize_changes": "Миграций модели: {m}; обновлено пространств: {c}; устранён шум координат: {p}; объединено отрезков реальных стен: {w}; объединено отрезков стен нулевой толщины: {s}; независимых: {i}.",
"gs.zero_walls_migrated": "Преобразовано виртуальных участков: {n}.",
"gs.wall_segments_migrated": "Стабилизировано сегментов стен: {n}.",
"gs.room_drafts_migrated": "Незавершённые контуры преобразованы в обычные стены: {drafts}; отрезков: {segments}.",
"gs.optimize_lattice_summary": "Канонизировано шумовых значений координат: {n}; максимальный сдвиг: {cm} см.",
"gs.optimize_lattice_space": "{space}: канонизировано значений координат: {n}; оставлено значений вне сетки: {far}.",
"gs.optimize_coincident_partitions": "Скрытые участки независимых стен поглощены стенами комнат: {n}.",
"gs.optimize_openings_rehosted": "Проёмы перепривязаны к стенам комнат: {n}.",
"gs.optimize_walls_straightened": "Выпрямлено стен: {n}; максимальное перемещение: {cm} см.",
"gs.optimize_walls_straightened_where": "Максимальная правка стены: {s}.",
"gs.optimize_walls_straighten_skipped": "Оставлено почти осевых стен, которые нельзя безопасно выпрямить: {n}.",
"gs.optimize_glow_migration": "Старый Glow: пространств — {spaces} → без заливки данных + независимый Glow; комнат — {rooms} → наследуемая заливка + независимый Glow.",
"gs.optimize_references": "Исправлено ссылок: пространства — {spaces}; комнаты — {rooms}; позиции — {positions}; устройств отвязано от отсутствующих пространств — {detached}.",
"gs.optimize_reference_more": ", и ещё {n}",
"gs.optimize_orphans_removed": "Убрано забытых записей: {total} — подписи комнат: {rooms}; устройства: {devices}; групповые метки: {groups}. Все они принадлежали пространствам, удалённым ранее.",
"gs.optimize_live_positions": "Старые позиции в удалённых пространствах принадлежат существующим объектам: {n}{names}. Они будут сохранены.",
"gs.optimize_live_positions_remove": "Старые позиции в удалённых пространствах принадлежат существующим объектам: {n}{names}. Они выбраны для удаления.",
"gs.optimize_live_names": ": {names}{more}",
"gs.optimize_live_remove": "Убрать старые позиции",
"gs.optimize_live_keep": "Сохранить старые позиции",
"gs.optimize_live_selected": "Старые позиции будут убраны после применения оптимизации.",
"gs.optimize_unverified": "Не удалось безопасно проверить позиций: {n}. Они оставлены без изменений.",
"gs.optimize_registry_limited": "Для безопасной проверки нужен полный доступ администратора к реестрам Home Assistant.",
"gs.optimize_vacuum_warning": "Сопоставления комнат пылесоса требуют проверки: {n}.",
"gs.optimize_details": "Подробности",
"gs.optimize_details_more": "И ещё записей: {n}.",
"gs.optimize_detail_removed": "будет удалено",
"gs.optimize_detail_live": "будет сохранено",
"gs.optimize_detail_unverified": "не проверено",
"gs.optimize_detail_room_label": "подпись комнаты",
"gs.optimize_detail_device": "устройство",
"gs.optimize_detail_group": "групповая метка",
"gs.optimize_detail_unknown": "неизвестный владелец",
"gs.optimize_detail_item": "{status}: {kind} {id}; прежнее пространство {space}",
"gs.align_warn": "Элементы, намеренно поставленные между узлами, будут сдвинуты. После операции доступна одна отмена — только до следующего изменения плана.",
"gs.align_run": "Оптимизировать",
"gs.align_done": "Планы оптимизированы: сдвинуто элементов — {n}, обслужено записей — {m}, исправлено ссылок — {r}",
"gs.optimize_undone": "Последняя оптимизация отменена",
"decor.furniture": "Мебель",
"decor.image": "Изображение",
"decor.image_title": "Свои изображения",
"decor.image_upload": "Загрузить изображение",
"decor.image_replace": "Заменить изображение",
"decor.image_uploading": "Загрузка…",
"decor.image_asset": "Файл изображения",
"decor.image_pick_hint": "Загрузите изображение или выберите уже используемое в House Plan.",
"decor.image_place_hint": "Кликните по плану, чтобы разместить изображение.",
"decor.image_none": "Загруженных изображений пока нет.",
"decor.image_unavailable": "Изображение недоступно",
"decor.image_used": "Используется в объектах: {n}",
"decor.image_upload_failed": "Не удалось загрузить изображение: {err}",
"decor.image_error_capacity": "Хранилище пользовательских изображений заполнено.",
"decor.image_in_use": "Перед удалением файла удалите все размещённые копии.",
"decor.image_delete_title": "Удалить файл изображения?",
"decor.image_delete_message": "Удалить «{name}» из House Plan? Это действие нельзя отменить.",
"furn.title": "Библиотека мебели",
"furn.symbol": "Символ",
"furn.group_furniture": "Мебель",
"furn.group_appliance": "Техника",
"furn.group_sanitary": "Сантехника",
"furn.group_other": "Прочее",
"furn.width": "Ширина",
"furn.depth": "Глубина",
"furn.back_to_categories": "Все категории",
"furn.pick_hint": "Выберите категорию, затем символ.",
"furn.place_hint": "Кликните по плану — предмет встанет к ближайшей стене. Shift — свободно.",
"furn.cat_air_conditioner": "Кондиционеры",
"furn.cat_armchair": "Кресла",
"furn.cat_bathtub": "Ванны",
"furn.cat_bed": "Кровати",
"furn.cat_bidet": "Биде",
"furn.cat_boiler": "Бойлеры",
"furn.cat_chair": "Стулья",
"furn.cat_coffee_table": "Журнальные столы",
"furn.cat_computer": "Компьютер",
"furn.cat_cooktop": "Варочные панели",
"furn.cat_dining_table": "Обеденные столы",
"furn.cat_dishwasher": "Посудомоечные машины",
"furn.cat_dryer": "Сушильные машины",
"furn.cat_exercise": "Тренажёр",
"furn.cat_fireplace": "Камины",
"furn.cat_fridge": "Холодильники",
"furn.cat_hood": "Вытяжка",
"furn.cat_kitchen_cabinet": "Кухонные шкафы",
"furn.cat_kitchen_sink": "Кухонные мойки",
"furn.cat_nightstand": "Тумбы",
"furn.cat_oven": "Духовка",
"furn.cat_plant": "Растения",
"furn.cat_rug": "Ковры",
"furn.cat_shelving": "Стеллажи",
"furn.cat_shower": "Душевые",
"furn.cat_sink": "Раковины",
"furn.cat_sofa": "Диваны",
"furn.cat_stairs": "Лестницы",
"furn.cat_toilet": "Унитазы",
"furn.cat_tv": "Телевизоры",
"furn.cat_wardrobe": "Шкафы",
"furn.cat_washer": "Стиральные машины",
"furn.cat_work_table": "Рабочие столы",
"furn.sym_exercise": "Тренажёр",
"furn.sym_computer": "Компьютер",
"furn.sym_hood": "Вытяжка",
"furn.sym_oven": "Духовка",
"furn.sym_sofa": "Диван двухместный",
"furn.sym_sofa_three_seat": "Диван трёхместный",
"furn.sym_sofa_corner_right": "Угловой диван, правый",
"furn.sym_armchair": "Кресло мягкое",
"furn.sym_armchair_office": "Кресло офисное",
"furn.sym_coffee_table": "Журнальный стол, прямоугольный",
"furn.sym_coffee_table_round": "Журнальный стол, круглый",
"furn.sym_coffee_table_oval": "Журнальный стол, овальный",
"furn.sym_coffee_table_rounded": "Журнальный стол, скруглённый",
"furn.sym_table_dining": "Обеденный стол, прямоугольный",
"furn.sym_table_round": "Круглый стол",
"furn.sym_table_dining_oval": "Обеденный стол, овальный",
"furn.sym_table_dining_rounded": "Обеденный стол, скруглённый",
"furn.sym_chair": "Стул",
"furn.sym_chair_bar": "Барный стул",
"furn.sym_desk": "Рабочий стол, прямоугольный",
"furn.sym_desk_corner": "Рабочий стол, угловой",
"furn.sym_bed_double": "Двуспальная кровать",
"furn.sym_bed_single": "Односпальная кровать",
"furn.sym_nightstand": "Тумба прикроватная",
"furn.sym_cabinet_tv": "Тумба под телевизор",
"furn.sym_cabinet_shoe": "Тумба для обуви",
"furn.sym_cabinet_sink": "Тумба под раковину",
"furn.sym_wardrobe": "Шкаф гардеробный",
"furn.sym_bookshelf": "Шкаф книжный",
"furn.sym_wall_unit": "Шкаф-стенка",
"furn.sym_kitchen_floor": "Кухонный напольный модуль",
"furn.sym_kitchen_floor_corner": "Кухонный напольный угловой модуль",
"furn.sym_kitchen_wall": "Кухонный навесной модуль",
"furn.sym_kitchen_wall_corner": "Кухонный навесной угловой модуль",
"furn.sym_shelf_floor": "Стеллаж напольный",
"furn.sym_shelf_wall": "Полка настенная",
"furn.sym_fridge": "Холодильник",
"furn.sym_stove": "Варочная панель, 4 конфорки",
"furn.sym_cooktop_two": "Варочная панель, 2 конфорки",
"furn.sym_dishwasher": "Посудомоечная машина",
"furn.sym_washer": "Стиральная машина",
"furn.sym_dryer": "Сушильная машина",
"furn.sym_tv": "Телевизор на подставке",
"furn.sym_tv_wall": "Телевизор на кронштейне",
"furn.sym_ac": "Кондиционер",
"furn.sym_water_heater": "Бойлер",
"furn.sym_toilet": "Унитаз напольный",
"furn.sym_toilet_built_in": "Унитаз встроенный",
"furn.sym_bathtub": "Ванна прямоугольная",
"furn.sym_bathtub_corner": "Ванна угловая",
"furn.sym_shower": "Душ",
"furn.sym_sink": "Раковина",
"furn.sym_kitchen_sink": "Кухонная мойка одинарная",
"furn.sym_kitchen_sink_double": "Кухонная мойка двойная",
"furn.sym_bidet": "Биде напольное",
"furn.sym_bidet_built_in": "Биде встроенное",
"furn.sym_stairs": "Лестница",
"furn.sym_fireplace": "Камин",
"furn.sym_plant": "Растение",
"furn.sym_rug": "Ковёр",
"common.yes": "Да",
"common.no": "Нет",
"vac.diag_source": "Источник",
"vac.diag_platform": "Интеграция",
"vac.diag_status": "Статус",
"vac.diag_position": "Позиция",
"vac.diag_rooms": "Комнаты",
"vac.diag_rooms_value": "{total} · совпало имён: {matched} · {readiness}",
"vac.autocal_ready": "автокалибровка доступна",
"vac.autocal_not_ready": "нужно 3 совпавших имени",
"vac.diag_path": "Путь интеграции",
"vac.diag_map": "ID карты",
"vac.source_none": "не выбран",
"vac.source_status_ok": "Готов",
"vac.source_status_missing": "Не найден",
"vac.source_status_disabled": "Деактивирован в Home Assistant",
"vac.source_status_unavailable": "Недоступен",
"vac.source_status_unverified": "Нельзя проверить с текущими правами",
"vac.source_status_unsupported": "Нет данных позиции",
"vac.source_status_none": "Нет источника",
"vac.source_banner_missing": "Сохранённый источник больше не существует. Он не заменён автоматически: выберите другой или восстановите его в Home Assistant.",
"vac.source_banner_disabled": "Сохранённый источник деактивирован в Home Assistant. Активируйте его там или выберите другой.",
"vac.source_banner_unverified": "Текущих прав Home Assistant недостаточно для проверки источника. Привязка сохранена и не будет заменена автоматически.",
"vac.choose_source": "Выбрать источник",
"vac.source_auto": "Автоматически",
"vac.source_auto_hint": "Использовать совместимую сущность этого устройства",
"vac.all_cameras": "Все камеры",
"vac.all_cameras_warn": "Камера может не отдавать данные робота. Выбирайте её только если это карта вашего пылесоса.",
"vac.all_cameras_empty": "Других сущностей камеры не найдено.",
"vac.platform_unknown": "интеграция неизвестна",
"vac.cap_position": "позиция",
"vac.cap_rooms_short": "комнаты",
"vac.cap_path": "путь",
"vac.cap_map": "ID карты",
"vac.cap_none": "данные робота не обнаружены",
"vac.xcme_hint": "Включите атрибуты Xiaomi Cloud Map Extractor:",
"vac.documentation": "Документация",
"vac.residual_title": "Проверьте автокалибровку",
"vac.residual_message": "Совпавшие комнаты расходятся максимум на {error}. Примените приблизительную калибровку, подгоните её вручную либо отмените без изменения сохранённых настроек.",
"vac.apply_proposal": "Применить",
"gs.backup_group": "Резервная копия и перенос",
"backup.export_title": "Экспорт House Plan",
"backup.import_title": "Импорт House Plan",
"backup.export_hint": "Выберите, должна ли копия содержать всю конфигурацию House Plan или только текущее пространство.",
"backup.full": "Полная копия",
"backup.current_space": "Текущее пространство",
"backup.current_space_title": "Текущее пространство: {title}",
"backup.no_current_space": "Нет текущего пространства",
"backup.plan_only": "Только планировка",
"backup.plan_only_hint": "Сохранить комнаты, стены, проёмы, декор и позиции подписей комнат без устройств и привязок Home Assistant.",
"backup.plan_only_preview": "Файл содержит только планировку",
"backup.privacy_warning": "Архив сохраняет названия, идентификаторы Home Assistant и точные координаты. Внутренние планы и вложения указываются ссылками, но не вкладываются; текущие состояния и маршруты пылесосов не включаются.",
"backup.download": "Скачать JSON",
"backup.export_done": "Резервная копия скачана",
"backup.reading": "Проверяем резервную копию…",
"backup.revalidated": "После предпросмотра план изменился. Сводка обновлена — проверьте её и подтвердите ещё раз.",
"backup.error.support_invalid_message": "Проверьте сообщение для поддержки и повторите попытку.",
"backup.error.support_package_too_large": "Обезличенный пакет для поддержки превышает лимит 8 МиБ.",
"backup.error.support_preview_expired": "Предпросмотр вложения для поддержки истёк или больше недоступен.",
"backup.error.support_rate_limited": "Запрошено слишком много репортов или предпросмотров. Повторите позже.",
"backup.error.support_rejected": "Репорт не прошёл проверку службы поддержки.",
"backup.error.support_unavailable": "Закрытая служба поддержки временно недоступна.",
"backup.error.unauthorized": "У вас нет прав на экспорт или импорт этого плана.",
"backup.error.not_ready": "House Plan ещё не готов. Повторите попытку через несколько секунд.",
"backup.error.too_large": "Размер резервной копии превышает 8 МиБ.",
"backup.error.invalid_json": "Выбранный файл не является корректным JSON.",
"backup.error.invalid_format": "Выбранный файл не является резервной копией House Plan.",
"backup.error.invalid_image": "Изображение повреждено или не соответствует своему формату.",
"backup.error.unsupported_export_version": "Эта версия формата резервной копии не поддерживается установленной версией.",
"backup.error.unsupported_image": "Используйте поддерживаемое изображение PNG, JPEG, WebP или SVG.",
"backup.error.future_model": "Резервная копия создана в более новой версии модели данных House Plan.",
"backup.error.invalid_config": "Резервная копия содержит некорректную конфигурацию House Plan.",
"backup.error.wall_model_migration_blocked": "Не удалось безопасно обновить модель стен из резервной копии. Сначала оптимизируйте исходный план и повторите экспорт.",
"backup.error.invalid_layout": "Резервная копия содержит некорректные позиции объектов.",
"backup.error.invalid_content": "Резервная копия содержит некорректные или несогласованные ссылки на файлы.",
"backup.error.space_not_found": "Выбранное пространство больше не существует.",
"backup.error.capacity_exceeded": "Добавление этой копии превысит ограничения размера плана.",
"backup.error.preview_expired": "Время предпросмотра истекло. Выберите файл резервной копии заново.",
"backup.error.preview_owner_mismatch": "Этот предпросмотр принадлежит другому пользователю Home Assistant.",
"backup.error.conflict": "После предпросмотра план изменился. Проверьте обновлённую сводку.",
"backup.error.content_confirmation_required": "Подтвердите отсоединение недоступных локальных файлов.",
"backup.error.commit_failed": "Не удалось безопасно применить копию. Предыдущий план восстановлен или ожидает восстановления.",
"backup.error.missing_plan": "После предпросмотра исчез связанный файл плана. Проверьте копию ещё раз.",
"backup.error.missing_content": "После предпросмотра исчез связанный локальный файл. Проверьте копию ещё раз.",
"backup.error.marker_control_missing": "В резервной копии отсутствует связанный источник света на плане.",
"backup.error.marker_control_not_light": "Связанная цель больше не отмечена как источник света.",
"backup.error.marker_control_self": "Источник света не может управлять самим собой.",
"backup.error.marker_control_cycle": "Резервная копия содержит циклическую цепочку управления светом.",
"backup.error.duplicate_marker_control": "Резервная копия содержит повторяющуюся связь с источником света.",
"backup.error.no_backup": "Нет снимка импорта или оптимизации, который можно восстановить.",
"backup.error.in_use": "Элемент ещё используется",
"backup.error.invalid_data": "Запрос содержит некорректные данные",
"backup.error.invalid_light_entity": "Ведущий свет должен быть сущностью light.* или switch.*",
"backup.error.invalid_marker_control": "Некорректная ссылка управления маркером",
"backup.error.invalid_name": "Некорректное имя",
"backup.error.invalid_partition_opening_host": "Проём должен сохранить свою перегородку-носитель",
"backup.error.invalid_partition_opening_jamb_margin": "Проём не оставляет физического простенка у края стены",
"backup.error.invalid_passage_fields": "Открытый проход не может нести настройки двери",
"backup.error.invalid_space_id": "Неизвестное пространство",
"backup.error.invalid_toggle_entity": "Сущность переключения должна быть light.* или switch.*",
"backup.error.invalid_value_badge": "Некорректные настройки бейджа значения",
"backup.error.invalid_value_badge_attribute": "Некорректный атрибут бейджа значения",
"backup.error.invalid_value_badge_position": "Некорректная позиция бейджа значения",
"backup.error.invalid_value_badge_source": "Некорректный источник бейджа значения",
"backup.error.invalid_vacuum_map_route": "Проверьте сопоставление карт робота пространствам.",
"backup.error.invalid_value_source": "Некорректный источник значения",
"backup.error.invalid_value_source_attribute": "Некорректный атрибут источника значения",
"backup.error.io_error": "Файловая операция на сервере не удалась",
"backup.error.not_toggleable": "Это устройство нельзя переключить",
"backup.error.nothing_to_repair": "Нечего чинить",
"backup.error.space_in_use": "На пространство ещё есть ссылки",
"backup.error.value_badge_source_required": "Бейджу значения нужен источник",
"backup.error.wall_model_client_outdated": "План обновлён в другом месте — перезагрузите страницу",
"backup.same_source": "Создано на этом экземпляре Home Assistant",
"backup.foreign_source": "Создано на другом экземпляре Home Assistant",
"backup.created": "Создано: {value}",
"backup.versions": "Карточка {card}; интеграция {integration}; модель данных {model}",
"backup.count_spaces": "Пространств: {n}",
"backup.count_rooms": "Комнат: {n}",
"backup.count_walls": "Стен: {n}",
"backup.count_openings": "Проёмов: {n}",
"backup.count_decor": "Объектов декора: {n}",
"backup.count_markers": "Устройств: {n}",
"backup.count_layout": "Позиций: {n}",
"backup.bindings": "Привязки — устройства: {device}, сущности: {entity}, виртуальные: {virtual}; позиций без пространства: {legacy}",
"backup.binding_status": "Статус на целевом экземпляре — активных: {active}, деактивированных: {disabled}, отсутствующих: {missing}",
"backup.missing_areas": "На целевом экземпляре отсутствуют зоны: {areas}",
"backup.dropped_marker_links": "Связи с источниками света вне переносимого пространства пропущены: {n}.",
"backup.room_drafts_migrated": "Старые незавершённые контуры преобразованы в обычные стены: {drafts}; отрезков: {segments}.",
"backup.repaired_target_refs": "Существующих ссылок восстановлено этим импортом: {n}.",
"backup.preserved_unresolved_refs": "Неоднозначные ссылки сохранены без изменений: {n}.",
"backup.preserved_unresolved_hint": "House Plan ничего не угадывал и не удалял. После импорта запустите «Оптимизировать планы», чтобы проверить оставшиеся ссылки.",
"backup.import_details": "Подробности восстановления ссылок",
"backup.import_detail.incoming_remapped": "Ссылок обновлено внутри импортируемой копии: {n}",
"backup.import_detail.target_repaired": "Существующих ссылок восстановлено: {n}",
"backup.import_detail.preserved_unresolved": "Неразрешимых ссылок сохранено: {n}",
"backup.import_detail.collisions": "Конфликтов назначения безопасно сохранено: {n}",
"backup.import_detail.dropped_links": "Входящих связей пропущено по правилам переноса: {n}",
"backup.import_detail.bounded_lineages": "Чрезмерно вложенных идентификаторов ограничено: {n}",
"backup.replace_warning": "Текущая конфигурация и расположение будут заменены. Загруженные файлы не удаляются. Одну отмену можно выполнить до следующего изменения плана.",
"backup.foreign_bookkeeping": "Служебные списки известных и новых устройств другого экземпляра импортированы не будут.",
"backup.final_name": "Название нового пространства",
"backup.target_settings": "Глобальные настройки целевого экземпляра не изменятся.",
"backup.duplicates": "Уже существующих привязок: {n}",
"backup.skip": "Пропустить повторяющиеся устройства",
"backup.virtual_copy": "Добавить безопасные статичные виртуальные копии",
"backup.content": "Связанное содержимое",
"backup.decor_images_summary": "Свои изображения: объектов — {objects}, файлов — {assets}; отсутствует файлов — {missing}.",
"backup.content_available": "доступно локально",
"backup.content_external": "внешняя ссылка",
"backup.content_detach_required": "будет отвязано",
"backup.confirm_detach": "Я понимаю, что недоступные внутренние планы и вложения будут отвязаны от импортируемой конфигурации.",
"backup.confirm_missing_images": "Я понимаю, что отсутствующие свои изображения останутся восстанавливаемыми заглушками, а остальные недоступные локальные файлы будут отвязаны.",
"backup.replace": "Заменить",
"backup.add": "Добавить пространство",
"backup.space_done": "Пространство импортировано: комнат — {rooms}, устройств — {markers}, существующих ссылок восстановлено — {refs}",
"backup.full_done": "Копия восстановлена: пространств — {spaces}, комнат — {rooms}, устройств — {markers}",
"backup.import_undone": "Полный импорт отменён",
"backdrop.large_title": "Большое изображение",
"backdrop.large_body": "Изображение {w}×{h} ({fileMb} МБ), для показа потребуется около {decodedMb} МБ памяти. На планшетах это может привести к падению страницы.",
"backdrop.over_limit_body": "Файл {fileMb} МБ больше предела плана {mb} МБ. Можно загрузить уменьшенную копию.",
"backdrop.unknown_body": "Не удалось прочитать размеры изображения — файл может быть повреждён. Продолжение может привести к падению страницы на планшете.",
"backdrop.reduced_dimensions": "Уменьшенная копия: {w}×{h} px.",
"backdrop.use_downscaled": "Загрузить уменьшенную копию",
"backdrop.reducing": "Уменьшаем…",
"backdrop.keep_original": "Оставить оригинал",
"backdrop.too_large_title": "Изображение слишком большое",
"backdrop.too_large_body": "Изображение превышает возможности браузера ({w}×{h}, предел {limit} px по стороне). Уменьшите его в редакторе на компьютере и загрузите снова.",
"backdrop.downscale_failed": "Не удалось создать уменьшенную копию. Текущий план не изменён.",
"gs.card_display": "Отображение",
"gs.card_zigbee": "Связи Zigbee",
"gs.card_fills": "Цвета заливки комнат",
"gs.card_plan": "План",
"gs.card_data": "Данные",
"gs.card_fills.help.aria": "О цветах заливки комнат",
"gs.backup_group.help.aria": "О резервной копии и переносе",
"gs.grid_group.help.aria": "Об обслуживании плана",
"gs.backup_group.help": "Скачайте переносимую JSON-копию или проверьте и импортируйте копию, созданную House Plan.",
"gs.grid_group.help": "Обновляет модели данных, выравнивает элементы по сетке и объединяет лишние фрагменты стен. Перед записью будет показан точный отчёт.",
"gs.card_fills.help": "Цвета заливок действуют на все пространства; у каждого цвета своя прозрачность. Какой режим заливки использует пространство — задаётся в его диалоге.",
"space.card_basics": "Основное",
"space.card_sun": "Солнце и свет",
"marker.card_basics": "Основное",
"marker.card_light": "Свет и свечение",
"marker.card_appearance": "Внешний вид",
"marker.card_details": "Подробности"
}