257 files

This commit is contained in:
Home Assistant Version Control
2026-10-02 16:06:24 +00:00
parent 7c55603942
commit c29f5cc088
258 changed files with 24621 additions and 3136 deletions
@@ -327,6 +327,27 @@
"go_back": "Return to trigger type selection without saving."
}
},
"trigger_due_date": {
"title": "Due Date Configuration",
"description": "Watch the date {entity_id} reports (now: {current_state}). The task becomes due the chosen number of days before that date.",
"data": {
"trigger_days_before": "Days before the date",
"interval_days": "Safety interval",
"interval_unit": "Interval unit",
"trigger_combinator": "Combine trigger and interval",
"warning_days": "Warning days before due",
"go_back": "Go back",
"auto_complete_on_recovery": "Auto-complete when the sensor recovers"
},
"data_description": {
"trigger_days_before": "0 = on the date itself. When the device moves its date forward (usually its own 'done' button), the trigger clears.",
"interval_days": "Optional time-based safety interval in addition to the sensor trigger.",
"interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
"trigger_combinator": "Whichever first (default): trigger or elapsed interval makes the task due. Both required: the task only becomes due once the trigger fired and the interval elapsed.",
"warning_days": "Number of days before due date to show a warning.",
"go_back": "Return to trigger type selection without saving."
}
},
"compound_logic": {
"title": "Compound Trigger",
"description": "Choose how multiple conditions should be combined.",
@@ -424,6 +445,17 @@
"go_back": "Return to condition type selection without saving."
}
},
"compound_condition_due_date": {
"title": "Condition — Due date",
"data": {
"trigger_days_before": "Days before the date",
"go_back": "Go back"
},
"data_description": {
"trigger_days_before": "The condition is met from this many days before the date the entity reports.",
"go_back": "Return to condition type selection without saving."
}
},
"compound_review": {
"title": "Compound Trigger Review",
"description": "{condition_count} condition(s) configured with {compound_logic} logic.",
@@ -527,7 +559,7 @@
"budget_settings": "Budget Settings",
"manage_groups": "Manage Groups",
"notification_settings": "Notification Settings",
"notification_actions": "Interactive Actions",
"notification_actions": "Mobile Action Buttons",
"test_notification": "Send Test Notification",
"done": "Done",
"home_profile": "Home profile · Template gallery",
@@ -541,7 +573,6 @@
"description": "Choose which advanced features to show in the UI. Disabling a feature hides it from the interface but does not delete any data.",
"data": {
"advanced_adaptive_visible": "Adaptive Scheduling",
"advanced_predictions_visible": "Sensor Predictions",
"advanced_seasonal_visible": "Seasonal Adjustments",
"advanced_environmental_visible": "Environmental Correlation",
"advanced_budget_visible": "Budget Tracking",
@@ -552,7 +583,6 @@
},
"data_description": {
"advanced_adaptive_visible": "Show EWA, Weibull analysis, and interval suggestions for tasks.",
"advanced_predictions_visible": "Show sensor degradation analysis and threshold prediction charts.",
"advanced_seasonal_visible": "Show seasonal factor charts and monthly adjustment data.",
"advanced_environmental_visible": "Show environmental correlation (temperature, humidity) adjustments.",
"advanced_budget_visible": "Show monthly/yearly budget tracking and alerts.",
@@ -583,6 +613,7 @@
"notify_service": "Notification service",
"panel_enabled": "Show sidebar panel",
"currency_decimals": "Decimal places for amounts",
"parts_cost_mode": "Spare parts count as spending",
"battery_low_percent": "Battery low threshold (%)",
"battery_recovered_percent": "Battery counts as replaced above (%)",
"battery_auto_record_recovery": "Record a replacement automatically when a low battery recovers",
@@ -601,6 +632,7 @@
"notify_service": "The notification service to use (e.g., notify.mobile_app_phone).",
"panel_enabled": "Show a Maintenance Supporter panel in the sidebar.",
"currency_decimals": "How many decimals every amount shows — KPIs, budgets, costs in lists and reports, budget alerts. 0 = whole numbers.",
"parts_cost_mode": "When bought: a buy reminder's cost counts, parts used on a job are shown as information. When used: every completion books the parts it used, and a purchase sets the part's price instead. Applies to completions from now on.",
"battery_low_percent": "Fleet-wide floor: a battery at or below this level counts as low unless its Battery Notes threshold is higher.",
"battery_recovered_percent": "A low battery stays counted as low until its level rises above this value or a replacement is recorded — so a level hovering around the low threshold cannot complete the fleet task again and again.",
"battery_auto_record_recovery": "When a battery that was low rises above the recovery threshold, the replacement date is recorded in Battery Notes and the spare cells are taken from stock — no tap needed",
@@ -676,7 +708,7 @@
}
},
"notification_actions": {
"title": "Interactive Actions",
"title": "Mobile Action Buttons",
"description": "Configure action buttons shown on mobile notifications (requires Companion App).",
"data": {
"action_complete_enabled": "Show 'Complete' button",
@@ -1054,6 +1086,26 @@
"warning_days": "Number of days before due date to show a warning."
}
},
"opt_trigger_due_date": {
"title": "Due Date Configuration",
"description": "Watch the date {entity_id} reports (now: {current_state}). The task becomes due the chosen number of days before that date.",
"data": {
"trigger_days_before": "Days before the date",
"interval_days": "Safety interval",
"interval_unit": "Interval unit",
"trigger_combinator": "Combine trigger and interval",
"warning_days": "Warning days before due",
"go_back": "Go back",
"auto_complete_on_recovery": "Auto-complete when the sensor recovers"
},
"data_description": {
"trigger_days_before": "0 = on the date itself. When the device moves its date forward (usually its own 'done' button), the trigger clears.",
"interval_days": "Optional time-based safety interval in addition to the sensor trigger.",
"interval_unit": "Unit for the interval: days, weeks, months or years. Months and years follow the calendar.",
"trigger_combinator": "Whichever first (default): trigger or elapsed interval makes the task due. Both required: the task only becomes due once the trigger fired and the interval elapsed.",
"warning_days": "Number of days before due date to show a warning."
}
},
"compound_logic": {
"title": "Compound Trigger",
"description": "Choose how multiple conditions should be combined.",
@@ -1144,6 +1196,16 @@
"trigger_on_states": "Sensor states counted as 'active'. Leave empty for default."
}
},
"compound_condition_due_date": {
"title": "Condition — Due date",
"data": {
"trigger_days_before": "Days before the date",
"go_back": "Go back"
},
"data_description": {
"trigger_days_before": "The condition is met from this many days before the date the entity reports."
}
},
"compound_review": {
"title": "Compound Trigger Review",
"description": "{condition_count} condition(s) configured with {compound_logic} logic.",
@@ -1560,6 +1622,12 @@
},
"batteries_to_replace": {
"name": "Batteries to replace"
},
"area_cost": {
"name": "{area} maintenance cost"
},
"area_cost_year": {
"name": "{area} maintenance cost this year"
}
},
"binary_sensor": {
@@ -1672,7 +1740,7 @@
},
"export_data": {
"name": "Export Data",
"description": "Export all maintenance data as JSON or YAML.",
"description": "Export all maintenance data as JSON or YAML to maintenance_export.json / maintenance_export.yaml in the Home Assistant config folder, then fire maintenance_supporter_export_completed with the file path. Admin only.",
"fields": {
"format": {
"name": "Format",
@@ -1744,7 +1812,7 @@
},
"schedule_type": {
"name": "Schedule type",
"description": "time_based (interval) or sensor_based. Default: time_based."
"description": "time_based (needs interval_days), one_time (needs due_date) or manual. Left out, the other fields decide: an interval makes it time_based, a due date one_time, neither manual. Sensor-triggered tasks need a trigger and are created in the panel."
},
"interval_days": {
"name": "Interval",
@@ -1764,7 +1832,7 @@
},
"warning_days": {
"name": "Warning (days)",
"description": "Days before due to enter the due-soon window."
"description": "Days before due to enter the due-soon window. Default: the integration-wide setting."
},
"enabled": {
"name": "Enabled",
@@ -1798,7 +1866,7 @@
},
"schedule_type": {
"name": "Schedule type",
"description": "time_based (interval), sensor_based, one_time or manual."
"description": "time_based (needs interval_days unless the task already has an interval), one_time (needs due_date) or manual. Switching to manual or one_time drops the old interval."
},
"interval_days": {
"name": "Interval",
@@ -1913,6 +1981,7 @@
"counter": "Counter",
"state_change": "State Change",
"runtime": "Runtime",
"due_date": "Due date (reported by a sensor)",
"compound": "Compound (Multiple Conditions)"
}
},
@@ -2006,6 +2075,12 @@
"finish": "Finish",
"add": "Add condition"
}
},
"parts_cost_mode": {
"options": {
"purchase": "When bought",
"use": "When used"
}
}
},
"issues": {
@@ -2175,6 +2250,17 @@
"entry_gone": "This object no longer exists — nothing to repair."
}
}
},
"leftover_areas": {
"title": "Empty areas created by mistake: {areas}",
"fix_flow": {
"step": {
"init": {
"title": "Remove the empty areas",
"description": "Before version 2.96, Maintenance Supporter created a second area named like an area's ID (for example \"living_room\" next to \"Living Room\") and put the object's device in it. The devices are back in their real areas, and these areas are empty now:\n\n{areas}\n\nClick **Submit** to remove them. An area that has received a device or entity in the meantime is left alone. To keep them, use Home Assistant's **Ignore** button."
}
}
}
}
},
"exceptions": {
@@ -2265,6 +2351,9 @@
"archived_cannot_pause": {
"message": "An archived object cannot be paused — restore it first."
},
"archived_task_cannot_pause": {
"message": "An archived task cannot be paused — restore it first."
},
"archived_cannot_replace": {
"message": "An archived object cannot be replaced — restore it first."
},