Files
houseplan-card/src/i18n/en.json
T
2026-08-24 17:13:21 +03:00

1013 lines
61 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": "Actions: {object}",
"editor.tool_options": "Tool options: {tool}",
"editor.palette": "Palette: {tool}",
"editor.open_group": "Tool group: {group}",
"editor.group_active": "{group} — active: {item}",
"editor.disabled_action": "{action} is unavailable: {reason}",
"color_picker.title": "Color picker",
"color_picker.hue": "Hue",
"color_picker.saturation": "Saturation",
"color_picker.value": "Brightness",
"color_picker.hex": "Hex color",
"color_picker.invalid_hex": "Enter a 3- or 6-digit hex color",
"btn.properties": "Properties",
"btn.keep_as_walls": "Keep as walls",
"btn.delete_room_keep_walls": "Delete room, keep walls",
"btn.delete_room_with_walls": "Delete room and walls",
"title.markup_select": "Select and edit walls, columns and saved outlines",
"title.markup_column": "Column: click a grid point to place a square column",
"markup.partition": "Partition",
"markup.column": "Column",
"markup.hint_column": "click a grid point to place a square column",
"history.draft_segment": "Add room-draft segment",
"history.draft_merge": "Join unfinished room outlines",
"history.draft_segment_delete": "Remove room-draft segment",
"history.partition_add": "Add partition",
"history.column_add": "Add column",
"history.physical_edit": "Change physical object",
"history.physical_delete": "Delete physical object",
"history.physical_move": "Move physical object",
"history.contour_to_partitions": "Convert contour to closed walls",
"history.wall_chain_finish": "Finish wall chain",
"history.wall_face_batch": "Create rooms from walls",
"toast.column_duplicate": "A column with the same centre and outer size already exists",
"confirm.delete_draft": "Delete the whole unfinished room contour?",
"confirm.delete_draft_segment": "Delete this draft segment? The remaining contour may split in two.",
"physical.partition_properties": "Partition properties",
"physical.column_properties": "Column properties",
"physical.draft_properties": "Draft segment properties",
"physical.shape": "Shape",
"physical.square": "Square",
"physical.circle": "Circle",
"physical.diameter": "Diameter",
"physical.side": "Side",
"physical.rotation": "Rotation angle",
"physical.length": "Length",
"physical.allowed_range": "Allowed: 1–{max} {unit}",
"physical.delete_segment": "Delete segment",
"physical.delete_draft": "Delete entire outline",
"physical.column_size_title": "Outer side of the square column placed by the click (1–150 cm).",
"card.title": "House plan",
"count.devices": "{n} dev.",
"empty.no_spaces": "No spaces yet.",
"empty.add_first": "Add the first space and upload a floor plan.",
"empty.install": "Install the House Plan integration and add it in \"Devices & services\".",
"btn.add_space": "Add space",
"btn.cancel": "Cancel",
"btn.save": "Save",
"btn.close": "Close",
"btn.delete": "Delete",
"btn.edit": "Edit",
"btn.open_in_ha": "Open in HA",
"btn.reset": "Reset",
"btn.attach": "Attach…",
"btn.upload": "Upload…",
"btn.replace": "Replace…",
"title.zoom_in": "Zoom in",
"title.zoom_out": "Zoom out",
"title.zoom_fit": "Fit all",
"title.add_device": "Add a device to the plan",
"title.show_all": "Show hidden and disabled devices as service markers (this tab only)",
"title.markup": "Room markup: grid, lines, outlines",
"title.configure_space": "Configure space",
"title.add_space": "Add space",
"title.markup_add": "Walls: draw a continuous chain; Shift locks to 45°. Changing tool or leaving the editor finishes it as independent walls",
"title.markup_merge": "Merge: click one room, then the neighbour it shares a wall with",
"title.markup_split": "Split a room: click the room, then two points on its walls",
"title.markup_delroom": "Delete room: click inside a room and confirm",
"title.markup_boundary": "Boundary: click two points on a solid shared wall to make that stretch virtual; click a dashed stretch to restore it",
"title.need_plan": "Upload a floor-plan image",
"markup.add": "Walls",
"markup.merge": "Merge",
"markup.split": "Split",
"markup.resize": "Resize",
"title.markup_resize": "Resize rooms: drag an available horizontal or vertical wall handle",
"markup.hint_resize": "drag an available wall handle · the wall stops at the first unsafe position · Esc cancels · Ctrl+Z — undo",
"resize.disabled.diagonal": "This wall is angled; Resize supports only horizontal and vertical walls",
"resize.disabled.side-angle": "This wall does not have two perpendicular side walls",
"resize.disabled.duplicate-physical-wall": "An independent wall, unfinished outline, or column overlaps this wall",
"resize.disabled.partial-shared": "Only part of a shared wall cannot be moved",
"resize.disabled.unequal-shared": "The neighbouring room has a different wall length or endpoints",
"resize.disabled.multiple-rooms": "Moving this wall would affect more than two rooms",
"resize.disabled.thickness-conflict": "The wall thickness cannot be preserved safely",
"resize.disabled.opening-conflict": "An opening on this wall cannot be moved safely",
"resize.disabled.invalid-geometry": "This wall cannot be resized without changing the plan structure",
"resize.commit_failed": "Resize was cancelled because the final plan did not pass the geometry check",
"markup.opening": "Opening",
"markup.boundary": "Boundary",
"markup.delete_room": "Delete room",
"history.undo": "Undo",
"history.redo": "Redo",
"history.undo_named": "Undo: {name} (Ctrl+Z)",
"history.redo_named": "Redo: {name} (Ctrl+Shift+Z / Ctrl+Y)",
"history.undo_empty": "Nothing to undo",
"history.redo_empty": "Nothing to redo",
"history.undone": "Undone: {name}",
"history.redone": "Redone: {name}",
"history.add_room": "Create room",
"history.split_room": "Split room",
"history.merge_rooms": "Merge rooms",
"history.resize_room": "Resize room",
"history.open_boundary": "Open boundary",
"history.close_boundary": "Restore wall",
"history.wall_thickness": "Change wall thickness",
"history.add_opening": "Add door or window opening",
"history.edit_opening": "Edit opening",
"history.move_opening": "Move opening",
"history.delete_opening": "Delete opening",
"history.delete_room": "Delete room",
"history.delete_room_keep_walls": "Delete room, keep walls",
"history.delete_room_with_walls": "Delete room and walls",
"history.decor_add": "Add decor object",
"history.decor_edit": "Edit decor object",
"history.decor_move": "Move decor object",
"history.decor_transform": "Transform decor object",
"history.decor_delete": "Delete decor object",
"history.backdrop_transform": "Transform plan backdrop",
"title.markup_opening": "Openings: click a wall to place, click an opening to edit",
"opening.new": "New opening",
"opening.edit": "Opening",
"opening.door": "Door",
"opening.window": "Window",
"opening.gate": "Gate",
"opening.passage": "Open passage",
"opening.passage_binding_warning": "Saving will remove the open/close sensor and lock.",
"opening.invalid_passage_fields": "The open passage on plan “{room}” has unsupported settings: {fields}.",
"opening.type_label": "Type",
"opening.length_label": "Length, cm",
"opening.contact_label": "Open/close sensor",
"opening.lock_label": "Lock",
"opening.none": "— none —",
"opening.invert": "Invert open/closed",
"opening.flip_h": "Hinge on the other jamb",
"opening.flip_v": "Opens to the other side",
"opening.open": "Open",
"opening.closed": "Closed",
"opening.locked": "Locked",
"opening.unlocked": "Unlocked",
"opening.state_unknown": "unavailable",
"opening.no_entities": "No sensors bound — a static symbol on the plan.",
"toast.opening_no_wall": "Click next to a room wall or independent wall",
"opening.host_partition": "Independent wall",
"opening.partition_orphan": "The independent wall for this opening no longer exists",
"opening.partition_jamb_margin": "Leave at least {distance} between the opening and the end of the wall",
"opening.rebind_partition": "Attach to another independent wall",
"confirm.delete_partition_openings_title": "Delete wall and openings?",
"confirm.delete_partition_openings_body": "This wall contains {count} opening(s). They will be deleted together.",
"confirm.delete_partition_openings_item": "• {type}, {length}",
"markup.delete": "Delete",
"markup.hint_points": "points: {n} · Shift — 45° steps · Esc/Ctrl+Z — undo a dot · closing an area offers a room",
"markup.hint_start": "click a grid dot to start a wall chain",
"tip.lqi": "average zigbee signal:",
"tip.area": "area: {value}",
"info.device_header": "Device on the plan",
"info.model": "Model",
"info.state": "State",
"info.link": "Link",
"info.manuals": "Manuals",
"info.none": "No additional information",
"marker.new_device": "New device",
"marker.name_label": "Name (shown on the plan)",
"marker.name_ph": "Name",
"marker.binding_label": "Bind to an HA device",
"marker.binding_disabled": "disabled in Home Assistant",
"marker.virtual_option": "Virtual device (no binding)",
"marker.search_ph": "Search device / group…",
"marker.nothing_found": "nothing found",
"marker.room_label": "Room",
"marker.room_override": " (override placement)",
"marker.room_choose": "— select a room —",
"marker.room_auto": "— by device area (auto) —",
"marker.icon_label": "Icon",
"marker.icon_ph": "mdi:… (empty = auto)",
"marker.display_label": "Display",
"display.badge": "Icon + state",
"display.icon_ripple": "Icon + state and activity",
"display.static_icon": "Always static icon",
"marker.display_hint": "Icon + state changes the plate for work, open, alarm and unavailable states. Icon + state and activity additionally shows a short pulse for events and a continuous pulse for ongoing work, movement or presence. Value + state replaces the icon with one unambiguous HA value. A static icon never reacts to device states.",
"marker.display_hint_badge": "The icon and dynamic plate show device state without the ordinary activity pulse. Red alarms remain visible.",
"marker.display_hint_icon": "The icon and dynamic plate show device state without the ordinary activity pulse. Red alarms remain visible.",
"marker.display_hint_icon_ripple": "The icon, dynamic plate and pulse show a short pulse for events and a continuous pulse for work, motion or presence. Red alarms have separate priority.",
"marker.display_hint_value": "One unambiguous Home Assistant value replaces the icon while the plate continues to show state. Red alarms remain visible.",
"marker.display_hint_static_icon": "The theme-aware shell and icon always stay the same. State, activity, unavailability and alarms do not change the face.",
"marker.static_alarm_warning": "This device can report alarms. Static display hides the marker's visual alarm indication.",
"marker.preview.title": "Display preview",
"marker.preview.actual": "Now",
"marker.preview.example": "Example",
"marker.preview.integration": "Provided by",
"marker.preview.source": "Display source",
"marker.preview.current_state": "Current state",
"marker.preview.result": "On the plan",
"marker.preview.details": "Source details",
"marker.preview.select_source": "Choose a Home Assistant device or entity to see its actual display.",
"marker.preview.unknown_provider": "Unknown integration",
"marker.preview.virtual_provider": "House Plan · virtual device",
"marker.preview.no_source": "No active source",
"marker.preview.no_state": "No current state",
"marker.preview.mixed_states": "Several different states",
"marker.preview.multiple_sources": "{n} sources",
"marker.preview.more_sources": "+{n} more",
"marker.preview.scaled": "The preview is scaled to {n}% to fit. The saved size is unchanged.",
"marker.preview.demo_activity": "Show activity example",
"marker.preview.demo_notice": "Temporary activity example; the actual device state is unchanged.",
"marker.preview.demo_short": "Show short activity",
"marker.preview.demo_continuous": "Show continuous activity",
"marker.preview.stop_continuous": "Stop continuous activity",
"marker.preview.demo_short_notice": "Short activity example; the actual device state is unchanged.",
"marker.preview.demo_continuous_notice": "Continuous activity example; the actual device state is unchanged.",
"marker.preview.demo_already_visible": "The current state already shows a real activity or alarm effect.",
"marker.preview.reduced_motion": "System reduced-motion is enabled, so ordinary activity is shown as a dot.",
"marker.preview.reason.neutral": "Neutral dark plate",
"marker.preview.reason.working": "Yellow plate: the device is working now",
"marker.preview.reason.working_activity": "Yellow plate and activity effect: the device is working now",
"marker.preview.reason.open": "Orange plate: physically open or unlocked",
"marker.preview.reason.cover_icon_state": "Neutral plate; the cover entity controls the displayed state and icon",
"marker.preview.reason.presence": "Activity effect while presence is detected",
"marker.preview.reason.event": "Short activity effect after a detected event",
"marker.preview.reason.transition": "Activity effect while the device is moving or changing state",
"marker.preview.reason.media_neutral": "Media devices stay on a neutral dark plate while available",
"marker.preview.reason.unavailable": "Subdued neutral plate: unavailable or off",
"marker.preview.reason.alarm": "Red alarm plate; alarm indication is always shown",
"marker.preview.reason.live_states_disabled": "Live-state styling is disabled for this card",
"marker.preview.reason.value_no_state": "No usable state value; the icon is shown instead",
"marker.preview.reason.value_ambiguous_sources": "Several possible value sources; the icon is shown instead",
"marker.preview.reason.value_non_scalar": "The source did not return a simple value; the icon is shown instead",
"marker.preview.reason.value_virtual": "A virtual device has no Home Assistant value; the icon is shown instead",
"marker.preview.reason.vacuum_live_plan_only": "Live vacuum position and trail are available only on the full plan",
"marker.preview.reason.hidden_design_preview": "The device is hidden on the plan; this design preview remains visible",
"marker.preview.reason.composite_power_source": "State comes from the device Power entity; auxiliary switches are ignored",
"marker.preview.reason.activity_display_disabled": "The selected display mode does not show ordinary activity effects",
"marker.preview.reason.ha_disabled": "The Home Assistant binding is disabled and will be hidden on the plan",
"marker.preview.reason.orphaned": "The saved Home Assistant binding can no longer be found",
"marker.preview.reason.static_icon": "Static mode: device state does not change the icon",
"marker.activity_color": "Activity pulse color",
"marker.ripple_size": "Activity pulse size",
"marker.activity_alarm_note": "Color and size affect ordinary activity only and do not change red alarms.",
"marker.pulse_a11y_alarm": "Alarm",
"marker.pulse_a11y_event": "Recent event",
"marker.pulse_a11y_presence": "Presence detected",
"marker.pulse_a11y_transition": "Changing state",
"marker.pulse_a11y_running": "Working",
"marker.state_a11y_neutral": "Default state",
"marker.state_a11y_working": "Working",
"marker.state_a11y_open": "Open",
"marker.state_a11y_locked": "Locked",
"marker.state_a11y_unlocked": "Unlocked",
"marker.state_a11y_alarm": "Alarm",
"marker.state_a11y_unavailable": "Unavailable",
"marker.lqi_a11y_low": "LQI {value}, low signal",
"marker.lqi_a11y_mid": "LQI {value}, medium signal",
"marker.lqi_a11y_high": "LQI {value}, high signal",
"marker.size_label": "Icon size / rotation",
"marker.angle_label": "Rotate",
"marker.model_label": "Model",
"marker.model_ph": "e.g. Aqara T&H",
"marker.link_label": "Link",
"marker.desc_label": "Description",
"marker.desc_ph": "Notes, specs…",
"marker.manuals_label": "Manuals (PDF etc.)",
"marker.sub_device": "device",
"marker.sub_z2m_group": " · Z2M group",
"marker.sub_group": "group",
"marker.sub_helper": "helper",
"space.new": "New space",
"space.header": "Space",
"space.title_label": "Title",
"space.title_ph": "e.g. Garage",
"space.plan_label": "Floor plan (background)",
"space.no_plan": "no plan image",
"space.plan_alt": "plan",
"room.new": "New room",
"room.name_label": "Display name",
"room.name_ph": "e.g. Terrace",
"room.area_label": "Home Assistant area (unassigned)",
"room.no_area_option": "— no area —",
"room.default_name": "Room",
"device.unnamed": "unnamed",
"device.light_group": "light group",
"device.fallback": "device",
"device.virtual": "virtual device",
"confirm.delete_room": "Delete room \"{name}\"?",
"confirm.delete_room_title": "Delete room \"{name}\"?",
"confirm.delete_room_body": "Choose whether the room's exclusive physical walls should remain. Walls shared with another room are always kept.",
"confirm.merge_rooms": "Merge rooms \"{a}\" and \"{b}\"?",
"confirm.remove_marker": "Delete \"{name}\" from the plan? The device will disappear completely and stop contributing to plan data. You can add it again later.",
"confirm.erase_decor": "Erase the {kind} object? You can undo this action from the editor history.",
"confirm.delete_space": "Delete space \"{title}\" with all its rooms and markup?",
"space.delete_blocked": "This space is still used by {n} device(s). Move them to another space or delete them first.",
"toast.pos_save_failed": "Failed to save position: {err}",
"toast.no_entity": "The device has no suitable entity",
"toast.ha_disabled_action": "A Home Assistant object that is disabled cannot be used on the plan.",
"toast.ha_disabled_show_device": "A device disabled in Home Assistant cannot be shown on the plan. Enable it in Home Assistant first.",
"toast.ha_disabled_show_entity": "An entity disabled in Home Assistant cannot be shown on the plan. Enable it in Home Assistant first.",
"toast.ha_disabled_add": "A disabled Home Assistant object cannot be added to the plan. Enable it in Home Assistant first.",
"toast.ha_binding_unverified": "The object status could not be verified through the Home Assistant registry. Display and actions are temporarily unavailable.",
"toast.markup_needs_server": "Markup is available after the config is moved to the server",
"toast.space_order_changed": "Order changed. If any card pins its floor by number, check those panels.",
"toast.conflict": "Config was changed in another window — data refreshed, repeat your last action",
"toast.cfg_save_failed": "Failed to save config: {err}",
"toast.room_overlap": "The outline overlaps room “{name}” — rooms must not overlap",
"toast.contour_min_edges": "Draw at least two edges before closing the outline",
"toast.contour_cannot_close": "The outline cannot close because it is degenerate or intersects itself",
"toast.merge_not_adjacent": "Only rooms that share a wall can be merged",
"toast.rooms_merged": "Rooms merged into “{name}”",
"toast.split_pick_wall": "Start the cut on the room’s wall",
"toast.split_bad_cut": "The cut must run wall to wall inside the room, without crossing walls or itself",
"merge.header": "Merge rooms",
"merge.hint": "The merged room keeps one name and one area. The other area is released — its devices leave the plan until another room claims it.",
"merge.keep": "Keep",
"merge.no_area": "no area",
"room.split_header": "New room from the split",
"toast.room_saved": "Room saved ({n}). Devices added: {added}. Outline the next one or exit markup.",
"toast.room_saved_no_area": "Room saved ({n}, no area). Outline the next one or exit markup.",
"toast.marker_needs_server": "Device editing is available after the config is moved to the server",
"toast.virtual_name_required": "Enter a name for the virtual device",
"toast.marker_saved": "Device saved",
"toast.marker_removed": "Device deleted from the plan",
"toast.integration_missing": "The House Plan integration is not installed — management unavailable",
"toast.plan_formats": "Supported formats: SVG, PNG, JPG, WebP",
"toast.plan_required": "Upload a floor plan — it is required",
"toast.space_added_onboard": "Space added. Outline the rooms: click grid dots and close the contour.",
"toast.space_added": "Space added",
"toast.space_saved": "Space saved",
"toast.space_deleted": "Space deleted",
"toast.delete_failed": "Delete failed: {err}",
"toast.error": "Error: {err}",
"toast.toggle_target_unavailable": "Target “{name}” is unavailable — no action was performed",
"toast.toggle_targets_unavailable": "Targets are unavailable: {names}. No action was performed",
"toast.file_failed": "File \"{name}\" was not uploaded: {err}",
"toast.files_attached": "Files attached: {n}",
"err.unknown": "unknown error",
"err.code": "code {code}",
"err.too_large": "file larger than {mb} MB",
"err.bad_ext": "unsupported type (PDF/image expected)",
"err.unauthorized": "administrator rights required",
"editor.title": "Title",
"editor.default_floor": "Initial space",
"editor.default_floor_missing": "Initial space “{id}” no longer exists. Choose another space.",
"editor.floor": "Fixed space",
"editor.floor_none": "— not fixed —",
"editor.floor_index": "YAML index {index} (preserved)",
"fixed_floor.loading": "Loading the fixed space…",
"fixed_floor.invalid_title": "The fixed space is unavailable",
"fixed_floor.invalid_body": "Check floor in the card configuration. The configured value is: {value}",
"editor.icon_size": "Icon size, % of plan width",
"editor.show_temperature": "Show temperature",
"editor.live_states": "Live states (on/off, open…)",
"editor.show_signal": "Show zigbee signal (LQI)",
"editor.language": "Interface language",
"editor.lang_auto": "Auto (HA profile)",
"editor.lang_en": "English",
"editor.lang_ru": "Русский",
"title.icon_rules": "Icon rules: which MDI icon devices get by name",
"rules.title": "Icon rules",
"rules.hint": "Rules are checked top-down against “device name + model” (case-insensitive regex); the first match wins. When nothing matches, the entity device class decides, then the generic chip icon.",
"rules.pattern_ph": "regex, e.g. plug|socket",
"rules.icon_ph": "mdi:power-socket-de",
"rules.add": "Add rule",
"rules.reset": "Reset to defaults",
"rules.test_ph": "Try a device name…",
"rules.invalid": "invalid regex",
"rules.saved": "Icon rules saved",
"btn.up": "Up",
"btn.down": "Down",
"tap.info": "Device card",
"tap.more_info": "HA more-info dialog",
"tap.toggle": "Toggle state",
"marker.tap_label": "Tap action for this device",
"tap.toggle_note": "The resolved state is shown below. Secure devices are never toggled from the plan.",
"import.title": "Create spaces from HA floors",
"import.hint": "Your Home Assistant already knows these floors. Pick the ones to turn into plan spaces — you will upload a floor-plan image for each one next. Rooms are then outlined by hand on the plan.",
"import.start": "Create {n} space(s)",
"import.manual": "Start from scratch",
"import.progress": "Floor {i} of {n}",
"import.done": "Spaces created. Outline the rooms: click grid dots and close the contour.",
"btn.skip": "Skip",
"space.scale_label": "Scale (grid cell size)",
"space.scale_unit": "cm per cell",
"space.scale_unit_imperial": "in per cell",
"space.display_section": "Display",
"space.show_borders": "Always show room borders",
"space.show_names": "Show room names (drag to move)",
"space.room_color": "Border & name color",
"space.opacity": "Opacity",
"space.fill_label": "Room fill",
"fill.none": "None",
"fill.lqi": "Zigbee signal",
"fill.light": "Lights",
"fill.custom": "Custom color",
"space.custom_fill": "Fill color",
"space.source_file": "I have a floor-plan image",
"space.source_draw": "No image — I'll outline rooms by hand",
"space.orientation": "Canvas",
"orient.landscape": "Landscape",
"orient.portrait": "Portrait",
"orient.square": "Square",
"fill.temp": "Temperature",
"space.temp_min": "Comfort from",
"space.temp_max": "to",
"tip.temp_avg": "average temperature:",
"tip.hum_avg": "average humidity:",
"space_card.button": "Open the space plan",
"space_card.not_found": "Space “{id}” not found",
"space_card.loading": "Loading…",
"continuity.restore_plan": "Restoring floor plan…",
"continuity.restore_connection": "Restoring device connection…",
"continuity.retry": "Try again",
"editor.space": "Space",
"editor.show_button": "Show button",
"editor.button_label": "Button label",
"editor.button_target": "Target dashboard path",
"marker.sub_entity": "entity",
"title.general_settings": "General settings",
"gs.title": "General settings",
"gs.hint": "Fill colors apply to every space; each color has its own opacity. Which fill mode a space uses is set in that space's dialog.",
"gs.light_group": "Fill: lights",
"gs.light_on": "Lights on",
"gs.light_off": "All lights off",
"gs.temp_group": "Fill: temperature",
"gs.temp_cold": "Cold",
"gs.temp_ok": "Comfortable",
"gs.temp_hot": "Hot",
"gs.lqi_group": "Fill: zigbee signal",
"gs.lqi_low": "Weak signal",
"gs.lqi_high": "Strong signal",
"gs.reset": "Reset to defaults",
"gs.saved": "General settings saved",
"space.show_lqi": "Show zigbee signal (LQI) next to devices",
"space.hide_decor": "Hide the decorative layer",
"space.hide_decor_tip": "Lines, shapes, labels and furniture stay where they are — visible in the backdrop editor, not on the plan.",
"space.hide_openings": "Hide openings",
"space.hide_openings_tip": "Door, window and gate symbols are not drawn, but the openings keep working: light passes through, the sun comes in at a window, contact sensors still open them. The plan editor always shows them.",
"gs.light_none": "No light sources",
"mode.plan": "Plan editor",
"mode.devices": "Device editor",
"display.value": "Value + state",
"marker.subarea": "no area, manual",
"device.new": "New device — open its editor to dismiss",
"opening.unlock_action": "Unlock",
"opening.lock_action": "Lock",
"opening.lock_pending": "Working…",
"title.close_editor": "Close editor (back to view)",
"devbar.add": "Add",
"devbar.show_all": "Hidden and disabled",
"devbar.rules": "Icon rules",
"space.roomcard_section": "Room card shows:",
"space.label_temp": "Temperature",
"space.label_hum": "Humidity",
"space.label_lqi": "Average Zigbee signal",
"space.label_light": "Lights on/off",
"roomcard.light_on": "On",
"roomcard.light_off": "Off",
"roomcard.light_partial": "{on} of {total}",
"toast.split_pick_inside": "Intermediate cut points must be inside the room",
"mode.decor": "Background editor",
"decor.select": "Select",
"decor.line": "Line",
"decor.rect": "Rectangle",
"decor.ellipse": "Oval",
"decor.text": "Text",
"decor.erase": "Erase",
"decor.erase_confirm_title": "Erase object?",
"decor.color": "Color",
"decor.width": "Line width",
"decor.line_style": "Line style",
"decor.line_style_solid": "Solid",
"decor.line_style_dashed": "Dashed",
"decor.fill": "Fill",
"decor.fill_color": "Fill color",
"decor.length": "Length",
"decor.size": "Size",
"decor.angle": "Rotation angle, °",
"decor.text_size": "Text size",
"decor.backdrop_properties": "Plan backdrop properties",
"decor.text_title": "Text label",
"decor.object_title": "Edit {kind}",
"decor.text_label": "Text",
"decor.live_group": "Insert HA variable",
"decor.live_entity": "Entity",
"decor.live_entity_ph": "choose an entity",
"decor.live_attr": "Value",
"decor.live_attr_ph": "choose state or attribute",
"decor.live_state": "State",
"decor.backdrop": "Backdrop image",
"decor.backdrop_hint": "Drag to move; pull a corner to resize; use the top handle to rotate. Shift changes proportions or frees the angle.",
"decor.backdrop_reset": "Reset the picture",
"decor.backdrop_reset_done": "The picture is back at its original place and size",
"marker.icon_auto": "Auto: {icon} (by icon rules; pick one to override)",
"marker.icon_pin_auto": "Pin",
"mode.plan_tip": "Plan editor — the geometry of the home: draw and split/merge rooms, bind them to HA areas, place doors, windows and gates, move room cards, set the scale",
"mode.devices_tip": "Device editor — everything about icons: drag to position, click to edit binding/icon/display, add virtual devices, icon rules",
"mode.decor_tip": "Background editor — purely visual decor under the plan: lines, rectangles, ovals and text labels that never react to clicks",
"space.glow_enabled": "Light-source glow",
"gs.glow_group": "Light-source glow",
"gs.glow_base": "House darkness",
"gs.glow_light": "Default light color / intensity",
"gs.wall_group": "Walls",
"gs.wall_fill": "Wall fill",
"gs.glow_radius": "Glow radius",
"gs.unit_m": "m",
"gs.unit_ft": "ft",
"marker.controls_label": "Controls other light sources",
"marker.controls_hint": "With tap action “Toggle”, a click flips every source added here. The marker’s own bound entity is controlled directly and cannot be added; use the switch below to classify it as a light.",
"marker.controls_filter": "Search lights and switches…",
"info.controls": "Controls",
"marker.glow_radius_label": "Glow radius",
"marker.glow_radius.help": "Sets the glow radius in metres or feet; an empty value uses the radius from general settings.",
"marker.glow_radius.help.aria": "Help: glow radius",
"markup.wallthick": "Thickness",
"markup.select": "Select",
"title.markup_wallthick": "Thickness — click a wall to set how thick it is. Empty or zero removes the thickness.",
"markup.hint_wallthick": "click a wall · Esc closes without applying",
"wallthick.field": "Thickness",
"wallthick.unit_cm": "cm",
"wallthick.unit_in": "in",
"wallthick.apply_room": "Apply to all walls of this room",
"markup.draw_wall_title": "Thickness of each new wall segment (1–100 cm). Shared walls keep the existing value.",
"room.queue_progress": "Room {current} of {total}",
"toast.wall_rooms_saved": "Created rooms: {n}",
"toast.wall_chain_saved": "Wall chain saved",
"toast.wallthick_pick": "Click a wall (not an open boundary)",
"toast.wallthick_open": "Open boundaries have no thickness",
"toast.wallthick_set": "Wall thickness set",
"toast.wallthick_cleared": "Wall thickness removed",
"toast.physical_range": "Enter a value from 1 to {max} {unit}",
"toast.physical_angle": "Enter a rotation angle from 0° up to, but not including, 90°",
"toast.physical_limit": "The space has reached the limit for this type of geometry",
"toast.geometry_unsafe": "Change canceled: wall geometry could not be built safely.",
"markup.boundary_hint": "Select a shared room boundary or a dashed stretch",
"markup.boundary_hint_open": "Click the start of the open stretch",
"markup.boundary_hint_second": "Choose the end on the selected boundary · Esc to cancel",
"markup.boundary_hint_retry": "Choose the end on the selected boundary",
"markup.boundary_hint_restore": "Click to restore the wall",
"markup.boundary_hint_outer": "Only a boundary shared by two rooms can be opened",
"markup.boundary_hint_blocked": "a partition, column or unfinished contour is above this boundary",
"markup.boundary_hint_ambiguous": "Choose a stretch farther from the junction",
"markup.boundary_cancel": "Cancel the unfinished Boundary action",
"toast.openwall_pick": "This tool works with room boundaries",
"toast.openwall_shared_only": "Only a shared wall between two rooms can be opened",
"toast.openwall_short": "Stretch too short — pick a farther point",
"toast.boundary_opened": "Boundary stretch opened",
"toast.boundary_restored": "Wall restored on this stretch",
"toast.boundary_same_edge": "Choose the end point on the selected wall",
"toast.boundary_ambiguous": "Choose a stretch slightly farther from the junction",
"toast.boundary_blocked": "This boundary is covered by independent masonry. Move or delete it with Select first",
"toast.delete_room_pick": "Click inside the room you want to delete",
"toast.plan_snap_ambiguous": "Zoom in to choose the wall node",
"toast.wall_repair_ambiguous": "The room outline has more than one possible connection. Zoom in and connect it explicitly.",
"toast.wall_repair_too_large": "The gap is larger than 2 cm. Connect the walls before creating the room.",
"toast.wall_repair_changed": "The wall geometry changed. Try creating the room again.",
"toast.openwall_openings_removed": "Openings on the virtual stretch were removed",
"toast.openwall_opened": "Boundary “{a}” ↔ “{b}” is now open",
"toast.openwall_closed": "Boundary “{a}” ↔ “{b}” is closed again",
"toast.opening_on_virtual": "Openings cannot sit on a virtual wall",
"marker.from_ha_option": "Pick from the HA list",
"marker.show_entities": "Show entities",
"marker.show_entities_tip": "Adds not only devices to the list, but all their entities too",
"marker.pick_ph": "Choose a device…",
"room.open_area": "Open the HA area",
"view.volumetric": "Volumetric view",
"view.flat": "Flat view",
"kiosk.title": "This screen's sizes",
"kiosk.hint": "Stored on this device only — every wall tablet or TV can have its own comfortable sizes.",
"kiosk.icon_scale": "Device icon size",
"kiosk.font_scale": "Room card text size",
"editor.kiosk": "Wall device (kiosk) mode",
"editor.cycle": "Auto-switch spaces every N seconds (kiosk, 0 = off)",
"room.settings_title": "Room settings",
"room.settings_section": "Room settings (override the space)",
"room.fill_label": "Fill in THIS room",
"fill.inherit": "As the space",
"room.custom_fill_space": "Space color",
"room.custom_fill_own": "Room color",
"room.temp_src_label": "Temperature source",
"room.hum_src_label": "Humidity source",
"room.src_average": "Average over the room's sensors (default)",
"room.src_pick": "A specific HA device or entity",
"room.src_ph": "Choose a source…",
"toast.room_updated": "Room updated",
"space.card_font": "Room-card font size (whole space)",
"room.sizes_section": "Font sizes",
"room.name_scale": "Room name size",
"room.label_scale": "Metrics size",
"preview.room_name": "Living room",
"toast.cfg_reload_failed": "Could not reload the plan from the server: {err}",
"room.settings_short": "Room settings",
"room.unnamed": "Unnamed room",
"marker.use_climate_temp": "Include the device temperature in the room",
"marker.use_climate_temp_tip": "Adds an air conditioner or thermostat current_temperature to the room average. Configure the external value badge separately below.",
"marker.value_badge_title": "Value badge",
"marker.value_badge.help": "Shows one selected value next to the icon. It does not affect room metrics, light, Glow or the tap action.",
"marker.value_badge.help.aria": "Help: device value badge",
"marker.value_badge_enabled": "Show a value badge",
"marker.value_badge_source": "Value",
"marker.value_badge_source.help": "Choose a specific state, supported attribute, or derived value of this device.",
"marker.value_badge_source.help.aria": "Help: value badge source",
"marker.value_badge_position": "Position",
"marker.value_badge_position.help": "The chosen side stays fixed and does not flip automatically at a plan edge.",
"marker.value_badge_position.help.aria": "Help: value badge position",
"marker.value_badge_right": "Right",
"marker.value_badge_bottom": "Below",
"marker.value_badge_left": "Left",
"marker.value_badge_top": "Above",
"marker.value_badge_empty": "This device has no available values",
"marker.value_badge_static": "A static icon does not show live values. The setting is preserved.",
"marker.value_badge_missing": "Source unavailable",
"marker.value_badge_missing_hint": "The saved source is currently unavailable. Keep it, disable the badge, or choose another value.",
"marker.value_badge_duplicate": "The same value is already shown inside the icon.",
"marker.value_badge_state": "State · {name}",
"marker.value_badge_marker_state": "Light-source state · {name}",
"marker.value_badge_lqi": "Average Zigbee signal quality",
"marker.value_badge_attr_current_temperature": "Current temperature · {name}",
"marker.value_badge_attr_temperature": "Target temperature · {name}",
"marker.value_badge_attr_current_humidity": "Current humidity · {name}",
"marker.value_badge_attr_humidity": "Humidity · {name}",
"marker.value_badge_attr_current_position": "Position · {name}",
"marker.value_badge_attr_percentage": "Speed · {name}",
"marker.value_badge_attr_brightness": "Brightness · {name}",
"marker.value_badge_attr_volume_level": "Volume · {name}",
"marker.value_badge_attr_battery_level": "Battery · {name}",
"marker.value_badge_attr_fan_speed": "Fan speed · {name}",
"marker.light_role_label": "Is this device a light source?",
"marker.light_role.help": "Controls whether this marker itself is a spatial light source. Linked lights above remain independent room-light controls.",
"marker.light_role.help.aria": "Help: whether this device is a light source",
"marker.light_role_auto_yes": "Auto (light source)",
"marker.light_role_auto_no": "Auto (not a light source)",
"marker.light_role_always": "Always a light source",
"marker.light_role_never": "Never a light source",
"marker.light_entity_label": "Leading light entity",
"marker.light_entity.help": "For a composite device, choose the entity whose state, colour and brightness represent this plan source. The automatic fallback remains compatible with older plans.",
"marker.light_entity.help.aria": "Help: leading light entity",
"marker.light_entity_auto": "Automatic ({entity})",
"marker.light_entity_none": "no controllable entity",
"marker.light_entity_missing": "The saved entity {entity} is unavailable. House Plan temporarily uses {fallback}; the saved choice will be restored if it returns.",
"marker.toggle_entity_label": "Entity to toggle",
"marker.toggle_entity.help": "For a composite device, choose the exact own light or switch operated by a tap. Automatic keeps the previous target rules and is independent from the leading light entity.",
"marker.toggle_entity.help.aria": "Help: entity to toggle",
"marker.toggle_entity_auto": "Automatic ({entity})",
"marker.toggle_entity_none": "no own controllable entity",
"marker.toggle_entity_missing": "The saved entity {entity} is no longer among this marker’s selectable channels. House Plan temporarily uses {fallback}; the saved choice will be restored if it returns.",
"marker.glow_color_label": "Glow colour and brightness",
"marker.glow_mode.help": "Use live source values, override only its colour, or fix both colour and brightness. The minimum is 1%; to disable the source, choose “Never”.",
"marker.glow_mode.help.aria": "Help: glow colour and brightness",
"marker.glow_mode_auto": "From source",
"marker.glow_mode_color": "Set colour",
"marker.glow_mode_fixed": "Set colour and brightness",
"marker.glow_color": "Glow colour",
"marker.glow_brightness": "Brightness",
"marker.glow_disabled_never": "Glow settings are unavailable because this marker is explicitly not a light source.",
"marker.glow_disabled_auto": "Auto mode found no spatial light source for this marker.",
"marker.glow_disabled_no_entity": "No active controllable Home Assistant entity is available for this spatial source.",
"marker.glow_passive_hint": "This source has no own Home Assistant data. Set its colour and brightness manually; its radius remains available.",
"marker.control_broken": "Saved source is missing or no longer marked as a light",
"marker.control_missing_label": "Missing plan light",
"marker.control_passive": "passive source",
"toast.marker_control_cycle": "This link would create a circular chain of light controls.",
"toast.marker_binding_required": "Choose a Home Assistant device before linking another light source.",
"confirm.unlock": "Unlock “{name}”?",
"toast.files_migrate_failed": "Attachments could not be moved to the new binding, links keep pointing at the old files: {err}",
"space.pick_saved": "Already uploaded",
"space.pick_saved_hint": "Plans stored on the server, including ones you detached earlier",
"space.no_saved": "No plans stored on the server yet.",
"space.loading": "Loading…",
"space.used_by": "in use: {list}",
"space.in_use": "A space still uses this plan — detach it first",
"btn.use": "Use",
"confirm.delete_plan": "Delete the plan file \"{name}\" from the server? This cannot be undone.",
"toast.plans_list_failed": "Could not list the stored plans: {err}",
"toast.plan_delete_failed": "Could not delete the plan: {err}",
"marker.hide": "Hide",
"marker.hide_tip": "The device will disappear from the plan after saving but will still count toward the room signal. Restore it through \"Hidden and disabled\" in the device editor.",
"marker.show": "Show",
"marker.show_tip": "The device will appear on the plan again after saving.",
"marker.hidden_ghost": "Device hidden by the user",
"marker.ha_disabled_device": "The device is disabled in Home Assistant and hidden from the plan.",
"marker.ha_disabled_entity": "The entity is disabled in Home Assistant and hidden from the plan.",
"marker.ha_disabled_all_entities": "The device has no active Home Assistant entities, so it is hidden from the plan.",
"marker.ha_registry_limited": "The full Home Assistant registry is unavailable to this user. The unverified object cannot be shown or used for now.",
"marker.delete_tip": "Completely delete the device from the plan and every aggregate. You can add it again later.",
"tap.run": "Run automation/script/scene",
"tap.cover": "Open/close (curtains/blinds)",
"marker.run_target_label": "What to run",
"marker.run_search_ph": "Search: automation, script or scene…",
"marker.run_target_gone": "Target {id} not found — pick again",
"marker.tap_confirm": "Ask for confirmation",
"marker.tap_confirm_tip": "Show a confirmation dialog before acting — a guard against accidental taps.",
"marker.toggle_hint_single": "Target: {name} ({id}).",
"marker.virtual_light_target": "Virtual light: {name}.",
"marker.virtual_light_current": "Manual state: {state} → {effect}.",
"marker.virtual_light_state_on": "on",
"marker.virtual_light_state_off": "off",
"marker.toggle_hint_group": "Will toggle {count} source(s): {names}.",
"marker.toggle_hint_current": "Now: {state} → {effect}.",
"marker.toggle_hint_group_current": "Currently on: {on} of {count} → {effect}.",
"marker.toggle_hint_skipped": "Will be skipped ({count}): {targets}.",
"marker.toggle_effect_turn_on": "will turn on",
"marker.toggle_effect_turn_off": "will turn off",
"marker.toggle_effect_open": "will open",
"marker.toggle_effect_close": "will close",
"marker.toggle_effect_stop": "will stop",
"marker.toggle_effect_toggle": "state will toggle",
"marker.toggle_skip_missing": "not found",
"marker.toggle_skip_ha_disabled": "disabled in HA",
"marker.toggle_skip_unavailable": "unavailable",
"marker.toggle_skip_unsupported": "toggle is unsupported",
"marker.toggle_skip_secure": "blocked for security",
"marker.toggle_none_no_binding": "This device has no binding, so there is no state to toggle. Tapping will do nothing.",
"marker.toggle_none_no_actionable_entity": "This device has no state that can be toggled. Tapping will do nothing.",
"marker.toggle_none_configured_targets_missing": "The configured targets are unavailable. The device's own entity will not be substituted for them.",
"marker.toggle_none_ha_disabled": "The target is disabled in Home Assistant and cannot be used on the plan.",
"marker.toggle_none_unavailable": "The target is currently unavailable. Tapping will do nothing.",
"marker.toggle_none_unsupported": "Home Assistant exposes no safe toggle operation for this entity. Tapping will do nothing.",
"marker.toggle_none_secure": "Toggling locks, alarms and secure gates from the plan is blocked for security.",
"run.automation": "automation",
"run.script": "script",
"run.scene": "scene",
"confirm.tap_run": "Run \"{name}\"?",
"confirm.tap_toggle": "Toggle \"{name}\"?",
"confirm.tap_cover": "Open/close \"{name}\"?",
"confirm.current_state": "Current state: {state}",
"confirm.expected_state": "After switching: {state}",
"confirm.group_current": "on {on} of {total}",
"confirm.group_all_on": "all are on",
"confirm.group_all_off": "all are off",
"confirm.unavailable_targets": "Unavailable: {count}",
"confirm.expected_by_ha": "Home Assistant will determine the state",
"confirm.state_on": "On",
"confirm.state_off": "Off",
"confirm.state_open": "Open",
"confirm.state_closed": "Closed",
"confirm.state_opening": "Opening",
"confirm.state_closing": "Closing",
"confirm.state_stopped": "Stopped",
"confirm.state_unknown": "Unknown",
"toast.run_started": "Started: {name}",
"toast.run_target_missing": "Run target not found — check the device settings",
"toast.run_target_required": "Pick an automation, script or scene",
"toast.tap_target_changed": "The action target changed. Try again.",
"toast.virtual_light_toggle_failed": "Could not toggle the virtual light: {err}",
"toast.value_badge_source_required": "Choose a value for the badge",
"btn.run": "Run",
"vac.section": "Robot vacuum: live position",
"vac.autocal": "Set up automatically",
"vac.live": "Live position on the plan",
"vac.trail": "Show the robot's path",
"vac.cal_maps": "Calibrated maps: {maps}",
"vac.autocal_no_rooms": "The integration reports no room list — open “Fit manually”",
"vac.autocal_no_match": "Room names did not match (need ≥3 in common) — open “Fit manually”",
"vac.autocal_done": "Done: bound via {rooms} rooms. Start a cleanup and check",
"vac.cal_need_pos": "The robot is not reporting coordinates — start a cleanup and pause it",
"vac.cal_done": "Calibration saved. Start a cleanup and check",
"vac.cal_cancelled": "Calibration cancelled",
"vac.fit": "Fit manually",
"vac.fit_hint": "Drag the robot map into place, stretch by the corners",
"vac.fit_rotate": "Rotate 90°",
"vac.fit_mirror": "Mirror",
"vac.trail_never": "Never",
"vac.trail_cleaning": "While cleaning",
"vac.trail_always": "Always",
"gs.bg_group": "Stage background",
"gs.bg_color": "Background around the plan",
"gs.bg_default": "Theme default",
"gs.bg_theme": "theme default",
"gs.bg_mode": "Plan background",
"gs.bg_static": "Static color",
"gs.bg_daynight": "Follows the Sun",
"gs.bg_daynight_hint": "The background moves through dawn, day, dusk and night using sun.sun, or your local clock when sun data is unavailable. No compass is needed for the background.",
"gs.sun_group": "Sun",
"gs.sun_missing": "The sun.sun entity was not found — the background follows your local clock; window rays are unavailable.",
"gs.north": "North on the plan",
"gs.north_ph": "not set",
"gs.north_hint": "Set north only for window rays (1° steps, 15° with Shift); the Sun background works without it.",
"gs.north_clear": "Clear",
"gs.north_letter": "N",
"gs.sun_rays": "Sunlight through windows",
"gs.about_group": "About",
"gs.about_version": "Houseplan Card v{v}",
"gs.about_github": "GitHub · docs & issues",
"gs.about_telegram": "Telegram chat",
"space.bg_color": "Background around the plan",
"space.bg_inherit": "Inherit general",
"space.bg_inherited": "inherits general settings",
"space.bg_mode": "Plan background",
"space.north": "North on the plan (override)",
"space.north_inherited": "inherited: {v}",
"space.sun_rays": "Sunlight through windows",
"space.sun_inherit": "Inherit general",
"space.sun_on": "On",
"space.sun_off": "Off",
"canvas.far_objects": "{n} object(s) far from the plan",
"canvas.show_far": "Show",
"canvas.home_tip": "The plan is over there — click to fit it",
"gs.grid_group": "Plan maintenance",
"gs.grid_hint": "Updates data models, aligns plan elements to the grid and merges redundant wall fragments. An exact report is shown before anything is stored.",
"gs.align_all": "Optimize plans",
"gs.align_title": "Optimize plans",
"gs.align_none": "All plans already use the current optimized data model.",
"gs.optimize_no_automatic_changes": "There are no automatic changes to apply. Review the items below.",
"gs.align_count": "{n} of {total} elements will move, by at most {cm} cm.",
"gs.align_where": "The largest shift is in “{s}”.",
"gs.align_turned": "Openings whose angle is corrected: {n}.",
"gs.align_removed_drafts": "Invalid outlines collapsed by the grid and removed: {n}.",
"gs.align_preflight_failed": "Could not safely verify the geometry of the following spaces: {spaces}{more}.",
"gs.align_preflight_hint": "Plans were not changed. Update House Plan and try again. If the error persists, attach a space export to the bug report.",
"gs.align_preflight_space": "Space {n}",
"gs.align_preflight_more": ", and {n} more",
"gs.optimize_changes": "Model migrations: {m}; spaces updated: {c}; noisy coordinate values removed: {p}; merged real-wall fragments: {w}; virtual fragments: {s}; independent walls: {i}.",
"gs.optimize_lattice_summary": "Noisy coordinate values canonicalized: {n}; maximum movement: {cm} cm.",
"gs.optimize_lattice_space": "{space}: coordinate values canonicalized: {n}; off-grid values left unchanged: {far}.",
"gs.optimize_coincident_partitions": "Coincident partitions converted to room walls: {n}.",
"gs.optimize_openings_rehosted": "Openings reattached to room walls: {n}.",
"gs.optimize_walls_straightened": "Walls straightened: {n}; maximum movement: {cm} cm.",
"gs.optimize_walls_straightened_where": "Largest wall correction: {s}.",
"gs.optimize_walls_straighten_skipped": "Near-axis walls left unchanged because they could not be repaired safely: {n}.",
"gs.optimize_glow_migration": "Legacy Glow: {spaces} spaces → no data fill + independent Glow; {rooms} rooms → inherited data fill + independent Glow.",
"gs.optimize_references": "References repaired: spaces — {spaces}; rooms — {rooms}; positions — {positions}; devices detached from missing spaces — {detached}.",
"gs.optimize_reference_more": ", and {n} more",
"gs.optimize_orphans_removed": "Forgotten records removed: {total} — room labels: {rooms}; devices: {devices}; group markers: {groups}. They belonged to spaces deleted earlier.",
"gs.optimize_live_positions": "Old positions in deleted spaces belong to existing objects: {n}{names}. They will be kept.",
"gs.optimize_live_positions_remove": "Old positions in deleted spaces belong to existing objects: {n}{names}. They are selected for removal.",
"gs.optimize_live_names": ": {names}{more}",
"gs.optimize_live_remove": "Remove old positions",
"gs.optimize_live_keep": "Keep old positions",
"gs.optimize_live_selected": "Old positions will be removed after Optimize is applied.",
"gs.optimize_unverified": "Could not safely verify positions: {n}. They were left unchanged.",
"gs.optimize_registry_limited": "Full administrator access to the Home Assistant registries is required for a safe check.",
"gs.optimize_vacuum_warning": "Vacuum room mappings that still need review: {n}.",
"gs.optimize_details": "Details",
"gs.optimize_details_more": "And {n} more records.",
"gs.optimize_detail_removed": "will be removed",
"gs.optimize_detail_live": "will be kept",
"gs.optimize_detail_unverified": "not verified",
"gs.optimize_detail_room_label": "room label",
"gs.optimize_detail_device": "device",
"gs.optimize_detail_group": "group marker",
"gs.optimize_detail_unknown": "unknown owner",
"gs.optimize_detail_item": "{status}: {kind} {id}; old space {space}",
"gs.align_warn": "Elements deliberately placed between grid nodes will move. One undo is available after the operation, only until the next plan edit.",
"gs.align_run": "Optimize",
"gs.align_done": "Plans optimized: {n} elements moved, {m} records maintained, {r} references repaired",
"gs.optimize_undo": "Undo last optimization",
"gs.optimize_undone": "The last optimization was undone",
"decor.furniture": "Furniture",
"furn.title": "Furniture library",
"furn.symbol": "Symbol",
"furn.group_furniture": "Furniture",
"furn.group_appliance": "Appliances",
"furn.group_sanitary": "Plumbing",
"furn.group_other": "Other",
"furn.width": "Width",
"furn.depth": "Depth",
"furn.pick_hint": "Pick a symbol, then click on the plan.",
"furn.place_hint": "Click on the plan — the piece lands against the nearest wall. Shift places it free.",
"furn.sym_sofa": "Sofa",
"furn.sym_armchair": "Armchair",
"furn.sym_coffee_table": "Coffee table",
"furn.sym_table_dining": "Dining table",
"furn.sym_table_round": "Round table",
"furn.sym_chair": "Chair",
"furn.sym_desk": "Desk",
"furn.sym_bed_double": "Double bed",
"furn.sym_bed_single": "Single bed",
"furn.sym_nightstand": "Nightstand",
"furn.sym_wardrobe": "Wardrobe",
"furn.sym_bookshelf": "Bookshelf",
"furn.sym_fridge": "Fridge",
"furn.sym_stove": "Cooker",
"furn.sym_dishwasher": "Dishwasher",
"furn.sym_washer": "Washing machine",
"furn.sym_dryer": "Tumble dryer",
"furn.sym_tv": "TV",
"furn.sym_ac": "Air conditioner",
"furn.sym_water_heater": "Water heater",
"furn.sym_toilet": "Toilet",
"furn.sym_bathtub": "Bathtub",
"furn.sym_shower": "Shower",
"furn.sym_sink": "Washbasin",
"furn.sym_kitchen_sink": "Kitchen sink",
"furn.sym_bidet": "Bidet",
"furn.sym_stairs": "Stairs",
"furn.sym_fireplace": "Fireplace",
"furn.sym_plant": "Plant",
"furn.sym_rug": "Rug",
"common.yes": "Yes",
"common.no": "No",
"vac.diag_source": "Source",
"vac.diag_platform": "Integration",
"vac.diag_status": "Status",
"vac.diag_position": "Position",
"vac.diag_rooms": "Rooms",
"vac.diag_rooms_value": "{total} · {matched} names match · {readiness}",
"vac.autocal_ready": "auto-calibration available",
"vac.autocal_not_ready": "need 3 matching names",
"vac.diag_path": "Integration path",
"vac.diag_map": "Map ID",
"vac.source_none": "not selected",
"vac.source_status_ok": "Ready",
"vac.source_status_missing": "Missing",
"vac.source_status_disabled": "Disabled in Home Assistant",
"vac.source_status_unavailable": "Unavailable",
"vac.source_status_unverified": "Cannot verify with current permissions",
"vac.source_status_unsupported": "No position data",
"vac.source_status_none": "No source",
"vac.source_banner_missing": "The saved source no longer exists. It was not replaced automatically; choose another source or restore it in Home Assistant.",
"vac.source_banner_disabled": "The saved source is disabled in Home Assistant. Enable it there or choose another source.",
"vac.source_banner_unverified": "Current Home Assistant permissions cannot verify this saved source. It remains pinned and will not be replaced automatically.",
"vac.choose_source": "Choose source",
"vac.source_auto": "Automatic",
"vac.source_auto_hint": "Use a compatible entity from this device",
"vac.all_cameras": "All cameras",
"vac.all_cameras_warn": "A camera may not provide robot data. Choose one only if it is your vacuum map.",
"vac.all_cameras_empty": "No other camera entities found.",
"vac.platform_unknown": "unknown integration",
"vac.cap_position": "position",
"vac.cap_rooms_short": "rooms",
"vac.cap_path": "path",
"vac.cap_map": "map ID",
"vac.cap_none": "no robot data detected",
"vac.xcme_hint": "Enable these Xiaomi Cloud Map Extractor attributes:",
"vac.documentation": "Documentation",
"vac.residual_title": "Check automatic calibration",
"vac.residual_message": "The matched rooms disagree by up to {error}. Apply this approximate calibration, refine it manually, or cancel without changing the saved setup.",
"vac.apply_proposal": "Apply",
"gs.backup_group": "Backup and transfer",
"gs.backup_hint": "Download a portable JSON backup or preview and import a backup made by House Plan.",
"backup.export_open": "Export",
"backup.import_open": "Import",
"backup.export_title": "Export House Plan",
"backup.import_title": "Import House Plan",
"backup.export_hint": "Choose whether the backup should contain the whole House Plan configuration or only the current space.",
"backup.full": "Full backup",
"backup.current_space": "Current space",
"backup.current_space_title": "Current space: {title}",
"backup.no_current_space": "No current space",
"backup.plan_only": "Plan only",
"backup.plan_only_hint": "Keep rooms, walls, openings, decor and room-label positions without devices or Home Assistant bindings.",
"backup.plan_only_preview": "This file contains the plan only",
"backup.privacy_warning": "The archive keeps names, Home Assistant identifiers and exact coordinates. Internal plans and attachments are referenced, not embedded; runtime states and vacuum trails are not included.",
"backup.download": "Download JSON",
"backup.export_done": "Backup downloaded",
"backup.reading": "Checking the backup…",
"backup.revalidated": "The plan changed after this preview. The summary was refreshed; review it and confirm again.",
"backup.error.unauthorized": "You do not have permission to export or import this plan.",
"backup.error.not_ready": "House Plan is not ready yet. Try again in a moment.",
"backup.error.too_large": "The backup exceeds the 8 MiB limit.",
"backup.error.invalid_json": "The selected file is not valid JSON.",
"backup.error.invalid_format": "The selected file is not a House Plan backup.",
"backup.error.unsupported_export_version": "This backup format is not supported by the installed version.",
"backup.error.future_model": "The backup was created by a newer House Plan data model.",
"backup.error.invalid_config": "The backup contains an invalid House Plan configuration.",
"backup.error.invalid_layout": "The backup contains invalid object positions.",
"backup.error.invalid_content": "The backup contains invalid or inconsistent content references.",
"backup.error.space_not_found": "The selected space no longer exists.",
"backup.error.capacity_exceeded": "Adding this backup would exceed the plan limits.",
"backup.error.preview_expired": "The preview expired. Select the backup file again.",
"backup.error.preview_owner_mismatch": "This preview belongs to another Home Assistant user.",
"backup.error.conflict": "The plan changed after the preview. Review the refreshed summary.",
"backup.error.content_confirmation_required": "Confirm that unavailable local content may be detached.",
"backup.error.commit_failed": "The backup could not be applied safely. The previous plan was restored or is pending recovery.",
"backup.error.missing_plan": "A referenced plan file disappeared after the preview. Review the backup again.",
"backup.error.missing_content": "A referenced local attachment disappeared after the preview. Review the backup again.",
"backup.error.marker_control_missing": "A linked plan light is missing from the backup.",
"backup.error.marker_control_not_light": "A linked plan target is no longer marked as a light source.",
"backup.error.marker_control_self": "A light source cannot control itself.",
"backup.error.marker_control_cycle": "The backup contains a circular chain of light controls.",
"backup.error.duplicate_marker_control": "The backup contains a duplicate plan-light link.",
"backup.error.no_backup": "There is no import or optimization snapshot to restore.",
"backup.same_source": "Created on this Home Assistant instance",
"backup.foreign_source": "Created on another Home Assistant instance",
"backup.created": "Created: {value}",
"backup.versions": "Card {card}; integration {integration}; data model {model}",
"backup.count_spaces": "Spaces: {n}",
"backup.count_rooms": "Rooms: {n}",
"backup.count_walls": "Walls: {n}",
"backup.count_openings": "Openings: {n}",
"backup.count_decor": "Decor objects: {n}",
"backup.count_markers": "Devices: {n}",
"backup.count_layout": "Positions: {n}",
"backup.bindings": "Bindings — devices: {device}, entities: {entity}, virtual: {virtual}; positions without a space: {legacy}",
"backup.binding_status": "Target status — active: {active}, disabled: {disabled}, missing: {missing}",
"backup.missing_areas": "Areas missing on the target: {areas}",
"backup.dropped_marker_links": "Plan-light links outside this transferred space were omitted: {n}.",
"backup.repaired_target_refs": "Existing references restored by this space import: {n}.",
"backup.replace_warning": "This replaces the current configuration and layout. Uploaded files are never deleted. One undo remains available until the next plan edit.",
"backup.foreign_bookkeeping": "Instance-specific known/new-device bookkeeping will not be imported.",
"backup.final_name": "New space name",
"backup.target_settings": "The target instance's global settings remain unchanged.",
"backup.duplicates": "Bindings already present: {n}",
"backup.skip": "Skip duplicate devices",
"backup.virtual_copy": "Add safe static virtual copies",
"backup.content": "Referenced content",
"backup.content_available": "available locally",
"backup.content_external": "external link",
"backup.content_detach_required": "will be detached",
"backup.confirm_detach": "I understand that unavailable internal plans and attachments will be detached from the imported configuration.",
"backup.replace": "Replace",
"backup.add": "Add space",
"backup.space_done": "Space imported: {rooms} rooms, {markers} devices, {refs} existing references restored",
"backup.full_done": "Backup restored: {spaces} spaces, {rooms} rooms, {markers} devices",
"backup.undo_import": "Undo last full import",
"backup.import_undone": "Full import undone"
}