697 lines
31 KiB
JSON
697 lines
31 KiB
JSON
{
|
||
"maintenance": "Maintenance",
|
||
"objects": "Objects",
|
||
"tasks": "Tasks",
|
||
"overdue": "Overdue",
|
||
"due_soon": "Due Soon",
|
||
"triggered": "Triggered",
|
||
"trigger_replaced": "Trigger replaced",
|
||
"ok": "OK",
|
||
"all": "All",
|
||
"new_object": "+ New Object",
|
||
"templates_from": "From template",
|
||
"templates_title": "Start from a template",
|
||
"templates_task_count": "{n} tasks",
|
||
"template_created": "Created from template",
|
||
"onboard_hint": "Add your first object to start tracking maintenance.",
|
||
"edit": "Edit",
|
||
"duplicate": "Duplicate",
|
||
"task_duplicated": "Task duplicated",
|
||
"object_duplicated": "Object duplicated",
|
||
"delete": "Delete",
|
||
"add_task": "+ Add Task",
|
||
"complete": "Complete",
|
||
"completed": "Completed",
|
||
"skip": "Skip",
|
||
"skipped": "Skipped",
|
||
"missed": "Missed",
|
||
"reset": "Reset",
|
||
"snooze": "Snooze",
|
||
"snoozed": "Snoozed",
|
||
"cancel": "Cancel",
|
||
"bulk_select": "Select",
|
||
"bulk_select_all": "Select all",
|
||
"bulk_n_selected": "{n} selected",
|
||
"bulk_completed": "{n} tasks completed",
|
||
"bulk_archived": "{n} tasks archived",
|
||
"completing": "Completing…",
|
||
"interval": "Interval",
|
||
"warning": "Warning",
|
||
"last_performed": "Last performed",
|
||
"next_due": "Next due",
|
||
"days_until_due": "Days until due",
|
||
"avg_duration": "Avg duration",
|
||
"trigger": "Trigger",
|
||
"trigger_type": "Trigger type",
|
||
"threshold_above": "Upper limit",
|
||
"threshold_below": "Lower limit",
|
||
"threshold": "Threshold",
|
||
"counter": "Counter",
|
||
"state_change": "State change",
|
||
"runtime": "Runtime",
|
||
"runtime_hours": "Target runtime (hours)",
|
||
"target_value": "Target value",
|
||
"baseline": "Baseline",
|
||
"target_changes": "Target changes",
|
||
"for_minutes": "For (minutes)",
|
||
"time_based": "Time-based",
|
||
"sensor_based": "Sensor-based",
|
||
"manual": "Manual",
|
||
"one_time": "One-time",
|
||
"weekdays": "Weekdays",
|
||
"nth_weekday": "Nth weekday of month",
|
||
"day_of_month": "Day of month",
|
||
"recurrence_on_days": "Repeat on",
|
||
"recurrence_occurrence": "Occurrence",
|
||
"recurrence_weekday": "Weekday",
|
||
"recurrence_day": "Day of month (1–31)",
|
||
"recurrence_last_day": "Last day of the month",
|
||
"recurrence_business_day": "Business days only (roll back from weekend)",
|
||
"recurrence_offset": "Offset (days, ±)",
|
||
"recurrence_offset_help": "Shift the date by ±N days, e.g. -2 = two days before.",
|
||
"last_day_month": "Last day of month",
|
||
"last_business_day_month": "Last business day",
|
||
"ord_1": "1st",
|
||
"ord_2": "2nd",
|
||
"ord_3": "3rd",
|
||
"ord_4": "4th",
|
||
"ord_5": "5th",
|
||
"ord_last": "Last",
|
||
"day_word": "Day",
|
||
"interval_value": "Interval",
|
||
"interval_unit": "Unit",
|
||
"unit_days": "Days",
|
||
"unit_weeks": "Weeks",
|
||
"unit_months": "Months",
|
||
"unit_years": "Years",
|
||
"due_date": "Due date",
|
||
"cleaning": "Cleaning",
|
||
"inspection": "Inspection",
|
||
"replacement": "Replacement",
|
||
"calibration": "Calibration",
|
||
"service": "Service",
|
||
"reading": "Reading",
|
||
"custom": "Custom",
|
||
"history": "History",
|
||
"cost": "Cost",
|
||
"report_button": "Report",
|
||
"report_title": "Maintenance report",
|
||
"report_generated": "Generated",
|
||
"report_times_done": "Done",
|
||
"report_total_cost": "Total cost",
|
||
"report_every": "every {n} {unit}",
|
||
"report_notes": "Notes",
|
||
"report_col_type": "Type",
|
||
"report_col_status": "Status",
|
||
"report_col_schedule": "Schedule",
|
||
"duration": "Duration",
|
||
"both": "Both",
|
||
"trigger_val": "Trigger value",
|
||
"complete_title": "Complete: ",
|
||
"checklist": "Checklist",
|
||
"checklist_steps_optional": "Checklist steps (optional)",
|
||
"checklist_placeholder": "Clean filter\nReplace seal\nTest pressure",
|
||
"checklist_help": "One step per line. Max 100 items.",
|
||
"err_too_long": "{field}: too long (max {n} characters)",
|
||
"err_too_short": "{field}: too short (min {n} characters)",
|
||
"err_value_too_high": "{field}: too large (max {n})",
|
||
"err_value_too_low": "{field}: too small (min {n})",
|
||
"err_required": "{field}: required",
|
||
"err_wrong_type": "{field}: wrong type (expected: {type})",
|
||
"err_invalid_choice": "{field}: not an allowed value",
|
||
"err_invalid_value": "{field}: invalid value",
|
||
"feat_schedule_time": "Time-of-day scheduling",
|
||
"feat_schedule_time_desc": "Tasks become overdue at a specific time of day instead of midnight.",
|
||
"schedule_time_optional": "Due at time (optional, HH:MM)",
|
||
"schedule_time_help": "Empty = midnight (default). HA timezone.",
|
||
"at_time": "at",
|
||
"notes_optional": "Notes (optional)",
|
||
"cost_optional": "Cost (optional)",
|
||
"duration_minutes": "Duration in minutes (optional)",
|
||
"days": "days",
|
||
"day": "day",
|
||
"today": "Today",
|
||
"d_overdue": "d overdue",
|
||
"no_tasks": "No maintenance tasks yet. Create an object to get started.",
|
||
"no_tasks_short": "No tasks",
|
||
"no_history": "No history entries yet.",
|
||
"show_all": "Show all",
|
||
"cost_duration_chart": "Cost & Duration",
|
||
"installed": "Installed",
|
||
"confirm_delete_object": "Delete this object and all its tasks?",
|
||
"confirm_delete_task": "Delete this task?",
|
||
"min": "Min",
|
||
"max": "Max",
|
||
"save": "Save",
|
||
"saving": "Saving…",
|
||
"edit_task": "Edit Task",
|
||
"new_task": "New Maintenance Task",
|
||
"task_name": "Task name",
|
||
"maintenance_type": "Maintenance type",
|
||
"priority": "Priority",
|
||
"labels": "Labels",
|
||
"labels_placeholder": "e.g. safety, seasonal, tenant-visible",
|
||
"labels_help": "Comma-separated tags for filtering and reporting.",
|
||
"priority_low": "Low",
|
||
"priority_normal": "Normal",
|
||
"priority_high": "High",
|
||
"schedule_type": "Schedule type",
|
||
"interval_days": "Interval (days)",
|
||
"warning_days": "Warning days",
|
||
"earliest_completion_days": "Earliest completion (days before due)",
|
||
"earliest_completion_days_help": "Leave empty to allow completing any time. 0 = only on/after the due date.",
|
||
"last_performed_optional": "Last performed (optional)",
|
||
"interval_anchor": "Interval anchor",
|
||
"anchor_completion": "From completion date",
|
||
"anchor_planned": "From planned date (no drift)",
|
||
"edit_object": "Edit Object",
|
||
"name": "Name",
|
||
"manufacturer_optional": "Manufacturer (optional)",
|
||
"model_optional": "Model (optional)",
|
||
"serial_number_optional": "Serial number (optional)",
|
||
"serial_number_label": "S/N",
|
||
"documentation_url_label": "Manual",
|
||
"object_notes_label": "Notes",
|
||
"sort_due_date": "Due date",
|
||
"sort_object": "Object name",
|
||
"sort_type": "Type",
|
||
"sort_task_name": "Task name",
|
||
"all_objects": "All objects",
|
||
"tasks_lower": "tasks",
|
||
"no_tasks_yet": "No tasks yet",
|
||
"add_first_task": "Add first task",
|
||
"trigger_configuration": "Trigger Configuration",
|
||
"entity_id": "Entity ID",
|
||
"comma_separated": "comma-separated",
|
||
"entity_logic": "Entity logic",
|
||
"entity_logic_any": "Any entity triggers",
|
||
"entity_logic_all": "All entities must trigger",
|
||
"entities": "entities",
|
||
"attribute_optional": "Attribute (optional, blank = state)",
|
||
"use_entity_state": "Use entity state (no attribute)",
|
||
"trigger_above": "Trigger above",
|
||
"trigger_below": "Trigger below",
|
||
"for_at_least_minutes": "For at least (minutes)",
|
||
"safety_interval_days": "Safety interval (days, optional)",
|
||
"safety_interval": "Safety interval (optional)",
|
||
"delta_mode": "Delta mode",
|
||
"from_state_optional": "From state (optional)",
|
||
"to_state_optional": "To state (optional)",
|
||
"documentation_url_optional": "Documentation URL (optional)",
|
||
"object_notes_optional": "Notes (optional)",
|
||
"nfc_tag_id_optional": "NFC Tag ID (optional)",
|
||
"nfc_tags_empty_help": "No NFC tags registered in Home Assistant yet.",
|
||
"nfc_tags_open_settings": "Open Tags settings",
|
||
"nfc_tags_refresh": "Refresh",
|
||
"environmental_entity_optional": "Environmental sensor (optional)",
|
||
"environmental_entity_helper": "e.g. sensor.outdoor_temperature — adjusts the interval based on environmental conditions",
|
||
"environmental_attribute_optional": "Environmental attribute (optional)",
|
||
"nfc_tag_id": "NFC Tag ID",
|
||
"nfc_linked": "NFC tag linked",
|
||
"nfc_link_hint": "Click to link NFC tag",
|
||
"responsible_user": "Responsible User",
|
||
"shared_with": "Shared with (rotation)",
|
||
"shared_with_help": "Pick multiple people to share this task; the responsible person rotates on each completion.",
|
||
"rotation_strategy": "Rotation",
|
||
"rotation_none": "No rotation",
|
||
"rotation_round_robin": "Round-robin",
|
||
"rotation_least_completed": "Least completed",
|
||
"rotation_random": "Random",
|
||
"no_user_assigned": "(No user assigned)",
|
||
"all_users": "All Users",
|
||
"my_tasks": "My Tasks",
|
||
"tab_calendar": "Calendar",
|
||
"cal_no_events": "No maintenance",
|
||
"cal_window_7": "7 days",
|
||
"cal_window_14": "14 days",
|
||
"cal_window_30": "30 days",
|
||
"cal_window_365": "1 year",
|
||
"cal_every_n_days": "every {n} days",
|
||
"cal_source_time": "Time-based",
|
||
"cal_source_time_adaptive": "Time-based (adaptive)",
|
||
"cal_source_sensor": "Sensor-based",
|
||
"cal_predicted": "predicted",
|
||
"cal_confidence_high": "high confidence",
|
||
"cal_confidence_medium": "medium confidence",
|
||
"cal_confidence_low": "low confidence",
|
||
"budget_monthly": "Monthly budget",
|
||
"budget_yearly": "Yearly budget",
|
||
"groups": "Groups",
|
||
"new_group": "New group",
|
||
"edit_group": "Edit group",
|
||
"no_groups": "No groups yet",
|
||
"delete_group": "Delete group",
|
||
"delete_group_confirm": "Delete group '{name}'?",
|
||
"group_select_tasks": "Select tasks",
|
||
"group_name_required": "Name is required",
|
||
"description_optional": "Description (optional)",
|
||
"selected": "Selected",
|
||
"loading_chart": "Loading chart data...",
|
||
"hide_outliers": "Hide outliers (sensor glitches)",
|
||
"was_maintenance_needed": "Was this maintenance needed?",
|
||
"feedback_needed": "Needed",
|
||
"feedback_not_needed": "Not needed",
|
||
"feedback_not_sure": "Not sure",
|
||
"suggested_interval": "Suggested interval",
|
||
"apply_suggestion": "Apply",
|
||
"reanalyze": "Re-analyze",
|
||
"reanalyze_result": "New analysis",
|
||
"reanalyze_insufficient_data": "Not enough data to produce a recommendation",
|
||
"data_points": "data points",
|
||
"dismiss_suggestion": "Dismiss",
|
||
"confidence_low": "Low",
|
||
"confidence_medium": "Medium",
|
||
"confidence_high": "High",
|
||
"recommended": "recommended",
|
||
"seasonal_awareness": "Seasonal Awareness",
|
||
"edit_seasonal_overrides": "Edit seasonal factors",
|
||
"seasonal_overrides_title": "Seasonal factors (override)",
|
||
"seasonal_overrides_hint": "Factor per month (0.1–5.0). Empty = learned automatically.",
|
||
"seasonal_override_invalid": "Invalid value",
|
||
"seasonal_override_range": "Factor must be between 0.1 and 5.0",
|
||
"clear_all": "Clear all",
|
||
"seasonal_chart_title": "Seasonal Factors",
|
||
"seasonal_learned": "Learned",
|
||
"seasonal_manual": "Manual",
|
||
"month_jan": "Jan",
|
||
"month_feb": "Feb",
|
||
"month_mar": "Mar",
|
||
"month_apr": "Apr",
|
||
"month_may": "May",
|
||
"month_jun": "Jun",
|
||
"month_jul": "Jul",
|
||
"month_aug": "Aug",
|
||
"month_sep": "Sep",
|
||
"month_oct": "Oct",
|
||
"month_nov": "Nov",
|
||
"month_dec": "Dec",
|
||
"sensor_prediction": "Sensor Prediction",
|
||
"degradation_trend": "Trend",
|
||
"trend_rising": "Rising",
|
||
"trend_falling": "Falling",
|
||
"trend_stable": "Stable",
|
||
"trend_insufficient_data": "Insufficient data",
|
||
"days_until_threshold": "Days until threshold",
|
||
"threshold_exceeded": "Threshold exceeded",
|
||
"environmental_adjustment": "Environmental factor",
|
||
"sensor_prediction_urgency": "Sensor predicts threshold in ~{days} days",
|
||
"day_short": "day",
|
||
"weibull_reliability_curve": "Reliability Curve",
|
||
"weibull_failure_probability": "Failure Probability",
|
||
"weibull_r_squared": "Fit R²",
|
||
"beta_early_failures": "Early Failures",
|
||
"beta_random_failures": "Random Failures",
|
||
"beta_wear_out": "Wear-out",
|
||
"beta_highly_predictable": "Highly Predictable",
|
||
"confidence_interval": "Confidence Interval",
|
||
"confidence_conservative": "Conservative",
|
||
"confidence_aggressive": "Optimistic",
|
||
"current_interval_marker": "Current interval",
|
||
"recommended_marker": "Recommended",
|
||
"characteristic_life": "Characteristic life",
|
||
"chart_mini_sparkline": "Trend sparkline",
|
||
"chart_history": "Cost and duration history",
|
||
"chart_seasonal": "Seasonal factors, 12 months",
|
||
"chart_weibull": "Weibull reliability curve",
|
||
"chart_sparkline": "Sensor trigger value chart",
|
||
"days_progress": "Days progress",
|
||
"qr_code": "QR Code",
|
||
"qr_generating": "Generating QR code…",
|
||
"qr_error": "Failed to generate QR code.",
|
||
"qr_error_no_url": "No HA URL configured. Please set an external or internal URL in Settings → System → Network.",
|
||
"save_error": "Failed to save. Please try again.",
|
||
"qr_print": "Print",
|
||
"qr_download": "Download SVG",
|
||
"qr_action": "Action on scan",
|
||
"qr_action_view": "View maintenance info",
|
||
"qr_action_complete": "Mark maintenance as complete",
|
||
"qr_url_mode": "Link type",
|
||
"qr_mode_companion": "Companion App",
|
||
"qr_mode_local": "Local (mDNS)",
|
||
"qr_mode_server": "Server URL",
|
||
"overview": "Overview",
|
||
"analysis": "Analysis",
|
||
"recent_activities": "Recent Activities",
|
||
"search_notes": "Search notes",
|
||
"avg_cost": "Avg Cost",
|
||
"no_advanced_features": "No advanced features enabled",
|
||
"no_advanced_features_hint": "Enable “Adaptive Intervals” or “Seasonal Patterns” in the integration settings to see analysis data here.",
|
||
"analysis_not_enough_data": "Not enough data for analysis yet.",
|
||
"analysis_not_enough_data_hint": "Weibull analysis requires at least 5 completed maintenances; seasonal patterns become visible after 6+ data points per month.",
|
||
"analysis_manual_task_hint": "Manual tasks without an interval do not generate analysis data.",
|
||
"completions": "completions",
|
||
"current": "Current",
|
||
"shorter": "Shorter",
|
||
"longer": "Longer",
|
||
"normal": "Normal",
|
||
"disabled": "Disabled",
|
||
"compound_logic": "Compound logic",
|
||
"compound": "Compound (multiple conditions)",
|
||
"compound_logic_and": "AND — all conditions must trigger",
|
||
"compound_logic_or": "OR — any condition triggers",
|
||
"compound_help": "Combine several sensor conditions into one trigger.",
|
||
"compound_no_conditions": "No conditions yet — add at least one.",
|
||
"compound_add_condition": "Add condition",
|
||
"compound_condition": "Condition",
|
||
"compound_remove_condition": "Remove condition",
|
||
"card_title": "Title",
|
||
"card_show_header": "Show header with statistics",
|
||
"card_show_actions": "Show action buttons",
|
||
"card_compact": "Compact mode",
|
||
"card_max_items": "Max items (0 = all)",
|
||
"card_filter_status": "Filter by status",
|
||
"card_filter_status_help": "Empty = show all statuses.",
|
||
"card_filter_objects": "Filter by objects",
|
||
"card_filter_objects_help": "Empty = show all objects.",
|
||
"card_filter_entities": "Filter by entities (entity_ids)",
|
||
"card_filter_entities_help": "Pick sensor / binary_sensor entities from this integration. Empty = all.",
|
||
"card_loading_objects": "Loading objects…",
|
||
"card_load_error": "Could not load objects — check the WebSocket connection.",
|
||
"card_no_tasks_title": "No maintenance tasks yet",
|
||
"card_no_tasks_cta": "→ Create one in the Maintenance panel",
|
||
"no_objects": "No objects yet.",
|
||
"action_error": "Action failed. Please try again.",
|
||
"area_id_optional": "Area (optional)",
|
||
"installation_date_optional": "Installation date (optional)",
|
||
"warranty_expiry_optional": "Warranty expiry (optional)",
|
||
"warranty": "Warranty",
|
||
"warranty_valid_until": "valid until {date}",
|
||
"warranty_expires_in": "expires in {days} days",
|
||
"warranty_expired": "expired",
|
||
"cal_past_windows": "Past windows",
|
||
"cal_forward_windows": "Forward windows",
|
||
"history_edit_title": "Edit history entry",
|
||
"history_edit_timestamp": "Timestamp",
|
||
"manufacturer": "Manufacturer",
|
||
"model": "Model",
|
||
"area": "Area",
|
||
"actions": "Actions",
|
||
"view_mode_label": "View",
|
||
"view_cards": "Card view",
|
||
"view_table": "Table view",
|
||
"objects_table_columns_label": "Objects table columns",
|
||
"objects_table_columns_hint": "Choose which columns appear in the objects table view.",
|
||
"custom_icon_optional": "Icon (optional, e.g. mdi:wrench)",
|
||
"task_enabled": "Task enabled",
|
||
"skip_reason_prompt": "Skip this task?",
|
||
"reason_optional": "Reason (optional)",
|
||
"reset_date_prompt": "Mark task as performed?",
|
||
"reset_date_optional": "Last performed date (optional, defaults to today)",
|
||
"notes_label": "Notes",
|
||
"documentation_label": "Documentation",
|
||
"no_nfc_tag": "— No tag —",
|
||
"dashboard": "Dashboard",
|
||
"tab_today": "Today",
|
||
"palette_placeholder": "Search objects and tasks…",
|
||
"palette_no_results": "No matches",
|
||
"palette_hint": "↑↓ to navigate · Enter to open · Esc to close",
|
||
"today_all_caught_up": "All caught up! Nothing due this week.",
|
||
"today_overdue": "Overdue",
|
||
"today_due_today": "Due today",
|
||
"today_this_week": "This week",
|
||
"settings": "Settings",
|
||
"settings_features": "Advanced Features",
|
||
"settings_features_desc": "Enable or disable advanced features. Disabling hides them from the UI but does not delete data.",
|
||
"feat_adaptive": "Adaptive Scheduling",
|
||
"feat_adaptive_desc": "Learn optimal intervals from maintenance history",
|
||
"feat_predictions": "Sensor Predictions",
|
||
"feat_predictions_desc": "Predict trigger dates from sensor degradation",
|
||
"feat_seasonal": "Seasonal Adjustments",
|
||
"feat_seasonal_desc": "Adjust intervals based on seasonal patterns",
|
||
"feat_environmental": "Environmental Correlation",
|
||
"feat_environmental_desc": "Correlate intervals with temperature/humidity",
|
||
"feat_budget": "Budget Tracking",
|
||
"feat_budget_desc": "Track monthly and yearly maintenance spending",
|
||
"feat_groups": "Task Groups",
|
||
"feat_groups_desc": "Organize tasks into logical groups",
|
||
"feat_checklists": "Checklists",
|
||
"feat_checklists_desc": "Multi-step procedures for task completion",
|
||
"settings_general": "General",
|
||
"settings_default_warning": "Default warning days",
|
||
"settings_panel_enabled": "Sidebar panel",
|
||
"settings_panel_title": "Sidebar panel title",
|
||
"settings_notifications": "Notifications",
|
||
"settings_notify_service": "Notification service",
|
||
"test_notification": "Test notification",
|
||
"send_test": "Send test",
|
||
"testing": "Sending…",
|
||
"test_notification_success": "Test notification sent",
|
||
"test_notification_failed": "Test notification failed",
|
||
"settings_notify_due_soon": "Notify when due soon",
|
||
"settings_notify_overdue": "Notify when overdue",
|
||
"settings_notify_triggered": "Notify when triggered",
|
||
"settings_interval_hours": "Repeat interval (hours, 0 = once)",
|
||
"settings_quiet_hours": "Quiet hours",
|
||
"settings_quiet_start": "Start",
|
||
"settings_quiet_end": "End",
|
||
"settings_max_per_day": "Max notifications per day (0 = unlimited)",
|
||
"settings_bundling": "Bundle notifications",
|
||
"settings_bundle_threshold": "Bundle threshold",
|
||
"settings_reminder_leads": "Extra reminders (days before due)",
|
||
"settings_reminder_leads_hint": "Comma-separated lead times, e.g. 14, 3, 0 — one extra reminder fires on each matching day. Empty = off.",
|
||
"settings_actions": "Mobile Action Buttons",
|
||
"settings_action_complete": "Show 'Complete' button",
|
||
"settings_action_skip": "Show 'Skip' button",
|
||
"settings_action_snooze": "Show 'Snooze' button",
|
||
"settings_weekly_digest": "Weekly digest",
|
||
"settings_weekly_digest_hint": "A single summary notification on Monday morning when tasks are due.",
|
||
"settings_warranty_reminder": "Warranty expiry reminder",
|
||
"settings_warranty_reminder_days": "Days before expiry",
|
||
"settings_warranty_reminder_hint": "Notify once when an object's warranty is this many days from expiring.",
|
||
"settings_snooze_hours": "Snooze duration (hours)",
|
||
"settings_budget": "Budget",
|
||
"settings_currency": "Currency",
|
||
"settings_budget_monthly": "Monthly budget",
|
||
"settings_budget_yearly": "Yearly budget",
|
||
"settings_budget_alerts": "Budget alerts",
|
||
"settings_budget_threshold": "Alert threshold (%)",
|
||
"settings_import_export": "Import / Export",
|
||
"settings_export_json": "Export JSON",
|
||
"settings_export_yaml": "Export YAML",
|
||
"settings_export_csv": "Export CSV",
|
||
"settings_import_csv": "Import CSV",
|
||
"settings_import_placeholder": "Paste JSON or CSV content here…",
|
||
"settings_import_btn": "Import",
|
||
"settings_import_success": "{count} objects imported successfully.",
|
||
"settings_export_success": "Export downloaded.",
|
||
"settings_saved": "Setting saved.",
|
||
"settings_include_history": "Include history",
|
||
"sort_alphabetical": "Alphabetical",
|
||
"sort_due_soonest": "Due soonest",
|
||
"sort_task_count": "Task count",
|
||
"sort_area": "Area",
|
||
"sort_assigned_user": "Assigned user",
|
||
"sort_group": "Group",
|
||
"groupby_none": "No grouping",
|
||
"groupby_area": "By area",
|
||
"groupby_group": "By group",
|
||
"groupby_user": "By user",
|
||
"filter_label": "Filter",
|
||
"user_label": "User",
|
||
"sort_label": "Sort",
|
||
"group_by_label": "Group by",
|
||
"state_value_help": "Use the HA state value (usually lowercase, e.g. \"on\"/\"off\"). Case is normalised on save.",
|
||
"target_changes_help": "Number of matching transitions before the trigger fires (default: 1).",
|
||
"qr_print_title": "Print QR codes",
|
||
"qr_print_desc": "Generate a printable page of QR codes to cut out and stick on your equipment.",
|
||
"qr_print_load": "Load objects",
|
||
"qr_print_filter": "Filter",
|
||
"qr_print_objects": "Objects",
|
||
"qr_print_actions": "Actions",
|
||
"qr_print_url_mode": "Link type",
|
||
"qr_print_estimate": "Estimated QR codes",
|
||
"qr_print_over_limit": "cap is 200, narrow the filter",
|
||
"qr_print_generate": "Generate QR codes",
|
||
"qr_print_generating": "Generating…",
|
||
"qr_print_ready": "QR codes ready",
|
||
"qr_print_print_button": "Print",
|
||
"qr_print_empty": "Nothing to generate",
|
||
"qr_action_skip": "Skip",
|
||
"vacation_title": "Vacation mode",
|
||
"vacation_active": "active",
|
||
"vacation_ended": "ended",
|
||
"vacation_desc": "Plan a vacation: notifications are paused during the period plus a buffer of days. You can opt specific tasks back in.",
|
||
"vacation_enable": "Enable vacation mode",
|
||
"vacation_start": "Start",
|
||
"vacation_end": "End",
|
||
"vacation_buffer": "Buffer (days)",
|
||
"vacation_exempt_title": "Notify anyway during vacation",
|
||
"vacation_exempt_desc": "Pick tasks that should still notify during vacation (e.g. critical pool chemistry).",
|
||
"vacation_load_tasks": "Load tasks",
|
||
"vacation_preview_btn": "Show preview",
|
||
"vacation_preview_affected": "tasks affected",
|
||
"vacation_event_due_soon": "becomes due soon",
|
||
"vacation_event_overdue": "becomes overdue",
|
||
"vacation_event_triggered_est": "sensor trigger possible",
|
||
"vacation_sensor_based": "(sensor-based)",
|
||
"vacation_action_notify": "Notify anyway",
|
||
"vacation_action_unsilence": "Silence again",
|
||
"vacation_marked_complete": "Marked complete",
|
||
"vacation_marked_skip": "Skipped",
|
||
"vacation_end_now": "End vacation now",
|
||
"add": "Add",
|
||
"show_stats": "Show stats + graphs",
|
||
"hide_stats": "Hide stats",
|
||
"adaptive_no_data": "Not enough completion history yet for adaptive analysis. Complete this task a few more times to unlock interval recommendations and reliability charts.",
|
||
"suggestion_applied": "Suggested interval applied",
|
||
"vacation_mode": "Vacation mode",
|
||
"vacation_status_active": "Active now",
|
||
"vacation_status_scheduled": "Scheduled",
|
||
"vacation_status_inactive": "Inactive",
|
||
"vacation_end_now_confirm": "End vacation immediately?",
|
||
"vacation_exempt_count": "exempt",
|
||
"vacation_advanced": "Advanced…",
|
||
"vacation_open_panel": "Open in panel",
|
||
"enable": "Enable",
|
||
"saved": "Saved",
|
||
"budget_monthly_set": "Set monthly",
|
||
"budget_yearly_set": "Set yearly",
|
||
"budget_advanced": "Currency, alerts…",
|
||
"budget_open_panel": "Open in panel",
|
||
"groups_empty": "No groups yet.",
|
||
"group_new_placeholder": "Add group…",
|
||
"group_delete_confirm": "Delete group \"{name}\"?",
|
||
"groups_manage_tasks": "Manage task assignments…",
|
||
"groups_open_panel": "Open in panel",
|
||
"unassigned": "Unassigned",
|
||
"no_area": "No area",
|
||
"has_overdue": "Has overdue tasks",
|
||
"object": "Object",
|
||
"settings_panel_access": "Panel access",
|
||
"settings_panel_access_desc": "Admins always have full access. To delegate create, edit and delete to specific non-admins, switch this on and pick them below — everyone else sees only Complete and Skip.",
|
||
"settings_operator_write": "Allow selected users to create, edit & delete",
|
||
"settings_operator_write_desc": "Off: only admins can change content. On: the selected users below get full access too.",
|
||
"no_non_admin_users": "No non-admin users found. Add some in Settings → People.",
|
||
"owner_label": "Owner",
|
||
"feat_completion_actions": "Completion actions",
|
||
"feat_completion_actions_desc": "Per-task HA action on complete + quick-complete QR with pre-set values.",
|
||
"on_complete_action_title": "On complete: trigger HA action (optional)",
|
||
"on_complete_action_desc": "Calls an HA service when the task is completed — e.g. reset a counter on the device.",
|
||
"on_complete_action_service": "Service",
|
||
"on_complete_action_target": "Target entity",
|
||
"on_complete_action_target_hint": "Note: the entity domain must match the service — e.g. 'button.press' only works on button.*, 'counter.increment' only on counter.*, 'input_button.press' only on input_button.* etc. On a mismatch the action will silently fail (HA logs 'Referenced entities ... missing or not currently available').",
|
||
"on_complete_action_data": "Data (JSON, optional)",
|
||
"on_complete_action_test": "Validate configuration",
|
||
"on_complete_action_test_success": "✓ Configuration valid (action will fire only on task completion)",
|
||
"on_complete_action_test_failed": "Failed",
|
||
"quick_complete_defaults_title": "Quick-complete defaults (for QR scans, optional)",
|
||
"quick_complete_defaults_desc": "Pre-set values for quick-complete QR scans. Without these, the QR opens the complete dialog.",
|
||
"quick_complete_defaults_notes": "Notes",
|
||
"quick_complete_defaults_cost": "Cost",
|
||
"quick_complete_defaults_duration": "Duration (minutes)",
|
||
"quick_complete_defaults_feedback_none": "No feedback",
|
||
"quick_complete_defaults_feedback_needed": "Was needed",
|
||
"quick_complete_defaults_feedback_not_needed": "Not needed",
|
||
"quick_complete_success": "Quickly marked complete",
|
||
"show_all_objects": "Show all objects",
|
||
"show_all_tasks": "Clear filter — show all tasks",
|
||
"filter_to_overdue": "Filter task list to overdue only",
|
||
"filter_to_due_soon": "Filter task list to due-soon only",
|
||
"filter_to_triggered": "Filter task list to triggered only",
|
||
"open_task": "Open task",
|
||
"show_details": "Show history + stats",
|
||
"hide_details": "Hide details",
|
||
"history_empty": "No history yet.",
|
||
"history_edit_button": "Edit entry",
|
||
"total_cost": "Total cost",
|
||
"times_performed": "Performed",
|
||
"older_entries": "older",
|
||
"open_in_panel": "Open in Maintenance panel",
|
||
"skip_reason": "Skip reason (optional)",
|
||
"reset_to_date": "Reset last_performed to",
|
||
"delete_task_confirm": "Delete this task and its history?",
|
||
"delete_object_confirm": "Delete this object and all its tasks?",
|
||
"loading": "Loading…",
|
||
"archive": "Archive",
|
||
"undo": "Undo",
|
||
"task_archived": "Task archived",
|
||
"object_archived": "Object archived",
|
||
"unarchive": "Unarchive",
|
||
"archived": "Archived",
|
||
"show_archived": "Show archived",
|
||
"hide_archived": "Hide archived",
|
||
"confirm_archive_object": "Archive this object and its tasks? They keep their history and can be unarchived later.",
|
||
"settings_archive": "Archive & Retention",
|
||
"settings_archive_desc": "Retire completed one-off tasks without deleting them. Archived items are hidden and inert but keep their history and cost.",
|
||
"settings_archive_oneoff_days": "Auto-archive completed one-off tasks after (days, 0 = off)",
|
||
"settings_delete_archived_oneoff_days": "Auto-delete archived one-off tasks after (days, 0 = never)",
|
||
"archive_object": "Archive object",
|
||
"unarchive_object": "Unarchive object",
|
||
"documents": "Documents",
|
||
"documents_empty": "No documents yet.",
|
||
"doc_upload": "Upload file",
|
||
"doc_uploading": "Uploading…",
|
||
"doc_add_link": "Add link",
|
||
"doc_link_url": "URL (https://…)",
|
||
"doc_link_title": "Title (optional)",
|
||
"doc_open": "Open",
|
||
"doc_delete_confirm": "Delete \"{name}\"?",
|
||
"doc_too_large": "File is too large (max 25 MB).",
|
||
"doc_upload_failed": "Upload failed.",
|
||
"completion_photo_optional": "Completion photo (optional)",
|
||
"add_photo": "Add photo",
|
||
"uploading": "Uploading…",
|
||
"remove": "Remove",
|
||
"doc_deduped": "Already stored elsewhere — shared, no extra space used.",
|
||
"doc_dup_in_object": "This file is already attached to this object.",
|
||
"doc_link_invalid": "Only http/https links are allowed.",
|
||
"doc_cat_manual": "Manual",
|
||
"doc_cat_warranty": "Warranty",
|
||
"doc_cat_invoice": "Invoice",
|
||
"doc_cat_spare_parts": "Spare parts",
|
||
"doc_cat_photo": "Photo",
|
||
"doc_cat_other": "Other",
|
||
"doc_link_badge": "Link",
|
||
"doc_storage_title": "Document storage",
|
||
"doc_storage_saved": "Saved via deduplication",
|
||
"doc_storage_refresh": "Refresh",
|
||
"doc_download": "Download",
|
||
"doc_close": "Close",
|
||
"doc_camera": "Take photo",
|
||
"doc_drop_hint": "Drop files here",
|
||
"doc_task_none": "No documents linked to this task.",
|
||
"doc_link_existing": "Link a document…",
|
||
"doc_attach": "Link",
|
||
"doc_unlink": "Unlink",
|
||
"doc_page": "Page",
|
||
"chart_range_7d": "7d",
|
||
"chart_range_30d": "30d",
|
||
"chart_range_90d": "90d",
|
||
"chart_range_1y": "1y",
|
||
"chart_since_service": "since last service",
|
||
"chart_no_stats": "No long-term statistics for this entity — showing maintenance-event values only",
|
||
"auto_complete_on_recovery": "Auto-complete when the sensor recovers",
|
||
"auto_complete_on_recovery_help": "Records a completion (sets last performed) when the trigger clears itself — e.g. salt refilled, filter replaced.",
|
||
"doc_search": "Search documents…",
|
||
"doc_search_none": "No matching documents",
|
||
"link_device_optional": "Link to existing device (optional)",
|
||
"parent_object_optional": "Parent object (optional)",
|
||
"parent_none": "(No parent)",
|
||
"paused": "Paused",
|
||
"pause_object": "Pause",
|
||
"resume_object": "Resume",
|
||
"pause_until_prompt": "Freeze this object's schedules — nothing becomes due and nothing notifies until it is resumed. Optionally set an auto-resume date.",
|
||
"pause_until_label": "Resume on (optional)",
|
||
"object_paused": "Object paused",
|
||
"object_resumed": "Object resumed — schedules restarted",
|
||
"object_paused_badge": "Paused",
|
||
"paused_until_label": "until",
|
||
"replace_object": "Replace…",
|
||
"replace_object_prompt": "Retire this object and create a successor. History and costs stay archived on the old one; tasks and documents carry over to the new one, counters start fresh.",
|
||
"replace_name_label": "Successor name",
|
||
"object_replaced": "Object replaced — successor created",
|
||
"reading_unit_label": "Reading unit (e.g. kWh, m³)",
|
||
"reading_unit_help": "Shown next to the recorded value when completing this task.",
|
||
"reading_value_label": "Reading value",
|
||
"reading_label": "Reading",
|
||
"settings_templates_label": "Template gallery",
|
||
"settings_templates_hint": "Untick templates you'll never need — they disappear from the \"From template\" pickers (panel and config flow). Nothing else changes; you can re-enable them any time.",
|
||
"worksheet": "Work sheet",
|
||
"worksheet_scan_view": "Scan to open the task",
|
||
"worksheet_scan_complete": "Scan to complete",
|
||
"worksheet_manual_excerpt": "Manual excerpt",
|
||
"worksheet_pages": "pages",
|
||
"worksheet_printed": "Printed",
|
||
"worksheet_never": "Never"
|
||
}
|