41 files
This commit is contained in:
@@ -10,6 +10,10 @@
|
||||
!**/.??*.yml
|
||||
!*.md
|
||||
!**/.??*.md
|
||||
!*.json
|
||||
!**/.??*.json
|
||||
!*.js
|
||||
!**/.??*.js
|
||||
|
||||
# Track specific .storage configuration files
|
||||
!.storage/lovelace
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"enable_auto_backup": true,
|
||||
"auto_backup_throttle_minutes": 0,
|
||||
"auto_backup_retain_per_entity": 100,
|
||||
"auto_backup_dir": "",
|
||||
"auto_backup_calendar_lookahead_days": 7,
|
||||
"enable_snapshot_delete": false,
|
||||
"snapshot_delete_min_age_days": 7
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"enable_tool_search": false,
|
||||
"tool_search_max_results": 10
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "Dishwasher",
|
||||
"device_id": 150633095332665,
|
||||
"type": 225,
|
||||
"protocol": 3,
|
||||
"ip_address": "192.168.1.83",
|
||||
"port": 6444,
|
||||
"model": "7600004A",
|
||||
"subtype": 3,
|
||||
"token": "2a146cafc4951b1317096d6dfd3bde6bc32aad40cdb9d60d51dcc99f8abbab4ed75331e2bc4e3dfb3664b4cf68b0b5c60ee4453bbe1d48619cc60c3483229395",
|
||||
"key": "0725ef104dbe450e83d0abaa3701f112d7771d10a9cb4306bc086718be8e684d"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"aliases": [
|
||||
"Google Nest Mini"
|
||||
],
|
||||
"calculation_enabled_condition": "{{ is_state('[[entity]]', 'playing') }}",
|
||||
"calculation_strategy": "linear",
|
||||
"created_at": "2022-10-05T10:14:54Z",
|
||||
"device_type": "smart_speaker",
|
||||
"linear_config": {
|
||||
"calibrate": [
|
||||
"0 -> 2.01",
|
||||
"10 -> 2.01",
|
||||
"20 -> 2.04",
|
||||
"30 -> 2.10",
|
||||
"40 -> 2.26",
|
||||
"50 -> 2.49",
|
||||
"60 -> 2.83",
|
||||
"70 -> 3.13",
|
||||
"80 -> 3.37",
|
||||
"90 -> 3.50",
|
||||
"100 -> 3.66"
|
||||
]
|
||||
},
|
||||
"measure_description": "Streamed 'Radiohead - National Anthem' using spotify, and took average measurements using the measure.py tool on different volume levels",
|
||||
"measure_device": "Shelly Plug S",
|
||||
"measure_method": "manual",
|
||||
"name": "Nest Mini",
|
||||
"standby_power": 1.65,
|
||||
"author_info": {
|
||||
"name": "Daniel O'Connor",
|
||||
"email": "daniel.oconnor@gmail.com",
|
||||
"github": "CloCkWeRX"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"aliases": [
|
||||
"TRADFRI bulb GU10 WS 345lm",
|
||||
"TRADFRIbulbGU10WS345lm"
|
||||
],
|
||||
"calculation_strategy": "lut",
|
||||
"created_at": "2022-01-28T15:48:57Z",
|
||||
"device_type": "light",
|
||||
"measure_description": "Measured with utils/measure script",
|
||||
"measure_device": "Shelly Plug S",
|
||||
"measure_method": "script",
|
||||
"measure_settings": {
|
||||
"SAMPLE_COUNT": 3,
|
||||
"SLEEP_TIME": 6,
|
||||
"VERSION": "master"
|
||||
},
|
||||
"name": "TRADFRI bulb GU10 345 lumen, dimmable, white spectrum",
|
||||
"standby_power": 0.2,
|
||||
"author_info": {
|
||||
"name": "giu889",
|
||||
"github": "giu889"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"aliases": [
|
||||
"TRADFRI bulb GU10 WW 345lm"
|
||||
],
|
||||
"calculation_strategy": "lut",
|
||||
"created_at": "2025-12-22T22:20:22Z",
|
||||
"device_type": "light",
|
||||
"measure_description": "Measured with utils/measure script. Used 40W incandescent bulb as dummy load.",
|
||||
"measure_device": "Shelly 1PM Mini",
|
||||
"measure_method": "script",
|
||||
"measure_settings": {
|
||||
"SAMPLE_COUNT": 2,
|
||||
"SLEEP_TIME": 3,
|
||||
"VERSION": "v1.19.5:docker"
|
||||
},
|
||||
"name": "TRADFRI bulb GU10 WW 345lm",
|
||||
"standby_power": 0.1,
|
||||
"author_info": {
|
||||
"name": "Peklaa",
|
||||
"github": "Peklaa"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"calculation_strategy": "lut",
|
||||
"created_at": "2024-04-12T08:07:57Z",
|
||||
"device_type": "light",
|
||||
"measure_description": "Measured with utils/measure script",
|
||||
"measure_device": "TP-Link Tapo P110",
|
||||
"measure_method": "script",
|
||||
"measure_settings": {
|
||||
"SAMPLE_COUNT": 4,
|
||||
"SLEEP_TIME": 5,
|
||||
"VERSION": "v1.10.0:docker"
|
||||
},
|
||||
"name": "TRADFRI bulb GU10 WS 345 lm, dimmable, white spectrum",
|
||||
"standby_power": 0.2,
|
||||
"author_info": {
|
||||
"name": "martinkura-svk",
|
||||
"github": "martinkura-svk"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"calculation_strategy": "lut",
|
||||
"created_at": "2025-10-28T04:32:28Z",
|
||||
"device_type": "light",
|
||||
"measure_description": "Measured with utils/measure script",
|
||||
"measure_device": "Shelly Plus Plug S",
|
||||
"measure_method": "script",
|
||||
"measure_settings": {
|
||||
"SAMPLE_COUNT": 4,
|
||||
"SLEEP_TIME": 3,
|
||||
"VERSION": "v1.17.24:docker"
|
||||
},
|
||||
"name": "Smart Bulb A80 E27 922-65 RGB (type SHRGB, model 8719514554634, 18.5 W, 220-240 V, 50/60 Hz, 2452 lm @ 4000K, CRI: 90, beam angle: 360°)",
|
||||
"standby_power": 0.31,
|
||||
"author_info": {
|
||||
"name": "schuppan",
|
||||
"github": "schuppan"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"aliases": [
|
||||
"SHRGB"
|
||||
],
|
||||
"calculation_strategy": "lut",
|
||||
"created_at": "2025-11-08T06:11:27Z",
|
||||
"device_type": "light",
|
||||
"measure_description": "Measured with utils/measure script",
|
||||
"measure_device": "Shelly 2.5",
|
||||
"measure_method": "script",
|
||||
"measure_settings": {
|
||||
"SAMPLE_COUNT": 2,
|
||||
"SLEEP_TIME": 3,
|
||||
"VERSION": "v1.17.24:docker"
|
||||
},
|
||||
"name": "3.5 inch recessed downlight 8W",
|
||||
"standby_power": 0.2,
|
||||
"author_info": {
|
||||
"name": "Mike Debney",
|
||||
"email": "mike.debney@outlook.com",
|
||||
"github": "mike-debney"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,347 @@
|
||||
{
|
||||
"version": 1,
|
||||
"minor_version": 1,
|
||||
"key": "thermostat_timeline.json",
|
||||
"data": {
|
||||
"instances": {
|
||||
"default": {
|
||||
"schedules": {
|
||||
"climate.vt_basement": {
|
||||
"defaultTemp": 20,
|
||||
"blocks": [],
|
||||
"profiles": {},
|
||||
"activeProfile": null,
|
||||
"holiday": {
|
||||
"blocks": []
|
||||
},
|
||||
"presence": {}
|
||||
},
|
||||
"climate.climate_scheduler_climate_schedule_living_room": {
|
||||
"defaultTemp": 20,
|
||||
"blocks": [
|
||||
{
|
||||
"id": "7ky0uyr",
|
||||
"startMin": 690,
|
||||
"endMin": 971,
|
||||
"temp": 21
|
||||
}
|
||||
],
|
||||
"profiles": {},
|
||||
"activeProfile": null,
|
||||
"holiday": {
|
||||
"blocks": []
|
||||
},
|
||||
"presence": {}
|
||||
},
|
||||
"climate.basement": {
|
||||
"defaultTemp": 20,
|
||||
"blocks": [],
|
||||
"profiles": {},
|
||||
"activeProfile": null,
|
||||
"holiday": {
|
||||
"blocks": []
|
||||
},
|
||||
"presence": {}
|
||||
},
|
||||
"climate.living_room_living_room": {
|
||||
"defaultTemp": 20,
|
||||
"blocks": [],
|
||||
"profiles": {},
|
||||
"activeProfile": null,
|
||||
"holiday": {
|
||||
"blocks": []
|
||||
},
|
||||
"presence": {}
|
||||
}
|
||||
},
|
||||
"weekdays": {},
|
||||
"profiles": {
|
||||
"climate.vt_basement": {
|
||||
"profiles": {},
|
||||
"activeProfile": null
|
||||
},
|
||||
"climate.climate_scheduler_climate_schedule_living_room": {
|
||||
"profiles": {},
|
||||
"activeProfile": null
|
||||
},
|
||||
"climate.basement": {
|
||||
"profiles": {},
|
||||
"activeProfile": null
|
||||
},
|
||||
"climate.living_room_living_room": {
|
||||
"profiles": {},
|
||||
"activeProfile": null
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"entities": [
|
||||
"climate.basement",
|
||||
"climate.living_room_living_room"
|
||||
],
|
||||
"room_use_input_number": [
|
||||
false,
|
||||
false
|
||||
],
|
||||
"room_use_temp_sensor": [
|
||||
false,
|
||||
false
|
||||
],
|
||||
"time_12h": true,
|
||||
"temp_unit": "C",
|
||||
"storage_temp_unit": "C",
|
||||
"time_source": "browser",
|
||||
"row_height": 64,
|
||||
"default_temp": 20,
|
||||
"min_temp": 5,
|
||||
"max_temp": 25,
|
||||
"weekdays_enabled": false,
|
||||
"seasonal_enabled": false,
|
||||
"seasonal_mode": "winter",
|
||||
"weekdays_mode": "weekday_weekend",
|
||||
"weekdays_view": "all_rooms_one_day",
|
||||
"weekdays_view_switch_in_timeline": false,
|
||||
"weekdays_selected_room": "",
|
||||
"per_room_defaults": false,
|
||||
"away": {
|
||||
"enabled": false,
|
||||
"persons": [],
|
||||
"target_c": 17,
|
||||
"advanced_enabled": false,
|
||||
"combos": {},
|
||||
"delay_enabled": false,
|
||||
"delay_value": 0,
|
||||
"delay_unit": "minutes"
|
||||
},
|
||||
"away_bypass": false,
|
||||
"merges": {},
|
||||
"labels": {},
|
||||
"temp_sensors": {},
|
||||
"turn_on": {},
|
||||
"presence_sensor_enabled": false,
|
||||
"presence_live_header": true,
|
||||
"presence_sensors": {},
|
||||
"presence_sensor_temps": {},
|
||||
"presence_sensor_delays": {},
|
||||
"presence_sensor_delay_units": {
|
||||
"climate.basement": "minutes",
|
||||
"climate.living_room_living_room": "minutes"
|
||||
},
|
||||
"show_pause_button": true,
|
||||
"pause_sensor_enabled": false,
|
||||
"pause_sensor_entity": "",
|
||||
"pause_indef": true,
|
||||
"pause_until_ms": 0,
|
||||
"boiler_switch": "",
|
||||
"boiler_switch_domain": "switch",
|
||||
"boiler_rooms": null,
|
||||
"boiler_on_offset": 0,
|
||||
"boiler_off_offset": 0,
|
||||
"boiler_temp_sensor": "",
|
||||
"boiler_min_temp": 20,
|
||||
"boiler_max_temp": 25,
|
||||
"boiler_multi_enabled": false,
|
||||
"boiler_room_settings": {},
|
||||
"show_room_temp": true,
|
||||
"auto_apply_enabled": true,
|
||||
"apply_on_edit": true,
|
||||
"apply_on_default_change": true,
|
||||
"backup_auto_enabled": false,
|
||||
"backup_interval_days": 1,
|
||||
"profiles_enabled": false,
|
||||
"global_profile": null,
|
||||
"sync_mode": "instant",
|
||||
"sync_delay_min": 5,
|
||||
"sync_delay_sec": 300,
|
||||
"color_ranges": {},
|
||||
"color_global": false,
|
||||
"boiler_enabled": false,
|
||||
"holidays_source": "calendar",
|
||||
"holidays_entity": "",
|
||||
"holidays_dates": [],
|
||||
"holidays_groups": [],
|
||||
"open_window": {
|
||||
"enabled": false,
|
||||
"open_delay_min": 2,
|
||||
"close_delay_min": 5,
|
||||
"sensors": {}
|
||||
}
|
||||
},
|
||||
"colors": {
|
||||
"color_ranges": {},
|
||||
"color_global": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"active_instance_id": "default",
|
||||
"schedules": {
|
||||
"climate.vt_basement": {
|
||||
"defaultTemp": 20,
|
||||
"blocks": [],
|
||||
"profiles": {},
|
||||
"activeProfile": null,
|
||||
"holiday": {
|
||||
"blocks": []
|
||||
},
|
||||
"presence": {}
|
||||
},
|
||||
"climate.climate_scheduler_climate_schedule_living_room": {
|
||||
"defaultTemp": 20,
|
||||
"blocks": [
|
||||
{
|
||||
"id": "7ky0uyr",
|
||||
"startMin": 690,
|
||||
"endMin": 971,
|
||||
"temp": 21
|
||||
}
|
||||
],
|
||||
"profiles": {},
|
||||
"activeProfile": null,
|
||||
"holiday": {
|
||||
"blocks": []
|
||||
},
|
||||
"presence": {}
|
||||
},
|
||||
"climate.basement": {
|
||||
"defaultTemp": 20,
|
||||
"blocks": [],
|
||||
"profiles": {},
|
||||
"activeProfile": null,
|
||||
"holiday": {
|
||||
"blocks": []
|
||||
},
|
||||
"presence": {}
|
||||
},
|
||||
"climate.living_room_living_room": {
|
||||
"defaultTemp": 20,
|
||||
"blocks": [],
|
||||
"profiles": {},
|
||||
"activeProfile": null,
|
||||
"holiday": {
|
||||
"blocks": []
|
||||
},
|
||||
"presence": {}
|
||||
}
|
||||
},
|
||||
"weekdays": {},
|
||||
"profiles": {
|
||||
"climate.vt_basement": {
|
||||
"profiles": {},
|
||||
"activeProfile": null
|
||||
},
|
||||
"climate.climate_scheduler_climate_schedule_living_room": {
|
||||
"profiles": {},
|
||||
"activeProfile": null
|
||||
},
|
||||
"climate.basement": {
|
||||
"profiles": {},
|
||||
"activeProfile": null
|
||||
},
|
||||
"climate.living_room_living_room": {
|
||||
"profiles": {},
|
||||
"activeProfile": null
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"entities": [
|
||||
"climate.basement",
|
||||
"climate.living_room_living_room"
|
||||
],
|
||||
"room_use_input_number": [
|
||||
false,
|
||||
false
|
||||
],
|
||||
"room_use_temp_sensor": [
|
||||
false,
|
||||
false
|
||||
],
|
||||
"time_12h": true,
|
||||
"temp_unit": "C",
|
||||
"storage_temp_unit": "C",
|
||||
"time_source": "browser",
|
||||
"row_height": 64,
|
||||
"default_temp": 20,
|
||||
"min_temp": 5,
|
||||
"max_temp": 25,
|
||||
"weekdays_enabled": false,
|
||||
"seasonal_enabled": false,
|
||||
"seasonal_mode": "winter",
|
||||
"weekdays_mode": "weekday_weekend",
|
||||
"weekdays_view": "all_rooms_one_day",
|
||||
"weekdays_view_switch_in_timeline": false,
|
||||
"weekdays_selected_room": "",
|
||||
"per_room_defaults": false,
|
||||
"away": {
|
||||
"enabled": false,
|
||||
"persons": [],
|
||||
"target_c": 17,
|
||||
"advanced_enabled": false,
|
||||
"combos": {},
|
||||
"delay_enabled": false,
|
||||
"delay_value": 0,
|
||||
"delay_unit": "minutes"
|
||||
},
|
||||
"away_bypass": false,
|
||||
"merges": {},
|
||||
"labels": {},
|
||||
"temp_sensors": {},
|
||||
"turn_on": {},
|
||||
"presence_sensor_enabled": false,
|
||||
"presence_live_header": true,
|
||||
"presence_sensors": {},
|
||||
"presence_sensor_temps": {},
|
||||
"presence_sensor_delays": {},
|
||||
"presence_sensor_delay_units": {
|
||||
"climate.basement": "minutes",
|
||||
"climate.living_room_living_room": "minutes"
|
||||
},
|
||||
"show_pause_button": true,
|
||||
"pause_sensor_enabled": false,
|
||||
"pause_sensor_entity": "",
|
||||
"pause_indef": true,
|
||||
"pause_until_ms": 0,
|
||||
"boiler_switch": "",
|
||||
"boiler_switch_domain": "switch",
|
||||
"boiler_rooms": null,
|
||||
"boiler_on_offset": 0,
|
||||
"boiler_off_offset": 0,
|
||||
"boiler_temp_sensor": "",
|
||||
"boiler_min_temp": 20,
|
||||
"boiler_max_temp": 25,
|
||||
"boiler_multi_enabled": false,
|
||||
"boiler_room_settings": {},
|
||||
"show_room_temp": true,
|
||||
"auto_apply_enabled": true,
|
||||
"apply_on_edit": true,
|
||||
"apply_on_default_change": true,
|
||||
"backup_auto_enabled": false,
|
||||
"backup_interval_days": 1,
|
||||
"profiles_enabled": false,
|
||||
"global_profile": null,
|
||||
"sync_mode": "instant",
|
||||
"sync_delay_min": 5,
|
||||
"sync_delay_sec": 300,
|
||||
"color_ranges": {},
|
||||
"color_global": false,
|
||||
"boiler_enabled": false,
|
||||
"holidays_source": "calendar",
|
||||
"holidays_entity": "",
|
||||
"holidays_dates": [],
|
||||
"holidays_groups": [],
|
||||
"open_window": {
|
||||
"enabled": false,
|
||||
"open_delay_min": 2,
|
||||
"close_delay_min": 5,
|
||||
"sensors": {}
|
||||
}
|
||||
},
|
||||
"colors": {
|
||||
"color_ranges": {},
|
||||
"color_global": false
|
||||
},
|
||||
"version": 177,
|
||||
"settings_version": 169,
|
||||
"colors_version": 169,
|
||||
"weekday_version": 1,
|
||||
"profile_version": 5
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"domain": "cafe",
|
||||
"name": "C.A.F.E.",
|
||||
"version": "0.7.0",
|
||||
"codeowners": [],
|
||||
"config_flow": true,
|
||||
"dependencies": ["frontend", "http"],
|
||||
"documentation": "https://github.com/FezVrasta/cafe-hass",
|
||||
"documentation_url": "https://github.com/FezVrasta/cafe-hass",
|
||||
"integration_type": "service",
|
||||
"iot_class": "local_push",
|
||||
"issue_tracker": "https://github.com/FezVrasta/cafe-hass/issues",
|
||||
"requirements": []
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"config": {
|
||||
"title": "C.A.F.E.",
|
||||
"step": {
|
||||
"user": {
|
||||
"title": "Set up C.A.F.E.",
|
||||
"description": "C.A.F.E. is a visual automation editor for Home Assistant. It allows you to create and manage your automations using a visual flow editor.\n\nClick Submit to add C.A.F.E. to your Home Assistant."
|
||||
}
|
||||
},
|
||||
"abort": {
|
||||
"already_configured": "C.A.F.E. is already configured"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"config": {
|
||||
"title": "C.A.F.E.",
|
||||
"step": {
|
||||
"user": {
|
||||
"title": "Set up C.A.F.E.",
|
||||
"description": "C.A.F.E. is a visual automation editor for Home Assistant. It allows you to create and manage your automations using a visual flow editor.\n\nClick Submit to add C.A.F.E. to your Home Assistant."
|
||||
}
|
||||
},
|
||||
"abort": {
|
||||
"already_configured": "C.A.F.E. is already configured"
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,2 @@
|
||||
var d=Object.defineProperty;var o=(t,s,e)=>s in t?d(t,s,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[s]=e;var h=(t,s,e)=>o(t,typeof s!="symbol"?s+"":s,e);class m extends HTMLElement{constructor(){super(...arguments);h(this,"_messageHandler");h(this,"iframe",null);h(this,"_hass")}set hass(e){var a;this._hass=e,window.hass=e;const i=(a=this.iframe)==null?void 0:a.contentWindow;i!=null&&i.setHass&&i.setHass(e)}get hass(){return this._hass}connectedCallback(){var a,n;this.style.display="block",this.style.width="100%",this.style.height="100%",this.style.position="relative";const i=((n=(a=this._hass)==null?void 0:a.themes)==null?void 0:n.darkMode)??!1?"hsl(222.2, 84%, 4.9%)":"hsl(0, 0%, 100%)";this.iframe=document.createElement("iframe"),this.iframe.src="/cafe-hass/index.html",this.iframe.style.width="100%",this.iframe.style.height="100%",this.iframe.style.border="none",this.iframe.style.display="block",this.iframe.style.background=i,this.iframe.setAttribute("allow","clipboard-read *; clipboard-write *"),this.appendChild(this.iframe),this._messageHandler=r=>{var l;r.source===((l=this.iframe)==null?void 0:l.contentWindow)&&r.data&&r.data.type==="CAFE_TOGGLE_SIDEBAR"&&this.dispatchEvent(new Event("hass-toggle-menu",{bubbles:!0,composed:!0}))},window.addEventListener("message",this._messageHandler)}disconnectedCallback(){this.iframe&&(this.removeChild(this.iframe),this.iframe=null),window.hass=void 0,this._messageHandler&&(window.removeEventListener("message",this._messageHandler),this._messageHandler=void 0)}}customElements.get("cafe-panel")||customElements.define("cafe-panel",m);
|
||||
//# sourceMappingURL=panel-wrapper.js.map
|
||||
@@ -0,0 +1,811 @@
|
||||
{
|
||||
"maintenance": "Karbantartás",
|
||||
"objects": "Objektumok",
|
||||
"tasks": "Feladatok",
|
||||
"overdue": "Lejárt",
|
||||
"due_soon": "Hamarosan esedékes",
|
||||
"triggered": "Aktiválva",
|
||||
"trigger_replaced": "Kiváltó lecserélve",
|
||||
"ok": "OK",
|
||||
"all": "Összes",
|
||||
"new_object": "+ Új objektum",
|
||||
"templates_from": "Sablonból",
|
||||
"templates_title": "Kezdés sablonból",
|
||||
"templates_task_count": "{n} feladat",
|
||||
"template_created": "Létrehozva sablonból",
|
||||
"onboard_hint": "Adja hozzá az első objektumot a karbantartások nyomon követéséhez.",
|
||||
"edit": "Szerkesztés",
|
||||
"duplicate": "Duplikálás",
|
||||
"task_duplicated": "Feladat duplikálva",
|
||||
"object_duplicated": "Objektum duplikálva",
|
||||
"delete": "Törlés",
|
||||
"add_task": "+ Új feladat",
|
||||
"complete": "Elvégzés",
|
||||
"completed": "Elvégezve",
|
||||
"skip": "Kihagyás",
|
||||
"skipped": "Kihagyva",
|
||||
"missed": "Elmulasztva",
|
||||
"reset": "Visszaállítás",
|
||||
"snooze": "Szundi",
|
||||
"snoozed": "Szundiztatva",
|
||||
"cancel": "Mégse",
|
||||
"bulk_select": "Kijelölés",
|
||||
"bulk_select_all": "Összes kijelölése",
|
||||
"bulk_n_selected": "{n} kijelölve",
|
||||
"bulk_completed": "{n} feladat elvégezve",
|
||||
"bulk_archived": "{n} feladat archiválva",
|
||||
"completing": "Elvégzés…",
|
||||
"interval": "Intervallum",
|
||||
"warning": "Figyelmeztetés",
|
||||
"last_performed": "Utoljára elvégezve",
|
||||
"next_due": "Következő esedékesség",
|
||||
"days_until_due": "Napok az esedékességig",
|
||||
"avg_duration": "Átl. időtartam",
|
||||
"trigger": "Kiváltó",
|
||||
"trigger_type": "Kiváltó típusa",
|
||||
"threshold_above": "Felső határ",
|
||||
"threshold_below": "Alsó határ",
|
||||
"threshold": "Küszöbérték",
|
||||
"counter": "Számláló",
|
||||
"state_change": "Állapotváltozás",
|
||||
"runtime": "Üzemidő",
|
||||
"runtime_hours": "Cél üzemidő (óra)",
|
||||
"target_value": "Célérték",
|
||||
"baseline": "Kiindulási érték",
|
||||
"target_changes": "Cél változásszám",
|
||||
"for_minutes": "Ennyi ideig (perc)",
|
||||
"time_based": "Időalapú",
|
||||
"sensor_based": "Érzékelőalapú",
|
||||
"manual": "Kézi",
|
||||
"one_time": "Egyszeri",
|
||||
"weekdays": "Hét napjai",
|
||||
"nth_weekday": "A hónap n. hétnapja",
|
||||
"day_of_month": "A hónap napja",
|
||||
"recurrence_on_days": "Ismétlés ezeken a napokon",
|
||||
"recurrence_occurrence": "Előfordulás",
|
||||
"recurrence_weekday": "Hét napja",
|
||||
"recurrence_day": "A hónap napja (1–31)",
|
||||
"recurrence_last_day": "A hónap utolsó napja",
|
||||
"recurrence_business_day": "Csak munkanapokon (hétvégéről visszalépve)",
|
||||
"recurrence_offset": "Eltolás (nap, ±)",
|
||||
"recurrence_offset_help": "A dátum eltolása ±N nappal, pl. -2 = két nappal korábban.",
|
||||
"last_day_month": "A hónap utolsó napja",
|
||||
"last_business_day_month": "Utolsó munkanap",
|
||||
"ord_1": "1.",
|
||||
"ord_2": "2.",
|
||||
"ord_3": "3.",
|
||||
"ord_4": "4.",
|
||||
"ord_5": "5.",
|
||||
"ord_last": "Utolsó",
|
||||
"day_word": "Nap",
|
||||
"interval_value": "Intervallum",
|
||||
"interval_unit": "Egység",
|
||||
"unit_days": "Nap",
|
||||
"unit_weeks": "Hét",
|
||||
"unit_months": "Hónap",
|
||||
"unit_years": "Év",
|
||||
"due_date": "Határidő",
|
||||
"cleaning": "Tisztítás",
|
||||
"inspection": "Ellenőrzés",
|
||||
"replacement": "Csere",
|
||||
"calibration": "Kalibrálás",
|
||||
"service": "Szerviz",
|
||||
"reading": "Leolvasás",
|
||||
"custom": "Egyéni",
|
||||
"history": "Előzmények",
|
||||
"cost": "Költség",
|
||||
"report_button": "Jelentés",
|
||||
"report_title": "Karbantartási jelentés",
|
||||
"report_generated": "Létrehozva",
|
||||
"report_times_done": "Elvégezve",
|
||||
"report_total_cost": "Összköltség",
|
||||
"report_every": "minden {n}. {unit}",
|
||||
"report_notes": "Megjegyzések",
|
||||
"report_col_type": "Típus",
|
||||
"report_col_status": "Állapot",
|
||||
"report_col_schedule": "Ütemezés",
|
||||
"duration": "Időtartam",
|
||||
"both": "Mindkettő",
|
||||
"trigger_val": "Kiváltó érték",
|
||||
"complete_title": "Elvégzés: ",
|
||||
"checklist": "Ellenőrzőlista",
|
||||
"checklist_steps_optional": "Ellenőrzőlista lépései (opcionális)",
|
||||
"checklist_placeholder": "Szűrő tisztítása\nTömítés cseréje\nNyomáspróba",
|
||||
"checklist_help": "Soronként egy lépés. Legfeljebb 100 elem.",
|
||||
"err_too_long": "{field}: túl hosszú (max. {n} karakter)",
|
||||
"err_too_short": "{field}: túl rövid (min. {n} karakter)",
|
||||
"err_value_too_high": "{field}: túl nagy (max. {n})",
|
||||
"err_value_too_low": "{field}: túl kicsi (min. {n})",
|
||||
"err_required": "{field}: kötelező",
|
||||
"err_wrong_type": "{field}: hibás típus (várt: {type})",
|
||||
"err_invalid_choice": "{field}: nem megengedett érték",
|
||||
"err_invalid_value": "{field}: érvénytelen érték",
|
||||
"feat_schedule_time": "Napszakhoz kötött ütemezés",
|
||||
"feat_schedule_time_desc": "A feladatok nem éjfélkor, hanem egy megadott napszakban válnak lejárttá.",
|
||||
"schedule_time_optional": "Esedékesség időpontja (opcionális, ÓÓ:PP)",
|
||||
"schedule_time_help": "Üres = éjfél (alapértelmezés). HA időzóna.",
|
||||
"at_time": "ekkor:",
|
||||
"notes_optional": "Megjegyzések (opcionális)",
|
||||
"cost_optional": "Költség (opcionális)",
|
||||
"duration_minutes": "Időtartam percben (opcionális)",
|
||||
"days": "nap",
|
||||
"day": "nap",
|
||||
"today": "Ma",
|
||||
"d_overdue": "napja lejárt",
|
||||
"no_tasks": "Még nincsenek karbantartási feladatok. Első lépésként hozzon létre egy objektumot.",
|
||||
"no_tasks_short": "Nincs feladat",
|
||||
"no_history": "Még nincsenek előzmények.",
|
||||
"show_all": "Összes megjelenítése",
|
||||
"cost_duration_chart": "Költség és időtartam",
|
||||
"installed": "Telepítve",
|
||||
"confirm_delete_object": "Törli az objektumot az összes feladatával együtt?",
|
||||
"confirm_delete_task": "Törli ezt a feladatot?",
|
||||
"min": "Min",
|
||||
"max": "Max",
|
||||
"save": "Mentés",
|
||||
"saving": "Mentés…",
|
||||
"edit_task": "Feladat szerkesztése",
|
||||
"new_task": "Új karbantartási feladat",
|
||||
"task_name": "Feladat neve",
|
||||
"maintenance_type": "Karbantartás típusa",
|
||||
"priority": "Prioritás",
|
||||
"labels": "Címkék",
|
||||
"labels_placeholder": "pl. biztonság, szezonális, bérlőnek látható",
|
||||
"labels_help": "Vesszővel elválasztott címkék szűréshez és jelentésekhez.",
|
||||
"priority_low": "Alacsony",
|
||||
"priority_normal": "Normál",
|
||||
"priority_high": "Magas",
|
||||
"schedule_type": "Ütemezés típusa",
|
||||
"interval_days": "Intervallum (nap)",
|
||||
"warning_days": "Figyelmeztetési napok",
|
||||
"earliest_completion_days": "Legkorábbi elvégzés (nappal az esedékesség előtt)",
|
||||
"earliest_completion_days_help": "Hagyja üresen, ha bármikor elvégezhető. 0 = csak az esedékesség napján vagy utána.",
|
||||
"last_performed_optional": "Utoljára elvégezve (opcionális)",
|
||||
"interval_anchor": "Intervallum horgonya",
|
||||
"anchor_completion": "Az elvégzés dátumától",
|
||||
"anchor_planned": "A tervezett dátumtól (nincs csúszás)",
|
||||
"edit_object": "Objektum szerkesztése",
|
||||
"name": "Név",
|
||||
"manufacturer_optional": "Gyártó (opcionális)",
|
||||
"model_optional": "Modell (opcionális)",
|
||||
"serial_number_optional": "Sorozatszám (opcionális)",
|
||||
"serial_number_label": "Sorozatszám",
|
||||
"documentation_url_label": "Kézikönyv",
|
||||
"object_notes_label": "Megjegyzések",
|
||||
"sort_due_date": "Határidő",
|
||||
"sort_object": "Objektum neve",
|
||||
"sort_type": "Típus",
|
||||
"sort_task_name": "Feladat neve",
|
||||
"all_objects": "Minden objektum",
|
||||
"tasks_lower": "feladat",
|
||||
"no_tasks_yet": "Még nincs feladat",
|
||||
"add_first_task": "Első feladat hozzáadása",
|
||||
"trigger_configuration": "Kiváltó beállítása",
|
||||
"entity_id": "Entitásazonosító",
|
||||
"comma_separated": "vesszővel elválasztva",
|
||||
"entity_logic": "Entitáslogika",
|
||||
"entity_logic_any": "Bármely entitás kivált",
|
||||
"entity_logic_all": "Minden entitásnak ki kell váltania",
|
||||
"entities": "entitás",
|
||||
"attribute_optional": "Attribútum (opcionális, üres = állapot)",
|
||||
"use_entity_state": "Entitás állapotának használata (attribútum nélkül)",
|
||||
"trigger_above": "Kiváltás e fölött",
|
||||
"trigger_below": "Kiváltás ez alatt",
|
||||
"for_at_least_minutes": "Legalább ennyi ideig (perc)",
|
||||
"safety_interval_days": "Biztonsági intervallum (nap, opcionális)",
|
||||
"safety_interval": "Biztonsági intervallum (opcionális)",
|
||||
"delta_mode": "Delta mód",
|
||||
"from_state_optional": "Kezdő állapot (opcionális)",
|
||||
"to_state_optional": "Célállapot (opcionális)",
|
||||
"documentation_url_optional": "Dokumentáció URL (opcionális)",
|
||||
"object_notes_optional": "Megjegyzések (opcionális)",
|
||||
"nfc_tag_id_optional": "NFC címke azonosító (opcionális)",
|
||||
"nfc_tags_empty_help": "Még nincs NFC címke regisztrálva a Home Assistantban.",
|
||||
"nfc_tags_open_settings": "Címkebeállítások megnyitása",
|
||||
"nfc_tags_refresh": "Frissítés",
|
||||
"environmental_entity_optional": "Környezeti érzékelő (opcionális)",
|
||||
"environmental_entity_helper": "pl. sensor.outdoor_temperature — a környezeti feltételek alapján igazítja az intervallumot",
|
||||
"environmental_attribute_optional": "Környezeti attribútum (opcionális)",
|
||||
"nfc_tag_id": "NFC címke azonosító",
|
||||
"nfc_linked": "NFC címke hozzárendelve",
|
||||
"nfc_link_hint": "Kattintson az NFC címke hozzárendeléséhez",
|
||||
"responsible_user": "Felelős felhasználó",
|
||||
"shared_with": "Megosztva (rotáció)",
|
||||
"shared_with_help": "Válasszon több személyt a feladat megosztásához; a felelős minden elvégzés után váltakozik.",
|
||||
"rotation_strategy": "Rotáció",
|
||||
"rotation_none": "Nincs rotáció",
|
||||
"rotation_round_robin": "Körforgás",
|
||||
"rotation_least_completed": "Legkevesebbet végezte",
|
||||
"rotation_random": "Véletlenszerű",
|
||||
"no_user_assigned": "(Nincs felhasználó hozzárendelve)",
|
||||
"all_users": "Minden felhasználó",
|
||||
"my_tasks": "Saját feladataim",
|
||||
"tab_calendar": "Naptár",
|
||||
"cal_no_events": "Nincs karbantartás",
|
||||
"cal_window_7": "7 nap",
|
||||
"cal_window_14": "14 nap",
|
||||
"cal_window_30": "30 nap",
|
||||
"cal_window_365": "1 év",
|
||||
"cal_every_n_days": "{n} naponta",
|
||||
"cal_source_time": "Időalapú",
|
||||
"cal_source_time_adaptive": "Időalapú (adaptív)",
|
||||
"cal_source_sensor": "Érzékelőalapú",
|
||||
"cal_predicted": "előrejelzett",
|
||||
"cal_confidence_high": "nagy megbízhatóság",
|
||||
"cal_confidence_medium": "közepes megbízhatóság",
|
||||
"cal_confidence_low": "alacsony megbízhatóság",
|
||||
"budget_monthly": "Havi költségkeret",
|
||||
"budget_yearly": "Éves költségkeret",
|
||||
"groups": "Csoportok",
|
||||
"new_group": "Új csoport",
|
||||
"edit_group": "Csoport szerkesztése",
|
||||
"no_groups": "Még nincsenek csoportok",
|
||||
"delete_group": "Csoport törlése",
|
||||
"delete_group_confirm": "Törli a(z) „{name}” csoportot?",
|
||||
"group_select_tasks": "Feladatok kiválasztása",
|
||||
"group_name_required": "A név megadása kötelező",
|
||||
"description_optional": "Leírás (opcionális)",
|
||||
"selected": "Kiválasztva",
|
||||
"loading_chart": "Diagramadatok betöltése…",
|
||||
"hide_outliers": "Kiugró értékek elrejtése (érzékelőhibák)",
|
||||
"was_maintenance_needed": "Szükség volt erre a karbantartásra?",
|
||||
"feedback_needed": "Szükséges volt",
|
||||
"feedback_not_needed": "Nem volt szükséges",
|
||||
"feedback_not_sure": "Nem biztos",
|
||||
"suggested_interval": "Javasolt intervallum",
|
||||
"apply_suggestion": "Alkalmaz",
|
||||
"reanalyze": "Újraelemzés",
|
||||
"reanalyze_result": "Új elemzés",
|
||||
"reanalyze_insufficient_data": "Nincs elég adat ajánlás készítéséhez",
|
||||
"data_points": "adatpont",
|
||||
"dismiss_suggestion": "Elvetés",
|
||||
"confidence_low": "Alacsony",
|
||||
"confidence_medium": "Közepes",
|
||||
"confidence_high": "Magas",
|
||||
"recommended": "ajánlott",
|
||||
"seasonal_awareness": "Szezonális igazodás",
|
||||
"edit_seasonal_overrides": "Szezonális tényezők szerkesztése",
|
||||
"seasonal_overrides_title": "Szezonális tényezők (felülbírálat)",
|
||||
"seasonal_overrides_hint": "Tényező havonta (0,1–5,0). Üres = automatikusan tanult.",
|
||||
"seasonal_override_invalid": "Érvénytelen érték",
|
||||
"seasonal_override_range": "A tényezőnek 0,1 és 5,0 között kell lennie",
|
||||
"clear_all": "Összes törlése",
|
||||
"seasonal_chart_title": "Szezonális tényezők",
|
||||
"seasonal_learned": "Tanult",
|
||||
"seasonal_manual": "Kézi",
|
||||
"month_jan": "Jan",
|
||||
"month_feb": "Febr",
|
||||
"month_mar": "Márc",
|
||||
"month_apr": "Ápr",
|
||||
"month_may": "Máj",
|
||||
"month_jun": "Jún",
|
||||
"month_jul": "Júl",
|
||||
"month_aug": "Aug",
|
||||
"month_sep": "Szept",
|
||||
"month_oct": "Okt",
|
||||
"month_nov": "Nov",
|
||||
"month_dec": "Dec",
|
||||
"sensor_prediction": "Érzékelő-előrejelzés",
|
||||
"degradation_trend": "Trend",
|
||||
"trend_rising": "Emelkedő",
|
||||
"trend_falling": "Csökkenő",
|
||||
"trend_stable": "Stabil",
|
||||
"trend_insufficient_data": "Nincs elég adat",
|
||||
"days_until_threshold": "Napok a küszöbértékig",
|
||||
"threshold_exceeded": "Küszöbérték túllépve",
|
||||
"environmental_adjustment": "Környezeti tényező",
|
||||
"sensor_prediction_urgency": "Az érzékelő ~{days} napon belül jelzi a küszöbérték elérését",
|
||||
"day_short": "nap",
|
||||
"weibull_reliability_curve": "Megbízhatósági görbe",
|
||||
"weibull_failure_probability": "Meghibásodási valószínűség",
|
||||
"weibull_r_squared": "Illeszkedés R²",
|
||||
"beta_early_failures": "Korai meghibásodások",
|
||||
"beta_random_failures": "Véletlen meghibásodások",
|
||||
"beta_wear_out": "Elhasználódás",
|
||||
"beta_highly_predictable": "Jól előrejelezhető",
|
||||
"confidence_interval": "Konfidenciaintervallum",
|
||||
"confidence_conservative": "Konzervatív",
|
||||
"confidence_aggressive": "Optimista",
|
||||
"current_interval_marker": "Jelenlegi intervallum",
|
||||
"recommended_marker": "Ajánlott",
|
||||
"characteristic_life": "Karakterisztikus élettartam",
|
||||
"chart_mini_sparkline": "Trendvonal",
|
||||
"chart_history": "Költség- és időtartam-előzmények",
|
||||
"chart_seasonal": "Szezonális tényezők, 12 hónap",
|
||||
"chart_weibull": "Weibull megbízhatósági görbe",
|
||||
"chart_sparkline": "Érzékelő kiváltóérték-diagram",
|
||||
"days_progress": "Napok előrehaladása",
|
||||
"qr_code": "QR-kód",
|
||||
"qr_generating": "QR-kód generálása…",
|
||||
"qr_error": "A QR-kód generálása nem sikerült.",
|
||||
"qr_error_no_url": "Nincs HA URL beállítva. Adjon meg külső vagy belső URL-t a Beállítások → Rendszer → Hálózat alatt.",
|
||||
"save_error": "A mentés nem sikerült. Próbálja újra.",
|
||||
"qr_print": "Nyomtatás",
|
||||
"qr_download": "SVG letöltése",
|
||||
"qr_action": "Művelet beolvasáskor",
|
||||
"qr_action_view": "Karbantartási adatok megtekintése",
|
||||
"qr_action_complete": "Karbantartás elvégzettként jelölése",
|
||||
"qr_url_mode": "Hivatkozás típusa",
|
||||
"qr_mode_companion": "Companion alkalmazás",
|
||||
"qr_mode_local": "Helyi (mDNS)",
|
||||
"qr_mode_server": "Szerver URL",
|
||||
"overview": "Áttekintés",
|
||||
"analysis": "Elemzés",
|
||||
"recent_activities": "Legutóbbi tevékenységek",
|
||||
"search_notes": "Keresés a megjegyzésekben",
|
||||
"avg_cost": "Átl. költség",
|
||||
"no_advanced_features": "Nincsenek engedélyezett speciális funkciók",
|
||||
"no_advanced_features_hint": "Az elemzési adatok megjelenítéséhez engedélyezze az „Adaptív ütemezés” vagy a „Szezonális minták” funkciót az integráció beállításaiban.",
|
||||
"analysis_not_enough_data": "Még nincs elég adat az elemzéshez.",
|
||||
"analysis_not_enough_data_hint": "A Weibull-elemzéshez legalább 5 elvégzett karbantartás szükséges; a szezonális minták havi 6+ adatpont után válnak láthatóvá.",
|
||||
"analysis_manual_task_hint": "Az intervallum nélküli kézi feladatok nem termelnek elemzési adatot.",
|
||||
"completions": "elvégzés",
|
||||
"current": "Jelenlegi",
|
||||
"shorter": "Rövidebb",
|
||||
"longer": "Hosszabb",
|
||||
"normal": "Normál",
|
||||
"disabled": "Letiltva",
|
||||
"compound_logic": "Összetett logika",
|
||||
"compound": "Összetett (több feltétel)",
|
||||
"compound_logic_and": "ÉS — minden feltételnek teljesülnie kell",
|
||||
"compound_logic_or": "VAGY — bármely feltétel kivált",
|
||||
"compound_help": "Több érzékelőfeltétel egyetlen kiváltóvá kombinálása.",
|
||||
"compound_no_conditions": "Még nincs feltétel — adjon hozzá legalább egyet.",
|
||||
"compound_add_condition": "Feltétel hozzáadása",
|
||||
"compound_condition": "Feltétel",
|
||||
"compound_remove_condition": "Feltétel eltávolítása",
|
||||
"card_title": "Cím",
|
||||
"card_show_header": "Fejléc megjelenítése statisztikákkal",
|
||||
"card_show_actions": "Műveletgombok megjelenítése",
|
||||
"card_compact": "Kompakt mód",
|
||||
"card_max_items": "Max. elemszám (0 = mind)",
|
||||
"card_filter_status": "Szűrés állapot szerint",
|
||||
"card_filter_status_help": "Üres = minden állapot megjelenik.",
|
||||
"card_filter_objects": "Szűrés objektumok szerint",
|
||||
"card_filter_objects_help": "Üres = minden objektum megjelenik.",
|
||||
"card_filter_entities": "Szűrés entitások szerint (entity_id-k)",
|
||||
"card_filter_entities_help": "Válasszon sensor / binary_sensor entitásokat ebből az integrációból. Üres = mind.",
|
||||
"card_loading_objects": "Objektumok betöltése…",
|
||||
"card_load_error": "Az objektumok betöltése nem sikerült — ellenőrizze a WebSocket-kapcsolatot.",
|
||||
"card_no_tasks_title": "Még nincsenek karbantartási feladatok",
|
||||
"card_no_tasks_cta": "→ Hozzon létre egyet a Karbantartás panelen",
|
||||
"no_objects": "Még nincsenek objektumok.",
|
||||
"action_error": "A művelet nem sikerült. Próbálja újra.",
|
||||
"area_id_optional": "Terület (opcionális)",
|
||||
"installation_date_optional": "Telepítés dátuma (opcionális)",
|
||||
"warranty_expiry_optional": "Garancia lejárta (opcionális)",
|
||||
"warranty": "Garancia",
|
||||
"warranty_valid_until": "érvényes eddig: {date}",
|
||||
"warranty_expires_in": "{days} nap múlva lejár",
|
||||
"warranty_expired": "lejárt",
|
||||
"cal_past_windows": "Korábbi időszakok",
|
||||
"cal_forward_windows": "Jövőbeli időszakok",
|
||||
"history_edit_title": "Előzménybejegyzés szerkesztése",
|
||||
"history_edit_timestamp": "Időbélyeg",
|
||||
"manufacturer": "Gyártó",
|
||||
"model": "Modell",
|
||||
"area": "Terület",
|
||||
"actions": "Műveletek",
|
||||
"view_mode_label": "Nézet",
|
||||
"view_cards": "Kártyanézet",
|
||||
"view_table": "Táblázatnézet",
|
||||
"objects_table_columns_label": "Objektumtáblázat oszlopai",
|
||||
"objects_table_columns_hint": "Válassza ki, mely oszlopok jelenjenek meg az objektumok táblázatnézetében.",
|
||||
"custom_icon_optional": "Ikon (opcionális, pl. mdi:wrench)",
|
||||
"task_enabled": "Feladat engedélyezve",
|
||||
"skip_reason_prompt": "Kihagyja ezt a feladatot?",
|
||||
"reason_optional": "Indoklás (opcionális)",
|
||||
"reset_date_prompt": "Elvégzettként jelöli a feladatot?",
|
||||
"reset_date_optional": "Utolsó elvégzés dátuma (opcionális, alapértelmezés: ma)",
|
||||
"notes_label": "Megjegyzések",
|
||||
"documentation_label": "Dokumentáció",
|
||||
"no_nfc_tag": "— Nincs címke —",
|
||||
"dashboard": "Irányítópult",
|
||||
"tab_today": "Ma",
|
||||
"palette_placeholder": "Objektumok és feladatok keresése…",
|
||||
"palette_no_results": "Nincs találat",
|
||||
"palette_hint": "↑↓ navigálás · Enter megnyitás · Esc bezárás",
|
||||
"today_all_caught_up": "Minden rendben! Ezen a héten nincs esedékes feladat.",
|
||||
"today_overdue": "Lejárt",
|
||||
"today_due_today": "Ma esedékes",
|
||||
"today_this_week": "Ezen a héten",
|
||||
"settings": "Beállítások",
|
||||
"settings_features": "Speciális funkciók",
|
||||
"settings_features_desc": "Speciális funkciók be- és kikapcsolása. A kikapcsolás elrejti őket a felületről, de nem töröl adatot.",
|
||||
"feat_adaptive": "Adaptív ütemezés",
|
||||
"feat_adaptive_desc": "Optimális intervallumok tanulása a karbantartási előzményekből",
|
||||
"feat_predictions": "Érzékelő-előrejelzések",
|
||||
"feat_predictions_desc": "Kiváltási dátumok előrejelzése az érzékelőértékek romlásából",
|
||||
"feat_seasonal": "Szezonális igazítások",
|
||||
"feat_seasonal_desc": "Intervallumok igazítása szezonális minták alapján",
|
||||
"feat_environmental": "Környezeti korreláció",
|
||||
"feat_environmental_desc": "Intervallumok korrelálása hőmérséklettel/páratartalommal",
|
||||
"feat_budget": "Költségkeret követése",
|
||||
"feat_budget_desc": "Havi és éves karbantartási kiadások követése",
|
||||
"feat_groups": "Feladatcsoportok",
|
||||
"feat_groups_desc": "Feladatok logikai csoportokba rendezése",
|
||||
"feat_checklists": "Ellenőrzőlisták",
|
||||
"feat_checklists_desc": "Többlépéses eljárások a feladatok elvégzéséhez",
|
||||
"settings_general": "Általános",
|
||||
"settings_default_warning": "Alapértelmezett figyelmeztetési napok",
|
||||
"settings_panel_enabled": "Oldalsáv-panel",
|
||||
"settings_panel_title": "Oldalsáv-panel címe",
|
||||
"settings_notifications": "Értesítések",
|
||||
"settings_notify_service": "Értesítési szolgáltatás",
|
||||
"test_notification": "Tesztértesítés",
|
||||
"send_test": "Teszt küldése",
|
||||
"testing": "Küldés…",
|
||||
"test_notification_success": "Tesztértesítés elküldve",
|
||||
"test_notification_failed": "A tesztértesítés nem sikerült",
|
||||
"settings_notify_due_soon": "Értesítés, ha hamarosan esedékes",
|
||||
"settings_notify_overdue": "Értesítés lejáratkor",
|
||||
"settings_notify_triggered": "Értesítés kiváltáskor",
|
||||
"settings_interval_hours": "Ismétlési intervallum (óra, 0 = egyszer)",
|
||||
"settings_quiet_hours": "Csendes órák",
|
||||
"settings_quiet_start": "Kezdete",
|
||||
"settings_quiet_end": "Vége",
|
||||
"settings_max_per_day": "Max. értesítés naponta (0 = korlátlan)",
|
||||
"settings_bundling": "Értesítések összevonása",
|
||||
"settings_bundle_threshold": "Összevonási küszöb",
|
||||
"settings_reminder_leads": "Extra emlékeztetők (nappal az esedékesség előtt)",
|
||||
"settings_reminder_leads_hint": "Vesszővel elválasztott napok, pl. 14, 3, 0 — minden egyező napon egy extra emlékeztető megy ki. Üres = kikapcsolva.",
|
||||
"settings_actions": "Mobil műveletgombok",
|
||||
"settings_action_complete": "„Elvégzés” gomb megjelenítése",
|
||||
"settings_action_skip": "„Kihagyás” gomb megjelenítése",
|
||||
"settings_action_snooze": "„Szundi” gomb megjelenítése",
|
||||
"settings_weekly_digest": "Heti összefoglaló",
|
||||
"settings_weekly_digest_hint": "Egyetlen összefoglaló értesítés hétfő reggel, ha vannak esedékes feladatok.",
|
||||
"settings_warranty_reminder": "Garancialejárati emlékeztető",
|
||||
"settings_warranty_reminder_days": "Nappal a lejárat előtt",
|
||||
"settings_warranty_reminder_hint": "Egyszeri értesítés, amikor egy objektum garanciája ennyi napra van a lejárattól.",
|
||||
"settings_snooze_hours": "Szundi időtartama (óra)",
|
||||
"settings_budget": "Költségkeret",
|
||||
"settings_currency": "Pénznem",
|
||||
"settings_budget_monthly": "Havi költségkeret",
|
||||
"settings_budget_yearly": "Éves költségkeret",
|
||||
"settings_budget_alerts": "Költségkeret-riasztások",
|
||||
"settings_budget_threshold": "Riasztási küszöb (%)",
|
||||
"settings_import_export": "Importálás / Exportálás",
|
||||
"settings_export_json": "JSON exportálása",
|
||||
"settings_export_yaml": "YAML exportálása",
|
||||
"settings_export_csv": "CSV exportálása",
|
||||
"settings_import_csv": "CSV importálása",
|
||||
"settings_import_placeholder": "Illessze be ide a JSON vagy CSV tartalmat…",
|
||||
"settings_import_btn": "Importálás",
|
||||
"settings_import_success": "{count} objektum sikeresen importálva.",
|
||||
"settings_export_success": "Export letöltve.",
|
||||
"settings_saved": "Beállítás mentve.",
|
||||
"settings_include_history": "Előzményekkel együtt",
|
||||
"settings_export_selection": "Csak a kiválasztott objektumok (opcionális)",
|
||||
"settings_docs_archive": "Dokumentumarchívum (fájlokkal)",
|
||||
"settings_docs_archive_hint": "A JSON/YAML/CSV export csak a beállításokat tartalmazza. Ez a ZIP a feltöltött fájlok tartalmát is magában foglalja, így a visszaállítás teljes.",
|
||||
"settings_docs_export_btn": "Dokumentum-ZIP letöltése",
|
||||
"settings_docs_import_btn": "Dokumentum-ZIP visszaállítása",
|
||||
"settings_docs_import_success": "Visszaállítva: {blobs} fájl, {docs} dokumentum",
|
||||
"sort_alphabetical": "Ábécésorrend",
|
||||
"sort_due_soonest": "Leghamarabb esedékes",
|
||||
"sort_task_count": "Feladatok száma",
|
||||
"sort_area": "Terület",
|
||||
"sort_assigned_user": "Hozzárendelt felhasználó",
|
||||
"sort_group": "Csoport",
|
||||
"groupby_none": "Nincs csoportosítás",
|
||||
"groupby_area": "Terület szerint",
|
||||
"groupby_group": "Csoport szerint",
|
||||
"groupby_user": "Felhasználó szerint",
|
||||
"filter_label": "Szűrő",
|
||||
"user_label": "Felhasználó",
|
||||
"sort_label": "Rendezés",
|
||||
"group_by_label": "Csoportosítás",
|
||||
"state_value_help": "A HA állapotértékét használja (általában kisbetűs, pl. „on”/„off”). A kis- és nagybetűk mentéskor normalizálódnak.",
|
||||
"target_changes_help": "Az egyező átmenetek száma a kiváltás előtt (alapértelmezés: 1).",
|
||||
"qr_print_title": "QR-kódok nyomtatása",
|
||||
"qr_print_desc": "Nyomtatható oldal QR-kódokkal — vágja ki és ragassza fel a berendezésekre.",
|
||||
"qr_print_load": "Objektumok betöltése",
|
||||
"qr_print_filter": "Szűrő",
|
||||
"qr_print_objects": "Objektumok",
|
||||
"qr_print_actions": "Műveletek",
|
||||
"qr_print_url_mode": "Hivatkozás típusa",
|
||||
"qr_print_estimate": "Becsült QR-kódok száma",
|
||||
"qr_print_over_limit": "a korlát 200, szűkítse a szűrőt",
|
||||
"qr_print_generate": "QR-kódok generálása",
|
||||
"qr_print_generating": "Generálás…",
|
||||
"qr_print_ready": "QR-kódok készen",
|
||||
"qr_print_print_button": "Nyomtatás",
|
||||
"qr_print_empty": "Nincs mit generálni",
|
||||
"qr_action_skip": "Kihagyás",
|
||||
"vacation_title": "Nyaralási mód",
|
||||
"vacation_active": "aktív",
|
||||
"vacation_ended": "véget ért",
|
||||
"vacation_desc": "Tervezzen nyaralást: az értesítések szünetelnek az időszak alatt, plusz egy puffernyi napig. Egyes feladatokat kivételként visszakapcsolhat.",
|
||||
"vacation_enable": "Nyaralási mód bekapcsolása",
|
||||
"vacation_start": "Kezdete",
|
||||
"vacation_end": "Vége",
|
||||
"vacation_buffer": "Puffer (nap)",
|
||||
"vacation_exempt_title": "Értesítés a nyaralás alatt is",
|
||||
"vacation_exempt_desc": "Válassza ki azokat a feladatokat, amelyek a nyaralás alatt is értesítsenek (pl. kritikus medencekémia).",
|
||||
"vacation_load_tasks": "Feladatok betöltése",
|
||||
"vacation_preview_btn": "Előnézet megjelenítése",
|
||||
"vacation_preview_affected": "érintett feladat",
|
||||
"vacation_event_due_soon": "hamarosan esedékessé válik",
|
||||
"vacation_event_overdue": "lejárttá válik",
|
||||
"vacation_event_triggered_est": "érzékelős kiváltás lehetséges",
|
||||
"vacation_sensor_based": "(érzékelőalapú)",
|
||||
"vacation_action_notify": "Értesítsen mégis",
|
||||
"vacation_action_unsilence": "Némítás újra",
|
||||
"vacation_marked_complete": "Elvégzettként jelölve",
|
||||
"vacation_marked_skip": "Kihagyva",
|
||||
"vacation_end_now": "Nyaralás befejezése most",
|
||||
"add": "Hozzáadás",
|
||||
"show_stats": "Statisztikák és grafikonok",
|
||||
"hide_stats": "Statisztikák elrejtése",
|
||||
"adaptive_no_data": "Még nincs elég elvégzési előzmény az adaptív elemzéshez. Végezze el a feladatot még néhányszor az intervallumjavaslatok és a megbízhatósági diagramok feloldásához.",
|
||||
"suggestion_applied": "Javasolt intervallum alkalmazva",
|
||||
"vacation_mode": "Nyaralási mód",
|
||||
"vacation_status_active": "Most aktív",
|
||||
"vacation_status_scheduled": "Ütemezve",
|
||||
"vacation_status_inactive": "Inaktív",
|
||||
"vacation_end_now_confirm": "Azonnal befejezi a nyaralást?",
|
||||
"vacation_exempt_count": "kivétel",
|
||||
"vacation_advanced": "Speciális…",
|
||||
"vacation_open_panel": "Megnyitás a panelen",
|
||||
"enable": "Engedélyezés",
|
||||
"saved": "Mentve",
|
||||
"budget_monthly_set": "Havi keret beállítása",
|
||||
"budget_yearly_set": "Éves keret beállítása",
|
||||
"budget_advanced": "Pénznem, riasztások…",
|
||||
"budget_open_panel": "Megnyitás a panelen",
|
||||
"groups_empty": "Még nincsenek csoportok.",
|
||||
"group_new_placeholder": "Csoport hozzáadása…",
|
||||
"group_delete_confirm": "Törli a(z) „{name}” csoportot?",
|
||||
"groups_manage_tasks": "Feladat-hozzárendelések kezelése…",
|
||||
"groups_open_panel": "Megnyitás a panelen",
|
||||
"unassigned": "Nincs hozzárendelve",
|
||||
"no_area": "Nincs terület",
|
||||
"has_overdue": "Van lejárt feladata",
|
||||
"object": "Objektum",
|
||||
"settings_panel_access": "Panel-hozzáférés",
|
||||
"settings_panel_access_desc": "Az adminok mindig teljes hozzáféréssel rendelkeznek. Ha a létrehozást, szerkesztést és törlést adott nem admin felhasználókra bízná, kapcsolja be ezt, és válassza ki őket lent — mindenki más csak az Elvégzés és a Kihagyás gombot látja.",
|
||||
"settings_operator_write": "A kiválasztott felhasználók létrehozhatnak, szerkeszthetnek és törölhetnek",
|
||||
"settings_operator_write_desc": "Ki: csak adminok módosíthatnak tartalmat. Be: a lent kiválasztott felhasználók is teljes hozzáférést kapnak.",
|
||||
"no_non_admin_users": "Nem található nem admin felhasználó. Vegyen fel néhányat a Beállítások → Személyek alatt.",
|
||||
"owner_label": "Tulajdonos",
|
||||
"feat_completion_actions": "Elvégzési műveletek",
|
||||
"feat_completion_actions_desc": "Feladatonkénti HA művelet elvégzéskor + gyorselvégző QR előre beállított értékekkel.",
|
||||
"on_complete_action_title": "Elvégzéskor: HA művelet indítása (opcionális)",
|
||||
"on_complete_action_desc": "HA szolgáltatást hív meg a feladat elvégzésekor — pl. számláló nullázása az eszközön.",
|
||||
"on_complete_action_service": "Szolgáltatás",
|
||||
"on_complete_action_target": "Cél entitás",
|
||||
"on_complete_action_target_hint": "Megjegyzés: az entitás doménjének egyeznie kell a szolgáltatással — pl. a „button.press” csak button.* entitáson működik, a „counter.increment” csak counter.* entitáson, az „input_button.press” csak input_button.* entitáson stb. Eltérés esetén a művelet csendben meghiúsul (a HA naplóban: „Referenced entities ... missing or not currently available”).",
|
||||
"on_complete_action_data": "Adatok (JSON, opcionális)",
|
||||
"on_complete_action_test": "Konfiguráció ellenőrzése",
|
||||
"on_complete_action_test_success": "✓ A konfiguráció érvényes (a művelet csak a feladat elvégzésekor fut le)",
|
||||
"on_complete_action_test_failed": "Sikertelen",
|
||||
"quick_complete_defaults_title": "Gyorselvégzés alapértékei (QR-beolvasáshoz, opcionális)",
|
||||
"quick_complete_defaults_desc": "Előre beállított értékek a gyorselvégző QR-beolvasásokhoz. Ezek nélkül a QR az elvégzési párbeszédablakot nyitja meg.",
|
||||
"quick_complete_defaults_notes": "Megjegyzések",
|
||||
"quick_complete_defaults_cost": "Költség",
|
||||
"quick_complete_defaults_duration": "Időtartam (perc)",
|
||||
"quick_complete_defaults_feedback_none": "Nincs visszajelzés",
|
||||
"quick_complete_defaults_feedback_needed": "Szükséges volt",
|
||||
"quick_complete_defaults_feedback_not_needed": "Nem volt szükséges",
|
||||
"quick_complete_success": "Gyorsan elvégzettként jelölve",
|
||||
"show_all_objects": "Minden objektum megjelenítése",
|
||||
"show_all_tasks": "Szűrő törlése — minden feladat megjelenítése",
|
||||
"filter_to_overdue": "Szűrés csak a lejárt feladatokra",
|
||||
"filter_to_due_soon": "Szűrés csak a hamarosan esedékes feladatokra",
|
||||
"filter_to_triggered": "Szűrés csak az aktivált feladatokra",
|
||||
"open_task": "Feladat megnyitása",
|
||||
"show_details": "Előzmények és statisztikák",
|
||||
"hide_details": "Részletek elrejtése",
|
||||
"history_empty": "Még nincsenek előzmények.",
|
||||
"history_edit_button": "Bejegyzés szerkesztése",
|
||||
"total_cost": "Összköltség",
|
||||
"times_performed": "Elvégezve",
|
||||
"older_entries": "régebbi",
|
||||
"open_in_panel": "Megnyitás a Karbantartás panelen",
|
||||
"skip_reason": "Kihagyás oka (opcionális)",
|
||||
"reset_to_date": "Utolsó elvégzés visszaállítása erre:",
|
||||
"delete_task_confirm": "Törli a feladatot az előzményeivel együtt?",
|
||||
"delete_object_confirm": "Törli az objektumot az összes feladatával együtt?",
|
||||
"loading": "Betöltés…",
|
||||
"archive": "Archiválás",
|
||||
"undo": "Visszavonás",
|
||||
"task_archived": "Feladat archiválva",
|
||||
"object_archived": "Objektum archiválva",
|
||||
"unarchive": "Archiválás visszavonása",
|
||||
"archived": "Archiválva",
|
||||
"show_archived": "Archiváltak megjelenítése",
|
||||
"hide_archived": "Archiváltak elrejtése",
|
||||
"confirm_archive_object": "Archiválja az objektumot és a feladatait? Megtartják előzményeiket, és később visszaállíthatók.",
|
||||
"settings_archive": "Archiválás és megőrzés",
|
||||
"settings_archive_desc": "Elvégzett egyszeri feladatok kivezetése törlés nélkül. Az archivált elemek rejtettek és inaktívak, de megtartják előzményeiket és költségeiket.",
|
||||
"settings_archive_oneoff_days": "Elvégzett egyszeri feladatok automatikus archiválása ennyi nap után (0 = ki)",
|
||||
"settings_delete_archived_oneoff_days": "Archivált egyszeri feladatok automatikus törlése ennyi nap után (0 = soha)",
|
||||
"archive_object": "Objektum archiválása",
|
||||
"unarchive_object": "Objektum visszaállítása",
|
||||
"documents": "Dokumentumok",
|
||||
"documents_empty": "Még nincsenek dokumentumok.",
|
||||
"doc_upload": "Fájl feltöltése",
|
||||
"doc_uploading": "Feltöltés…",
|
||||
"doc_add_link": "Hivatkozás hozzáadása",
|
||||
"doc_link_url": "URL (https://…)",
|
||||
"doc_link_title": "Cím (opcionális)",
|
||||
"doc_open": "Megnyitás",
|
||||
"doc_delete_confirm": "Törli a(z) „{name}” elemet?",
|
||||
"doc_too_large": "A fájl túl nagy (max. 25 MB).",
|
||||
"doc_upload_failed": "A feltöltés nem sikerült.",
|
||||
"completion_photo_optional": "Fotó az elvégzésről (opcionális)",
|
||||
"add_photo": "Fotó hozzáadása",
|
||||
"uploading": "Feltöltés…",
|
||||
"remove": "Eltávolítás",
|
||||
"doc_deduped": "Már máshol is tárolva — megosztott, nem foglal extra helyet.",
|
||||
"doc_dup_in_object": "Ez a fájl már csatolva van ehhez az objektumhoz.",
|
||||
"doc_link_invalid": "Csak http/https hivatkozás engedélyezett.",
|
||||
"doc_cat_manual": "Kézikönyv",
|
||||
"doc_cat_warranty": "Garancia",
|
||||
"doc_cat_invoice": "Számla",
|
||||
"doc_cat_spare_parts": "Pótalkatrészek",
|
||||
"doc_cat_photo": "Fotó",
|
||||
"doc_cat_other": "Egyéb",
|
||||
"doc_link_badge": "Hivatkozás",
|
||||
"doc_storage_title": "Dokumentumtárhely",
|
||||
"doc_storage_saved": "Deduplikációval megtakarítva",
|
||||
"doc_storage_refresh": "Frissítés",
|
||||
"doc_download": "Letöltés",
|
||||
"doc_close": "Bezárás",
|
||||
"doc_camera": "Fotó készítése",
|
||||
"doc_drop_hint": "Húzza ide a fájlokat",
|
||||
"doc_task_none": "Ehhez a feladathoz nincs dokumentum csatolva.",
|
||||
"doc_link_existing": "Dokumentum hozzárendelése…",
|
||||
"doc_attach": "Hozzárendelés",
|
||||
"doc_unlink": "Leválasztás",
|
||||
"doc_page": "Oldal",
|
||||
"chart_range_7d": "7 nap",
|
||||
"chart_range_30d": "30 nap",
|
||||
"chart_range_90d": "90 nap",
|
||||
"chart_range_1y": "1 év",
|
||||
"chart_since_service": "az utolsó szerviz óta",
|
||||
"chart_no_stats": "Nincs hosszú távú statisztika ehhez az entitáshoz — csak a karbantartási események értékei láthatók",
|
||||
"auto_complete_on_recovery": "Automatikus elvégzés, ha az érzékelő helyreáll",
|
||||
"auto_complete_on_recovery_help": "Elvégzést rögzít (beállítja az utolsó elvégzést), amikor a kiváltás magától megszűnik — pl. só utántöltve, szűrő kicserélve.",
|
||||
"doc_search": "Dokumentumok keresése…",
|
||||
"doc_search_none": "Nincs egyező dokumentum",
|
||||
"link_device_optional": "Meglévő eszközhöz kapcsolás (opcionális)",
|
||||
"parent_object_optional": "Szülőobjektum (opcionális)",
|
||||
"parent_none": "(Nincs szülő)",
|
||||
"paused": "Szüneteltetve",
|
||||
"pause_object": "Szüneteltetés",
|
||||
"resume_object": "Folytatás",
|
||||
"pause_until_prompt": "Az objektum ütemezéseinek befagyasztása — semmi nem válik esedékessé, és nincs értesítés a folytatásig. Megadhat automatikus folytatási dátumot is.",
|
||||
"pause_until_label": "Folytatás ekkor (opcionális)",
|
||||
"object_paused": "Objektum szüneteltetve",
|
||||
"object_resumed": "Objektum folytatva — az ütemezések újraindultak",
|
||||
"object_paused_badge": "Szüneteltetve",
|
||||
"paused_until_label": "eddig:",
|
||||
"replace_object": "Csere…",
|
||||
"replace_object_prompt": "Az objektum kivezetése és utód létrehozása. Az előzmények és a költségek archiválva a régin maradnak; a feladatok és a dokumentumok átkerülnek az újra, a számlálók nulláról indulnak.",
|
||||
"replace_name_label": "Utód neve",
|
||||
"object_replaced": "Objektum lecserélve — utód létrehozva",
|
||||
"reading_unit_label": "Leolvasás mértékegysége (pl. kWh, m³)",
|
||||
"reading_unit_help": "A rögzített érték mellett jelenik meg a feladat elvégzésekor.",
|
||||
"reading_value_label": "Leolvasott érték",
|
||||
"reading_label": "Leolvasás",
|
||||
"settings_templates_label": "Sablongaléria",
|
||||
"settings_templates_hint": "Vegye ki a pipát a sosem használt sablonoknál — így eltűnnek a „Sablonból” választókból (panel és konfigurációs folyamat). Semmi más nem változik; bármikor újra engedélyezheti őket.",
|
||||
"worksheet": "Munkalap",
|
||||
"worksheet_scan_view": "Olvassa be a feladat megnyitásához",
|
||||
"worksheet_scan_complete": "Olvassa be az elvégzéshez",
|
||||
"worksheet_manual_excerpt": "Kézikönyv-részlet",
|
||||
"worksheet_pages": "oldal",
|
||||
"worksheet_printed": "Nyomtatva",
|
||||
"worksheet_never": "Soha",
|
||||
"card_all_caught_up": "Minden rendben — semmi nem igényel figyelmet",
|
||||
"postpone": "Halasztás",
|
||||
"postpone_date_prompt": "Melyik dátumra halasztja ezt az alkalmat?",
|
||||
"postpone_date_label": "Új határidő",
|
||||
"postponed": "Elhalasztva",
|
||||
"postponed_to": "Elhalasztva erre:",
|
||||
"season_window_label": "Szezonális időablak (hónapok)",
|
||||
"season_window_hint": "Csak a kiválasztott hónapokban esedékes; a szezonon kívüli dátumok a következő aktív hónapra tolódnak. Nincs = egész évben.",
|
||||
"series_end_label": "Befejeződik",
|
||||
"series_end_never": "Soha (végtelen ismétlés)",
|
||||
"series_end_after_count": "Adott számú alkalom után",
|
||||
"series_end_until": "Egy adott dátumon",
|
||||
"series_end_count_label": "Alkalmak száma",
|
||||
"series_end_until_label": "Befejezés dátuma",
|
||||
"parts_section": "Alkatrészek és fogyóeszközök",
|
||||
"part_add": "Alkatrész hozzáadása",
|
||||
"part_name": "Név",
|
||||
"part_vendor": "Gyártó",
|
||||
"part_storage_location": "Tárolási hely",
|
||||
"part_product_url": "Termék URL",
|
||||
"part_unit": "Egység",
|
||||
"part_cost": "Egységár",
|
||||
"part_stock": "Készlet",
|
||||
"part_reorder_threshold": "Újrarendelés ennél",
|
||||
"part_restock_quantity": "Feltöltési mennyiség",
|
||||
"part_auto_buy": "Vásárlási feladat automatikus létrehozása, ha kevés van",
|
||||
"part_restock": "Készlet módosítása",
|
||||
"restock_quantity_label": "Vásárolt mennyiség",
|
||||
"consumes_parts_label": "Felhasznált alkatrészek",
|
||||
"parts_load_failed": "Az objektum alkatrészei nem tölthetők be — a felhasznált alkatrészek beállításai most nem érhetők el.",
|
||||
"adopt_problem_button": "Problémaérzékelők átvétele",
|
||||
"adopt_problem_title": "Problémaérzékelők átvétele",
|
||||
"adopt_problem_hint": "Alakítsa a HA problémaérzékelőit (nyomtatóhibák, szűrőfigyelmeztetések, gyenge elem) karbantartási feladatokká, amelyek a probléma fennállása alatt aktívak, és maguktól lezáródnak, amikor a probléma megoldódik.",
|
||||
"adopt_problem_none": "Nem található még nem követett problémaérzékelő.",
|
||||
"adopt_problem_active": "aktív",
|
||||
"adopt_problem_ok": "ok",
|
||||
"adopt_problem_new_object": "(új)",
|
||||
"adopt_problem_adopt": "Kijelöltek átvétele",
|
||||
"adopt_problem_done": "{tasks} problémaérzékelő átvéve",
|
||||
"views_label": "Nézetek",
|
||||
"views_none": "— Nincs nézet —",
|
||||
"views_manage": "Nézetek mentése / kezelése",
|
||||
"views_dialog_title": "Mentett nézetek",
|
||||
"views_dialog_hint": "Mentse el az aktuális szűrőket névvel ellátott nézetként, amelyet mindenki használhat.",
|
||||
"views_name_placeholder": "Nézet neve",
|
||||
"views_save_current": "Aktuális szűrők mentése",
|
||||
"views_none_yet": "Még nincsenek mentett nézetek.",
|
||||
"close": "Bezárás",
|
||||
"trigger_hint_now": "Az érzékelő jelenlegi értéke: {value}.",
|
||||
"trigger_hint_above": "A feladat akkor aktiválódik, amikor az érték {target} fölé emelkedik.",
|
||||
"trigger_hint_below": "Akkor aktiválódik, amikor az érték {target} alá csökken.",
|
||||
"trigger_hint_counter_delta": "A jelenlegi értéktől ({value}) számol: esedékes {due} értéknél (+{target}), és a számlálás minden elvégzés után újraindul.",
|
||||
"trigger_hint_counter_delta_edit": "A legutóbbi elvégzés óta számolja a használatot: esedékes +{target} után; a számlálás minden elvégzés után újraindul.",
|
||||
"trigger_hint_counter_abs": "A feladat akkor válik esedékessé, amikor az érzékelő eléri a(z) {target} értéket.",
|
||||
"trigger_hint_runtime": "A feladat {hours} óra összesített üzemidő után válik esedékessé; a számláló minden elvégzés után újraindul.",
|
||||
"trigger_hint_state_change": "A feladat {count} állapotváltozás után válik esedékessé.",
|
||||
"trigger_hint_state_change_to": "A feladat {count} alkalommal „{state}” állapotra váltás után válik esedékessé.",
|
||||
"trigger_hint_state_now": "Jelenlegi állapot: {value}.",
|
||||
"adopt_problem_part": "Alkatrészt használ: {name}",
|
||||
"label_filter": "Címke",
|
||||
"all_labels": "Minden címke",
|
||||
"settings_notify_scope": "Értesítés csak erre a nézetre",
|
||||
"settings_notify_scope_all": "Minden feladat",
|
||||
"settings_notify_scope_hint": "Csak a kiválasztott mentett nézet címke-/felhasználószűrőinek megfelelő feladatok küldenek emlékeztetőt. A nézet állapot-, rendezési és csoportosítási beállításait itt figyelmen kívül hagyjuk.",
|
||||
"card_saved_view": "Mentett nézet",
|
||||
"card_saved_view_none": "Nincs",
|
||||
"card_saved_view_help": "A nézet állapot-, felhasználó- és címkeszűrőit a fenti szűrőkön felül alkalmazza. A nézet rendezése és csoportosítása a panel megjelenítési beállítása, a kártyán nem érvényesül.",
|
||||
"doc_part_none": "Ehhez az alkatrészhez nincs dokumentum csatolva.",
|
||||
"settings_templates_toggle_group": "A csoport összes sablonjának be- vagy kikapcsolása",
|
||||
"setups_button": "Javasolt beállítások",
|
||||
"setups_title": "Javasolt beállítások (béta)",
|
||||
"setups_hint": "Támogatott integrációk eszközei, amelyek fogyóeszköz-érzékelői karbantartási feladatokat vezérelhetnek. Az átvétel létrehozza az objektumot, és minden feladatot az érzékelőjéhez köt — a feladat akkor aktiválódik, amikor a fogyóeszköz fogytán van, és a csere után magától lezáródik.",
|
||||
"setups_none": "Nem található támogatott eszköz bekötetlen fogyóeszköz-érzékelővel.",
|
||||
"setups_adopt": "Kijelöltek beállítása",
|
||||
"setups_done": "{tasks} érzékelőhöz kötött feladat létrehozva.",
|
||||
"complete_parts_used": "Most felhasznált alkatrészek",
|
||||
"part_delete_confirm": "Törli a(z) „{name}” alkatrészt? A készletkövetése, a feladatkapcsolatai és minden nyitott vásárlási emlékeztetője is törlődik.",
|
||||
"baseline_start_value": "Kezdő leolvasás (opcionális)",
|
||||
"baseline_start_help": "A számlálás ettől az értéktől indul. Hagyja üresen, ha a jelenlegi értéktől számolna; adja meg az utolsó szerviz értékét, hogy az azóta felhalmozott használat is beleszámítson.",
|
||||
"setups_baseline_hint": "érték az utolsó szerviznél (opcionális)",
|
||||
"baseline_start_help_edit": "Üresen hagyva a meglévő számlálás marad. Érték megadása újrahorgonyozza a számlálást (pl. az utolsó szerviz leolvasott értéke).",
|
||||
"baseline_current_effective": "Jelenleg érvényes kezdőérték: {value}",
|
||||
"runtime_on_states": "Aktív állapotok (vesszővel elválasztva)",
|
||||
"runtime_on_states_help": "Működésként számító állapotok — alapértelmezés: on. Pl. mowing, cleaning, printing. Attribútum kiválasztásakor annak értékei számítanak.",
|
||||
"setups_target_new": "Új létrehozása: {name}",
|
||||
"schedule_preview_title": "Következő dátumok",
|
||||
"schedule_preview_ontime": "Időben történő elvégzést feltételezve.",
|
||||
"schedule_preview_ends": "(a sorozat véget ér)",
|
||||
"adopt_problem_responsible": "Felelős felhasználó az összes átvett feladathoz (opcionális)",
|
||||
"adopt_problem_configure": "Beállítás",
|
||||
"history_auto": "Automatikus",
|
||||
"battery_fleet_title": "Elemflotta",
|
||||
"battery_fleet_none_low": "Minden elem rendben — nincs mit cserélni.",
|
||||
"battery_fleet_buy_now": "Vásárlás most",
|
||||
"battery_fleet_soon": "Hamarosan szükséges",
|
||||
"battery_fleet_soon_hint": "Az utolsó cseredátumból előrejelezve — rendeljen előre.",
|
||||
"battery_fleet_mark_all": "Mind cseréltként jelölése",
|
||||
"battery_fleet_mark_one": "Elem cseréltként jelölése",
|
||||
"battery_fleet_offline": "offline",
|
||||
"battery_fleet_trigger_lost": "A feladat érzékelős kiváltója elveszett — nem fog aktiválódni és automatikusan lezáródni sem.",
|
||||
"battery_fleet_repair": "Javítás",
|
||||
"battery_fleet_exclude": "Kizárás a flottából",
|
||||
"battery_fleet_excluded": "Kizárva",
|
||||
"battery_fleet_include": "Követés újra",
|
||||
"battery_fleet_total": "{n} elem követve",
|
||||
"battery_fleet_setup_button": "Elemflotta",
|
||||
"battery_fleet_setup_done": "Elemflotta beállítva — egyetlen feladat követi az összes elemet.",
|
||||
"update_banner": "A Maintenance Supporter újabb verziója érhető el a szerveren — töltse újra az oldalt a panel frissítéséhez.",
|
||||
"update_reload": "Újratöltés"
|
||||
}
|
||||
@@ -0,0 +1,811 @@
|
||||
{
|
||||
"maintenance": "유지보수",
|
||||
"objects": "객체",
|
||||
"tasks": "작업",
|
||||
"overdue": "기한 초과",
|
||||
"due_soon": "기한 임박",
|
||||
"triggered": "트리거됨",
|
||||
"trigger_replaced": "트리거 교체됨",
|
||||
"ok": "정상",
|
||||
"all": "전체",
|
||||
"new_object": "+ 새 객체",
|
||||
"templates_from": "템플릿에서",
|
||||
"templates_title": "템플릿으로 시작하기",
|
||||
"templates_task_count": "작업 {n}개",
|
||||
"template_created": "템플릿에서 생성됨",
|
||||
"onboard_hint": "첫 객체를 추가하여 유지보수 추적을 시작하세요.",
|
||||
"edit": "편집",
|
||||
"duplicate": "복제",
|
||||
"task_duplicated": "작업이 복제되었습니다",
|
||||
"object_duplicated": "객체가 복제되었습니다",
|
||||
"delete": "삭제",
|
||||
"add_task": "+ 작업 추가",
|
||||
"complete": "완료",
|
||||
"completed": "완료됨",
|
||||
"skip": "건너뛰기",
|
||||
"skipped": "건너뜀",
|
||||
"missed": "놓침",
|
||||
"reset": "초기화",
|
||||
"snooze": "다시 알림",
|
||||
"snoozed": "다시 알림 설정됨",
|
||||
"cancel": "취소",
|
||||
"bulk_select": "선택",
|
||||
"bulk_select_all": "모두 선택",
|
||||
"bulk_n_selected": "{n}개 선택됨",
|
||||
"bulk_completed": "작업 {n}개 완료됨",
|
||||
"bulk_archived": "작업 {n}개 보관됨",
|
||||
"completing": "완료 처리 중…",
|
||||
"interval": "주기",
|
||||
"warning": "경고",
|
||||
"last_performed": "마지막 수행일",
|
||||
"next_due": "다음 예정일",
|
||||
"days_until_due": "남은 일수",
|
||||
"avg_duration": "평균 소요 시간",
|
||||
"trigger": "트리거",
|
||||
"trigger_type": "트리거 유형",
|
||||
"threshold_above": "상한",
|
||||
"threshold_below": "하한",
|
||||
"threshold": "임계값",
|
||||
"counter": "카운터",
|
||||
"state_change": "상태 변경",
|
||||
"runtime": "가동 시간",
|
||||
"runtime_hours": "목표 가동 시간 (시간)",
|
||||
"target_value": "목표값",
|
||||
"baseline": "기준값",
|
||||
"target_changes": "목표 변경 횟수",
|
||||
"for_minutes": "지속 시간 (분)",
|
||||
"time_based": "시간 기반",
|
||||
"sensor_based": "센서 기반",
|
||||
"manual": "수동",
|
||||
"one_time": "일회성",
|
||||
"weekdays": "요일",
|
||||
"nth_weekday": "매월 N번째 요일",
|
||||
"day_of_month": "매월 특정 일",
|
||||
"recurrence_on_days": "반복 요일",
|
||||
"recurrence_occurrence": "회차",
|
||||
"recurrence_weekday": "요일",
|
||||
"recurrence_day": "일 (1–31)",
|
||||
"recurrence_last_day": "매월 마지막 날",
|
||||
"recurrence_business_day": "평일만 (주말이면 앞당김)",
|
||||
"recurrence_offset": "오프셋 (일, ±)",
|
||||
"recurrence_offset_help": "날짜를 ±N일 이동합니다. 예: -2 = 이틀 전.",
|
||||
"last_day_month": "매월 마지막 날",
|
||||
"last_business_day_month": "마지막 평일",
|
||||
"ord_1": "첫째",
|
||||
"ord_2": "둘째",
|
||||
"ord_3": "셋째",
|
||||
"ord_4": "넷째",
|
||||
"ord_5": "다섯째",
|
||||
"ord_last": "마지막",
|
||||
"day_word": "일",
|
||||
"interval_value": "주기",
|
||||
"interval_unit": "단위",
|
||||
"unit_days": "일",
|
||||
"unit_weeks": "주",
|
||||
"unit_months": "개월",
|
||||
"unit_years": "년",
|
||||
"due_date": "예정일",
|
||||
"cleaning": "청소",
|
||||
"inspection": "점검",
|
||||
"replacement": "교체",
|
||||
"calibration": "보정",
|
||||
"service": "정비",
|
||||
"reading": "검침",
|
||||
"custom": "사용자 지정",
|
||||
"history": "기록",
|
||||
"cost": "비용",
|
||||
"report_button": "보고서",
|
||||
"report_title": "유지보수 보고서",
|
||||
"report_generated": "생성일",
|
||||
"report_times_done": "수행 횟수",
|
||||
"report_total_cost": "총 비용",
|
||||
"report_every": "{n} {unit}마다",
|
||||
"report_notes": "메모",
|
||||
"report_col_type": "유형",
|
||||
"report_col_status": "상태",
|
||||
"report_col_schedule": "일정",
|
||||
"duration": "소요 시간",
|
||||
"both": "둘 다",
|
||||
"trigger_val": "트리거 값",
|
||||
"complete_title": "완료: ",
|
||||
"checklist": "체크리스트",
|
||||
"checklist_steps_optional": "체크리스트 단계 (선택)",
|
||||
"checklist_placeholder": "필터 청소\n씰 교체\n압력 테스트",
|
||||
"checklist_help": "한 줄에 한 단계씩 입력하세요. 최대 100개.",
|
||||
"err_too_long": "{field}: 너무 깁니다 (최대 {n}자)",
|
||||
"err_too_short": "{field}: 너무 짧습니다 (최소 {n}자)",
|
||||
"err_value_too_high": "{field}: 너무 큽니다 (최대 {n})",
|
||||
"err_value_too_low": "{field}: 너무 작습니다 (최소 {n})",
|
||||
"err_required": "{field}: 필수 항목입니다",
|
||||
"err_wrong_type": "{field}: 잘못된 형식입니다 (예상: {type})",
|
||||
"err_invalid_choice": "{field}: 허용되지 않는 값입니다",
|
||||
"err_invalid_value": "{field}: 유효하지 않은 값입니다",
|
||||
"feat_schedule_time": "시각 지정 일정",
|
||||
"feat_schedule_time_desc": "작업이 자정이 아닌 지정한 시각에 기한 초과로 전환됩니다.",
|
||||
"schedule_time_optional": "기한 시각 (선택, HH:MM)",
|
||||
"schedule_time_help": "비워두면 자정(기본값)입니다. HA 시간대 기준.",
|
||||
"at_time": "시각",
|
||||
"notes_optional": "메모 (선택)",
|
||||
"cost_optional": "비용 (선택)",
|
||||
"duration_minutes": "소요 시간(분, 선택)",
|
||||
"days": "일",
|
||||
"day": "일",
|
||||
"today": "오늘",
|
||||
"d_overdue": "일 초과",
|
||||
"no_tasks": "아직 유지보수 작업이 없습니다. 객체를 만들어 시작하세요.",
|
||||
"no_tasks_short": "작업 없음",
|
||||
"no_history": "아직 기록이 없습니다.",
|
||||
"show_all": "모두 보기",
|
||||
"cost_duration_chart": "비용 및 소요 시간",
|
||||
"installed": "설치일",
|
||||
"confirm_delete_object": "이 객체와 모든 작업을 삭제할까요?",
|
||||
"confirm_delete_task": "이 작업을 삭제할까요?",
|
||||
"min": "최소",
|
||||
"max": "최대",
|
||||
"save": "저장",
|
||||
"saving": "저장 중…",
|
||||
"edit_task": "작업 편집",
|
||||
"new_task": "새 유지보수 작업",
|
||||
"task_name": "작업 이름",
|
||||
"maintenance_type": "유지보수 유형",
|
||||
"priority": "우선순위",
|
||||
"labels": "라벨",
|
||||
"labels_placeholder": "예: 안전, 계절, 세입자용",
|
||||
"labels_help": "필터링과 보고서에 쓰이는 쉼표로 구분된 태그입니다.",
|
||||
"priority_low": "낮음",
|
||||
"priority_normal": "보통",
|
||||
"priority_high": "높음",
|
||||
"schedule_type": "일정 유형",
|
||||
"interval_days": "주기 (일)",
|
||||
"warning_days": "경고 일수",
|
||||
"earliest_completion_days": "조기 완료 허용 (기한 전 일수)",
|
||||
"earliest_completion_days_help": "비워두면 언제든 완료할 수 있습니다. 0 = 기한 당일 이후에만.",
|
||||
"last_performed_optional": "마지막 수행일 (선택)",
|
||||
"interval_anchor": "주기 기준",
|
||||
"anchor_completion": "완료일 기준",
|
||||
"anchor_planned": "예정일 기준 (밀림 없음)",
|
||||
"edit_object": "객체 편집",
|
||||
"name": "이름",
|
||||
"manufacturer_optional": "제조사 (선택)",
|
||||
"model_optional": "모델 (선택)",
|
||||
"serial_number_optional": "일련번호 (선택)",
|
||||
"serial_number_label": "일련번호",
|
||||
"documentation_url_label": "설명서",
|
||||
"object_notes_label": "메모",
|
||||
"sort_due_date": "예정일",
|
||||
"sort_object": "객체 이름",
|
||||
"sort_type": "유형",
|
||||
"sort_task_name": "작업 이름",
|
||||
"all_objects": "모든 객체",
|
||||
"tasks_lower": "작업",
|
||||
"no_tasks_yet": "아직 작업 없음",
|
||||
"add_first_task": "첫 작업 추가",
|
||||
"trigger_configuration": "트리거 설정",
|
||||
"entity_id": "엔티티 ID",
|
||||
"comma_separated": "쉼표로 구분",
|
||||
"entity_logic": "엔티티 논리",
|
||||
"entity_logic_any": "하나라도 트리거되면",
|
||||
"entity_logic_all": "모든 엔티티가 트리거되어야 함",
|
||||
"entities": "엔티티",
|
||||
"attribute_optional": "속성 (선택, 비우면 상태 사용)",
|
||||
"use_entity_state": "엔티티 상태 사용 (속성 없음)",
|
||||
"trigger_above": "초과 시 트리거",
|
||||
"trigger_below": "미만 시 트리거",
|
||||
"for_at_least_minutes": "최소 지속 시간 (분)",
|
||||
"safety_interval_days": "안전 주기 (일, 선택)",
|
||||
"safety_interval": "안전 주기 (선택)",
|
||||
"delta_mode": "델타 모드",
|
||||
"from_state_optional": "변경 전 상태 (선택)",
|
||||
"to_state_optional": "변경 후 상태 (선택)",
|
||||
"documentation_url_optional": "설명서 URL (선택)",
|
||||
"object_notes_optional": "메모 (선택)",
|
||||
"nfc_tag_id_optional": "NFC 태그 ID (선택)",
|
||||
"nfc_tags_empty_help": "Home Assistant에 등록된 NFC 태그가 아직 없습니다.",
|
||||
"nfc_tags_open_settings": "태그 설정 열기",
|
||||
"nfc_tags_refresh": "새로 고침",
|
||||
"environmental_entity_optional": "환경 센서 (선택)",
|
||||
"environmental_entity_helper": "예: sensor.outdoor_temperature — 환경 조건에 따라 주기를 조정합니다",
|
||||
"environmental_attribute_optional": "환경 속성 (선택)",
|
||||
"nfc_tag_id": "NFC 태그 ID",
|
||||
"nfc_linked": "NFC 태그 연결됨",
|
||||
"nfc_link_hint": "클릭하여 NFC 태그 연결",
|
||||
"responsible_user": "담당자",
|
||||
"shared_with": "공유 대상 (순환 담당)",
|
||||
"shared_with_help": "여러 명을 선택해 작업을 공유하세요. 완료할 때마다 담당자가 교대됩니다.",
|
||||
"rotation_strategy": "교대 방식",
|
||||
"rotation_none": "교대 없음",
|
||||
"rotation_round_robin": "순서대로",
|
||||
"rotation_least_completed": "완료 횟수가 적은 사람",
|
||||
"rotation_random": "무작위",
|
||||
"no_user_assigned": "(담당자 없음)",
|
||||
"all_users": "모든 사용자",
|
||||
"my_tasks": "내 작업",
|
||||
"tab_calendar": "캘린더",
|
||||
"cal_no_events": "유지보수 없음",
|
||||
"cal_window_7": "7일",
|
||||
"cal_window_14": "14일",
|
||||
"cal_window_30": "30일",
|
||||
"cal_window_365": "1년",
|
||||
"cal_every_n_days": "{n}일마다",
|
||||
"cal_source_time": "시간 기반",
|
||||
"cal_source_time_adaptive": "시간 기반 (적응형)",
|
||||
"cal_source_sensor": "센서 기반",
|
||||
"cal_predicted": "예측됨",
|
||||
"cal_confidence_high": "높은 신뢰도",
|
||||
"cal_confidence_medium": "중간 신뢰도",
|
||||
"cal_confidence_low": "낮은 신뢰도",
|
||||
"budget_monthly": "월 예산",
|
||||
"budget_yearly": "연 예산",
|
||||
"groups": "그룹",
|
||||
"new_group": "새 그룹",
|
||||
"edit_group": "그룹 편집",
|
||||
"no_groups": "아직 그룹 없음",
|
||||
"delete_group": "그룹 삭제",
|
||||
"delete_group_confirm": "'{name}' 그룹을 삭제할까요?",
|
||||
"group_select_tasks": "작업 선택",
|
||||
"group_name_required": "이름은 필수입니다",
|
||||
"description_optional": "설명 (선택)",
|
||||
"selected": "선택됨",
|
||||
"loading_chart": "차트 데이터 불러오는 중...",
|
||||
"hide_outliers": "이상값 숨기기 (센서 오류)",
|
||||
"was_maintenance_needed": "이 유지보수가 필요했나요?",
|
||||
"feedback_needed": "필요했음",
|
||||
"feedback_not_needed": "불필요했음",
|
||||
"feedback_not_sure": "잘 모름",
|
||||
"suggested_interval": "제안 주기",
|
||||
"apply_suggestion": "적용",
|
||||
"reanalyze": "재분석",
|
||||
"reanalyze_result": "새 분석 결과",
|
||||
"reanalyze_insufficient_data": "권장값을 산출하기에 데이터가 부족합니다",
|
||||
"data_points": "데이터 포인트",
|
||||
"dismiss_suggestion": "무시",
|
||||
"confidence_low": "낮음",
|
||||
"confidence_medium": "중간",
|
||||
"confidence_high": "높음",
|
||||
"recommended": "권장",
|
||||
"seasonal_awareness": "계절 인식",
|
||||
"edit_seasonal_overrides": "계절 계수 편집",
|
||||
"seasonal_overrides_title": "계절 계수 (수동 설정)",
|
||||
"seasonal_overrides_hint": "월별 계수 (0.1–5.0). 비워두면 자동으로 학습됩니다.",
|
||||
"seasonal_override_invalid": "유효하지 않은 값",
|
||||
"seasonal_override_range": "계수는 0.1에서 5.0 사이여야 합니다",
|
||||
"clear_all": "모두 지우기",
|
||||
"seasonal_chart_title": "계절 계수",
|
||||
"seasonal_learned": "학습됨",
|
||||
"seasonal_manual": "수동",
|
||||
"month_jan": "1월",
|
||||
"month_feb": "2월",
|
||||
"month_mar": "3월",
|
||||
"month_apr": "4월",
|
||||
"month_may": "5월",
|
||||
"month_jun": "6월",
|
||||
"month_jul": "7월",
|
||||
"month_aug": "8월",
|
||||
"month_sep": "9월",
|
||||
"month_oct": "10월",
|
||||
"month_nov": "11월",
|
||||
"month_dec": "12월",
|
||||
"sensor_prediction": "센서 예측",
|
||||
"degradation_trend": "추세",
|
||||
"trend_rising": "상승",
|
||||
"trend_falling": "하강",
|
||||
"trend_stable": "안정",
|
||||
"trend_insufficient_data": "데이터 부족",
|
||||
"days_until_threshold": "임계값까지 남은 일수",
|
||||
"threshold_exceeded": "임계값 초과",
|
||||
"environmental_adjustment": "환경 계수",
|
||||
"sensor_prediction_urgency": "센서 예측: 약 {days}일 후 임계값 도달",
|
||||
"day_short": "일",
|
||||
"weibull_reliability_curve": "신뢰도 곡선",
|
||||
"weibull_failure_probability": "고장 확률",
|
||||
"weibull_r_squared": "적합도 R²",
|
||||
"beta_early_failures": "초기 고장",
|
||||
"beta_random_failures": "무작위 고장",
|
||||
"beta_wear_out": "마모 고장",
|
||||
"beta_highly_predictable": "매우 예측 가능",
|
||||
"confidence_interval": "신뢰 구간",
|
||||
"confidence_conservative": "보수적",
|
||||
"confidence_aggressive": "낙관적",
|
||||
"current_interval_marker": "현재 주기",
|
||||
"recommended_marker": "권장",
|
||||
"characteristic_life": "특성 수명",
|
||||
"chart_mini_sparkline": "추세 스파크라인",
|
||||
"chart_history": "비용 및 소요 시간 기록",
|
||||
"chart_seasonal": "계절 계수, 12개월",
|
||||
"chart_weibull": "Weibull 신뢰도 곡선",
|
||||
"chart_sparkline": "센서 트리거 값 차트",
|
||||
"days_progress": "일수 진행률",
|
||||
"qr_code": "QR 코드",
|
||||
"qr_generating": "QR 코드 생성 중…",
|
||||
"qr_error": "QR 코드 생성에 실패했습니다.",
|
||||
"qr_error_no_url": "설정된 HA URL이 없습니다. 설정 → 시스템 → 네트워크에서 외부 또는 내부 URL을 설정해 주세요.",
|
||||
"save_error": "저장에 실패했습니다. 다시 시도해 주세요.",
|
||||
"qr_print": "인쇄",
|
||||
"qr_download": "SVG 다운로드",
|
||||
"qr_action": "스캔 시 동작",
|
||||
"qr_action_view": "유지보수 정보 보기",
|
||||
"qr_action_complete": "유지보수 완료로 표시",
|
||||
"qr_url_mode": "링크 유형",
|
||||
"qr_mode_companion": "Companion 앱",
|
||||
"qr_mode_local": "로컬 (mDNS)",
|
||||
"qr_mode_server": "서버 URL",
|
||||
"overview": "개요",
|
||||
"analysis": "분석",
|
||||
"recent_activities": "최근 활동",
|
||||
"search_notes": "메모 검색",
|
||||
"avg_cost": "평균 비용",
|
||||
"no_advanced_features": "활성화된 고급 기능 없음",
|
||||
"no_advanced_features_hint": "통합구성요소 설정에서 “적응형 일정” 또는 “계절 패턴”을 활성화하면 여기에서 분석 데이터를 볼 수 있습니다.",
|
||||
"analysis_not_enough_data": "아직 분석할 데이터가 충분하지 않습니다.",
|
||||
"analysis_not_enough_data_hint": "Weibull 분석에는 최소 5회의 완료 기록이 필요하며, 계절 패턴은 월별 6개 이상의 데이터 포인트가 쌓이면 표시됩니다.",
|
||||
"analysis_manual_task_hint": "주기가 없는 수동 작업은 분석 데이터를 생성하지 않습니다.",
|
||||
"completions": "회 완료",
|
||||
"current": "현재",
|
||||
"shorter": "더 짧게",
|
||||
"longer": "더 길게",
|
||||
"normal": "보통",
|
||||
"disabled": "비활성화됨",
|
||||
"compound_logic": "복합 논리",
|
||||
"compound": "복합 (여러 조건)",
|
||||
"compound_logic_and": "AND — 모든 조건이 트리거되어야 함",
|
||||
"compound_logic_or": "OR — 하나의 조건만 트리거되면 됨",
|
||||
"compound_help": "여러 센서 조건을 하나의 트리거로 결합합니다.",
|
||||
"compound_no_conditions": "아직 조건이 없습니다 — 최소 하나를 추가하세요.",
|
||||
"compound_add_condition": "조건 추가",
|
||||
"compound_condition": "조건",
|
||||
"compound_remove_condition": "조건 제거",
|
||||
"card_title": "제목",
|
||||
"card_show_header": "통계 헤더 표시",
|
||||
"card_show_actions": "동작 버튼 표시",
|
||||
"card_compact": "컴팩트 모드",
|
||||
"card_max_items": "최대 항목 수 (0 = 전체)",
|
||||
"card_filter_status": "상태로 필터",
|
||||
"card_filter_status_help": "비워두면 모든 상태를 표시합니다.",
|
||||
"card_filter_objects": "객체로 필터",
|
||||
"card_filter_objects_help": "비워두면 모든 객체를 표시합니다.",
|
||||
"card_filter_entities": "엔티티로 필터 (entity_ids)",
|
||||
"card_filter_entities_help": "이 통합구성요소의 sensor / binary_sensor 엔티티를 선택하세요. 비워두면 전체.",
|
||||
"card_loading_objects": "객체 불러오는 중…",
|
||||
"card_load_error": "객체를 불러올 수 없습니다 — WebSocket 연결을 확인하세요.",
|
||||
"card_no_tasks_title": "아직 유지보수 작업이 없습니다",
|
||||
"card_no_tasks_cta": "→ 유지보수 패널에서 만들어 보세요",
|
||||
"no_objects": "아직 객체가 없습니다.",
|
||||
"action_error": "동작에 실패했습니다. 다시 시도해 주세요.",
|
||||
"area_id_optional": "구역 (선택)",
|
||||
"installation_date_optional": "설치일 (선택)",
|
||||
"warranty_expiry_optional": "보증 만료일 (선택)",
|
||||
"warranty": "보증",
|
||||
"warranty_valid_until": "{date}까지 유효",
|
||||
"warranty_expires_in": "{days}일 후 만료",
|
||||
"warranty_expired": "만료됨",
|
||||
"cal_past_windows": "이전 기간",
|
||||
"cal_forward_windows": "이후 기간",
|
||||
"history_edit_title": "기록 항목 편집",
|
||||
"history_edit_timestamp": "타임스탬프",
|
||||
"manufacturer": "제조사",
|
||||
"model": "모델",
|
||||
"area": "구역",
|
||||
"actions": "동작",
|
||||
"view_mode_label": "보기",
|
||||
"view_cards": "카드 보기",
|
||||
"view_table": "표 보기",
|
||||
"objects_table_columns_label": "객체 표 열",
|
||||
"objects_table_columns_hint": "객체 표 보기에 표시할 열을 선택하세요.",
|
||||
"custom_icon_optional": "아이콘 (선택, 예: mdi:wrench)",
|
||||
"task_enabled": "작업 활성화",
|
||||
"skip_reason_prompt": "이 작업을 건너뛸까요?",
|
||||
"reason_optional": "사유 (선택)",
|
||||
"reset_date_prompt": "작업을 수행한 것으로 표시할까요?",
|
||||
"reset_date_optional": "마지막 수행일 (선택, 기본값은 오늘)",
|
||||
"notes_label": "메모",
|
||||
"documentation_label": "문서",
|
||||
"no_nfc_tag": "— 태그 없음 —",
|
||||
"dashboard": "대시보드",
|
||||
"tab_today": "오늘",
|
||||
"palette_placeholder": "객체와 작업 검색…",
|
||||
"palette_no_results": "일치 항목 없음",
|
||||
"palette_hint": "↑↓ 이동 · Enter 열기 · Esc 닫기",
|
||||
"today_all_caught_up": "모두 처리했습니다! 이번 주에 예정된 작업이 없습니다.",
|
||||
"today_overdue": "기한 초과",
|
||||
"today_due_today": "오늘 예정",
|
||||
"today_this_week": "이번 주",
|
||||
"settings": "설정",
|
||||
"settings_features": "고급 기능",
|
||||
"settings_features_desc": "고급 기능을 켜거나 끕니다. 끄면 UI에서 숨겨질 뿐 데이터는 삭제되지 않습니다.",
|
||||
"feat_adaptive": "적응형 일정",
|
||||
"feat_adaptive_desc": "유지보수 기록에서 최적 주기를 학습합니다",
|
||||
"feat_predictions": "센서 예측",
|
||||
"feat_predictions_desc": "센서 열화로부터 트리거 시점을 예측합니다",
|
||||
"feat_seasonal": "계절 조정",
|
||||
"feat_seasonal_desc": "계절 패턴에 따라 주기를 조정합니다",
|
||||
"feat_environmental": "환경 상관관계",
|
||||
"feat_environmental_desc": "온도/습도와 주기의 상관관계를 분석합니다",
|
||||
"feat_budget": "예산 추적",
|
||||
"feat_budget_desc": "월별·연별 유지보수 지출을 추적합니다",
|
||||
"feat_groups": "작업 그룹",
|
||||
"feat_groups_desc": "작업을 논리적 그룹으로 정리합니다",
|
||||
"feat_checklists": "체크리스트",
|
||||
"feat_checklists_desc": "작업 완료를 위한 다단계 절차",
|
||||
"settings_general": "일반",
|
||||
"settings_default_warning": "기본 경고 일수",
|
||||
"settings_panel_enabled": "사이드바 패널",
|
||||
"settings_panel_title": "사이드바 패널 제목",
|
||||
"settings_notifications": "알림",
|
||||
"settings_notify_service": "알림 서비스",
|
||||
"test_notification": "테스트 알림",
|
||||
"send_test": "테스트 보내기",
|
||||
"testing": "보내는 중…",
|
||||
"test_notification_success": "테스트 알림을 보냈습니다",
|
||||
"test_notification_failed": "테스트 알림 전송 실패",
|
||||
"settings_notify_due_soon": "기한 임박 시 알림",
|
||||
"settings_notify_overdue": "기한 초과 시 알림",
|
||||
"settings_notify_triggered": "트리거 시 알림",
|
||||
"settings_interval_hours": "반복 주기 (시간, 0 = 한 번만)",
|
||||
"settings_quiet_hours": "방해 금지 시간",
|
||||
"settings_quiet_start": "시작",
|
||||
"settings_quiet_end": "종료",
|
||||
"settings_max_per_day": "하루 최대 알림 수 (0 = 무제한)",
|
||||
"settings_bundling": "알림 묶기",
|
||||
"settings_bundle_threshold": "묶음 기준 개수",
|
||||
"settings_reminder_leads": "추가 알림 (기한 전 일수)",
|
||||
"settings_reminder_leads_hint": "쉼표로 구분한 사전 알림 시점입니다. 예: 14, 3, 0 — 해당하는 날마다 추가 알림이 한 번 발송됩니다. 비워두면 꺼짐.",
|
||||
"settings_actions": "모바일 동작 버튼",
|
||||
"settings_action_complete": "'완료' 버튼 표시",
|
||||
"settings_action_skip": "'건너뛰기' 버튼 표시",
|
||||
"settings_action_snooze": "'다시 알림' 버튼 표시",
|
||||
"settings_weekly_digest": "주간 요약",
|
||||
"settings_weekly_digest_hint": "예정된 작업이 있으면 월요일 아침에 요약 알림을 한 번 보냅니다.",
|
||||
"settings_warranty_reminder": "보증 만료 알림",
|
||||
"settings_warranty_reminder_days": "만료 전 일수",
|
||||
"settings_warranty_reminder_hint": "객체의 보증 만료가 설정한 일수만큼 남았을 때 한 번 알립니다.",
|
||||
"settings_snooze_hours": "다시 알림 대기 시간 (시간)",
|
||||
"settings_budget": "예산",
|
||||
"settings_currency": "통화",
|
||||
"settings_budget_monthly": "월 예산",
|
||||
"settings_budget_yearly": "연 예산",
|
||||
"settings_budget_alerts": "예산 경고",
|
||||
"settings_budget_threshold": "경고 기준 (%)",
|
||||
"settings_import_export": "가져오기 / 내보내기",
|
||||
"settings_export_json": "JSON 내보내기",
|
||||
"settings_export_yaml": "YAML 내보내기",
|
||||
"settings_export_csv": "CSV 내보내기",
|
||||
"settings_import_csv": "CSV 가져오기",
|
||||
"settings_import_placeholder": "JSON 또는 CSV 내용을 여기에 붙여넣으세요…",
|
||||
"settings_import_btn": "가져오기",
|
||||
"settings_import_success": "객체 {count}개를 성공적으로 가져왔습니다.",
|
||||
"settings_export_success": "내보내기 파일이 다운로드되었습니다.",
|
||||
"settings_saved": "설정이 저장되었습니다.",
|
||||
"settings_include_history": "기록 포함",
|
||||
"settings_export_selection": "선택한 객체로 제한 (선택)",
|
||||
"settings_docs_archive": "문서 아카이브 (파일 포함)",
|
||||
"settings_docs_archive_hint": "JSON/YAML/CSV 내보내기에는 설정만 포함됩니다. 이 ZIP에는 업로드한 파일 내용까지 포함되어 완전한 복원이 가능합니다.",
|
||||
"settings_docs_export_btn": "문서 ZIP 다운로드",
|
||||
"settings_docs_import_btn": "문서 ZIP 복원",
|
||||
"settings_docs_import_success": "복원됨: 파일 {blobs}개, 문서 {docs}개",
|
||||
"sort_alphabetical": "가나다순",
|
||||
"sort_due_soonest": "예정일 빠른 순",
|
||||
"sort_task_count": "작업 수",
|
||||
"sort_area": "구역",
|
||||
"sort_assigned_user": "담당자",
|
||||
"sort_group": "그룹",
|
||||
"groupby_none": "그룹화 없음",
|
||||
"groupby_area": "구역별",
|
||||
"groupby_group": "그룹별",
|
||||
"groupby_user": "사용자별",
|
||||
"filter_label": "필터",
|
||||
"user_label": "사용자",
|
||||
"sort_label": "정렬",
|
||||
"group_by_label": "그룹화",
|
||||
"state_value_help": "HA 상태 값을 사용하세요(보통 소문자, 예: \"on\"/\"off\"). 대소문자는 저장 시 정규화됩니다.",
|
||||
"target_changes_help": "트리거가 발동하기까지 필요한 일치 전환 횟수입니다 (기본값: 1).",
|
||||
"qr_print_title": "QR 코드 인쇄",
|
||||
"qr_print_desc": "잘라서 장비에 붙일 수 있는 QR 코드 인쇄 페이지를 생성합니다.",
|
||||
"qr_print_load": "객체 불러오기",
|
||||
"qr_print_filter": "필터",
|
||||
"qr_print_objects": "객체",
|
||||
"qr_print_actions": "동작",
|
||||
"qr_print_url_mode": "링크 유형",
|
||||
"qr_print_estimate": "예상 QR 코드 수",
|
||||
"qr_print_over_limit": "최대 200개입니다. 필터를 좁혀 주세요",
|
||||
"qr_print_generate": "QR 코드 생성",
|
||||
"qr_print_generating": "생성 중…",
|
||||
"qr_print_ready": "QR 코드 준비 완료",
|
||||
"qr_print_print_button": "인쇄",
|
||||
"qr_print_empty": "생성할 항목 없음",
|
||||
"qr_action_skip": "건너뛰기",
|
||||
"vacation_title": "휴가 모드",
|
||||
"vacation_active": "활성",
|
||||
"vacation_ended": "종료됨",
|
||||
"vacation_desc": "휴가를 계획하세요. 휴가 기간과 버퍼 일수 동안 알림이 일시 중지됩니다. 특정 작업은 예외로 되돌릴 수 있습니다.",
|
||||
"vacation_enable": "휴가 모드 활성화",
|
||||
"vacation_start": "시작",
|
||||
"vacation_end": "종료",
|
||||
"vacation_buffer": "버퍼 (일)",
|
||||
"vacation_exempt_title": "휴가 중에도 알림 받기",
|
||||
"vacation_exempt_desc": "휴가 중에도 알림을 받을 작업을 선택하세요 (예: 중요한 수영장 수질 관리).",
|
||||
"vacation_load_tasks": "작업 불러오기",
|
||||
"vacation_preview_btn": "미리보기 표시",
|
||||
"vacation_preview_affected": "개 작업 영향받음",
|
||||
"vacation_event_due_soon": "기한 임박 예정",
|
||||
"vacation_event_overdue": "기한 초과 예정",
|
||||
"vacation_event_triggered_est": "센서 트리거 가능",
|
||||
"vacation_sensor_based": "(센서 기반)",
|
||||
"vacation_action_notify": "그래도 알림",
|
||||
"vacation_action_unsilence": "다시 음소거",
|
||||
"vacation_marked_complete": "완료로 표시됨",
|
||||
"vacation_marked_skip": "건너뜀",
|
||||
"vacation_end_now": "지금 휴가 종료",
|
||||
"add": "추가",
|
||||
"show_stats": "통계 + 그래프 보기",
|
||||
"hide_stats": "통계 숨기기",
|
||||
"adaptive_no_data": "적응형 분석에 필요한 완료 기록이 아직 부족합니다. 이 작업을 몇 번 더 완료하면 주기 추천과 신뢰도 차트가 열립니다.",
|
||||
"suggestion_applied": "제안 주기가 적용되었습니다",
|
||||
"vacation_mode": "휴가 모드",
|
||||
"vacation_status_active": "현재 활성",
|
||||
"vacation_status_scheduled": "예약됨",
|
||||
"vacation_status_inactive": "비활성",
|
||||
"vacation_end_now_confirm": "휴가를 지금 바로 종료할까요?",
|
||||
"vacation_exempt_count": "예외",
|
||||
"vacation_advanced": "고급…",
|
||||
"vacation_open_panel": "패널에서 열기",
|
||||
"enable": "활성화",
|
||||
"saved": "저장됨",
|
||||
"budget_monthly_set": "월 예산 설정",
|
||||
"budget_yearly_set": "연 예산 설정",
|
||||
"budget_advanced": "통화, 경고…",
|
||||
"budget_open_panel": "패널에서 열기",
|
||||
"groups_empty": "아직 그룹이 없습니다.",
|
||||
"group_new_placeholder": "그룹 추가…",
|
||||
"group_delete_confirm": "\"{name}\" 그룹을 삭제할까요?",
|
||||
"groups_manage_tasks": "작업 배정 관리…",
|
||||
"groups_open_panel": "패널에서 열기",
|
||||
"unassigned": "미배정",
|
||||
"no_area": "구역 없음",
|
||||
"has_overdue": "기한 초과 작업 있음",
|
||||
"object": "객체",
|
||||
"settings_panel_access": "패널 접근 권한",
|
||||
"settings_panel_access_desc": "관리자는 항상 전체 권한을 가집니다. 특정 비관리자에게 생성·편집·삭제를 위임하려면 이 옵션을 켜고 아래에서 선택하세요. 나머지 사용자에게는 완료와 건너뛰기만 표시됩니다.",
|
||||
"settings_operator_write": "선택한 사용자에게 생성·편집·삭제 허용",
|
||||
"settings_operator_write_desc": "끔: 관리자만 내용을 변경할 수 있습니다. 켬: 아래에서 선택한 사용자도 전체 권한을 갖습니다.",
|
||||
"no_non_admin_users": "비관리자 사용자가 없습니다. 설정 → 사람에서 추가하세요.",
|
||||
"owner_label": "소유자",
|
||||
"feat_completion_actions": "완료 동작",
|
||||
"feat_completion_actions_desc": "완료 시 작업별 HA 동작 실행 + 사전 설정값이 있는 빠른 완료 QR.",
|
||||
"on_complete_action_title": "완료 시: HA 동작 실행 (선택)",
|
||||
"on_complete_action_desc": "작업이 완료되면 HA 서비스를 호출합니다 — 예: 기기의 카운터 초기화.",
|
||||
"on_complete_action_service": "서비스",
|
||||
"on_complete_action_target": "대상 엔티티",
|
||||
"on_complete_action_target_hint": "참고: 엔티티 도메인이 서비스와 일치해야 합니다 — 예: 'button.press'는 button.*에서만, 'counter.increment'는 counter.*에서만, 'input_button.press'는 input_button.*에서만 동작합니다. 불일치 시 동작이 조용히 실패합니다 (HA 로그에 'Referenced entities ... missing or not currently available' 기록).",
|
||||
"on_complete_action_data": "데이터 (JSON, 선택)",
|
||||
"on_complete_action_test": "설정 검증",
|
||||
"on_complete_action_test_success": "✓ 설정이 유효합니다 (동작은 작업 완료 시에만 실행됩니다)",
|
||||
"on_complete_action_test_failed": "실패",
|
||||
"quick_complete_defaults_title": "빠른 완료 기본값 (QR 스캔용, 선택)",
|
||||
"quick_complete_defaults_desc": "빠른 완료 QR 스캔에 쓰이는 사전 설정값입니다. 없으면 QR이 완료 대화상자를 엽니다.",
|
||||
"quick_complete_defaults_notes": "메모",
|
||||
"quick_complete_defaults_cost": "비용",
|
||||
"quick_complete_defaults_duration": "소요 시간 (분)",
|
||||
"quick_complete_defaults_feedback_none": "피드백 없음",
|
||||
"quick_complete_defaults_feedback_needed": "필요했음",
|
||||
"quick_complete_defaults_feedback_not_needed": "불필요했음",
|
||||
"quick_complete_success": "빠르게 완료로 표시됨",
|
||||
"show_all_objects": "모든 객체 보기",
|
||||
"show_all_tasks": "필터 해제 — 모든 작업 보기",
|
||||
"filter_to_overdue": "기한 초과 작업만 보기",
|
||||
"filter_to_due_soon": "기한 임박 작업만 보기",
|
||||
"filter_to_triggered": "트리거된 작업만 보기",
|
||||
"open_task": "작업 열기",
|
||||
"show_details": "기록 + 통계 보기",
|
||||
"hide_details": "상세 숨기기",
|
||||
"history_empty": "아직 기록이 없습니다.",
|
||||
"history_edit_button": "항목 편집",
|
||||
"total_cost": "총 비용",
|
||||
"times_performed": "수행 횟수",
|
||||
"older_entries": "이전 항목",
|
||||
"open_in_panel": "유지보수 패널에서 열기",
|
||||
"skip_reason": "건너뛰기 사유 (선택)",
|
||||
"reset_to_date": "마지막 수행일 재설정",
|
||||
"delete_task_confirm": "이 작업과 기록을 삭제할까요?",
|
||||
"delete_object_confirm": "이 객체와 모든 작업을 삭제할까요?",
|
||||
"loading": "불러오는 중…",
|
||||
"archive": "보관",
|
||||
"undo": "실행 취소",
|
||||
"task_archived": "작업이 보관되었습니다",
|
||||
"object_archived": "객체가 보관되었습니다",
|
||||
"unarchive": "보관 해제",
|
||||
"archived": "보관됨",
|
||||
"show_archived": "보관된 항목 보기",
|
||||
"hide_archived": "보관된 항목 숨기기",
|
||||
"confirm_archive_object": "이 객체와 작업을 보관할까요? 기록은 유지되며 나중에 보관 해제할 수 있습니다.",
|
||||
"settings_archive": "보관 및 보존",
|
||||
"settings_archive_desc": "완료된 일회성 작업을 삭제하지 않고 정리합니다. 보관된 항목은 숨겨지고 동작하지 않지만 기록과 비용은 유지됩니다.",
|
||||
"settings_archive_oneoff_days": "완료된 일회성 작업 자동 보관 (일, 0 = 끔)",
|
||||
"settings_delete_archived_oneoff_days": "보관된 일회성 작업 자동 삭제 (일, 0 = 안 함)",
|
||||
"archive_object": "객체 보관",
|
||||
"unarchive_object": "객체 보관 해제",
|
||||
"documents": "문서",
|
||||
"documents_empty": "아직 문서가 없습니다.",
|
||||
"doc_upload": "파일 업로드",
|
||||
"doc_uploading": "업로드 중…",
|
||||
"doc_add_link": "링크 추가",
|
||||
"doc_link_url": "링크 URL (https://…)",
|
||||
"doc_link_title": "제목 (선택)",
|
||||
"doc_open": "열기",
|
||||
"doc_delete_confirm": "\"{name}\"을(를) 삭제할까요?",
|
||||
"doc_too_large": "파일이 너무 큽니다 (최대 25 MB).",
|
||||
"doc_upload_failed": "업로드에 실패했습니다.",
|
||||
"completion_photo_optional": "완료 사진 (선택)",
|
||||
"add_photo": "사진 추가",
|
||||
"uploading": "업로드 중…",
|
||||
"remove": "제거",
|
||||
"doc_deduped": "이미 다른 곳에 저장됨 — 공유되어 추가 공간을 쓰지 않습니다.",
|
||||
"doc_dup_in_object": "이 파일은 이미 이 객체에 첨부되어 있습니다.",
|
||||
"doc_link_invalid": "http/https 링크만 허용됩니다.",
|
||||
"doc_cat_manual": "설명서",
|
||||
"doc_cat_warranty": "보증서",
|
||||
"doc_cat_invoice": "영수증",
|
||||
"doc_cat_spare_parts": "예비 부품",
|
||||
"doc_cat_photo": "사진",
|
||||
"doc_cat_other": "기타",
|
||||
"doc_link_badge": "링크",
|
||||
"doc_storage_title": "문서 저장소",
|
||||
"doc_storage_saved": "중복 제거로 절약됨",
|
||||
"doc_storage_refresh": "새로 고침",
|
||||
"doc_download": "다운로드",
|
||||
"doc_close": "닫기",
|
||||
"doc_camera": "사진 촬영",
|
||||
"doc_drop_hint": "파일을 여기에 놓으세요",
|
||||
"doc_task_none": "이 작업에 연결된 문서가 없습니다.",
|
||||
"doc_link_existing": "문서 연결…",
|
||||
"doc_attach": "연결",
|
||||
"doc_unlink": "연결 해제",
|
||||
"doc_page": "페이지",
|
||||
"chart_range_7d": "7일",
|
||||
"chart_range_30d": "30일",
|
||||
"chart_range_90d": "90일",
|
||||
"chart_range_1y": "1년",
|
||||
"chart_since_service": "마지막 정비 이후",
|
||||
"chart_no_stats": "이 엔티티의 장기 통계가 없습니다 — 유지보수 이벤트 값만 표시합니다",
|
||||
"auto_complete_on_recovery": "센서가 정상으로 돌아오면 자동 완료",
|
||||
"auto_complete_on_recovery_help": "트리거가 스스로 해제되면 완료를 기록합니다 (마지막 수행일 갱신) — 예: 소금 보충, 필터 교체.",
|
||||
"doc_search": "문서 검색…",
|
||||
"doc_search_none": "일치하는 문서 없음",
|
||||
"link_device_optional": "기존 기기와 연결 (선택)",
|
||||
"parent_object_optional": "상위 객체 (선택)",
|
||||
"parent_none": "(상위 없음)",
|
||||
"paused": "일시 중지됨",
|
||||
"pause_object": "일시 중지",
|
||||
"resume_object": "재개",
|
||||
"pause_until_prompt": "이 객체의 일정을 동결합니다 — 재개할 때까지 어떤 작업도 기한이 되지 않고 알림도 오지 않습니다. 자동 재개 날짜를 선택적으로 설정할 수 있습니다.",
|
||||
"pause_until_label": "재개일 (선택)",
|
||||
"object_paused": "객체가 일시 중지되었습니다",
|
||||
"object_resumed": "객체가 재개되었습니다 — 일정이 다시 시작됩니다",
|
||||
"object_paused_badge": "일시 중지됨",
|
||||
"paused_until_label": "재개일",
|
||||
"replace_object": "교체…",
|
||||
"replace_object_prompt": "이 객체를 퇴역시키고 후속 객체를 만듭니다. 기록과 비용은 기존 객체에 보관된 채 남고, 작업과 문서는 새 객체로 이어지며 카운터는 새로 시작됩니다.",
|
||||
"replace_name_label": "후속 객체 이름",
|
||||
"object_replaced": "객체가 교체되었습니다 — 후속 객체 생성됨",
|
||||
"reading_unit_label": "검침 단위 (예: kWh, m³)",
|
||||
"reading_unit_help": "이 작업을 완료할 때 기록 값 옆에 표시됩니다.",
|
||||
"reading_value_label": "검침 값",
|
||||
"reading_label": "검침",
|
||||
"settings_templates_label": "템플릿 갤러리",
|
||||
"settings_templates_hint": "필요 없는 템플릿의 체크를 해제하세요 — \"템플릿에서\" 선택 목록(패널 및 설정 흐름)에서 사라집니다. 다른 변화는 없으며 언제든 다시 활성화할 수 있습니다.",
|
||||
"worksheet": "작업 시트",
|
||||
"worksheet_scan_view": "스캔하여 작업 열기",
|
||||
"worksheet_scan_complete": "스캔하여 완료",
|
||||
"worksheet_manual_excerpt": "설명서 발췌",
|
||||
"worksheet_pages": "페이지",
|
||||
"worksheet_printed": "인쇄됨",
|
||||
"worksheet_never": "없음",
|
||||
"card_all_caught_up": "모두 처리했습니다 — 주의가 필요한 항목이 없습니다",
|
||||
"postpone": "연기",
|
||||
"postpone_date_prompt": "이번 회차를 언제로 연기할까요?",
|
||||
"postpone_date_label": "새 예정일",
|
||||
"postponed": "연기됨",
|
||||
"postponed_to": "연기됨:",
|
||||
"season_window_label": "계절 기간 (월)",
|
||||
"season_window_hint": "선택한 달에만 기한이 됩니다. 비수기 날짜는 다음 활성 달로 넘어갑니다. 선택 없음 = 연중.",
|
||||
"series_end_label": "종료",
|
||||
"series_end_never": "없음 (무기한 반복)",
|
||||
"series_end_after_count": "지정 횟수 후",
|
||||
"series_end_until": "특정 날짜에",
|
||||
"series_end_count_label": "횟수",
|
||||
"series_end_until_label": "종료일",
|
||||
"parts_section": "부품 및 소모품",
|
||||
"part_add": "부품 추가",
|
||||
"part_name": "이름",
|
||||
"part_vendor": "제조사",
|
||||
"part_storage_location": "보관 위치",
|
||||
"part_product_url": "제품 URL",
|
||||
"part_unit": "단위",
|
||||
"part_cost": "단가",
|
||||
"part_stock": "재고",
|
||||
"part_reorder_threshold": "재주문 기준",
|
||||
"part_restock_quantity": "보충 수량",
|
||||
"part_auto_buy": "재고 부족 시 구매 작업 자동 생성",
|
||||
"part_restock": "재고 조정",
|
||||
"restock_quantity_label": "구매 수량",
|
||||
"consumes_parts_label": "사용하는 부품",
|
||||
"parts_load_failed": "이 객체의 부품을 불러올 수 없습니다 — 부품 사용 옵션을 지금은 쓸 수 없습니다.",
|
||||
"adopt_problem_button": "문제 센서 가져오기",
|
||||
"adopt_problem_title": "문제 센서 가져오기",
|
||||
"adopt_problem_hint": "HA 문제 센서(프린터 오류, 필터 경고, 배터리 부족)를 유지보수 작업으로 전환합니다. 문제가 활성인 동안 트리거되고 해결되면 자동으로 해제됩니다.",
|
||||
"adopt_problem_none": "아직 추적되지 않은 문제 센서를 찾지 못했습니다.",
|
||||
"adopt_problem_active": "활성",
|
||||
"adopt_problem_ok": "정상",
|
||||
"adopt_problem_new_object": "(신규)",
|
||||
"adopt_problem_adopt": "선택 항목 가져오기",
|
||||
"adopt_problem_done": "문제 센서 {tasks}개를 가져왔습니다",
|
||||
"views_label": "보기",
|
||||
"views_none": "— 보기 없음 —",
|
||||
"views_manage": "보기 저장 / 관리",
|
||||
"views_dialog_title": "저장된 보기",
|
||||
"views_dialog_hint": "현재 필터를 이름 있는 보기로 저장하면 모두가 다시 사용할 수 있습니다.",
|
||||
"views_name_placeholder": "보기 이름",
|
||||
"views_save_current": "현재 필터 저장",
|
||||
"views_none_yet": "저장된 보기가 아직 없습니다.",
|
||||
"close": "닫기",
|
||||
"trigger_hint_now": "센서의 현재 값은 {value}입니다.",
|
||||
"trigger_hint_above": "{target}을(를) 초과하면 작업이 트리거됩니다.",
|
||||
"trigger_hint_below": "{target} 미만으로 떨어지면 트리거됩니다.",
|
||||
"trigger_hint_counter_delta": "현재 값({value})부터 계수합니다: {due} 도달 시 기한 (+{target}), 완료할 때마다 계수가 다시 시작됩니다.",
|
||||
"trigger_hint_counter_delta_edit": "마지막 완료 이후 사용량을 계수합니다: +{target} 후 기한이 되며, 완료할 때마다 계수가 다시 시작됩니다.",
|
||||
"trigger_hint_counter_abs": "센서가 {target}에 도달하면 작업 기한이 됩니다.",
|
||||
"trigger_hint_runtime": "누적 가동 {hours}시간 후 작업 기한이 됩니다. 카운터는 완료할 때마다 다시 시작됩니다.",
|
||||
"trigger_hint_state_change": "상태가 {count}회 변경되면 작업 기한이 됩니다.",
|
||||
"trigger_hint_state_change_to": "“{state}”(으)로 {count}회 변경되면 작업 기한이 됩니다.",
|
||||
"trigger_hint_state_now": "현재 상태: {value}.",
|
||||
"adopt_problem_part": "사용 부품: {name}",
|
||||
"label_filter": "라벨",
|
||||
"all_labels": "모든 라벨",
|
||||
"settings_notify_scope": "특정 보기만 알림",
|
||||
"settings_notify_scope_all": "모든 작업",
|
||||
"settings_notify_scope_hint": "선택한 저장된 보기의 라벨/사용자 필터와 일치하는 작업만 알림을 보냅니다. 보기의 상태·정렬·그룹화는 여기서 무시됩니다.",
|
||||
"card_saved_view": "저장된 보기",
|
||||
"card_saved_view_none": "없음",
|
||||
"card_saved_view_help": "위 필터에 더해 보기의 상태·사용자·라벨 필터를 적용합니다. 보기의 정렬과 그룹화는 패널 표시 설정이며 카드에는 적용되지 않습니다.",
|
||||
"doc_part_none": "이 부품에 연결된 문서가 없습니다.",
|
||||
"settings_templates_toggle_group": "이 그룹의 모든 템플릿을 켜거나 끄기",
|
||||
"setups_button": "추천 설정",
|
||||
"setups_title": "추천 설정 (베타)",
|
||||
"setups_hint": "소모품 센서로 유지보수 작업을 구동할 수 있는 지원 통합구성요소의 기기입니다. 가져오면 객체가 생성되고 각 작업이 센서에 연결됩니다 — 소모품이 부족해지면 트리거되고 교체 후 자동으로 해제됩니다.",
|
||||
"setups_none": "연결되지 않은 소모품 센서를 가진 지원 기기를 찾지 못했습니다.",
|
||||
"setups_adopt": "선택 항목 설정",
|
||||
"setups_done": "센서 연결 작업 {tasks}개가 생성되었습니다.",
|
||||
"complete_parts_used": "이번에 사용한 부품",
|
||||
"part_delete_confirm": "'{name}' 부품을 삭제할까요? 재고 추적, 작업 연결, 진행 중인 구매 알림이 모두 제거됩니다.",
|
||||
"baseline_start_value": "시작 값 (선택)",
|
||||
"baseline_start_help": "이 값부터 계수를 시작합니다. 비워두면 현재 값부터 계수합니다. 마지막 정비 시점의 값을 입력하면 그 이후의 사용량이 바로 반영됩니다.",
|
||||
"setups_baseline_hint": "마지막 정비 시점의 값 (선택)",
|
||||
"baseline_start_help_edit": "비워두면 기존 계수를 유지합니다. 값을 입력하면 계수 기준이 다시 설정됩니다 (예: 마지막 정비 시점의 값).",
|
||||
"baseline_current_effective": "현재 적용 중인 시작 값: {value}",
|
||||
"runtime_on_states": "활성 상태 (쉼표로 구분)",
|
||||
"runtime_on_states_help": "가동 중으로 계산할 상태입니다 — 기본값: on. 예: mowing, cleaning, printing. 속성을 선택한 경우 해당 속성 값과 비교합니다.",
|
||||
"setups_target_new": "새로 만들기: {name}",
|
||||
"schedule_preview_title": "다음 예정일",
|
||||
"schedule_preview_ontime": "제때 완료한다고 가정한 일정입니다.",
|
||||
"schedule_preview_ends": "(시리즈 종료)",
|
||||
"adopt_problem_responsible": "가져온 모든 작업의 담당자 (선택)",
|
||||
"adopt_problem_configure": "구성",
|
||||
"history_auto": "자동",
|
||||
"battery_fleet_title": "배터리 플릿",
|
||||
"battery_fleet_none_low": "모든 배터리 정상 — 교체할 것이 없습니다.",
|
||||
"battery_fleet_buy_now": "지금 구매",
|
||||
"battery_fleet_soon": "곧 필요",
|
||||
"battery_fleet_soon_hint": "마지막 교체일로부터 예측한 값입니다 — 미리 주문해 두세요.",
|
||||
"battery_fleet_mark_all": "모두 교체됨으로 표시",
|
||||
"battery_fleet_mark_one": "이 배터리를 교체됨으로 표시",
|
||||
"battery_fleet_offline": "오프라인",
|
||||
"battery_fleet_trigger_lost": "이 작업의 센서 트리거가 사라졌습니다 — 트리거도 자동 완료도 되지 않습니다.",
|
||||
"battery_fleet_repair": "복구",
|
||||
"battery_fleet_exclude": "플릿에서 제외",
|
||||
"battery_fleet_excluded": "제외됨",
|
||||
"battery_fleet_include": "다시 추적",
|
||||
"battery_fleet_total": "배터리 {n}개 추적 중",
|
||||
"battery_fleet_setup_button": "배터리 플릿",
|
||||
"battery_fleet_setup_done": "배터리 플릿이 설정되었습니다 — 하나의 작업이 모든 배터리를 추적합니다.",
|
||||
"update_banner": "서버에 Maintenance Supporter의 새 버전이 있습니다 — 패널을 업데이트하려면 새로 고침하세요.",
|
||||
"update_reload": "새로 고침"
|
||||
}
|
||||
@@ -0,0 +1,811 @@
|
||||
{
|
||||
"maintenance": "Manutenção",
|
||||
"objects": "Objetos",
|
||||
"tasks": "Tarefas",
|
||||
"overdue": "Atrasada",
|
||||
"due_soon": "Vence em breve",
|
||||
"triggered": "Acionada",
|
||||
"trigger_replaced": "Gatilho substituído",
|
||||
"ok": "OK",
|
||||
"all": "Todas",
|
||||
"new_object": "+ Novo objeto",
|
||||
"templates_from": "A partir de modelo",
|
||||
"templates_title": "Comece com um modelo",
|
||||
"templates_task_count": "{n} tarefas",
|
||||
"template_created": "Criado a partir do modelo",
|
||||
"onboard_hint": "Adicione seu primeiro objeto para começar a acompanhar a manutenção.",
|
||||
"edit": "Editar",
|
||||
"duplicate": "Duplicar",
|
||||
"task_duplicated": "Tarefa duplicada",
|
||||
"object_duplicated": "Objeto duplicado",
|
||||
"delete": "Excluir",
|
||||
"add_task": "+ Adicionar tarefa",
|
||||
"complete": "Concluir",
|
||||
"completed": "Concluída",
|
||||
"skip": "Pular",
|
||||
"skipped": "Pulada",
|
||||
"missed": "Perdida",
|
||||
"reset": "Redefinir",
|
||||
"snooze": "Soneca",
|
||||
"snoozed": "Em soneca",
|
||||
"cancel": "Cancelar",
|
||||
"bulk_select": "Selecionar",
|
||||
"bulk_select_all": "Selecionar tudo",
|
||||
"bulk_n_selected": "{n} selecionadas",
|
||||
"bulk_completed": "{n} tarefas concluídas",
|
||||
"bulk_archived": "{n} tarefas arquivadas",
|
||||
"completing": "Concluindo…",
|
||||
"interval": "Intervalo",
|
||||
"warning": "Aviso",
|
||||
"last_performed": "Última execução",
|
||||
"next_due": "Próximo vencimento",
|
||||
"days_until_due": "Dias até o vencimento",
|
||||
"avg_duration": "Duração média",
|
||||
"trigger": "Gatilho",
|
||||
"trigger_type": "Tipo de gatilho",
|
||||
"threshold_above": "Limite superior",
|
||||
"threshold_below": "Limite inferior",
|
||||
"threshold": "Limite",
|
||||
"counter": "Contador",
|
||||
"state_change": "Mudança de estado",
|
||||
"runtime": "Tempo de operação",
|
||||
"runtime_hours": "Tempo de operação alvo (horas)",
|
||||
"target_value": "Valor alvo",
|
||||
"baseline": "Linha de base",
|
||||
"target_changes": "Mudanças alvo",
|
||||
"for_minutes": "Durante (minutos)",
|
||||
"time_based": "Baseado em tempo",
|
||||
"sensor_based": "Baseado em sensor",
|
||||
"manual": "Manual",
|
||||
"one_time": "Única vez",
|
||||
"weekdays": "Dias da semana",
|
||||
"nth_weekday": "Enésimo dia da semana do mês",
|
||||
"day_of_month": "Dia do mês",
|
||||
"recurrence_on_days": "Repetir em",
|
||||
"recurrence_occurrence": "Ocorrência",
|
||||
"recurrence_weekday": "Dia da semana",
|
||||
"recurrence_day": "Dia do mês (1–31)",
|
||||
"recurrence_last_day": "Último dia do mês",
|
||||
"recurrence_business_day": "Somente dias úteis (antecipar do fim de semana)",
|
||||
"recurrence_offset": "Deslocamento (dias, ±)",
|
||||
"recurrence_offset_help": "Desloque a data em ±N dias, ex.: -2 = dois dias antes.",
|
||||
"last_day_month": "Último dia do mês",
|
||||
"last_business_day_month": "Último dia útil",
|
||||
"ord_1": "1º",
|
||||
"ord_2": "2º",
|
||||
"ord_3": "3º",
|
||||
"ord_4": "4º",
|
||||
"ord_5": "5º",
|
||||
"ord_last": "Último",
|
||||
"day_word": "Dia",
|
||||
"interval_value": "Intervalo",
|
||||
"interval_unit": "Unidade",
|
||||
"unit_days": "Dias",
|
||||
"unit_weeks": "Semanas",
|
||||
"unit_months": "Meses",
|
||||
"unit_years": "Anos",
|
||||
"due_date": "Data de vencimento",
|
||||
"cleaning": "Limpeza",
|
||||
"inspection": "Inspeção",
|
||||
"replacement": "Substituição",
|
||||
"calibration": "Calibração",
|
||||
"service": "Revisão",
|
||||
"reading": "Leitura",
|
||||
"custom": "Personalizado",
|
||||
"history": "Histórico",
|
||||
"cost": "Custo",
|
||||
"report_button": "Relatório",
|
||||
"report_title": "Relatório de manutenção",
|
||||
"report_generated": "Gerado em",
|
||||
"report_times_done": "Concluídas",
|
||||
"report_total_cost": "Custo total",
|
||||
"report_every": "a cada {n} {unit}",
|
||||
"report_notes": "Observações",
|
||||
"report_col_type": "Tipo",
|
||||
"report_col_status": "Status",
|
||||
"report_col_schedule": "Agendamento",
|
||||
"duration": "Duração",
|
||||
"both": "Ambos",
|
||||
"trigger_val": "Valor do gatilho",
|
||||
"complete_title": "Concluir: ",
|
||||
"checklist": "Checklist",
|
||||
"checklist_steps_optional": "Etapas do checklist (opcional)",
|
||||
"checklist_placeholder": "Limpar o filtro\nTrocar a vedação\nTestar a pressão",
|
||||
"checklist_help": "Uma etapa por linha. Máx. 100 itens.",
|
||||
"err_too_long": "{field}: muito longo (máx. {n} caracteres)",
|
||||
"err_too_short": "{field}: muito curto (mín. {n} caracteres)",
|
||||
"err_value_too_high": "{field}: muito grande (máx. {n})",
|
||||
"err_value_too_low": "{field}: muito pequeno (mín. {n})",
|
||||
"err_required": "{field}: obrigatório",
|
||||
"err_wrong_type": "{field}: tipo incorreto (esperado: {type})",
|
||||
"err_invalid_choice": "{field}: valor não permitido",
|
||||
"err_invalid_value": "{field}: valor inválido",
|
||||
"feat_schedule_time": "Agendamento por horário",
|
||||
"feat_schedule_time_desc": "As tarefas ficam atrasadas em um horário específico do dia, em vez de à meia-noite.",
|
||||
"schedule_time_optional": "Vence às (opcional, HH:MM)",
|
||||
"schedule_time_help": "Vazio = meia-noite (padrão). Fuso horário do HA.",
|
||||
"at_time": "às",
|
||||
"notes_optional": "Observações (opcional)",
|
||||
"cost_optional": "Custo (opcional)",
|
||||
"duration_minutes": "Duração em minutos (opcional)",
|
||||
"days": "dias",
|
||||
"day": "dia",
|
||||
"today": "Hoje",
|
||||
"d_overdue": "d de atraso",
|
||||
"no_tasks": "Ainda não há tarefas de manutenção. Crie um objeto para começar.",
|
||||
"no_tasks_short": "Sem tarefas",
|
||||
"no_history": "Ainda não há entradas no histórico.",
|
||||
"show_all": "Mostrar tudo",
|
||||
"cost_duration_chart": "Custo e duração",
|
||||
"installed": "Instalado",
|
||||
"confirm_delete_object": "Excluir este objeto e todas as suas tarefas?",
|
||||
"confirm_delete_task": "Excluir esta tarefa?",
|
||||
"min": "Mín",
|
||||
"max": "Máx",
|
||||
"save": "Salvar",
|
||||
"saving": "Salvando…",
|
||||
"edit_task": "Editar tarefa",
|
||||
"new_task": "Nova tarefa de manutenção",
|
||||
"task_name": "Nome da tarefa",
|
||||
"maintenance_type": "Tipo de manutenção",
|
||||
"priority": "Prioridade",
|
||||
"labels": "Etiquetas",
|
||||
"labels_placeholder": "ex.: segurança, sazonal, visível ao inquilino",
|
||||
"labels_help": "Tags separadas por vírgula para filtragem e relatórios.",
|
||||
"priority_low": "Baixa",
|
||||
"priority_normal": "Normal",
|
||||
"priority_high": "Alta",
|
||||
"schedule_type": "Tipo de agendamento",
|
||||
"interval_days": "Intervalo (dias)",
|
||||
"warning_days": "Dias de aviso",
|
||||
"earliest_completion_days": "Conclusão antecipada (dias antes do vencimento)",
|
||||
"earliest_completion_days_help": "Deixe vazio para permitir concluir a qualquer momento. 0 = somente no dia do vencimento ou depois.",
|
||||
"last_performed_optional": "Última execução (opcional)",
|
||||
"interval_anchor": "Âncora do intervalo",
|
||||
"anchor_completion": "A partir da data de conclusão",
|
||||
"anchor_planned": "A partir da data planejada (sem deriva)",
|
||||
"edit_object": "Editar objeto",
|
||||
"name": "Nome",
|
||||
"manufacturer_optional": "Fabricante (opcional)",
|
||||
"model_optional": "Modelo (opcional)",
|
||||
"serial_number_optional": "Número de série (opcional)",
|
||||
"serial_number_label": "N/S",
|
||||
"documentation_url_label": "Manual",
|
||||
"object_notes_label": "Observações",
|
||||
"sort_due_date": "Data de vencimento",
|
||||
"sort_object": "Nome do objeto",
|
||||
"sort_type": "Tipo",
|
||||
"sort_task_name": "Nome da tarefa",
|
||||
"all_objects": "Todos os objetos",
|
||||
"tasks_lower": "tarefas",
|
||||
"no_tasks_yet": "Ainda sem tarefas",
|
||||
"add_first_task": "Adicionar a primeira tarefa",
|
||||
"trigger_configuration": "Configuração do gatilho",
|
||||
"entity_id": "ID da entidade",
|
||||
"comma_separated": "separado por vírgulas",
|
||||
"entity_logic": "Lógica das entidades",
|
||||
"entity_logic_any": "Qualquer entidade aciona",
|
||||
"entity_logic_all": "Todas as entidades devem acionar",
|
||||
"entities": "entidades",
|
||||
"attribute_optional": "Atributo (opcional, vazio = estado)",
|
||||
"use_entity_state": "Usar o estado da entidade (sem atributo)",
|
||||
"trigger_above": "Acionar acima de",
|
||||
"trigger_below": "Acionar abaixo de",
|
||||
"for_at_least_minutes": "Por pelo menos (minutos)",
|
||||
"safety_interval_days": "Intervalo de segurança (dias, opcional)",
|
||||
"safety_interval": "Intervalo de segurança (opcional)",
|
||||
"delta_mode": "Modo delta",
|
||||
"from_state_optional": "Do estado (opcional)",
|
||||
"to_state_optional": "Para o estado (opcional)",
|
||||
"documentation_url_optional": "URL da documentação (opcional)",
|
||||
"object_notes_optional": "Observações (opcional)",
|
||||
"nfc_tag_id_optional": "ID da tag NFC (opcional)",
|
||||
"nfc_tags_empty_help": "Ainda não há tags NFC registradas no Home Assistant.",
|
||||
"nfc_tags_open_settings": "Abrir configurações de tags",
|
||||
"nfc_tags_refresh": "Atualizar",
|
||||
"environmental_entity_optional": "Sensor ambiental (opcional)",
|
||||
"environmental_entity_helper": "ex.: sensor.outdoor_temperature — ajusta o intervalo com base nas condições ambientais",
|
||||
"environmental_attribute_optional": "Atributo ambiental (opcional)",
|
||||
"nfc_tag_id": "ID da tag NFC",
|
||||
"nfc_linked": "Tag NFC vinculada",
|
||||
"nfc_link_hint": "Clique para vincular uma tag NFC",
|
||||
"responsible_user": "Usuário responsável",
|
||||
"shared_with": "Compartilhada com (rodízio)",
|
||||
"shared_with_help": "Escolha várias pessoas para compartilhar esta tarefa; o responsável muda em rodízio a cada conclusão.",
|
||||
"rotation_strategy": "Rodízio",
|
||||
"rotation_none": "Sem rodízio",
|
||||
"rotation_round_robin": "Revezamento",
|
||||
"rotation_least_completed": "Quem concluiu menos",
|
||||
"rotation_random": "Aleatório",
|
||||
"no_user_assigned": "(Nenhum usuário atribuído)",
|
||||
"all_users": "Todos os usuários",
|
||||
"my_tasks": "Minhas tarefas",
|
||||
"tab_calendar": "Calendário",
|
||||
"cal_no_events": "Sem manutenção",
|
||||
"cal_window_7": "7 dias",
|
||||
"cal_window_14": "14 dias",
|
||||
"cal_window_30": "30 dias",
|
||||
"cal_window_365": "1 ano",
|
||||
"cal_every_n_days": "a cada {n} dias",
|
||||
"cal_source_time": "Baseado em tempo",
|
||||
"cal_source_time_adaptive": "Baseado em tempo (adaptativo)",
|
||||
"cal_source_sensor": "Baseado em sensor",
|
||||
"cal_predicted": "previsto",
|
||||
"cal_confidence_high": "confiança alta",
|
||||
"cal_confidence_medium": "confiança média",
|
||||
"cal_confidence_low": "confiança baixa",
|
||||
"budget_monthly": "Orçamento mensal",
|
||||
"budget_yearly": "Orçamento anual",
|
||||
"groups": "Grupos",
|
||||
"new_group": "Novo grupo",
|
||||
"edit_group": "Editar grupo",
|
||||
"no_groups": "Ainda sem grupos",
|
||||
"delete_group": "Excluir grupo",
|
||||
"delete_group_confirm": "Excluir o grupo '{name}'?",
|
||||
"group_select_tasks": "Selecionar tarefas",
|
||||
"group_name_required": "O nome é obrigatório",
|
||||
"description_optional": "Descrição (opcional)",
|
||||
"selected": "Selecionadas",
|
||||
"loading_chart": "Carregando dados do gráfico...",
|
||||
"hide_outliers": "Ocultar valores atípicos (falhas do sensor)",
|
||||
"was_maintenance_needed": "Esta manutenção era necessária?",
|
||||
"feedback_needed": "Necessária",
|
||||
"feedback_not_needed": "Desnecessária",
|
||||
"feedback_not_sure": "Não sei",
|
||||
"suggested_interval": "Intervalo sugerido",
|
||||
"apply_suggestion": "Aplicar",
|
||||
"reanalyze": "Reanalisar",
|
||||
"reanalyze_result": "Nova análise",
|
||||
"reanalyze_insufficient_data": "Dados insuficientes para gerar uma recomendação",
|
||||
"data_points": "pontos de dados",
|
||||
"dismiss_suggestion": "Dispensar",
|
||||
"confidence_low": "Baixa",
|
||||
"confidence_medium": "Média",
|
||||
"confidence_high": "Alta",
|
||||
"recommended": "recomendado",
|
||||
"seasonal_awareness": "Sazonalidade",
|
||||
"edit_seasonal_overrides": "Editar fatores sazonais",
|
||||
"seasonal_overrides_title": "Fatores sazonais (manual)",
|
||||
"seasonal_overrides_hint": "Fator por mês (0,1–5,0). Vazio = aprendido automaticamente.",
|
||||
"seasonal_override_invalid": "Valor inválido",
|
||||
"seasonal_override_range": "O fator deve estar entre 0,1 e 5,0",
|
||||
"clear_all": "Limpar tudo",
|
||||
"seasonal_chart_title": "Fatores sazonais",
|
||||
"seasonal_learned": "Aprendido",
|
||||
"seasonal_manual": "Manual",
|
||||
"month_jan": "Jan",
|
||||
"month_feb": "Fev",
|
||||
"month_mar": "Mar",
|
||||
"month_apr": "Abr",
|
||||
"month_may": "Mai",
|
||||
"month_jun": "Jun",
|
||||
"month_jul": "Jul",
|
||||
"month_aug": "Ago",
|
||||
"month_sep": "Set",
|
||||
"month_oct": "Out",
|
||||
"month_nov": "Nov",
|
||||
"month_dec": "Dez",
|
||||
"sensor_prediction": "Previsão do sensor",
|
||||
"degradation_trend": "Tendência",
|
||||
"trend_rising": "Subindo",
|
||||
"trend_falling": "Caindo",
|
||||
"trend_stable": "Estável",
|
||||
"trend_insufficient_data": "Dados insuficientes",
|
||||
"days_until_threshold": "Dias até o limite",
|
||||
"threshold_exceeded": "Limite excedido",
|
||||
"environmental_adjustment": "Fator ambiental",
|
||||
"sensor_prediction_urgency": "O sensor prevê atingir o limite em ~{days} dias",
|
||||
"day_short": "dia",
|
||||
"weibull_reliability_curve": "Curva de confiabilidade",
|
||||
"weibull_failure_probability": "Probabilidade de falha",
|
||||
"weibull_r_squared": "R² do ajuste",
|
||||
"beta_early_failures": "Falhas precoces",
|
||||
"beta_random_failures": "Falhas aleatórias",
|
||||
"beta_wear_out": "Desgaste",
|
||||
"beta_highly_predictable": "Altamente previsível",
|
||||
"confidence_interval": "Intervalo de confiança",
|
||||
"confidence_conservative": "Conservador",
|
||||
"confidence_aggressive": "Otimista",
|
||||
"current_interval_marker": "Intervalo atual",
|
||||
"recommended_marker": "Recomendado",
|
||||
"characteristic_life": "Vida característica",
|
||||
"chart_mini_sparkline": "Minigráfico de tendência",
|
||||
"chart_history": "Histórico de custo e duração",
|
||||
"chart_seasonal": "Fatores sazonais, 12 meses",
|
||||
"chart_weibull": "Curva de confiabilidade Weibull",
|
||||
"chart_sparkline": "Gráfico do valor do gatilho do sensor",
|
||||
"days_progress": "Progresso em dias",
|
||||
"qr_code": "Código QR",
|
||||
"qr_generating": "Gerando código QR…",
|
||||
"qr_error": "Falha ao gerar o código QR.",
|
||||
"qr_error_no_url": "Nenhuma URL do HA configurada. Defina uma URL externa ou interna em Configurações → Sistema → Rede.",
|
||||
"save_error": "Falha ao salvar. Tente novamente.",
|
||||
"qr_print": "Imprimir",
|
||||
"qr_download": "Baixar SVG",
|
||||
"qr_action": "Ação ao escanear",
|
||||
"qr_action_view": "Ver informações de manutenção",
|
||||
"qr_action_complete": "Marcar a manutenção como concluída",
|
||||
"qr_url_mode": "Tipo de link",
|
||||
"qr_mode_companion": "Companion App",
|
||||
"qr_mode_local": "Local (mDNS)",
|
||||
"qr_mode_server": "URL do servidor",
|
||||
"overview": "Visão geral",
|
||||
"analysis": "Análise",
|
||||
"recent_activities": "Atividades recentes",
|
||||
"search_notes": "Pesquisar observações",
|
||||
"avg_cost": "Custo médio",
|
||||
"no_advanced_features": "Nenhum recurso avançado ativado",
|
||||
"no_advanced_features_hint": "Ative “Intervalos adaptativos” ou “Padrões sazonais” nas configurações da integração para ver dados de análise aqui.",
|
||||
"analysis_not_enough_data": "Ainda não há dados suficientes para análise.",
|
||||
"analysis_not_enough_data_hint": "A análise de Weibull exige pelo menos 5 manutenções concluídas; padrões sazonais aparecem após 6+ pontos de dados por mês.",
|
||||
"analysis_manual_task_hint": "Tarefas manuais sem intervalo não geram dados de análise.",
|
||||
"completions": "conclusões",
|
||||
"current": "Atual",
|
||||
"shorter": "Mais curto",
|
||||
"longer": "Mais longo",
|
||||
"normal": "Normal",
|
||||
"disabled": "Desativado",
|
||||
"compound_logic": "Lógica composta",
|
||||
"compound": "Composto (várias condições)",
|
||||
"compound_logic_and": "E — todas as condições devem acionar",
|
||||
"compound_logic_or": "OU — qualquer condição aciona",
|
||||
"compound_help": "Combine várias condições de sensor em um único gatilho.",
|
||||
"compound_no_conditions": "Ainda sem condições — adicione pelo menos uma.",
|
||||
"compound_add_condition": "Adicionar condição",
|
||||
"compound_condition": "Condição",
|
||||
"compound_remove_condition": "Remover condição",
|
||||
"card_title": "Título",
|
||||
"card_show_header": "Mostrar cabeçalho com estatísticas",
|
||||
"card_show_actions": "Mostrar botões de ação",
|
||||
"card_compact": "Modo compacto",
|
||||
"card_max_items": "Máx. de itens (0 = todos)",
|
||||
"card_filter_status": "Filtrar por status",
|
||||
"card_filter_status_help": "Vazio = mostrar todos os status.",
|
||||
"card_filter_objects": "Filtrar por objetos",
|
||||
"card_filter_objects_help": "Vazio = mostrar todos os objetos.",
|
||||
"card_filter_entities": "Filtrar por entidades (entity_ids)",
|
||||
"card_filter_entities_help": "Escolha entidades sensor / binary_sensor desta integração. Vazio = todas.",
|
||||
"card_loading_objects": "Carregando objetos…",
|
||||
"card_load_error": "Não foi possível carregar os objetos — verifique a conexão WebSocket.",
|
||||
"card_no_tasks_title": "Ainda não há tarefas de manutenção",
|
||||
"card_no_tasks_cta": "→ Crie uma no painel de Manutenção",
|
||||
"no_objects": "Ainda não há objetos.",
|
||||
"action_error": "A ação falhou. Tente novamente.",
|
||||
"area_id_optional": "Área (opcional)",
|
||||
"installation_date_optional": "Data de instalação (opcional)",
|
||||
"warranty_expiry_optional": "Fim da garantia (opcional)",
|
||||
"warranty": "Garantia",
|
||||
"warranty_valid_until": "válida até {date}",
|
||||
"warranty_expires_in": "expira em {days} dias",
|
||||
"warranty_expired": "expirada",
|
||||
"cal_past_windows": "Janelas passadas",
|
||||
"cal_forward_windows": "Janelas futuras",
|
||||
"history_edit_title": "Editar entrada do histórico",
|
||||
"history_edit_timestamp": "Data e hora",
|
||||
"manufacturer": "Fabricante",
|
||||
"model": "Modelo",
|
||||
"area": "Área",
|
||||
"actions": "Ações",
|
||||
"view_mode_label": "Visualização",
|
||||
"view_cards": "Cartões",
|
||||
"view_table": "Tabela",
|
||||
"objects_table_columns_label": "Colunas da tabela de objetos",
|
||||
"objects_table_columns_hint": "Escolha quais colunas aparecem na visualização em tabela dos objetos.",
|
||||
"custom_icon_optional": "Ícone (opcional, ex.: mdi:wrench)",
|
||||
"task_enabled": "Tarefa ativada",
|
||||
"skip_reason_prompt": "Pular esta tarefa?",
|
||||
"reason_optional": "Motivo (opcional)",
|
||||
"reset_date_prompt": "Marcar a tarefa como realizada?",
|
||||
"reset_date_optional": "Data da última execução (opcional, padrão: hoje)",
|
||||
"notes_label": "Observações",
|
||||
"documentation_label": "Documentação",
|
||||
"no_nfc_tag": "— Sem tag —",
|
||||
"dashboard": "Painel",
|
||||
"tab_today": "Hoje",
|
||||
"palette_placeholder": "Pesquisar objetos e tarefas…",
|
||||
"palette_no_results": "Nenhum resultado",
|
||||
"palette_hint": "↑↓ para navegar · Enter para abrir · Esc para fechar",
|
||||
"today_all_caught_up": "Tudo em dia! Nada vence esta semana.",
|
||||
"today_overdue": "Atrasadas",
|
||||
"today_due_today": "Vencem hoje",
|
||||
"today_this_week": "Esta semana",
|
||||
"settings": "Configurações",
|
||||
"settings_features": "Recursos avançados",
|
||||
"settings_features_desc": "Ative ou desative recursos avançados. Desativar apenas os oculta da interface, sem excluir dados.",
|
||||
"feat_adaptive": "Agendamento adaptativo",
|
||||
"feat_adaptive_desc": "Aprende intervalos ideais a partir do histórico de manutenção",
|
||||
"feat_predictions": "Previsões de sensor",
|
||||
"feat_predictions_desc": "Prevê datas de acionamento a partir da degradação do sensor",
|
||||
"feat_seasonal": "Ajustes sazonais",
|
||||
"feat_seasonal_desc": "Ajusta intervalos com base em padrões sazonais",
|
||||
"feat_environmental": "Correlação ambiental",
|
||||
"feat_environmental_desc": "Correlaciona intervalos com temperatura/umidade",
|
||||
"feat_budget": "Controle de orçamento",
|
||||
"feat_budget_desc": "Acompanha gastos mensais e anuais de manutenção",
|
||||
"feat_groups": "Grupos de tarefas",
|
||||
"feat_groups_desc": "Organiza tarefas em grupos lógicos",
|
||||
"feat_checklists": "Checklists",
|
||||
"feat_checklists_desc": "Procedimentos em várias etapas para concluir tarefas",
|
||||
"settings_general": "Geral",
|
||||
"settings_default_warning": "Dias de aviso padrão",
|
||||
"settings_panel_enabled": "Painel na barra lateral",
|
||||
"settings_panel_title": "Título do painel na barra lateral",
|
||||
"settings_notifications": "Notificações",
|
||||
"settings_notify_service": "Serviço de notificação",
|
||||
"test_notification": "Notificação de teste",
|
||||
"send_test": "Enviar teste",
|
||||
"testing": "Enviando…",
|
||||
"test_notification_success": "Notificação de teste enviada",
|
||||
"test_notification_failed": "Falha na notificação de teste",
|
||||
"settings_notify_due_soon": "Notificar quando vencer em breve",
|
||||
"settings_notify_overdue": "Notificar quando atrasada",
|
||||
"settings_notify_triggered": "Notificar quando acionada",
|
||||
"settings_interval_hours": "Intervalo de repetição (horas, 0 = uma vez)",
|
||||
"settings_quiet_hours": "Horário de silêncio",
|
||||
"settings_quiet_start": "Início",
|
||||
"settings_quiet_end": "Fim",
|
||||
"settings_max_per_day": "Máx. de notificações por dia (0 = ilimitado)",
|
||||
"settings_bundling": "Agrupar notificações",
|
||||
"settings_bundle_threshold": "Limite para agrupar",
|
||||
"settings_reminder_leads": "Lembretes extras (dias antes do vencimento)",
|
||||
"settings_reminder_leads_hint": "Antecedências separadas por vírgula, ex.: 14, 3, 0 — um lembrete extra é enviado em cada dia correspondente. Vazio = desativado.",
|
||||
"settings_actions": "Botões de ação no celular",
|
||||
"settings_action_complete": "Mostrar botão 'Concluir'",
|
||||
"settings_action_skip": "Mostrar botão 'Pular'",
|
||||
"settings_action_snooze": "Mostrar botão 'Soneca'",
|
||||
"settings_weekly_digest": "Resumo semanal",
|
||||
"settings_weekly_digest_hint": "Uma única notificação de resumo na segunda-feira de manhã quando houver tarefas vencendo.",
|
||||
"settings_warranty_reminder": "Lembrete de fim de garantia",
|
||||
"settings_warranty_reminder_days": "Dias antes do vencimento",
|
||||
"settings_warranty_reminder_hint": "Notifica uma vez quando faltar este número de dias para a garantia de um objeto expirar.",
|
||||
"settings_snooze_hours": "Duração da soneca (horas)",
|
||||
"settings_budget": "Orçamento",
|
||||
"settings_currency": "Moeda",
|
||||
"settings_budget_monthly": "Orçamento mensal",
|
||||
"settings_budget_yearly": "Orçamento anual",
|
||||
"settings_budget_alerts": "Alertas de orçamento",
|
||||
"settings_budget_threshold": "Limite de alerta (%)",
|
||||
"settings_import_export": "Importar / Exportar",
|
||||
"settings_export_json": "Exportar JSON",
|
||||
"settings_export_yaml": "Exportar YAML",
|
||||
"settings_export_csv": "Exportar CSV",
|
||||
"settings_import_csv": "Importar CSV",
|
||||
"settings_import_placeholder": "Cole o conteúdo JSON ou CSV aqui…",
|
||||
"settings_import_btn": "Importar",
|
||||
"settings_import_success": "{count} objetos importados com sucesso.",
|
||||
"settings_export_success": "Exportação baixada.",
|
||||
"settings_saved": "Configuração salva.",
|
||||
"settings_include_history": "Incluir histórico",
|
||||
"settings_export_selection": "Limitar aos objetos selecionados (opcional)",
|
||||
"settings_docs_archive": "Arquivo de documentos (com arquivos)",
|
||||
"settings_docs_archive_hint": "As exportações JSON/YAML/CSV levam apenas as configurações. Este ZIP inclui o conteúdo dos arquivos enviados para que a restauração seja completa.",
|
||||
"settings_docs_export_btn": "Baixar ZIP de documentos",
|
||||
"settings_docs_import_btn": "Restaurar ZIP de documentos",
|
||||
"settings_docs_import_success": "Restaurados: {blobs} arquivos, {docs} documentos",
|
||||
"sort_alphabetical": "Alfabética",
|
||||
"sort_due_soonest": "Vencimento mais próximo",
|
||||
"sort_task_count": "Número de tarefas",
|
||||
"sort_area": "Área",
|
||||
"sort_assigned_user": "Usuário atribuído",
|
||||
"sort_group": "Grupo",
|
||||
"groupby_none": "Sem agrupamento",
|
||||
"groupby_area": "Por área",
|
||||
"groupby_group": "Por grupo",
|
||||
"groupby_user": "Por usuário",
|
||||
"filter_label": "Filtro",
|
||||
"user_label": "Usuário",
|
||||
"sort_label": "Ordenar",
|
||||
"group_by_label": "Agrupar por",
|
||||
"state_value_help": "Use o valor de estado do HA (geralmente minúsculo, ex.: \"on\"/\"off\"). Maiúsculas e minúsculas são normalizadas ao salvar.",
|
||||
"target_changes_help": "Número de transições correspondentes antes de o gatilho disparar (padrão: 1).",
|
||||
"qr_print_title": "Imprimir códigos QR",
|
||||
"qr_print_desc": "Gere uma página imprimível de códigos QR para recortar e colar nos seus equipamentos.",
|
||||
"qr_print_load": "Carregar objetos",
|
||||
"qr_print_filter": "Filtro",
|
||||
"qr_print_objects": "Objetos",
|
||||
"qr_print_actions": "Ações",
|
||||
"qr_print_url_mode": "Tipo de link",
|
||||
"qr_print_estimate": "Códigos QR estimados",
|
||||
"qr_print_over_limit": "o limite é 200, restrinja o filtro",
|
||||
"qr_print_generate": "Gerar códigos QR",
|
||||
"qr_print_generating": "Gerando…",
|
||||
"qr_print_ready": "Códigos QR prontos",
|
||||
"qr_print_print_button": "Imprimir",
|
||||
"qr_print_empty": "Nada para gerar",
|
||||
"qr_action_skip": "Pular",
|
||||
"vacation_title": "Modo férias",
|
||||
"vacation_active": "ativo",
|
||||
"vacation_ended": "encerrado",
|
||||
"vacation_desc": "Planeje as férias: as notificações ficam pausadas durante o período mais uma margem de dias. Você pode reativar tarefas específicas.",
|
||||
"vacation_enable": "Ativar modo férias",
|
||||
"vacation_start": "Início",
|
||||
"vacation_end": "Fim",
|
||||
"vacation_buffer": "Margem (dias)",
|
||||
"vacation_exempt_title": "Notificar mesmo assim durante as férias",
|
||||
"vacation_exempt_desc": "Escolha tarefas que ainda devem notificar durante as férias (ex.: química crítica da piscina).",
|
||||
"vacation_load_tasks": "Carregar tarefas",
|
||||
"vacation_preview_btn": "Mostrar prévia",
|
||||
"vacation_preview_affected": "tarefas afetadas",
|
||||
"vacation_event_due_soon": "passa a vencer em breve",
|
||||
"vacation_event_overdue": "fica atrasada",
|
||||
"vacation_event_triggered_est": "possível acionamento por sensor",
|
||||
"vacation_sensor_based": "(baseado em sensor)",
|
||||
"vacation_action_notify": "Notificar mesmo assim",
|
||||
"vacation_action_unsilence": "Silenciar novamente",
|
||||
"vacation_marked_complete": "Marcada como concluída",
|
||||
"vacation_marked_skip": "Pulada",
|
||||
"vacation_end_now": "Encerrar as férias agora",
|
||||
"add": "Adicionar",
|
||||
"show_stats": "Mostrar estatísticas + gráficos",
|
||||
"hide_stats": "Ocultar estatísticas",
|
||||
"adaptive_no_data": "Ainda não há histórico de conclusões suficiente para a análise adaptativa. Conclua esta tarefa mais algumas vezes para desbloquear recomendações de intervalo e gráficos de confiabilidade.",
|
||||
"suggestion_applied": "Intervalo sugerido aplicado",
|
||||
"vacation_mode": "Modo férias",
|
||||
"vacation_status_active": "Ativo agora",
|
||||
"vacation_status_scheduled": "Agendado",
|
||||
"vacation_status_inactive": "Inativo",
|
||||
"vacation_end_now_confirm": "Encerrar as férias imediatamente?",
|
||||
"vacation_exempt_count": "isentas",
|
||||
"vacation_advanced": "Avançado…",
|
||||
"vacation_open_panel": "Abrir no painel",
|
||||
"enable": "Ativar",
|
||||
"saved": "Salvo",
|
||||
"budget_monthly_set": "Definir mensal",
|
||||
"budget_yearly_set": "Definir anual",
|
||||
"budget_advanced": "Moeda, alertas…",
|
||||
"budget_open_panel": "Abrir no painel",
|
||||
"groups_empty": "Ainda sem grupos.",
|
||||
"group_new_placeholder": "Adicionar grupo…",
|
||||
"group_delete_confirm": "Excluir o grupo \"{name}\"?",
|
||||
"groups_manage_tasks": "Gerenciar atribuições de tarefas…",
|
||||
"groups_open_panel": "Abrir no painel",
|
||||
"unassigned": "Sem atribuição",
|
||||
"no_area": "Sem área",
|
||||
"has_overdue": "Tem tarefas atrasadas",
|
||||
"object": "Objeto",
|
||||
"settings_panel_access": "Acesso ao painel",
|
||||
"settings_panel_access_desc": "Administradores sempre têm acesso total. Para delegar criação, edição e exclusão a não administradores específicos, ative esta opção e selecione-os abaixo — os demais veem apenas Concluir e Pular.",
|
||||
"settings_operator_write": "Permitir que os usuários selecionados criem, editem e excluam",
|
||||
"settings_operator_write_desc": "Desligado: apenas administradores podem alterar o conteúdo. Ligado: os usuários selecionados abaixo também recebem acesso total.",
|
||||
"no_non_admin_users": "Nenhum usuário não administrador encontrado. Adicione em Configurações → Pessoas.",
|
||||
"owner_label": "Proprietário",
|
||||
"feat_completion_actions": "Ações de conclusão",
|
||||
"feat_completion_actions_desc": "Ação do HA por tarefa ao concluir + QR de conclusão rápida com valores predefinidos.",
|
||||
"on_complete_action_title": "Ao concluir: acionar ação do HA (opcional)",
|
||||
"on_complete_action_desc": "Chama um serviço do HA quando a tarefa é concluída — ex.: zerar um contador no dispositivo.",
|
||||
"on_complete_action_service": "Serviço",
|
||||
"on_complete_action_target": "Entidade alvo",
|
||||
"on_complete_action_target_hint": "Atenção: o domínio da entidade deve corresponder ao serviço — ex.: 'button.press' só funciona em button.*, 'counter.increment' só em counter.*, 'input_button.press' só em input_button.* etc. Em caso de divergência, a ação falhará silenciosamente (o HA registra 'Referenced entities ... missing or not currently available').",
|
||||
"on_complete_action_data": "Dados (JSON, opcional)",
|
||||
"on_complete_action_test": "Validar configuração",
|
||||
"on_complete_action_test_success": "✓ Configuração válida (a ação só disparará na conclusão da tarefa)",
|
||||
"on_complete_action_test_failed": "Falhou",
|
||||
"quick_complete_defaults_title": "Padrões de conclusão rápida (para leituras de QR, opcional)",
|
||||
"quick_complete_defaults_desc": "Valores predefinidos para conclusões rápidas via QR. Sem eles, o QR abre o diálogo de conclusão.",
|
||||
"quick_complete_defaults_notes": "Observações",
|
||||
"quick_complete_defaults_cost": "Custo",
|
||||
"quick_complete_defaults_duration": "Duração (minutos)",
|
||||
"quick_complete_defaults_feedback_none": "Sem feedback",
|
||||
"quick_complete_defaults_feedback_needed": "Era necessária",
|
||||
"quick_complete_defaults_feedback_not_needed": "Não era necessária",
|
||||
"quick_complete_success": "Concluída rapidamente",
|
||||
"show_all_objects": "Mostrar todos os objetos",
|
||||
"show_all_tasks": "Limpar filtro — mostrar todas as tarefas",
|
||||
"filter_to_overdue": "Filtrar a lista de tarefas para apenas atrasadas",
|
||||
"filter_to_due_soon": "Filtrar a lista de tarefas para apenas vencendo em breve",
|
||||
"filter_to_triggered": "Filtrar a lista de tarefas para apenas acionadas",
|
||||
"open_task": "Abrir tarefa",
|
||||
"show_details": "Mostrar histórico + estatísticas",
|
||||
"hide_details": "Ocultar detalhes",
|
||||
"history_empty": "Ainda sem histórico.",
|
||||
"history_edit_button": "Editar entrada",
|
||||
"total_cost": "Custo total",
|
||||
"times_performed": "Realizada",
|
||||
"older_entries": "mais antigas",
|
||||
"open_in_panel": "Abrir no painel de Manutenção",
|
||||
"skip_reason": "Motivo para pular (opcional)",
|
||||
"reset_to_date": "Redefinir última execução para",
|
||||
"delete_task_confirm": "Excluir esta tarefa e seu histórico?",
|
||||
"delete_object_confirm": "Excluir este objeto e todas as suas tarefas?",
|
||||
"loading": "Carregando…",
|
||||
"archive": "Arquivar",
|
||||
"undo": "Desfazer",
|
||||
"task_archived": "Tarefa arquivada",
|
||||
"object_archived": "Objeto arquivado",
|
||||
"unarchive": "Desarquivar",
|
||||
"archived": "Arquivada",
|
||||
"show_archived": "Mostrar arquivados",
|
||||
"hide_archived": "Ocultar arquivados",
|
||||
"confirm_archive_object": "Arquivar este objeto e suas tarefas? Eles mantêm o histórico e podem ser desarquivados depois.",
|
||||
"settings_archive": "Arquivamento e retenção",
|
||||
"settings_archive_desc": "Aposente tarefas únicas concluídas sem excluí-las. Itens arquivados ficam ocultos e inativos, mas mantêm o histórico e o custo.",
|
||||
"settings_archive_oneoff_days": "Arquivar automaticamente tarefas únicas concluídas após (dias, 0 = desativado)",
|
||||
"settings_delete_archived_oneoff_days": "Excluir automaticamente tarefas únicas arquivadas após (dias, 0 = nunca)",
|
||||
"archive_object": "Arquivar objeto",
|
||||
"unarchive_object": "Desarquivar objeto",
|
||||
"documents": "Documentos",
|
||||
"documents_empty": "Ainda não há documentos.",
|
||||
"doc_upload": "Enviar arquivo",
|
||||
"doc_uploading": "Enviando…",
|
||||
"doc_add_link": "Adicionar link",
|
||||
"doc_link_url": "URL (https://…)",
|
||||
"doc_link_title": "Título (opcional)",
|
||||
"doc_open": "Abrir",
|
||||
"doc_delete_confirm": "Excluir \"{name}\"?",
|
||||
"doc_too_large": "O arquivo é muito grande (máx. 25 MB).",
|
||||
"doc_upload_failed": "Falha no envio.",
|
||||
"completion_photo_optional": "Foto da conclusão (opcional)",
|
||||
"add_photo": "Adicionar foto",
|
||||
"uploading": "Enviando…",
|
||||
"remove": "Remover",
|
||||
"doc_deduped": "Já armazenado em outro lugar — compartilhado, sem uso de espaço extra.",
|
||||
"doc_dup_in_object": "Este arquivo já está anexado a este objeto.",
|
||||
"doc_link_invalid": "Apenas links http/https são permitidos.",
|
||||
"doc_cat_manual": "Manual",
|
||||
"doc_cat_warranty": "Garantia",
|
||||
"doc_cat_invoice": "Nota fiscal",
|
||||
"doc_cat_spare_parts": "Peças de reposição",
|
||||
"doc_cat_photo": "Foto",
|
||||
"doc_cat_other": "Outros",
|
||||
"doc_link_badge": "Link",
|
||||
"doc_storage_title": "Armazenamento de documentos",
|
||||
"doc_storage_saved": "Economizado por deduplicação",
|
||||
"doc_storage_refresh": "Atualizar",
|
||||
"doc_download": "Baixar",
|
||||
"doc_close": "Fechar",
|
||||
"doc_camera": "Tirar foto",
|
||||
"doc_drop_hint": "Solte os arquivos aqui",
|
||||
"doc_task_none": "Nenhum documento vinculado a esta tarefa.",
|
||||
"doc_link_existing": "Vincular um documento…",
|
||||
"doc_attach": "Vincular",
|
||||
"doc_unlink": "Desvincular",
|
||||
"doc_page": "Página",
|
||||
"chart_range_7d": "7d",
|
||||
"chart_range_30d": "30d",
|
||||
"chart_range_90d": "90d",
|
||||
"chart_range_1y": "1a",
|
||||
"chart_since_service": "desde a última manutenção",
|
||||
"chart_no_stats": "Sem estatísticas de longo prazo para esta entidade — mostrando apenas valores de eventos de manutenção",
|
||||
"auto_complete_on_recovery": "Concluir automaticamente quando o sensor se recuperar",
|
||||
"auto_complete_on_recovery_help": "Registra uma conclusão (define a última execução) quando o gatilho se resolve sozinho — ex.: sal reposto, filtro trocado.",
|
||||
"doc_search": "Pesquisar documentos…",
|
||||
"doc_search_none": "Nenhum documento correspondente",
|
||||
"link_device_optional": "Vincular a um dispositivo existente (opcional)",
|
||||
"parent_object_optional": "Objeto pai (opcional)",
|
||||
"parent_none": "(Sem pai)",
|
||||
"paused": "Pausado",
|
||||
"pause_object": "Pausar",
|
||||
"resume_object": "Retomar",
|
||||
"pause_until_prompt": "Congele os agendamentos deste objeto — nada vence e nada notifica até que ele seja retomado. Opcionalmente, defina uma data de retomada automática.",
|
||||
"pause_until_label": "Retomar em (opcional)",
|
||||
"object_paused": "Objeto pausado",
|
||||
"object_resumed": "Objeto retomado — agendamentos reiniciados",
|
||||
"object_paused_badge": "Pausado",
|
||||
"paused_until_label": "até",
|
||||
"replace_object": "Substituir…",
|
||||
"replace_object_prompt": "Aposente este objeto e crie um sucessor. O histórico e os custos ficam arquivados no antigo; as tarefas e os documentos passam para o novo, e os contadores recomeçam do zero.",
|
||||
"replace_name_label": "Nome do sucessor",
|
||||
"object_replaced": "Objeto substituído — sucessor criado",
|
||||
"reading_unit_label": "Unidade da leitura (ex.: kWh, m³)",
|
||||
"reading_unit_help": "Exibida ao lado do valor registrado ao concluir esta tarefa.",
|
||||
"reading_value_label": "Valor da leitura",
|
||||
"reading_label": "Leitura",
|
||||
"settings_templates_label": "Galeria de modelos",
|
||||
"settings_templates_hint": "Desmarque os modelos de que você nunca precisará — eles somem dos seletores \"A partir de modelo\" (painel e fluxo de configuração). Nada mais muda; você pode reativá-los a qualquer momento.",
|
||||
"worksheet": "Folha de trabalho",
|
||||
"worksheet_scan_view": "Escaneie para abrir a tarefa",
|
||||
"worksheet_scan_complete": "Escaneie para concluir",
|
||||
"worksheet_manual_excerpt": "Trecho do manual",
|
||||
"worksheet_pages": "páginas",
|
||||
"worksheet_printed": "Impressa em",
|
||||
"worksheet_never": "Nunca",
|
||||
"card_all_caught_up": "Tudo em dia — nada precisa de atenção",
|
||||
"postpone": "Adiar",
|
||||
"postpone_date_prompt": "Adiar esta ocorrência para qual data?",
|
||||
"postpone_date_label": "Nova data de vencimento",
|
||||
"postponed": "Adiada",
|
||||
"postponed_to": "Adiada para",
|
||||
"season_window_label": "Janela sazonal (meses)",
|
||||
"season_window_hint": "Vence apenas nos meses selecionados; datas fora de temporada passam para o próximo mês ativo. Nenhum = o ano todo.",
|
||||
"series_end_label": "Termina",
|
||||
"series_end_never": "Nunca (repete indefinidamente)",
|
||||
"series_end_after_count": "Após um número de vezes",
|
||||
"series_end_until": "Em uma data",
|
||||
"series_end_count_label": "Número de vezes",
|
||||
"series_end_until_label": "Data final",
|
||||
"parts_section": "Peças e consumíveis",
|
||||
"part_add": "Adicionar peça",
|
||||
"part_name": "Nome",
|
||||
"part_vendor": "Fabricante",
|
||||
"part_storage_location": "Local de armazenamento",
|
||||
"part_product_url": "URL do produto",
|
||||
"part_unit": "Unidade",
|
||||
"part_cost": "Preço unitário",
|
||||
"part_stock": "Estoque",
|
||||
"part_reorder_threshold": "Repor em",
|
||||
"part_restock_quantity": "Quantidade de reposição",
|
||||
"part_auto_buy": "Criar tarefa de compra automaticamente quando estiver baixo",
|
||||
"part_restock": "Ajustar estoque",
|
||||
"restock_quantity_label": "Quantidade comprada",
|
||||
"consumes_parts_label": "Consome peças",
|
||||
"parts_load_failed": "Não foi possível carregar as peças deste objeto — as opções de consumo de peças estão indisponíveis no momento.",
|
||||
"adopt_problem_button": "Adotar sensores de problema",
|
||||
"adopt_problem_title": "Adotar sensores de problema",
|
||||
"adopt_problem_hint": "Transforme sensores de problema do HA (erros de impressora, avisos de filtro, bateria fraca) em tarefas de manutenção que são acionadas enquanto o problema está ativo e se resolvem sozinhas quando ele desaparece.",
|
||||
"adopt_problem_none": "Nenhum sensor de problema encontrado que ainda não seja acompanhado.",
|
||||
"adopt_problem_active": "ativo",
|
||||
"adopt_problem_ok": "ok",
|
||||
"adopt_problem_new_object": "(novo)",
|
||||
"adopt_problem_adopt": "Adotar selecionados",
|
||||
"adopt_problem_done": "{tasks} sensor(es) de problema adotado(s)",
|
||||
"views_label": "Visualizações",
|
||||
"views_none": "— Nenhuma visualização —",
|
||||
"views_manage": "Salvar / gerenciar visualizações",
|
||||
"views_dialog_title": "Visualizações salvas",
|
||||
"views_dialog_hint": "Salve os filtros atuais como uma visualização nomeada que todos podem reutilizar.",
|
||||
"views_name_placeholder": "Nome da visualização",
|
||||
"views_save_current": "Salvar filtros atuais",
|
||||
"views_none_yet": "Ainda não há visualizações salvas.",
|
||||
"close": "Fechar",
|
||||
"trigger_hint_now": "O sensor lê {value} neste momento.",
|
||||
"trigger_hint_above": "A tarefa é acionada quando o valor sobe acima de {target}.",
|
||||
"trigger_hint_below": "É acionada quando o valor cai abaixo de {target}.",
|
||||
"trigger_hint_counter_delta": "Conta a partir da leitura atual ({value}): vence em {due} (+{target}), e a contagem recomeça após cada conclusão.",
|
||||
"trigger_hint_counter_delta_edit": "Conta o uso desde a última conclusão: vence após +{target}; a contagem recomeça após cada conclusão.",
|
||||
"trigger_hint_counter_abs": "A tarefa vence quando o sensor atinge {target}.",
|
||||
"trigger_hint_runtime": "A tarefa vence após {hours} h de funcionamento acumulado; o contador recomeça após cada conclusão.",
|
||||
"trigger_hint_state_change": "A tarefa vence após {count} mudança(s) de estado.",
|
||||
"trigger_hint_state_change_to": "A tarefa vence após {count} mudança(s) para “{state}”.",
|
||||
"trigger_hint_state_now": "Estado atual: {value}.",
|
||||
"adopt_problem_part": "Usa a peça: {name}",
|
||||
"label_filter": "Etiqueta",
|
||||
"all_labels": "Todas as etiquetas",
|
||||
"settings_notify_scope": "Notificar apenas para a visualização",
|
||||
"settings_notify_scope_all": "Todas as tarefas",
|
||||
"settings_notify_scope_hint": "Apenas tarefas que correspondem aos filtros de etiqueta/usuário da visualização salva selecionada enviam lembretes. Status, ordenação e agrupamento da visualização são ignorados aqui.",
|
||||
"card_saved_view": "Visualização salva",
|
||||
"card_saved_view_none": "Nenhuma",
|
||||
"card_saved_view_help": "Aplica os filtros de status, usuário e etiqueta da visualização por cima dos filtros acima. A ordenação e o agrupamento da visualização são configurações de exibição do painel e não se aplicam ao cartão.",
|
||||
"doc_part_none": "Nenhum documento vinculado a esta peça.",
|
||||
"settings_templates_toggle_group": "Ativar ou desativar todos os modelos deste grupo",
|
||||
"setups_button": "Configurações sugeridas",
|
||||
"setups_title": "Configurações sugeridas (Beta)",
|
||||
"setups_hint": "Dispositivos de integrações compatíveis cujos sensores de consumíveis podem alimentar tarefas de manutenção. Adotar cria o objeto e conecta cada tarefa ao seu sensor — ela é acionada quando o consumível fica baixo e se resolve sozinha após a troca.",
|
||||
"setups_none": "Nenhum dispositivo compatível com sensores de consumíveis ainda não conectados foi encontrado.",
|
||||
"setups_adopt": "Configurar selecionados",
|
||||
"setups_done": "{tasks} tarefas conectadas a sensores foram criadas.",
|
||||
"complete_parts_used": "Peças usadas desta vez",
|
||||
"part_delete_confirm": "Excluir a peça '{name}'? O controle de estoque, os vínculos com tarefas e qualquer lembrete de compra aberto serão removidos.",
|
||||
"baseline_start_value": "Leitura inicial (opcional)",
|
||||
"baseline_start_help": "A contagem começa a partir desta leitura. Deixe vazio para contar a partir do valor atual; informe a leitura da última manutenção para que o uso desde então já seja contado.",
|
||||
"setups_baseline_hint": "leitura na última manutenção (opcional)",
|
||||
"baseline_start_help_edit": "Deixe vazio para manter a contagem existente. Informar um valor reancora a contagem (ex.: a leitura da última manutenção).",
|
||||
"baseline_current_effective": "Valor inicial efetivo atual: {value}",
|
||||
"runtime_on_states": "Estados ativos (separados por vírgula)",
|
||||
"runtime_on_states_help": "Estados que contam como em funcionamento — padrão: on. Ex.: mowing, cleaning, printing. Com um atributo selecionado, os valores dele são comparados.",
|
||||
"setups_target_new": "Criar novo: {name}",
|
||||
"schedule_preview_title": "Próximas datas",
|
||||
"schedule_preview_ontime": "Supondo conclusão em dia.",
|
||||
"schedule_preview_ends": "(a série termina)",
|
||||
"adopt_problem_responsible": "Usuário responsável por todas as tarefas adotadas (opcional)",
|
||||
"adopt_problem_configure": "Configurar",
|
||||
"history_auto": "Automática",
|
||||
"battery_fleet_title": "Frota de baterias",
|
||||
"battery_fleet_none_low": "Todas as baterias OK — nada a substituir.",
|
||||
"battery_fleet_buy_now": "Comprar agora",
|
||||
"battery_fleet_soon": "Necessárias em breve",
|
||||
"battery_fleet_soon_hint": "Previsto a partir da data da última troca — compre com antecedência.",
|
||||
"battery_fleet_mark_all": "Marcar todas como trocadas",
|
||||
"battery_fleet_mark_one": "Marcar esta bateria como trocada",
|
||||
"battery_fleet_offline": "offline",
|
||||
"battery_fleet_trigger_lost": "O gatilho do sensor desta tarefa foi perdido — ela não será acionada nem concluída automaticamente.",
|
||||
"battery_fleet_repair": "Reparar",
|
||||
"battery_fleet_exclude": "Remover da frota",
|
||||
"battery_fleet_excluded": "Removida",
|
||||
"battery_fleet_include": "Acompanhar novamente",
|
||||
"battery_fleet_total": "{n} baterias acompanhadas",
|
||||
"battery_fleet_setup_button": "Frota de baterias",
|
||||
"battery_fleet_setup_done": "Frota de baterias configurada — uma única tarefa acompanha todas as suas baterias.",
|
||||
"update_banner": "Há uma versão mais nova do Maintenance Supporter no servidor — recarregue para atualizar o painel.",
|
||||
"update_reload": "Recarregar"
|
||||
}
|
||||
@@ -0,0 +1,811 @@
|
||||
{
|
||||
"maintenance": "Bakım",
|
||||
"objects": "Nesneler",
|
||||
"tasks": "Görevler",
|
||||
"overdue": "Gecikmiş",
|
||||
"due_soon": "Yaklaşan",
|
||||
"triggered": "Tetiklendi",
|
||||
"trigger_replaced": "Tetikleyici değiştirildi",
|
||||
"ok": "Tamam",
|
||||
"all": "Tümü",
|
||||
"new_object": "+ Yeni Nesne",
|
||||
"templates_from": "Şablondan",
|
||||
"templates_title": "Bir şablonla başlayın",
|
||||
"templates_task_count": "{n} görev",
|
||||
"template_created": "Şablondan oluşturuldu",
|
||||
"onboard_hint": "Bakım takibine başlamak için ilk nesnenizi ekleyin.",
|
||||
"edit": "Düzenle",
|
||||
"duplicate": "Çoğalt",
|
||||
"task_duplicated": "Görev çoğaltıldı",
|
||||
"object_duplicated": "Nesne çoğaltıldı",
|
||||
"delete": "Sil",
|
||||
"add_task": "+ Görev Ekle",
|
||||
"complete": "Tamamla",
|
||||
"completed": "Tamamlandı",
|
||||
"skip": "Atla",
|
||||
"skipped": "Atlandı",
|
||||
"missed": "Kaçırıldı",
|
||||
"reset": "Sıfırla",
|
||||
"snooze": "Ertele",
|
||||
"snoozed": "Ertelendi",
|
||||
"cancel": "İptal",
|
||||
"bulk_select": "Seç",
|
||||
"bulk_select_all": "Tümünü seç",
|
||||
"bulk_n_selected": "{n} seçildi",
|
||||
"bulk_completed": "{n} görev tamamlandı",
|
||||
"bulk_archived": "{n} görev arşivlendi",
|
||||
"completing": "Tamamlanıyor…",
|
||||
"interval": "Aralık",
|
||||
"warning": "Uyarı",
|
||||
"last_performed": "Son yapılma",
|
||||
"next_due": "Sonraki vade",
|
||||
"days_until_due": "Vadeye kalan gün",
|
||||
"avg_duration": "Ort. süre",
|
||||
"trigger": "Tetikleyici",
|
||||
"trigger_type": "Tetikleyici türü",
|
||||
"threshold_above": "Üst sınır",
|
||||
"threshold_below": "Alt sınır",
|
||||
"threshold": "Eşik",
|
||||
"counter": "Sayaç",
|
||||
"state_change": "Durum değişikliği",
|
||||
"runtime": "Çalışma süresi",
|
||||
"runtime_hours": "Hedef çalışma süresi (saat)",
|
||||
"target_value": "Hedef değer",
|
||||
"baseline": "Başlangıç değeri",
|
||||
"target_changes": "Hedef değişiklik sayısı",
|
||||
"for_minutes": "Süre (dakika)",
|
||||
"time_based": "Zamana dayalı",
|
||||
"sensor_based": "Sensöre dayalı",
|
||||
"manual": "Manuel",
|
||||
"one_time": "Tek seferlik",
|
||||
"weekdays": "Haftanın günleri",
|
||||
"nth_weekday": "Ayın n. hafta günü",
|
||||
"day_of_month": "Ayın günü",
|
||||
"recurrence_on_days": "Tekrar günleri",
|
||||
"recurrence_occurrence": "Kaçıncı",
|
||||
"recurrence_weekday": "Haftanın günü",
|
||||
"recurrence_day": "Ayın günü (1–31)",
|
||||
"recurrence_last_day": "Ayın son günü",
|
||||
"recurrence_business_day": "Yalnızca iş günleri (hafta sonundan geriye kaydır)",
|
||||
"recurrence_offset": "Kaydırma (gün, ±)",
|
||||
"recurrence_offset_help": "Tarihi ±N gün kaydırır, örn. -2 = iki gün önce.",
|
||||
"last_day_month": "Ayın son günü",
|
||||
"last_business_day_month": "Son iş günü",
|
||||
"ord_1": "1.",
|
||||
"ord_2": "2.",
|
||||
"ord_3": "3.",
|
||||
"ord_4": "4.",
|
||||
"ord_5": "5.",
|
||||
"ord_last": "Son",
|
||||
"day_word": "Gün",
|
||||
"interval_value": "Aralık",
|
||||
"interval_unit": "Birim",
|
||||
"unit_days": "Gün",
|
||||
"unit_weeks": "Hafta",
|
||||
"unit_months": "Ay",
|
||||
"unit_years": "Yıl",
|
||||
"due_date": "Vade tarihi",
|
||||
"cleaning": "Temizlik",
|
||||
"inspection": "Kontrol",
|
||||
"replacement": "Değişim",
|
||||
"calibration": "Kalibrasyon",
|
||||
"service": "Servis",
|
||||
"reading": "Okuma",
|
||||
"custom": "Özel",
|
||||
"history": "Geçmiş",
|
||||
"cost": "Maliyet",
|
||||
"report_button": "Rapor",
|
||||
"report_title": "Bakım raporu",
|
||||
"report_generated": "Oluşturulma",
|
||||
"report_times_done": "Yapıldı",
|
||||
"report_total_cost": "Toplam maliyet",
|
||||
"report_every": "her {n} {unit}",
|
||||
"report_notes": "Notlar",
|
||||
"report_col_type": "Tür",
|
||||
"report_col_status": "Durum",
|
||||
"report_col_schedule": "Zamanlama",
|
||||
"duration": "Süre",
|
||||
"both": "Her ikisi",
|
||||
"trigger_val": "Tetikleme değeri",
|
||||
"complete_title": "Tamamla: ",
|
||||
"checklist": "Kontrol listesi",
|
||||
"checklist_steps_optional": "Kontrol listesi adımları (isteğe bağlı)",
|
||||
"checklist_placeholder": "Filtreyi temizle\nContayı değiştir\nBasıncı test et",
|
||||
"checklist_help": "Her satıra bir adım. En fazla 100 madde.",
|
||||
"err_too_long": "{field}: çok uzun (en fazla {n} karakter)",
|
||||
"err_too_short": "{field}: çok kısa (en az {n} karakter)",
|
||||
"err_value_too_high": "{field}: çok büyük (en fazla {n})",
|
||||
"err_value_too_low": "{field}: çok küçük (en az {n})",
|
||||
"err_required": "{field}: zorunlu",
|
||||
"err_wrong_type": "{field}: yanlış tür (beklenen: {type})",
|
||||
"err_invalid_choice": "{field}: izin verilen bir değer değil",
|
||||
"err_invalid_value": "{field}: geçersiz değer",
|
||||
"feat_schedule_time": "Gün içi saat zamanlaması",
|
||||
"feat_schedule_time_desc": "Görevler gece yarısı yerine günün belirli bir saatinde gecikmiş olur.",
|
||||
"schedule_time_optional": "Vade saati (isteğe bağlı, SS:DD)",
|
||||
"schedule_time_help": "Boş = gece yarısı (varsayılan). HA saat dilimi.",
|
||||
"at_time": "saat",
|
||||
"notes_optional": "Notlar (isteğe bağlı)",
|
||||
"cost_optional": "Maliyet (isteğe bağlı)",
|
||||
"duration_minutes": "Dakika cinsinden süre (isteğe bağlı)",
|
||||
"days": "gün",
|
||||
"day": "gün",
|
||||
"today": "Bugün",
|
||||
"d_overdue": "g gecikmiş",
|
||||
"no_tasks": "Henüz bakım görevi yok. Başlamak için bir nesne oluşturun.",
|
||||
"no_tasks_short": "Görev yok",
|
||||
"no_history": "Henüz geçmiş kaydı yok.",
|
||||
"show_all": "Tümünü göster",
|
||||
"cost_duration_chart": "Maliyet ve Süre",
|
||||
"installed": "Kurulum",
|
||||
"confirm_delete_object": "Bu nesne ve tüm görevleri silinsin mi?",
|
||||
"confirm_delete_task": "Bu görev silinsin mi?",
|
||||
"min": "Min",
|
||||
"max": "Maks",
|
||||
"save": "Kaydet",
|
||||
"saving": "Kaydediliyor…",
|
||||
"edit_task": "Görevi Düzenle",
|
||||
"new_task": "Yeni Bakım Görevi",
|
||||
"task_name": "Görev adı",
|
||||
"maintenance_type": "Bakım türü",
|
||||
"priority": "Öncelik",
|
||||
"labels": "Etiketler",
|
||||
"labels_placeholder": "örn. güvenlik, mevsimlik, kiracıya görünür",
|
||||
"labels_help": "Filtreleme ve raporlama için virgülle ayrılmış etiketler.",
|
||||
"priority_low": "Düşük",
|
||||
"priority_normal": "Normal",
|
||||
"priority_high": "Yüksek",
|
||||
"schedule_type": "Zamanlama türü",
|
||||
"interval_days": "Aralık (gün)",
|
||||
"warning_days": "Uyarı günleri",
|
||||
"earliest_completion_days": "En erken tamamlama (vadeden gün önce)",
|
||||
"earliest_completion_days_help": "Her zaman tamamlanabilmesi için boş bırakın. 0 = yalnızca vade gününde veya sonrasında.",
|
||||
"last_performed_optional": "Son yapılma (isteğe bağlı)",
|
||||
"interval_anchor": "Aralık referansı",
|
||||
"anchor_completion": "Tamamlama tarihinden",
|
||||
"anchor_planned": "Planlanan tarihten (kayma olmaz)",
|
||||
"edit_object": "Nesneyi Düzenle",
|
||||
"name": "Ad",
|
||||
"manufacturer_optional": "Üretici (isteğe bağlı)",
|
||||
"model_optional": "Model (isteğe bağlı)",
|
||||
"serial_number_optional": "Seri numarası (isteğe bağlı)",
|
||||
"serial_number_label": "S/N",
|
||||
"documentation_url_label": "Kılavuz",
|
||||
"object_notes_label": "Notlar",
|
||||
"sort_due_date": "Vade tarihi",
|
||||
"sort_object": "Nesne adı",
|
||||
"sort_type": "Tür",
|
||||
"sort_task_name": "Görev adı",
|
||||
"all_objects": "Tüm nesneler",
|
||||
"tasks_lower": "görev",
|
||||
"no_tasks_yet": "Henüz görev yok",
|
||||
"add_first_task": "İlk görevi ekle",
|
||||
"trigger_configuration": "Tetikleyici Yapılandırması",
|
||||
"entity_id": "Varlık kimliği",
|
||||
"comma_separated": "virgülle ayrılmış",
|
||||
"entity_logic": "Varlık mantığı",
|
||||
"entity_logic_any": "Herhangi bir varlık tetikler",
|
||||
"entity_logic_all": "Tüm varlıklar tetiklemeli",
|
||||
"entities": "varlık",
|
||||
"attribute_optional": "Öznitelik (isteğe bağlı, boş = durum)",
|
||||
"use_entity_state": "Varlık durumunu kullan (öznitelik yok)",
|
||||
"trigger_above": "Üstünde tetikle",
|
||||
"trigger_below": "Altında tetikle",
|
||||
"for_at_least_minutes": "En az (dakika)",
|
||||
"safety_interval_days": "Güvenlik aralığı (gün, isteğe bağlı)",
|
||||
"safety_interval": "Güvenlik aralığı (isteğe bağlı)",
|
||||
"delta_mode": "Fark modu",
|
||||
"from_state_optional": "Başlangıç durumu (isteğe bağlı)",
|
||||
"to_state_optional": "Hedef durum (isteğe bağlı)",
|
||||
"documentation_url_optional": "Dokümantasyon URL'si (isteğe bağlı)",
|
||||
"object_notes_optional": "Notlar (isteğe bağlı)",
|
||||
"nfc_tag_id_optional": "NFC Etiket Kimliği (isteğe bağlı)",
|
||||
"nfc_tags_empty_help": "Home Assistant'ta henüz kayıtlı NFC etiketi yok.",
|
||||
"nfc_tags_open_settings": "Etiket ayarlarını aç",
|
||||
"nfc_tags_refresh": "Yenile",
|
||||
"environmental_entity_optional": "Çevresel sensör (isteğe bağlı)",
|
||||
"environmental_entity_helper": "örn. sensor.outdoor_temperature — aralığı çevresel koşullara göre ayarlar",
|
||||
"environmental_attribute_optional": "Çevresel öznitelik (isteğe bağlı)",
|
||||
"nfc_tag_id": "NFC Etiket Kimliği",
|
||||
"nfc_linked": "NFC etiketi bağlandı",
|
||||
"nfc_link_hint": "NFC etiketi bağlamak için tıklayın",
|
||||
"responsible_user": "Sorumlu Kullanıcı",
|
||||
"shared_with": "Paylaşılanlar (rotasyon)",
|
||||
"shared_with_help": "Bu görevi paylaşmak için birden fazla kişi seçin; sorumlu kişi her tamamlamada sırayla değişir.",
|
||||
"rotation_strategy": "Rotasyon",
|
||||
"rotation_none": "Rotasyon yok",
|
||||
"rotation_round_robin": "Sırayla",
|
||||
"rotation_least_completed": "En az tamamlayan",
|
||||
"rotation_random": "Rastgele",
|
||||
"no_user_assigned": "(Kullanıcı atanmadı)",
|
||||
"all_users": "Tüm Kullanıcılar",
|
||||
"my_tasks": "Görevlerim",
|
||||
"tab_calendar": "Takvim",
|
||||
"cal_no_events": "Bakım yok",
|
||||
"cal_window_7": "7 gün",
|
||||
"cal_window_14": "14 gün",
|
||||
"cal_window_30": "30 gün",
|
||||
"cal_window_365": "1 yıl",
|
||||
"cal_every_n_days": "her {n} günde bir",
|
||||
"cal_source_time": "Zamana dayalı",
|
||||
"cal_source_time_adaptive": "Zamana dayalı (uyarlanabilir)",
|
||||
"cal_source_sensor": "Sensöre dayalı",
|
||||
"cal_predicted": "tahmini",
|
||||
"cal_confidence_high": "yüksek güven",
|
||||
"cal_confidence_medium": "orta güven",
|
||||
"cal_confidence_low": "düşük güven",
|
||||
"budget_monthly": "Aylık bütçe",
|
||||
"budget_yearly": "Yıllık bütçe",
|
||||
"groups": "Gruplar",
|
||||
"new_group": "Yeni grup",
|
||||
"edit_group": "Grubu düzenle",
|
||||
"no_groups": "Henüz grup yok",
|
||||
"delete_group": "Grubu sil",
|
||||
"delete_group_confirm": "'{name}' grubu silinsin mi?",
|
||||
"group_select_tasks": "Görevleri seç",
|
||||
"group_name_required": "Ad zorunludur",
|
||||
"description_optional": "Açıklama (isteğe bağlı)",
|
||||
"selected": "Seçili",
|
||||
"loading_chart": "Grafik verileri yükleniyor...",
|
||||
"hide_outliers": "Aykırı değerleri gizle (sensör hataları)",
|
||||
"was_maintenance_needed": "Bu bakım gerekli miydi?",
|
||||
"feedback_needed": "Gerekliydi",
|
||||
"feedback_not_needed": "Gerekli değildi",
|
||||
"feedback_not_sure": "Emin değilim",
|
||||
"suggested_interval": "Önerilen aralık",
|
||||
"apply_suggestion": "Uygula",
|
||||
"reanalyze": "Yeniden analiz et",
|
||||
"reanalyze_result": "Yeni analiz",
|
||||
"reanalyze_insufficient_data": "Öneri üretmek için yeterli veri yok",
|
||||
"data_points": "veri noktası",
|
||||
"dismiss_suggestion": "Yoksay",
|
||||
"confidence_low": "Düşük",
|
||||
"confidence_medium": "Orta",
|
||||
"confidence_high": "Yüksek",
|
||||
"recommended": "önerilen",
|
||||
"seasonal_awareness": "Mevsimsel Farkındalık",
|
||||
"edit_seasonal_overrides": "Mevsimsel faktörleri düzenle",
|
||||
"seasonal_overrides_title": "Mevsimsel faktörler (elle ayar)",
|
||||
"seasonal_overrides_hint": "Ay başına faktör (0.1–5.0). Boş = otomatik öğrenilir.",
|
||||
"seasonal_override_invalid": "Geçersiz değer",
|
||||
"seasonal_override_range": "Faktör 0.1 ile 5.0 arasında olmalıdır",
|
||||
"clear_all": "Tümünü temizle",
|
||||
"seasonal_chart_title": "Mevsimsel Faktörler",
|
||||
"seasonal_learned": "Öğrenilmiş",
|
||||
"seasonal_manual": "Manuel",
|
||||
"month_jan": "Oca",
|
||||
"month_feb": "Şub",
|
||||
"month_mar": "Mar",
|
||||
"month_apr": "Nis",
|
||||
"month_may": "May",
|
||||
"month_jun": "Haz",
|
||||
"month_jul": "Tem",
|
||||
"month_aug": "Ağu",
|
||||
"month_sep": "Eyl",
|
||||
"month_oct": "Eki",
|
||||
"month_nov": "Kas",
|
||||
"month_dec": "Ara",
|
||||
"sensor_prediction": "Sensör Tahmini",
|
||||
"degradation_trend": "Eğilim",
|
||||
"trend_rising": "Yükseliyor",
|
||||
"trend_falling": "Düşüyor",
|
||||
"trend_stable": "Sabit",
|
||||
"trend_insufficient_data": "Yetersiz veri",
|
||||
"days_until_threshold": "Eşiğe kalan gün",
|
||||
"threshold_exceeded": "Eşik aşıldı",
|
||||
"environmental_adjustment": "Çevresel faktör",
|
||||
"sensor_prediction_urgency": "Sensör, eşiğe ~{days} gün kaldığını öngörüyor",
|
||||
"day_short": "gün",
|
||||
"weibull_reliability_curve": "Güvenilirlik Eğrisi",
|
||||
"weibull_failure_probability": "Arıza Olasılığı",
|
||||
"weibull_r_squared": "Uyum R²",
|
||||
"beta_early_failures": "Erken Arızalar",
|
||||
"beta_random_failures": "Rastgele Arızalar",
|
||||
"beta_wear_out": "Aşınma",
|
||||
"beta_highly_predictable": "Yüksek Öngörülebilirlik",
|
||||
"confidence_interval": "Güven Aralığı",
|
||||
"confidence_conservative": "Temkinli",
|
||||
"confidence_aggressive": "İyimser",
|
||||
"current_interval_marker": "Mevcut aralık",
|
||||
"recommended_marker": "Önerilen",
|
||||
"characteristic_life": "Karakteristik ömür",
|
||||
"chart_mini_sparkline": "Eğilim mini grafiği",
|
||||
"chart_history": "Maliyet ve süre geçmişi",
|
||||
"chart_seasonal": "Mevsimsel faktörler, 12 ay",
|
||||
"chart_weibull": "Weibull güvenilirlik eğrisi",
|
||||
"chart_sparkline": "Sensör tetikleme değeri grafiği",
|
||||
"days_progress": "Gün ilerlemesi",
|
||||
"qr_code": "QR Kodu",
|
||||
"qr_generating": "QR kodu oluşturuluyor…",
|
||||
"qr_error": "QR kodu oluşturulamadı.",
|
||||
"qr_error_no_url": "Yapılandırılmış bir HA URL'si yok. Lütfen Ayarlar → Sistem → Ağ bölümünden bir dış veya iç URL ayarlayın.",
|
||||
"save_error": "Kaydedilemedi. Lütfen tekrar deneyin.",
|
||||
"qr_print": "Yazdır",
|
||||
"qr_download": "SVG indir",
|
||||
"qr_action": "Tarama eylemi",
|
||||
"qr_action_view": "Bakım bilgisini görüntüle",
|
||||
"qr_action_complete": "Bakımı tamamlandı olarak işaretle",
|
||||
"qr_url_mode": "Bağlantı türü",
|
||||
"qr_mode_companion": "Companion uygulaması",
|
||||
"qr_mode_local": "Yerel (mDNS)",
|
||||
"qr_mode_server": "Sunucu URL'si",
|
||||
"overview": "Genel Bakış",
|
||||
"analysis": "Analiz",
|
||||
"recent_activities": "Son Etkinlikler",
|
||||
"search_notes": "Notlarda ara",
|
||||
"avg_cost": "Ort. Maliyet",
|
||||
"no_advanced_features": "Etkin gelişmiş özellik yok",
|
||||
"no_advanced_features_hint": "Burada analiz verilerini görmek için entegrasyon ayarlarından “Uyarlanabilir Aralıklar” veya “Mevsimsel Desenler” özelliğini etkinleştirin.",
|
||||
"analysis_not_enough_data": "Analiz için henüz yeterli veri yok.",
|
||||
"analysis_not_enough_data_hint": "Weibull analizi en az 5 tamamlanmış bakım gerektirir; mevsimsel desenler ay başına 6+ veri noktasından sonra görünür olur.",
|
||||
"analysis_manual_task_hint": "Aralığı olmayan manuel görevler analiz verisi üretmez.",
|
||||
"completions": "tamamlama",
|
||||
"current": "Mevcut",
|
||||
"shorter": "Daha kısa",
|
||||
"longer": "Daha uzun",
|
||||
"normal": "Normal",
|
||||
"disabled": "Devre dışı",
|
||||
"compound_logic": "Bileşik mantık",
|
||||
"compound": "Bileşik (birden fazla koşul)",
|
||||
"compound_logic_and": "VE — tüm koşullar tetiklenmeli",
|
||||
"compound_logic_or": "VEYA — herhangi bir koşul tetikler",
|
||||
"compound_help": "Birden fazla sensör koşulunu tek bir tetikleyicide birleştirin.",
|
||||
"compound_no_conditions": "Henüz koşul yok — en az bir tane ekleyin.",
|
||||
"compound_add_condition": "Koşul ekle",
|
||||
"compound_condition": "Koşul",
|
||||
"compound_remove_condition": "Koşulu kaldır",
|
||||
"card_title": "Başlık",
|
||||
"card_show_header": "İstatistikli başlığı göster",
|
||||
"card_show_actions": "Eylem düğmelerini göster",
|
||||
"card_compact": "Kompakt mod",
|
||||
"card_max_items": "En fazla öğe (0 = tümü)",
|
||||
"card_filter_status": "Duruma göre filtrele",
|
||||
"card_filter_status_help": "Boş = tüm durumları göster.",
|
||||
"card_filter_objects": "Nesnelere göre filtrele",
|
||||
"card_filter_objects_help": "Boş = tüm nesneleri göster.",
|
||||
"card_filter_entities": "Varlıklara göre filtrele (entity_id)",
|
||||
"card_filter_entities_help": "Bu entegrasyonun sensor / binary_sensor varlıklarını seçin. Boş = tümü.",
|
||||
"card_loading_objects": "Nesneler yükleniyor…",
|
||||
"card_load_error": "Nesneler yüklenemedi — WebSocket bağlantısını kontrol edin.",
|
||||
"card_no_tasks_title": "Henüz bakım görevi yok",
|
||||
"card_no_tasks_cta": "→ Bakım panelinde bir tane oluşturun",
|
||||
"no_objects": "Henüz nesne yok.",
|
||||
"action_error": "Eylem başarısız oldu. Lütfen tekrar deneyin.",
|
||||
"area_id_optional": "Alan (isteğe bağlı)",
|
||||
"installation_date_optional": "Kurulum tarihi (isteğe bağlı)",
|
||||
"warranty_expiry_optional": "Garanti bitişi (isteğe bağlı)",
|
||||
"warranty": "Garanti",
|
||||
"warranty_valid_until": "{date} tarihine kadar geçerli",
|
||||
"warranty_expires_in": "{days} gün içinde sona eriyor",
|
||||
"warranty_expired": "süresi doldu",
|
||||
"cal_past_windows": "Geçmiş dönemler",
|
||||
"cal_forward_windows": "Gelecek dönemler",
|
||||
"history_edit_title": "Geçmiş kaydını düzenle",
|
||||
"history_edit_timestamp": "Zaman damgası",
|
||||
"manufacturer": "Üretici",
|
||||
"model": "Model",
|
||||
"area": "Alan",
|
||||
"actions": "Eylemler",
|
||||
"view_mode_label": "Görünüm",
|
||||
"view_cards": "Kart görünümü",
|
||||
"view_table": "Tablo görünümü",
|
||||
"objects_table_columns_label": "Nesne tablosu sütunları",
|
||||
"objects_table_columns_hint": "Nesne tablosu görünümünde hangi sütunların görüneceğini seçin.",
|
||||
"custom_icon_optional": "Simge (isteğe bağlı, örn. mdi:wrench)",
|
||||
"task_enabled": "Görev etkin",
|
||||
"skip_reason_prompt": "Bu görev atlansın mı?",
|
||||
"reason_optional": "Neden (isteğe bağlı)",
|
||||
"reset_date_prompt": "Görev yapıldı olarak işaretlensin mi?",
|
||||
"reset_date_optional": "Son yapılma tarihi (isteğe bağlı, varsayılan bugün)",
|
||||
"notes_label": "Notlar",
|
||||
"documentation_label": "Dokümantasyon",
|
||||
"no_nfc_tag": "— Etiket yok —",
|
||||
"dashboard": "Gösterge Paneli",
|
||||
"tab_today": "Bugün",
|
||||
"palette_placeholder": "Nesne ve görevlerde ara…",
|
||||
"palette_no_results": "Eşleşme yok",
|
||||
"palette_hint": "↑↓ gezinme · Enter açma · Esc kapatma",
|
||||
"today_all_caught_up": "Her şey tamam! Bu hafta vadesi gelen yok.",
|
||||
"today_overdue": "Gecikmiş",
|
||||
"today_due_today": "Bugün vadeli",
|
||||
"today_this_week": "Bu hafta",
|
||||
"settings": "Ayarlar",
|
||||
"settings_features": "Gelişmiş Özellikler",
|
||||
"settings_features_desc": "Gelişmiş özellikleri etkinleştirin veya devre dışı bırakın. Devre dışı bırakmak onları arayüzden gizler ancak verileri silmez.",
|
||||
"feat_adaptive": "Uyarlanabilir Zamanlama",
|
||||
"feat_adaptive_desc": "Bakım geçmişinden en uygun aralıkları öğren",
|
||||
"feat_predictions": "Sensör Tahminleri",
|
||||
"feat_predictions_desc": "Sensör bozulmasından tetiklenme tarihlerini öngör",
|
||||
"feat_seasonal": "Mevsimsel Ayarlamalar",
|
||||
"feat_seasonal_desc": "Aralıkları mevsimsel desenlere göre ayarla",
|
||||
"feat_environmental": "Çevresel Korelasyon",
|
||||
"feat_environmental_desc": "Aralıkları sıcaklık/nemle ilişkilendir",
|
||||
"feat_budget": "Bütçe Takibi",
|
||||
"feat_budget_desc": "Aylık ve yıllık bakım harcamalarını takip et",
|
||||
"feat_groups": "Görev Grupları",
|
||||
"feat_groups_desc": "Görevleri mantıksal gruplar halinde düzenle",
|
||||
"feat_checklists": "Kontrol Listeleri",
|
||||
"feat_checklists_desc": "Görev tamamlama için çok adımlı prosedürler",
|
||||
"settings_general": "Genel",
|
||||
"settings_default_warning": "Varsayılan uyarı günleri",
|
||||
"settings_panel_enabled": "Kenar çubuğu paneli",
|
||||
"settings_panel_title": "Kenar çubuğu paneli başlığı",
|
||||
"settings_notifications": "Bildirimler",
|
||||
"settings_notify_service": "Bildirim servisi",
|
||||
"test_notification": "Test bildirimi",
|
||||
"send_test": "Test gönder",
|
||||
"testing": "Gönderiliyor…",
|
||||
"test_notification_success": "Test bildirimi gönderildi",
|
||||
"test_notification_failed": "Test bildirimi başarısız oldu",
|
||||
"settings_notify_due_soon": "Vade yaklaştığında bildir",
|
||||
"settings_notify_overdue": "Geciktiğinde bildir",
|
||||
"settings_notify_triggered": "Tetiklendiğinde bildir",
|
||||
"settings_interval_hours": "Tekrar aralığı (saat, 0 = bir kez)",
|
||||
"settings_quiet_hours": "Sessiz saatler",
|
||||
"settings_quiet_start": "Başlangıç",
|
||||
"settings_quiet_end": "Bitiş",
|
||||
"settings_max_per_day": "Günlük en fazla bildirim (0 = sınırsız)",
|
||||
"settings_bundling": "Bildirimleri grupla",
|
||||
"settings_bundle_threshold": "Gruplama eşiği",
|
||||
"settings_reminder_leads": "Ek hatırlatmalar (vadeden gün önce)",
|
||||
"settings_reminder_leads_hint": "Virgülle ayrılmış süreler, örn. 14, 3, 0 — eşleşen her günde bir ek hatırlatma gönderilir. Boş = kapalı.",
|
||||
"settings_actions": "Mobil Eylem Düğmeleri",
|
||||
"settings_action_complete": "'Tamamla' düğmesini göster",
|
||||
"settings_action_skip": "'Atla' düğmesini göster",
|
||||
"settings_action_snooze": "'Ertele' düğmesini göster",
|
||||
"settings_weekly_digest": "Haftalık özet",
|
||||
"settings_weekly_digest_hint": "Vadesi gelen görevler olduğunda pazartesi sabahı tek bir özet bildirimi.",
|
||||
"settings_warranty_reminder": "Garanti bitiş hatırlatması",
|
||||
"settings_warranty_reminder_days": "Bitişten gün önce",
|
||||
"settings_warranty_reminder_hint": "Bir nesnenin garantisinin bitmesine bu kadar gün kaldığında bir kez bildir.",
|
||||
"settings_snooze_hours": "Erteleme süresi (saat)",
|
||||
"settings_budget": "Bütçe",
|
||||
"settings_currency": "Para birimi",
|
||||
"settings_budget_monthly": "Aylık bütçe",
|
||||
"settings_budget_yearly": "Yıllık bütçe",
|
||||
"settings_budget_alerts": "Bütçe uyarıları",
|
||||
"settings_budget_threshold": "Uyarı eşiği (%)",
|
||||
"settings_import_export": "İçe / Dışa Aktarma",
|
||||
"settings_export_json": "JSON dışa aktar",
|
||||
"settings_export_yaml": "YAML dışa aktar",
|
||||
"settings_export_csv": "CSV dışa aktar",
|
||||
"settings_import_csv": "CSV içe aktar",
|
||||
"settings_import_placeholder": "JSON veya CSV içeriğini buraya yapıştırın…",
|
||||
"settings_import_btn": "İçe aktar",
|
||||
"settings_import_success": "{count} nesne başarıyla içe aktarıldı.",
|
||||
"settings_export_success": "Dışa aktarma indirildi.",
|
||||
"settings_saved": "Ayar kaydedildi.",
|
||||
"settings_include_history": "Geçmişi dahil et",
|
||||
"settings_export_selection": "Seçili nesnelerle sınırla (isteğe bağlı)",
|
||||
"settings_docs_archive": "Belge arşivi (dosyalarla birlikte)",
|
||||
"settings_docs_archive_hint": "JSON/YAML/CSV dışa aktarmaları yalnızca ayarları içerir. Bu ZIP, geri yüklemenin eksiksiz olması için yüklenen dosya içeriklerini de kapsar.",
|
||||
"settings_docs_export_btn": "Belge ZIP'ini indir",
|
||||
"settings_docs_import_btn": "Belge ZIP'ini geri yükle",
|
||||
"settings_docs_import_success": "Geri yüklendi: {blobs} dosya, {docs} belge",
|
||||
"sort_alphabetical": "Alfabetik",
|
||||
"sort_due_soonest": "En yakın vade",
|
||||
"sort_task_count": "Görev sayısı",
|
||||
"sort_area": "Alan",
|
||||
"sort_assigned_user": "Atanan kullanıcı",
|
||||
"sort_group": "Grup",
|
||||
"groupby_none": "Gruplama yok",
|
||||
"groupby_area": "Alana göre",
|
||||
"groupby_group": "Gruba göre",
|
||||
"groupby_user": "Kullanıcıya göre",
|
||||
"filter_label": "Filtre",
|
||||
"user_label": "Kullanıcı",
|
||||
"sort_label": "Sırala",
|
||||
"group_by_label": "Grupla",
|
||||
"state_value_help": "HA durum değerini kullanın (genellikle küçük harf, örn. \"on\"/\"off\"). Büyük/küçük harf kaydederken normalleştirilir.",
|
||||
"target_changes_help": "Tetikleyici çalışmadan önceki eşleşen geçiş sayısı (varsayılan: 1).",
|
||||
"qr_print_title": "QR kodlarını yazdır",
|
||||
"qr_print_desc": "Kesip ekipmanınıza yapıştırmak için yazdırılabilir bir QR kodu sayfası oluşturun.",
|
||||
"qr_print_load": "Nesneleri yükle",
|
||||
"qr_print_filter": "Filtre",
|
||||
"qr_print_objects": "Nesneler",
|
||||
"qr_print_actions": "Eylemler",
|
||||
"qr_print_url_mode": "Bağlantı türü",
|
||||
"qr_print_estimate": "Tahmini QR kodu sayısı",
|
||||
"qr_print_over_limit": "üst sınır 200, filtreyi daraltın",
|
||||
"qr_print_generate": "QR kodları oluştur",
|
||||
"qr_print_generating": "Oluşturuluyor…",
|
||||
"qr_print_ready": "QR kodları hazır",
|
||||
"qr_print_print_button": "Yazdır",
|
||||
"qr_print_empty": "Oluşturulacak bir şey yok",
|
||||
"qr_action_skip": "Atla",
|
||||
"vacation_title": "Tatil modu",
|
||||
"vacation_active": "etkin",
|
||||
"vacation_ended": "sona erdi",
|
||||
"vacation_desc": "Bir tatil planlayın: bildirimler bu dönem artı tampon günler boyunca duraklatılır. Belirli görevleri yine de bildirime dahil edebilirsiniz.",
|
||||
"vacation_enable": "Tatil modunu etkinleştir",
|
||||
"vacation_start": "Başlangıç",
|
||||
"vacation_end": "Bitiş",
|
||||
"vacation_buffer": "Tampon (gün)",
|
||||
"vacation_exempt_title": "Tatilde yine de bildir",
|
||||
"vacation_exempt_desc": "Tatil sırasında yine de bildirim göndermesi gereken görevleri seçin (örn. kritik havuz kimyası).",
|
||||
"vacation_load_tasks": "Görevleri yükle",
|
||||
"vacation_preview_btn": "Önizlemeyi göster",
|
||||
"vacation_preview_affected": "görev etkileniyor",
|
||||
"vacation_event_due_soon": "vadesi yaklaşacak",
|
||||
"vacation_event_overdue": "gecikecek",
|
||||
"vacation_event_triggered_est": "sensör tetiklemesi olası",
|
||||
"vacation_sensor_based": "(sensöre dayalı)",
|
||||
"vacation_action_notify": "Yine de bildir",
|
||||
"vacation_action_unsilence": "Yeniden sustur",
|
||||
"vacation_marked_complete": "Tamamlandı olarak işaretlendi",
|
||||
"vacation_marked_skip": "Atlandı",
|
||||
"vacation_end_now": "Tatili şimdi bitir",
|
||||
"add": "Ekle",
|
||||
"show_stats": "İstatistik + grafikleri göster",
|
||||
"hide_stats": "İstatistikleri gizle",
|
||||
"adaptive_no_data": "Uyarlanabilir analiz için henüz yeterli tamamlama geçmişi yok. Aralık önerilerini ve güvenilirlik grafiklerini açmak için bu görevi birkaç kez daha tamamlayın.",
|
||||
"suggestion_applied": "Önerilen aralık uygulandı",
|
||||
"vacation_mode": "Tatil modu",
|
||||
"vacation_status_active": "Şu an etkin",
|
||||
"vacation_status_scheduled": "Planlandı",
|
||||
"vacation_status_inactive": "Devre dışı",
|
||||
"vacation_end_now_confirm": "Tatil hemen bitirilsin mi?",
|
||||
"vacation_exempt_count": "muaf",
|
||||
"vacation_advanced": "Gelişmiş…",
|
||||
"vacation_open_panel": "Panelde aç",
|
||||
"enable": "Etkinleştir",
|
||||
"saved": "Kaydedildi",
|
||||
"budget_monthly_set": "Aylık ayarla",
|
||||
"budget_yearly_set": "Yıllık ayarla",
|
||||
"budget_advanced": "Para birimi, uyarılar…",
|
||||
"budget_open_panel": "Panelde aç",
|
||||
"groups_empty": "Henüz grup yok.",
|
||||
"group_new_placeholder": "Grup ekle…",
|
||||
"group_delete_confirm": "\"{name}\" grubu silinsin mi?",
|
||||
"groups_manage_tasks": "Görev atamalarını yönet…",
|
||||
"groups_open_panel": "Panelde aç",
|
||||
"unassigned": "Atanmamış",
|
||||
"no_area": "Alan yok",
|
||||
"has_overdue": "Gecikmiş görevi var",
|
||||
"object": "Nesne",
|
||||
"settings_panel_access": "Panel erişimi",
|
||||
"settings_panel_access_desc": "Yöneticiler her zaman tam erişime sahiptir. Oluşturma, düzenleme ve silmeyi belirli yönetici olmayan kullanıcılara devretmek için bunu açın ve onları aşağıdan seçin — diğer herkes yalnızca Tamamla ve Atla görür.",
|
||||
"settings_operator_write": "Seçili kullanıcılara oluşturma, düzenleme ve silme izni ver",
|
||||
"settings_operator_write_desc": "Kapalı: içeriği yalnızca yöneticiler değiştirebilir. Açık: aşağıda seçilen kullanıcılar da tam erişim alır.",
|
||||
"no_non_admin_users": "Yönetici olmayan kullanıcı bulunamadı. Ayarlar → Kişiler bölümünden ekleyin.",
|
||||
"owner_label": "Sahip",
|
||||
"feat_completion_actions": "Tamamlama eylemleri",
|
||||
"feat_completion_actions_desc": "Görev başına tamamlamada HA eylemi + önceden ayarlı değerlerle hızlı tamamlama QR'ı.",
|
||||
"on_complete_action_title": "Tamamlandığında: HA eylemi tetikle (isteğe bağlı)",
|
||||
"on_complete_action_desc": "Görev tamamlandığında bir HA servisi çağırır — örn. cihazdaki bir sayacı sıfırlar.",
|
||||
"on_complete_action_service": "Servis",
|
||||
"on_complete_action_target": "Hedef varlık",
|
||||
"on_complete_action_target_hint": "Not: varlık alan adı servisle eşleşmelidir — örn. 'button.press' yalnızca button.* üzerinde, 'counter.increment' yalnızca counter.* üzerinde, 'input_button.press' yalnızca input_button.* üzerinde çalışır. Eşleşmezse eylem sessizce başarısız olur (HA günlüğü: 'Referenced entities ... missing or not currently available').",
|
||||
"on_complete_action_data": "Veri (JSON, isteğe bağlı)",
|
||||
"on_complete_action_test": "Yapılandırmayı doğrula",
|
||||
"on_complete_action_test_success": "✓ Yapılandırma geçerli (eylem yalnızca görev tamamlandığında çalışır)",
|
||||
"on_complete_action_test_failed": "Başarısız",
|
||||
"quick_complete_defaults_title": "Hızlı tamamlama varsayılanları (QR taramaları için, isteğe bağlı)",
|
||||
"quick_complete_defaults_desc": "Hızlı tamamlama QR taramaları için önceden ayarlı değerler. Bunlar olmadan QR, tamamlama penceresini açar.",
|
||||
"quick_complete_defaults_notes": "Notlar",
|
||||
"quick_complete_defaults_cost": "Maliyet",
|
||||
"quick_complete_defaults_duration": "Süre (dakika)",
|
||||
"quick_complete_defaults_feedback_none": "Geri bildirim yok",
|
||||
"quick_complete_defaults_feedback_needed": "Gerekliydi",
|
||||
"quick_complete_defaults_feedback_not_needed": "Gerekli değildi",
|
||||
"quick_complete_success": "Hızlıca tamamlandı olarak işaretlendi",
|
||||
"show_all_objects": "Tüm nesneleri göster",
|
||||
"show_all_tasks": "Filtreyi temizle — tüm görevleri göster",
|
||||
"filter_to_overdue": "Görev listesini yalnızca gecikmişlere filtrele",
|
||||
"filter_to_due_soon": "Görev listesini yalnızca vadesi yaklaşanlara filtrele",
|
||||
"filter_to_triggered": "Görev listesini yalnızca tetiklenenlere filtrele",
|
||||
"open_task": "Görevi aç",
|
||||
"show_details": "Geçmiş + istatistikleri göster",
|
||||
"hide_details": "Ayrıntıları gizle",
|
||||
"history_empty": "Henüz geçmiş yok.",
|
||||
"history_edit_button": "Kaydı düzenle",
|
||||
"total_cost": "Toplam maliyet",
|
||||
"times_performed": "Yapılma sayısı",
|
||||
"older_entries": "daha eski",
|
||||
"open_in_panel": "Bakım panelinde aç",
|
||||
"skip_reason": "Atlama nedeni (isteğe bağlı)",
|
||||
"reset_to_date": "Son yapılmayı şu tarihe sıfırla",
|
||||
"delete_task_confirm": "Bu görev ve geçmişi silinsin mi?",
|
||||
"delete_object_confirm": "Bu nesne ve tüm görevleri silinsin mi?",
|
||||
"loading": "Yükleniyor…",
|
||||
"archive": "Arşivle",
|
||||
"undo": "Geri al",
|
||||
"task_archived": "Görev arşivlendi",
|
||||
"object_archived": "Nesne arşivlendi",
|
||||
"unarchive": "Arşivden çıkar",
|
||||
"archived": "Arşivlendi",
|
||||
"show_archived": "Arşivlenenleri göster",
|
||||
"hide_archived": "Arşivlenenleri gizle",
|
||||
"confirm_archive_object": "Bu nesne ve görevleri arşivlensin mi? Geçmişleri korunur ve daha sonra arşivden çıkarılabilirler.",
|
||||
"settings_archive": "Arşiv ve Saklama",
|
||||
"settings_archive_desc": "Tamamlanmış tek seferlik görevleri silmeden emekliye ayırın. Arşivlenen öğeler gizlenir ve pasiftir ancak geçmişlerini ve maliyetlerini korurlar.",
|
||||
"settings_archive_oneoff_days": "Tamamlanan tek seferlik görevleri şu kadar gün sonra otomatik arşivle (0 = kapalı)",
|
||||
"settings_delete_archived_oneoff_days": "Arşivlenen tek seferlik görevleri şu kadar gün sonra otomatik sil (0 = asla)",
|
||||
"archive_object": "Nesneyi arşivle",
|
||||
"unarchive_object": "Nesneyi arşivden çıkar",
|
||||
"documents": "Belgeler",
|
||||
"documents_empty": "Henüz belge yok.",
|
||||
"doc_upload": "Dosya yükle",
|
||||
"doc_uploading": "Yükleniyor…",
|
||||
"doc_add_link": "Bağlantı ekle",
|
||||
"doc_link_url": "URL (https://…)",
|
||||
"doc_link_title": "Başlık (isteğe bağlı)",
|
||||
"doc_open": "Aç",
|
||||
"doc_delete_confirm": "\"{name}\" silinsin mi?",
|
||||
"doc_too_large": "Dosya çok büyük (en fazla 25 MB).",
|
||||
"doc_upload_failed": "Yükleme başarısız oldu.",
|
||||
"completion_photo_optional": "Tamamlama fotoğrafı (isteğe bağlı)",
|
||||
"add_photo": "Fotoğraf ekle",
|
||||
"uploading": "Yükleniyor…",
|
||||
"remove": "Kaldır",
|
||||
"doc_deduped": "Zaten başka bir yerde saklı — paylaşıldı, ek alan kullanılmadı.",
|
||||
"doc_dup_in_object": "Bu dosya zaten bu nesneye ekli.",
|
||||
"doc_link_invalid": "Yalnızca http/https bağlantılarına izin verilir.",
|
||||
"doc_cat_manual": "Kılavuz",
|
||||
"doc_cat_warranty": "Garanti",
|
||||
"doc_cat_invoice": "Fatura",
|
||||
"doc_cat_spare_parts": "Yedek parçalar",
|
||||
"doc_cat_photo": "Fotoğraf",
|
||||
"doc_cat_other": "Diğer",
|
||||
"doc_link_badge": "Bağlantı",
|
||||
"doc_storage_title": "Belge depolama",
|
||||
"doc_storage_saved": "Tekilleştirmeyle kazanıldı",
|
||||
"doc_storage_refresh": "Yenile",
|
||||
"doc_download": "İndir",
|
||||
"doc_close": "Kapat",
|
||||
"doc_camera": "Fotoğraf çek",
|
||||
"doc_drop_hint": "Dosyaları buraya bırakın",
|
||||
"doc_task_none": "Bu göreve bağlı belge yok.",
|
||||
"doc_link_existing": "Belge bağla…",
|
||||
"doc_attach": "Bağla",
|
||||
"doc_unlink": "Bağlantıyı kaldır",
|
||||
"doc_page": "Sayfa",
|
||||
"chart_range_7d": "7g",
|
||||
"chart_range_30d": "30g",
|
||||
"chart_range_90d": "90g",
|
||||
"chart_range_1y": "1y",
|
||||
"chart_since_service": "son servisten beri",
|
||||
"chart_no_stats": "Bu varlık için uzun dönem istatistiği yok — yalnızca bakım olayı değerleri gösteriliyor",
|
||||
"auto_complete_on_recovery": "Sensör düzelince otomatik tamamla",
|
||||
"auto_complete_on_recovery_help": "Tetikleyici kendiliğinden temizlendiğinde bir tamamlama kaydeder (son yapılmayı ayarlar) — örn. tuz dolduruldu, filtre değiştirildi.",
|
||||
"doc_search": "Belgelerde ara…",
|
||||
"doc_search_none": "Eşleşen belge yok",
|
||||
"link_device_optional": "Mevcut bir cihaza bağla (isteğe bağlı)",
|
||||
"parent_object_optional": "Üst nesne (isteğe bağlı)",
|
||||
"parent_none": "(Üst nesne yok)",
|
||||
"paused": "Duraklatıldı",
|
||||
"pause_object": "Duraklat",
|
||||
"resume_object": "Devam ettir",
|
||||
"pause_until_prompt": "Bu nesnenin zamanlamalarını dondurur — devam ettirilene kadar hiçbir şeyin vadesi gelmez ve bildirim gönderilmez. İsteğe bağlı olarak bir otomatik devam tarihi ayarlayın.",
|
||||
"pause_until_label": "Devam tarihi (isteğe bağlı)",
|
||||
"object_paused": "Nesne duraklatıldı",
|
||||
"object_resumed": "Nesne devam ettirildi — zamanlamalar yeniden başlatıldı",
|
||||
"object_paused_badge": "Duraklatıldı",
|
||||
"paused_until_label": "şu tarihe kadar",
|
||||
"replace_object": "Değiştir…",
|
||||
"replace_object_prompt": "Bu nesneyi emekliye ayırın ve bir halef oluşturun. Geçmiş ve maliyetler eski nesnede arşivli kalır; görevler ve belgeler yenisine taşınır, sayaçlar sıfırdan başlar.",
|
||||
"replace_name_label": "Yeni nesne adı",
|
||||
"object_replaced": "Nesne değiştirildi — halefi oluşturuldu",
|
||||
"reading_unit_label": "Okuma birimi (örn. kWh, m³)",
|
||||
"reading_unit_help": "Bu görevi tamamlarken kaydedilen değerin yanında gösterilir.",
|
||||
"reading_value_label": "Okuma değeri",
|
||||
"reading_label": "Okuma",
|
||||
"settings_templates_label": "Şablon galerisi",
|
||||
"settings_templates_hint": "Asla ihtiyaç duymayacağınız şablonların işaretini kaldırın — \"Şablondan\" seçicilerinden (panel ve yapılandırma akışı) kaybolurlar. Başka hiçbir şey değişmez; istediğiniz zaman yeniden etkinleştirebilirsiniz.",
|
||||
"worksheet": "Çalışma sayfası",
|
||||
"worksheet_scan_view": "Görevi açmak için tarayın",
|
||||
"worksheet_scan_complete": "Tamamlamak için tarayın",
|
||||
"worksheet_manual_excerpt": "Kılavuz alıntısı",
|
||||
"worksheet_pages": "sayfa",
|
||||
"worksheet_printed": "Yazdırıldı",
|
||||
"worksheet_never": "Hiç",
|
||||
"card_all_caught_up": "Her şey tamam — ilgilenilmesi gereken bir şey yok",
|
||||
"postpone": "Ötele",
|
||||
"postpone_date_prompt": "Bu tekrar hangi tarihe ötelensin?",
|
||||
"postpone_date_label": "Yeni vade tarihi",
|
||||
"postponed": "Ötelendi",
|
||||
"postponed_to": "Şu tarihe ötelendi",
|
||||
"season_window_label": "Mevsim penceresi (aylar)",
|
||||
"season_window_hint": "Yalnızca seçili aylarda vadesi gelir; sezon dışı tarihler bir sonraki etkin aya kayar. Hiçbiri = tüm yıl.",
|
||||
"series_end_label": "Bitiş",
|
||||
"series_end_never": "Asla (süresiz tekrar eder)",
|
||||
"series_end_after_count": "Belirli bir sayıdan sonra",
|
||||
"series_end_until": "Bir tarihte",
|
||||
"series_end_count_label": "Tekrar sayısı",
|
||||
"series_end_until_label": "Bitiş tarihi",
|
||||
"parts_section": "Parçalar ve sarf malzemeleri",
|
||||
"part_add": "Parça ekle",
|
||||
"part_name": "Ad",
|
||||
"part_vendor": "Üretici",
|
||||
"part_storage_location": "Saklama yeri",
|
||||
"part_product_url": "Ürün URL'si",
|
||||
"part_unit": "Birim",
|
||||
"part_cost": "Birim fiyat",
|
||||
"part_stock": "Stok",
|
||||
"part_reorder_threshold": "Sipariş eşiği",
|
||||
"part_restock_quantity": "Stok yenileme miktarı",
|
||||
"part_auto_buy": "Azaldığında otomatik satın alma görevi oluştur",
|
||||
"part_restock": "Stoku ayarla",
|
||||
"restock_quantity_label": "Satın alınan miktar",
|
||||
"consumes_parts_label": "Parça tüketir",
|
||||
"parts_load_failed": "Bu nesnenin parçaları yüklenemedi — parça tüketimi seçenekleri şu anda kullanılamıyor.",
|
||||
"adopt_problem_button": "Sorun sensörlerini devral",
|
||||
"adopt_problem_title": "Sorun sensörlerini devral",
|
||||
"adopt_problem_hint": "HA sorun sensörlerini (yazıcı hataları, filtre uyarıları, düşük pil) sorun etkinken tetiklenen ve sorun çözülünce kendini temizleyen bakım görevlerine dönüştürün.",
|
||||
"adopt_problem_none": "Halihazırda takip edilmeyen sorun sensörü bulunamadı.",
|
||||
"adopt_problem_active": "etkin",
|
||||
"adopt_problem_ok": "tamam",
|
||||
"adopt_problem_new_object": "(yeni)",
|
||||
"adopt_problem_adopt": "Seçilenleri devral",
|
||||
"adopt_problem_done": "{tasks} sorun sensörü devralındı",
|
||||
"views_label": "Görünümler",
|
||||
"views_none": "— Görünüm yok —",
|
||||
"views_manage": "Görünümleri kaydet / yönet",
|
||||
"views_dialog_title": "Kayıtlı görünümler",
|
||||
"views_dialog_hint": "Geçerli filtreleri herkesin yeniden kullanabileceği adlandırılmış bir görünüm olarak kaydedin.",
|
||||
"views_name_placeholder": "Görünüm adı",
|
||||
"views_save_current": "Geçerli filtreleri kaydet",
|
||||
"views_none_yet": "Henüz kayıtlı görünüm yok.",
|
||||
"close": "Kapat",
|
||||
"trigger_hint_now": "Sensör şu anda {value} değerini okuyor.",
|
||||
"trigger_hint_above": "Görev, değer {target} üzerine çıktığında tetiklenir.",
|
||||
"trigger_hint_below": "Değer {target} altına düştüğünde tetiklenir.",
|
||||
"trigger_hint_counter_delta": "Mevcut okumadan ({value}) itibaren sayar: {due} değerinde vadesi gelir (+{target}) ve sayım her tamamlamadan sonra yeniden başlar.",
|
||||
"trigger_hint_counter_delta_edit": "Son tamamlamadan bu yana kullanımı sayar: +{target} sonrasında vadesi gelir; sayım her tamamlamadan sonra yeniden başlar.",
|
||||
"trigger_hint_counter_abs": "Sensör {target} değerine ulaştığında görevin vadesi gelir.",
|
||||
"trigger_hint_runtime": "Görevin vadesi, toplam {hours} saatlik çalışma süresinden sonra gelir; sayaç her tamamlamadan sonra yeniden başlar.",
|
||||
"trigger_hint_state_change": "Görevin vadesi {count} durum değişikliğinden sonra gelir.",
|
||||
"trigger_hint_state_change_to": "Görevin vadesi, “{state}” durumuna {count} geçişten sonra gelir.",
|
||||
"trigger_hint_state_now": "Mevcut durum: {value}.",
|
||||
"adopt_problem_part": "Kullanılan parça: {name}",
|
||||
"label_filter": "Etiket",
|
||||
"all_labels": "Tüm etiketler",
|
||||
"settings_notify_scope": "Yalnızca şu görünüm için bildir",
|
||||
"settings_notify_scope_all": "Tüm görevler",
|
||||
"settings_notify_scope_hint": "Yalnızca seçili kayıtlı görünümün etiket/kullanıcı filtreleriyle eşleşen görevler hatırlatma gönderir. Görünümün durum, sıralama ve gruplaması burada dikkate alınmaz.",
|
||||
"card_saved_view": "Kayıtlı görünüm",
|
||||
"card_saved_view_none": "Yok",
|
||||
"card_saved_view_help": "Görünümün durum, kullanıcı ve etiket filtrelerini yukarıdaki filtrelerin üzerine uygular. Görünümün sıralaması ve gruplaması panel görüntüleme ayarlarıdır ve kartta uygulanmaz.",
|
||||
"doc_part_none": "Bu parçaya bağlı belge yok.",
|
||||
"settings_templates_toggle_group": "Bu gruptaki tüm şablonları etkinleştir veya devre dışı bırak",
|
||||
"setups_button": "Önerilen kurulumlar",
|
||||
"setups_title": "Önerilen kurulumlar (Beta)",
|
||||
"setups_hint": "Sarf malzemesi sensörleri bakım görevlerini yönetebilecek, desteklenen entegrasyonlara ait cihazlar. Devralma, nesneyi oluşturur ve her görevi sensörüne bağlar — sarf malzemesi azalınca tetiklenir ve değişimden sonra kendini çözer.",
|
||||
"setups_none": "Bağlanmamış sarf malzemesi sensörü olan desteklenen cihaz bulunamadı.",
|
||||
"setups_adopt": "Seçilenleri kur",
|
||||
"setups_done": "{tasks} sensöre bağlı görev oluşturuldu.",
|
||||
"complete_parts_used": "Bu sefer kullanılan parçalar",
|
||||
"part_delete_confirm": "'{name}' parçası silinsin mi? Stok takibi, görev bağlantıları ve açık satın alma hatırlatmaları kaldırılacak.",
|
||||
"baseline_start_value": "Başlangıç okuması (isteğe bağlı)",
|
||||
"baseline_start_help": "Sayım bu okumadan başlar. Mevcut değerden saymak için boş bırakın; son servisteki okumayı girerseniz o zamandan beri olan kullanım da sayılır.",
|
||||
"setups_baseline_hint": "son servisteki okuma (isteğe bağlı)",
|
||||
"baseline_start_help_edit": "Mevcut sayımı korumak için boş bırakın. Bir değer girmek sayımı yeniden sabitler (örn. son servisteki okuma).",
|
||||
"baseline_current_effective": "Şu anda geçerli başlangıç değeri: {value}",
|
||||
"runtime_on_states": "Etkin durumlar (virgülle ayrılmış)",
|
||||
"runtime_on_states_help": "Çalışıyor sayılan durumlar — varsayılan: on. Örn. mowing, cleaning, printing. Bir öznitelik seçiliyse onun değerleri eşleştirilir.",
|
||||
"setups_target_new": "Yeni oluştur: {name}",
|
||||
"schedule_preview_title": "Sonraki tarihler",
|
||||
"schedule_preview_ontime": "Zamanında tamamlama varsayılarak.",
|
||||
"schedule_preview_ends": "(seri sona erer)",
|
||||
"adopt_problem_responsible": "Devralınan tüm görevler için sorumlu kullanıcı (isteğe bağlı)",
|
||||
"adopt_problem_configure": "Yapılandır",
|
||||
"history_auto": "Otomatik",
|
||||
"battery_fleet_title": "Pil filosu",
|
||||
"battery_fleet_none_low": "Tüm piller iyi durumda — değiştirilecek bir şey yok.",
|
||||
"battery_fleet_buy_now": "Şimdi satın al",
|
||||
"battery_fleet_soon": "Yakında gerekli",
|
||||
"battery_fleet_soon_hint": "Son değişim tarihinden tahmin edildi — önceden sipariş verin.",
|
||||
"battery_fleet_mark_all": "Tümünü değiştirildi olarak işaretle",
|
||||
"battery_fleet_mark_one": "Bu pili değiştirildi olarak işaretle",
|
||||
"battery_fleet_offline": "çevrimdışı",
|
||||
"battery_fleet_trigger_lost": "Bu görevin sensör tetikleyicisi kayboldu — tetiklenmeyecek ve otomatik tamamlanmayacak.",
|
||||
"battery_fleet_repair": "Onar",
|
||||
"battery_fleet_exclude": "Filodan hariç tut",
|
||||
"battery_fleet_excluded": "Hariç tutuldu",
|
||||
"battery_fleet_include": "Yeniden takip et",
|
||||
"battery_fleet_total": "{n} pil takip ediliyor",
|
||||
"battery_fleet_setup_button": "Pil filosu",
|
||||
"battery_fleet_setup_done": "Pil filosu kuruldu — tek bir görev tüm pillerinizi takip ediyor.",
|
||||
"update_banner": "Sunucuda Maintenance Supporter'ın daha yeni bir sürümü var — paneli güncellemek için sayfayı yeniden yükleyin.",
|
||||
"update_reload": "Yeniden yükle"
|
||||
}
|
||||
@@ -0,0 +1,811 @@
|
||||
{
|
||||
"maintenance": "Karbantartás",
|
||||
"objects": "Objektumok",
|
||||
"tasks": "Feladatok",
|
||||
"overdue": "Lejárt",
|
||||
"due_soon": "Hamarosan esedékes",
|
||||
"triggered": "Aktiválva",
|
||||
"trigger_replaced": "Kiváltó lecserélve",
|
||||
"ok": "OK",
|
||||
"all": "Összes",
|
||||
"new_object": "+ Új objektum",
|
||||
"templates_from": "Sablonból",
|
||||
"templates_title": "Kezdés sablonból",
|
||||
"templates_task_count": "{n} feladat",
|
||||
"template_created": "Létrehozva sablonból",
|
||||
"onboard_hint": "Adja hozzá az első objektumot a karbantartások nyomon követéséhez.",
|
||||
"edit": "Szerkesztés",
|
||||
"duplicate": "Duplikálás",
|
||||
"task_duplicated": "Feladat duplikálva",
|
||||
"object_duplicated": "Objektum duplikálva",
|
||||
"delete": "Törlés",
|
||||
"add_task": "+ Új feladat",
|
||||
"complete": "Elvégzés",
|
||||
"completed": "Elvégezve",
|
||||
"skip": "Kihagyás",
|
||||
"skipped": "Kihagyva",
|
||||
"missed": "Elmulasztva",
|
||||
"reset": "Visszaállítás",
|
||||
"snooze": "Szundi",
|
||||
"snoozed": "Szundiztatva",
|
||||
"cancel": "Mégse",
|
||||
"bulk_select": "Kijelölés",
|
||||
"bulk_select_all": "Összes kijelölése",
|
||||
"bulk_n_selected": "{n} kijelölve",
|
||||
"bulk_completed": "{n} feladat elvégezve",
|
||||
"bulk_archived": "{n} feladat archiválva",
|
||||
"completing": "Elvégzés…",
|
||||
"interval": "Intervallum",
|
||||
"warning": "Figyelmeztetés",
|
||||
"last_performed": "Utoljára elvégezve",
|
||||
"next_due": "Következő esedékesség",
|
||||
"days_until_due": "Napok az esedékességig",
|
||||
"avg_duration": "Átl. időtartam",
|
||||
"trigger": "Kiváltó",
|
||||
"trigger_type": "Kiváltó típusa",
|
||||
"threshold_above": "Felső határ",
|
||||
"threshold_below": "Alsó határ",
|
||||
"threshold": "Küszöbérték",
|
||||
"counter": "Számláló",
|
||||
"state_change": "Állapotváltozás",
|
||||
"runtime": "Üzemidő",
|
||||
"runtime_hours": "Cél üzemidő (óra)",
|
||||
"target_value": "Célérték",
|
||||
"baseline": "Kiindulási érték",
|
||||
"target_changes": "Cél változásszám",
|
||||
"for_minutes": "Ennyi ideig (perc)",
|
||||
"time_based": "Időalapú",
|
||||
"sensor_based": "Érzékelőalapú",
|
||||
"manual": "Kézi",
|
||||
"one_time": "Egyszeri",
|
||||
"weekdays": "Hét napjai",
|
||||
"nth_weekday": "A hónap n. hétnapja",
|
||||
"day_of_month": "A hónap napja",
|
||||
"recurrence_on_days": "Ismétlés ezeken a napokon",
|
||||
"recurrence_occurrence": "Előfordulás",
|
||||
"recurrence_weekday": "Hét napja",
|
||||
"recurrence_day": "A hónap napja (1–31)",
|
||||
"recurrence_last_day": "A hónap utolsó napja",
|
||||
"recurrence_business_day": "Csak munkanapokon (hétvégéről visszalépve)",
|
||||
"recurrence_offset": "Eltolás (nap, ±)",
|
||||
"recurrence_offset_help": "A dátum eltolása ±N nappal, pl. -2 = két nappal korábban.",
|
||||
"last_day_month": "A hónap utolsó napja",
|
||||
"last_business_day_month": "Utolsó munkanap",
|
||||
"ord_1": "1.",
|
||||
"ord_2": "2.",
|
||||
"ord_3": "3.",
|
||||
"ord_4": "4.",
|
||||
"ord_5": "5.",
|
||||
"ord_last": "Utolsó",
|
||||
"day_word": "Nap",
|
||||
"interval_value": "Intervallum",
|
||||
"interval_unit": "Egység",
|
||||
"unit_days": "Nap",
|
||||
"unit_weeks": "Hét",
|
||||
"unit_months": "Hónap",
|
||||
"unit_years": "Év",
|
||||
"due_date": "Határidő",
|
||||
"cleaning": "Tisztítás",
|
||||
"inspection": "Ellenőrzés",
|
||||
"replacement": "Csere",
|
||||
"calibration": "Kalibrálás",
|
||||
"service": "Szerviz",
|
||||
"reading": "Leolvasás",
|
||||
"custom": "Egyéni",
|
||||
"history": "Előzmények",
|
||||
"cost": "Költség",
|
||||
"report_button": "Jelentés",
|
||||
"report_title": "Karbantartási jelentés",
|
||||
"report_generated": "Létrehozva",
|
||||
"report_times_done": "Elvégezve",
|
||||
"report_total_cost": "Összköltség",
|
||||
"report_every": "minden {n}. {unit}",
|
||||
"report_notes": "Megjegyzések",
|
||||
"report_col_type": "Típus",
|
||||
"report_col_status": "Állapot",
|
||||
"report_col_schedule": "Ütemezés",
|
||||
"duration": "Időtartam",
|
||||
"both": "Mindkettő",
|
||||
"trigger_val": "Kiváltó érték",
|
||||
"complete_title": "Elvégzés: ",
|
||||
"checklist": "Ellenőrzőlista",
|
||||
"checklist_steps_optional": "Ellenőrzőlista lépései (opcionális)",
|
||||
"checklist_placeholder": "Szűrő tisztítása\nTömítés cseréje\nNyomáspróba",
|
||||
"checklist_help": "Soronként egy lépés. Legfeljebb 100 elem.",
|
||||
"err_too_long": "{field}: túl hosszú (max. {n} karakter)",
|
||||
"err_too_short": "{field}: túl rövid (min. {n} karakter)",
|
||||
"err_value_too_high": "{field}: túl nagy (max. {n})",
|
||||
"err_value_too_low": "{field}: túl kicsi (min. {n})",
|
||||
"err_required": "{field}: kötelező",
|
||||
"err_wrong_type": "{field}: hibás típus (várt: {type})",
|
||||
"err_invalid_choice": "{field}: nem megengedett érték",
|
||||
"err_invalid_value": "{field}: érvénytelen érték",
|
||||
"feat_schedule_time": "Napszakhoz kötött ütemezés",
|
||||
"feat_schedule_time_desc": "A feladatok nem éjfélkor, hanem egy megadott napszakban válnak lejárttá.",
|
||||
"schedule_time_optional": "Esedékesség időpontja (opcionális, ÓÓ:PP)",
|
||||
"schedule_time_help": "Üres = éjfél (alapértelmezés). HA időzóna.",
|
||||
"at_time": "ekkor:",
|
||||
"notes_optional": "Megjegyzések (opcionális)",
|
||||
"cost_optional": "Költség (opcionális)",
|
||||
"duration_minutes": "Időtartam percben (opcionális)",
|
||||
"days": "nap",
|
||||
"day": "nap",
|
||||
"today": "Ma",
|
||||
"d_overdue": "napja lejárt",
|
||||
"no_tasks": "Még nincsenek karbantartási feladatok. Első lépésként hozzon létre egy objektumot.",
|
||||
"no_tasks_short": "Nincs feladat",
|
||||
"no_history": "Még nincsenek előzmények.",
|
||||
"show_all": "Összes megjelenítése",
|
||||
"cost_duration_chart": "Költség és időtartam",
|
||||
"installed": "Telepítve",
|
||||
"confirm_delete_object": "Törli az objektumot az összes feladatával együtt?",
|
||||
"confirm_delete_task": "Törli ezt a feladatot?",
|
||||
"min": "Min",
|
||||
"max": "Max",
|
||||
"save": "Mentés",
|
||||
"saving": "Mentés…",
|
||||
"edit_task": "Feladat szerkesztése",
|
||||
"new_task": "Új karbantartási feladat",
|
||||
"task_name": "Feladat neve",
|
||||
"maintenance_type": "Karbantartás típusa",
|
||||
"priority": "Prioritás",
|
||||
"labels": "Címkék",
|
||||
"labels_placeholder": "pl. biztonság, szezonális, bérlőnek látható",
|
||||
"labels_help": "Vesszővel elválasztott címkék szűréshez és jelentésekhez.",
|
||||
"priority_low": "Alacsony",
|
||||
"priority_normal": "Normál",
|
||||
"priority_high": "Magas",
|
||||
"schedule_type": "Ütemezés típusa",
|
||||
"interval_days": "Intervallum (nap)",
|
||||
"warning_days": "Figyelmeztetési napok",
|
||||
"earliest_completion_days": "Legkorábbi elvégzés (nappal az esedékesség előtt)",
|
||||
"earliest_completion_days_help": "Hagyja üresen, ha bármikor elvégezhető. 0 = csak az esedékesség napján vagy utána.",
|
||||
"last_performed_optional": "Utoljára elvégezve (opcionális)",
|
||||
"interval_anchor": "Intervallum horgonya",
|
||||
"anchor_completion": "Az elvégzés dátumától",
|
||||
"anchor_planned": "A tervezett dátumtól (nincs csúszás)",
|
||||
"edit_object": "Objektum szerkesztése",
|
||||
"name": "Név",
|
||||
"manufacturer_optional": "Gyártó (opcionális)",
|
||||
"model_optional": "Modell (opcionális)",
|
||||
"serial_number_optional": "Sorozatszám (opcionális)",
|
||||
"serial_number_label": "Sorozatszám",
|
||||
"documentation_url_label": "Kézikönyv",
|
||||
"object_notes_label": "Megjegyzések",
|
||||
"sort_due_date": "Határidő",
|
||||
"sort_object": "Objektum neve",
|
||||
"sort_type": "Típus",
|
||||
"sort_task_name": "Feladat neve",
|
||||
"all_objects": "Minden objektum",
|
||||
"tasks_lower": "feladat",
|
||||
"no_tasks_yet": "Még nincs feladat",
|
||||
"add_first_task": "Első feladat hozzáadása",
|
||||
"trigger_configuration": "Kiváltó beállítása",
|
||||
"entity_id": "Entitásazonosító",
|
||||
"comma_separated": "vesszővel elválasztva",
|
||||
"entity_logic": "Entitáslogika",
|
||||
"entity_logic_any": "Bármely entitás kivált",
|
||||
"entity_logic_all": "Minden entitásnak ki kell váltania",
|
||||
"entities": "entitás",
|
||||
"attribute_optional": "Attribútum (opcionális, üres = állapot)",
|
||||
"use_entity_state": "Entitás állapotának használata (attribútum nélkül)",
|
||||
"trigger_above": "Kiváltás e fölött",
|
||||
"trigger_below": "Kiváltás ez alatt",
|
||||
"for_at_least_minutes": "Legalább ennyi ideig (perc)",
|
||||
"safety_interval_days": "Biztonsági intervallum (nap, opcionális)",
|
||||
"safety_interval": "Biztonsági intervallum (opcionális)",
|
||||
"delta_mode": "Delta mód",
|
||||
"from_state_optional": "Kezdő állapot (opcionális)",
|
||||
"to_state_optional": "Célállapot (opcionális)",
|
||||
"documentation_url_optional": "Dokumentáció URL (opcionális)",
|
||||
"object_notes_optional": "Megjegyzések (opcionális)",
|
||||
"nfc_tag_id_optional": "NFC címke azonosító (opcionális)",
|
||||
"nfc_tags_empty_help": "Még nincs NFC címke regisztrálva a Home Assistantban.",
|
||||
"nfc_tags_open_settings": "Címkebeállítások megnyitása",
|
||||
"nfc_tags_refresh": "Frissítés",
|
||||
"environmental_entity_optional": "Környezeti érzékelő (opcionális)",
|
||||
"environmental_entity_helper": "pl. sensor.outdoor_temperature — a környezeti feltételek alapján igazítja az intervallumot",
|
||||
"environmental_attribute_optional": "Környezeti attribútum (opcionális)",
|
||||
"nfc_tag_id": "NFC címke azonosító",
|
||||
"nfc_linked": "NFC címke hozzárendelve",
|
||||
"nfc_link_hint": "Kattintson az NFC címke hozzárendeléséhez",
|
||||
"responsible_user": "Felelős felhasználó",
|
||||
"shared_with": "Megosztva (rotáció)",
|
||||
"shared_with_help": "Válasszon több személyt a feladat megosztásához; a felelős minden elvégzés után váltakozik.",
|
||||
"rotation_strategy": "Rotáció",
|
||||
"rotation_none": "Nincs rotáció",
|
||||
"rotation_round_robin": "Körforgás",
|
||||
"rotation_least_completed": "Legkevesebbet végezte",
|
||||
"rotation_random": "Véletlenszerű",
|
||||
"no_user_assigned": "(Nincs felhasználó hozzárendelve)",
|
||||
"all_users": "Minden felhasználó",
|
||||
"my_tasks": "Saját feladataim",
|
||||
"tab_calendar": "Naptár",
|
||||
"cal_no_events": "Nincs karbantartás",
|
||||
"cal_window_7": "7 nap",
|
||||
"cal_window_14": "14 nap",
|
||||
"cal_window_30": "30 nap",
|
||||
"cal_window_365": "1 év",
|
||||
"cal_every_n_days": "{n} naponta",
|
||||
"cal_source_time": "Időalapú",
|
||||
"cal_source_time_adaptive": "Időalapú (adaptív)",
|
||||
"cal_source_sensor": "Érzékelőalapú",
|
||||
"cal_predicted": "előrejelzett",
|
||||
"cal_confidence_high": "nagy megbízhatóság",
|
||||
"cal_confidence_medium": "közepes megbízhatóság",
|
||||
"cal_confidence_low": "alacsony megbízhatóság",
|
||||
"budget_monthly": "Havi költségkeret",
|
||||
"budget_yearly": "Éves költségkeret",
|
||||
"groups": "Csoportok",
|
||||
"new_group": "Új csoport",
|
||||
"edit_group": "Csoport szerkesztése",
|
||||
"no_groups": "Még nincsenek csoportok",
|
||||
"delete_group": "Csoport törlése",
|
||||
"delete_group_confirm": "Törli a(z) „{name}” csoportot?",
|
||||
"group_select_tasks": "Feladatok kiválasztása",
|
||||
"group_name_required": "A név megadása kötelező",
|
||||
"description_optional": "Leírás (opcionális)",
|
||||
"selected": "Kiválasztva",
|
||||
"loading_chart": "Diagramadatok betöltése…",
|
||||
"hide_outliers": "Kiugró értékek elrejtése (érzékelőhibák)",
|
||||
"was_maintenance_needed": "Szükség volt erre a karbantartásra?",
|
||||
"feedback_needed": "Szükséges volt",
|
||||
"feedback_not_needed": "Nem volt szükséges",
|
||||
"feedback_not_sure": "Nem biztos",
|
||||
"suggested_interval": "Javasolt intervallum",
|
||||
"apply_suggestion": "Alkalmaz",
|
||||
"reanalyze": "Újraelemzés",
|
||||
"reanalyze_result": "Új elemzés",
|
||||
"reanalyze_insufficient_data": "Nincs elég adat ajánlás készítéséhez",
|
||||
"data_points": "adatpont",
|
||||
"dismiss_suggestion": "Elvetés",
|
||||
"confidence_low": "Alacsony",
|
||||
"confidence_medium": "Közepes",
|
||||
"confidence_high": "Magas",
|
||||
"recommended": "ajánlott",
|
||||
"seasonal_awareness": "Szezonális igazodás",
|
||||
"edit_seasonal_overrides": "Szezonális tényezők szerkesztése",
|
||||
"seasonal_overrides_title": "Szezonális tényezők (felülbírálat)",
|
||||
"seasonal_overrides_hint": "Tényező havonta (0,1–5,0). Üres = automatikusan tanult.",
|
||||
"seasonal_override_invalid": "Érvénytelen érték",
|
||||
"seasonal_override_range": "A tényezőnek 0,1 és 5,0 között kell lennie",
|
||||
"clear_all": "Összes törlése",
|
||||
"seasonal_chart_title": "Szezonális tényezők",
|
||||
"seasonal_learned": "Tanult",
|
||||
"seasonal_manual": "Kézi",
|
||||
"month_jan": "Jan",
|
||||
"month_feb": "Febr",
|
||||
"month_mar": "Márc",
|
||||
"month_apr": "Ápr",
|
||||
"month_may": "Máj",
|
||||
"month_jun": "Jún",
|
||||
"month_jul": "Júl",
|
||||
"month_aug": "Aug",
|
||||
"month_sep": "Szept",
|
||||
"month_oct": "Okt",
|
||||
"month_nov": "Nov",
|
||||
"month_dec": "Dec",
|
||||
"sensor_prediction": "Érzékelő-előrejelzés",
|
||||
"degradation_trend": "Trend",
|
||||
"trend_rising": "Emelkedő",
|
||||
"trend_falling": "Csökkenő",
|
||||
"trend_stable": "Stabil",
|
||||
"trend_insufficient_data": "Nincs elég adat",
|
||||
"days_until_threshold": "Napok a küszöbértékig",
|
||||
"threshold_exceeded": "Küszöbérték túllépve",
|
||||
"environmental_adjustment": "Környezeti tényező",
|
||||
"sensor_prediction_urgency": "Az érzékelő ~{days} napon belül jelzi a küszöbérték elérését",
|
||||
"day_short": "nap",
|
||||
"weibull_reliability_curve": "Megbízhatósági görbe",
|
||||
"weibull_failure_probability": "Meghibásodási valószínűség",
|
||||
"weibull_r_squared": "Illeszkedés R²",
|
||||
"beta_early_failures": "Korai meghibásodások",
|
||||
"beta_random_failures": "Véletlen meghibásodások",
|
||||
"beta_wear_out": "Elhasználódás",
|
||||
"beta_highly_predictable": "Jól előrejelezhető",
|
||||
"confidence_interval": "Konfidenciaintervallum",
|
||||
"confidence_conservative": "Konzervatív",
|
||||
"confidence_aggressive": "Optimista",
|
||||
"current_interval_marker": "Jelenlegi intervallum",
|
||||
"recommended_marker": "Ajánlott",
|
||||
"characteristic_life": "Karakterisztikus élettartam",
|
||||
"chart_mini_sparkline": "Trendvonal",
|
||||
"chart_history": "Költség- és időtartam-előzmények",
|
||||
"chart_seasonal": "Szezonális tényezők, 12 hónap",
|
||||
"chart_weibull": "Weibull megbízhatósági görbe",
|
||||
"chart_sparkline": "Érzékelő kiváltóérték-diagram",
|
||||
"days_progress": "Napok előrehaladása",
|
||||
"qr_code": "QR-kód",
|
||||
"qr_generating": "QR-kód generálása…",
|
||||
"qr_error": "A QR-kód generálása nem sikerült.",
|
||||
"qr_error_no_url": "Nincs HA URL beállítva. Adjon meg külső vagy belső URL-t a Beállítások → Rendszer → Hálózat alatt.",
|
||||
"save_error": "A mentés nem sikerült. Próbálja újra.",
|
||||
"qr_print": "Nyomtatás",
|
||||
"qr_download": "SVG letöltése",
|
||||
"qr_action": "Művelet beolvasáskor",
|
||||
"qr_action_view": "Karbantartási adatok megtekintése",
|
||||
"qr_action_complete": "Karbantartás elvégzettként jelölése",
|
||||
"qr_url_mode": "Hivatkozás típusa",
|
||||
"qr_mode_companion": "Companion alkalmazás",
|
||||
"qr_mode_local": "Helyi (mDNS)",
|
||||
"qr_mode_server": "Szerver URL",
|
||||
"overview": "Áttekintés",
|
||||
"analysis": "Elemzés",
|
||||
"recent_activities": "Legutóbbi tevékenységek",
|
||||
"search_notes": "Keresés a megjegyzésekben",
|
||||
"avg_cost": "Átl. költség",
|
||||
"no_advanced_features": "Nincsenek engedélyezett speciális funkciók",
|
||||
"no_advanced_features_hint": "Az elemzési adatok megjelenítéséhez engedélyezze az „Adaptív ütemezés” vagy a „Szezonális minták” funkciót az integráció beállításaiban.",
|
||||
"analysis_not_enough_data": "Még nincs elég adat az elemzéshez.",
|
||||
"analysis_not_enough_data_hint": "A Weibull-elemzéshez legalább 5 elvégzett karbantartás szükséges; a szezonális minták havi 6+ adatpont után válnak láthatóvá.",
|
||||
"analysis_manual_task_hint": "Az intervallum nélküli kézi feladatok nem termelnek elemzési adatot.",
|
||||
"completions": "elvégzés",
|
||||
"current": "Jelenlegi",
|
||||
"shorter": "Rövidebb",
|
||||
"longer": "Hosszabb",
|
||||
"normal": "Normál",
|
||||
"disabled": "Letiltva",
|
||||
"compound_logic": "Összetett logika",
|
||||
"compound": "Összetett (több feltétel)",
|
||||
"compound_logic_and": "ÉS — minden feltételnek teljesülnie kell",
|
||||
"compound_logic_or": "VAGY — bármely feltétel kivált",
|
||||
"compound_help": "Több érzékelőfeltétel egyetlen kiváltóvá kombinálása.",
|
||||
"compound_no_conditions": "Még nincs feltétel — adjon hozzá legalább egyet.",
|
||||
"compound_add_condition": "Feltétel hozzáadása",
|
||||
"compound_condition": "Feltétel",
|
||||
"compound_remove_condition": "Feltétel eltávolítása",
|
||||
"card_title": "Cím",
|
||||
"card_show_header": "Fejléc megjelenítése statisztikákkal",
|
||||
"card_show_actions": "Műveletgombok megjelenítése",
|
||||
"card_compact": "Kompakt mód",
|
||||
"card_max_items": "Max. elemszám (0 = mind)",
|
||||
"card_filter_status": "Szűrés állapot szerint",
|
||||
"card_filter_status_help": "Üres = minden állapot megjelenik.",
|
||||
"card_filter_objects": "Szűrés objektumok szerint",
|
||||
"card_filter_objects_help": "Üres = minden objektum megjelenik.",
|
||||
"card_filter_entities": "Szűrés entitások szerint (entity_id-k)",
|
||||
"card_filter_entities_help": "Válasszon sensor / binary_sensor entitásokat ebből az integrációból. Üres = mind.",
|
||||
"card_loading_objects": "Objektumok betöltése…",
|
||||
"card_load_error": "Az objektumok betöltése nem sikerült — ellenőrizze a WebSocket-kapcsolatot.",
|
||||
"card_no_tasks_title": "Még nincsenek karbantartási feladatok",
|
||||
"card_no_tasks_cta": "→ Hozzon létre egyet a Karbantartás panelen",
|
||||
"no_objects": "Még nincsenek objektumok.",
|
||||
"action_error": "A művelet nem sikerült. Próbálja újra.",
|
||||
"area_id_optional": "Terület (opcionális)",
|
||||
"installation_date_optional": "Telepítés dátuma (opcionális)",
|
||||
"warranty_expiry_optional": "Garancia lejárta (opcionális)",
|
||||
"warranty": "Garancia",
|
||||
"warranty_valid_until": "érvényes eddig: {date}",
|
||||
"warranty_expires_in": "{days} nap múlva lejár",
|
||||
"warranty_expired": "lejárt",
|
||||
"cal_past_windows": "Korábbi időszakok",
|
||||
"cal_forward_windows": "Jövőbeli időszakok",
|
||||
"history_edit_title": "Előzménybejegyzés szerkesztése",
|
||||
"history_edit_timestamp": "Időbélyeg",
|
||||
"manufacturer": "Gyártó",
|
||||
"model": "Modell",
|
||||
"area": "Terület",
|
||||
"actions": "Műveletek",
|
||||
"view_mode_label": "Nézet",
|
||||
"view_cards": "Kártyanézet",
|
||||
"view_table": "Táblázatnézet",
|
||||
"objects_table_columns_label": "Objektumtáblázat oszlopai",
|
||||
"objects_table_columns_hint": "Válassza ki, mely oszlopok jelenjenek meg az objektumok táblázatnézetében.",
|
||||
"custom_icon_optional": "Ikon (opcionális, pl. mdi:wrench)",
|
||||
"task_enabled": "Feladat engedélyezve",
|
||||
"skip_reason_prompt": "Kihagyja ezt a feladatot?",
|
||||
"reason_optional": "Indoklás (opcionális)",
|
||||
"reset_date_prompt": "Elvégzettként jelöli a feladatot?",
|
||||
"reset_date_optional": "Utolsó elvégzés dátuma (opcionális, alapértelmezés: ma)",
|
||||
"notes_label": "Megjegyzések",
|
||||
"documentation_label": "Dokumentáció",
|
||||
"no_nfc_tag": "— Nincs címke —",
|
||||
"dashboard": "Irányítópult",
|
||||
"tab_today": "Ma",
|
||||
"palette_placeholder": "Objektumok és feladatok keresése…",
|
||||
"palette_no_results": "Nincs találat",
|
||||
"palette_hint": "↑↓ navigálás · Enter megnyitás · Esc bezárás",
|
||||
"today_all_caught_up": "Minden rendben! Ezen a héten nincs esedékes feladat.",
|
||||
"today_overdue": "Lejárt",
|
||||
"today_due_today": "Ma esedékes",
|
||||
"today_this_week": "Ezen a héten",
|
||||
"settings": "Beállítások",
|
||||
"settings_features": "Speciális funkciók",
|
||||
"settings_features_desc": "Speciális funkciók be- és kikapcsolása. A kikapcsolás elrejti őket a felületről, de nem töröl adatot.",
|
||||
"feat_adaptive": "Adaptív ütemezés",
|
||||
"feat_adaptive_desc": "Optimális intervallumok tanulása a karbantartási előzményekből",
|
||||
"feat_predictions": "Érzékelő-előrejelzések",
|
||||
"feat_predictions_desc": "Kiváltási dátumok előrejelzése az érzékelőértékek romlásából",
|
||||
"feat_seasonal": "Szezonális igazítások",
|
||||
"feat_seasonal_desc": "Intervallumok igazítása szezonális minták alapján",
|
||||
"feat_environmental": "Környezeti korreláció",
|
||||
"feat_environmental_desc": "Intervallumok korrelálása hőmérséklettel/páratartalommal",
|
||||
"feat_budget": "Költségkeret követése",
|
||||
"feat_budget_desc": "Havi és éves karbantartási kiadások követése",
|
||||
"feat_groups": "Feladatcsoportok",
|
||||
"feat_groups_desc": "Feladatok logikai csoportokba rendezése",
|
||||
"feat_checklists": "Ellenőrzőlisták",
|
||||
"feat_checklists_desc": "Többlépéses eljárások a feladatok elvégzéséhez",
|
||||
"settings_general": "Általános",
|
||||
"settings_default_warning": "Alapértelmezett figyelmeztetési napok",
|
||||
"settings_panel_enabled": "Oldalsáv-panel",
|
||||
"settings_panel_title": "Oldalsáv-panel címe",
|
||||
"settings_notifications": "Értesítések",
|
||||
"settings_notify_service": "Értesítési szolgáltatás",
|
||||
"test_notification": "Tesztértesítés",
|
||||
"send_test": "Teszt küldése",
|
||||
"testing": "Küldés…",
|
||||
"test_notification_success": "Tesztértesítés elküldve",
|
||||
"test_notification_failed": "A tesztértesítés nem sikerült",
|
||||
"settings_notify_due_soon": "Értesítés, ha hamarosan esedékes",
|
||||
"settings_notify_overdue": "Értesítés lejáratkor",
|
||||
"settings_notify_triggered": "Értesítés kiváltáskor",
|
||||
"settings_interval_hours": "Ismétlési intervallum (óra, 0 = egyszer)",
|
||||
"settings_quiet_hours": "Csendes órák",
|
||||
"settings_quiet_start": "Kezdete",
|
||||
"settings_quiet_end": "Vége",
|
||||
"settings_max_per_day": "Max. értesítés naponta (0 = korlátlan)",
|
||||
"settings_bundling": "Értesítések összevonása",
|
||||
"settings_bundle_threshold": "Összevonási küszöb",
|
||||
"settings_reminder_leads": "Extra emlékeztetők (nappal az esedékesség előtt)",
|
||||
"settings_reminder_leads_hint": "Vesszővel elválasztott napok, pl. 14, 3, 0 — minden egyező napon egy extra emlékeztető megy ki. Üres = kikapcsolva.",
|
||||
"settings_actions": "Mobil műveletgombok",
|
||||
"settings_action_complete": "„Elvégzés” gomb megjelenítése",
|
||||
"settings_action_skip": "„Kihagyás” gomb megjelenítése",
|
||||
"settings_action_snooze": "„Szundi” gomb megjelenítése",
|
||||
"settings_weekly_digest": "Heti összefoglaló",
|
||||
"settings_weekly_digest_hint": "Egyetlen összefoglaló értesítés hétfő reggel, ha vannak esedékes feladatok.",
|
||||
"settings_warranty_reminder": "Garancialejárati emlékeztető",
|
||||
"settings_warranty_reminder_days": "Nappal a lejárat előtt",
|
||||
"settings_warranty_reminder_hint": "Egyszeri értesítés, amikor egy objektum garanciája ennyi napra van a lejárattól.",
|
||||
"settings_snooze_hours": "Szundi időtartama (óra)",
|
||||
"settings_budget": "Költségkeret",
|
||||
"settings_currency": "Pénznem",
|
||||
"settings_budget_monthly": "Havi költségkeret",
|
||||
"settings_budget_yearly": "Éves költségkeret",
|
||||
"settings_budget_alerts": "Költségkeret-riasztások",
|
||||
"settings_budget_threshold": "Riasztási küszöb (%)",
|
||||
"settings_import_export": "Importálás / Exportálás",
|
||||
"settings_export_json": "JSON exportálása",
|
||||
"settings_export_yaml": "YAML exportálása",
|
||||
"settings_export_csv": "CSV exportálása",
|
||||
"settings_import_csv": "CSV importálása",
|
||||
"settings_import_placeholder": "Illessze be ide a JSON vagy CSV tartalmat…",
|
||||
"settings_import_btn": "Importálás",
|
||||
"settings_import_success": "{count} objektum sikeresen importálva.",
|
||||
"settings_export_success": "Export letöltve.",
|
||||
"settings_saved": "Beállítás mentve.",
|
||||
"settings_include_history": "Előzményekkel együtt",
|
||||
"settings_export_selection": "Csak a kiválasztott objektumok (opcionális)",
|
||||
"settings_docs_archive": "Dokumentumarchívum (fájlokkal)",
|
||||
"settings_docs_archive_hint": "A JSON/YAML/CSV export csak a beállításokat tartalmazza. Ez a ZIP a feltöltött fájlok tartalmát is magában foglalja, így a visszaállítás teljes.",
|
||||
"settings_docs_export_btn": "Dokumentum-ZIP letöltése",
|
||||
"settings_docs_import_btn": "Dokumentum-ZIP visszaállítása",
|
||||
"settings_docs_import_success": "Visszaállítva: {blobs} fájl, {docs} dokumentum",
|
||||
"sort_alphabetical": "Ábécésorrend",
|
||||
"sort_due_soonest": "Leghamarabb esedékes",
|
||||
"sort_task_count": "Feladatok száma",
|
||||
"sort_area": "Terület",
|
||||
"sort_assigned_user": "Hozzárendelt felhasználó",
|
||||
"sort_group": "Csoport",
|
||||
"groupby_none": "Nincs csoportosítás",
|
||||
"groupby_area": "Terület szerint",
|
||||
"groupby_group": "Csoport szerint",
|
||||
"groupby_user": "Felhasználó szerint",
|
||||
"filter_label": "Szűrő",
|
||||
"user_label": "Felhasználó",
|
||||
"sort_label": "Rendezés",
|
||||
"group_by_label": "Csoportosítás",
|
||||
"state_value_help": "A HA állapotértékét használja (általában kisbetűs, pl. „on”/„off”). A kis- és nagybetűk mentéskor normalizálódnak.",
|
||||
"target_changes_help": "Az egyező átmenetek száma a kiváltás előtt (alapértelmezés: 1).",
|
||||
"qr_print_title": "QR-kódok nyomtatása",
|
||||
"qr_print_desc": "Nyomtatható oldal QR-kódokkal — vágja ki és ragassza fel a berendezésekre.",
|
||||
"qr_print_load": "Objektumok betöltése",
|
||||
"qr_print_filter": "Szűrő",
|
||||
"qr_print_objects": "Objektumok",
|
||||
"qr_print_actions": "Műveletek",
|
||||
"qr_print_url_mode": "Hivatkozás típusa",
|
||||
"qr_print_estimate": "Becsült QR-kódok száma",
|
||||
"qr_print_over_limit": "a korlát 200, szűkítse a szűrőt",
|
||||
"qr_print_generate": "QR-kódok generálása",
|
||||
"qr_print_generating": "Generálás…",
|
||||
"qr_print_ready": "QR-kódok készen",
|
||||
"qr_print_print_button": "Nyomtatás",
|
||||
"qr_print_empty": "Nincs mit generálni",
|
||||
"qr_action_skip": "Kihagyás",
|
||||
"vacation_title": "Nyaralási mód",
|
||||
"vacation_active": "aktív",
|
||||
"vacation_ended": "véget ért",
|
||||
"vacation_desc": "Tervezzen nyaralást: az értesítések szünetelnek az időszak alatt, plusz egy puffernyi napig. Egyes feladatokat kivételként visszakapcsolhat.",
|
||||
"vacation_enable": "Nyaralási mód bekapcsolása",
|
||||
"vacation_start": "Kezdete",
|
||||
"vacation_end": "Vége",
|
||||
"vacation_buffer": "Puffer (nap)",
|
||||
"vacation_exempt_title": "Értesítés a nyaralás alatt is",
|
||||
"vacation_exempt_desc": "Válassza ki azokat a feladatokat, amelyek a nyaralás alatt is értesítsenek (pl. kritikus medencekémia).",
|
||||
"vacation_load_tasks": "Feladatok betöltése",
|
||||
"vacation_preview_btn": "Előnézet megjelenítése",
|
||||
"vacation_preview_affected": "érintett feladat",
|
||||
"vacation_event_due_soon": "hamarosan esedékessé válik",
|
||||
"vacation_event_overdue": "lejárttá válik",
|
||||
"vacation_event_triggered_est": "érzékelős kiváltás lehetséges",
|
||||
"vacation_sensor_based": "(érzékelőalapú)",
|
||||
"vacation_action_notify": "Értesítsen mégis",
|
||||
"vacation_action_unsilence": "Némítás újra",
|
||||
"vacation_marked_complete": "Elvégzettként jelölve",
|
||||
"vacation_marked_skip": "Kihagyva",
|
||||
"vacation_end_now": "Nyaralás befejezése most",
|
||||
"add": "Hozzáadás",
|
||||
"show_stats": "Statisztikák és grafikonok",
|
||||
"hide_stats": "Statisztikák elrejtése",
|
||||
"adaptive_no_data": "Még nincs elég elvégzési előzmény az adaptív elemzéshez. Végezze el a feladatot még néhányszor az intervallumjavaslatok és a megbízhatósági diagramok feloldásához.",
|
||||
"suggestion_applied": "Javasolt intervallum alkalmazva",
|
||||
"vacation_mode": "Nyaralási mód",
|
||||
"vacation_status_active": "Most aktív",
|
||||
"vacation_status_scheduled": "Ütemezve",
|
||||
"vacation_status_inactive": "Inaktív",
|
||||
"vacation_end_now_confirm": "Azonnal befejezi a nyaralást?",
|
||||
"vacation_exempt_count": "kivétel",
|
||||
"vacation_advanced": "Speciális…",
|
||||
"vacation_open_panel": "Megnyitás a panelen",
|
||||
"enable": "Engedélyezés",
|
||||
"saved": "Mentve",
|
||||
"budget_monthly_set": "Havi keret beállítása",
|
||||
"budget_yearly_set": "Éves keret beállítása",
|
||||
"budget_advanced": "Pénznem, riasztások…",
|
||||
"budget_open_panel": "Megnyitás a panelen",
|
||||
"groups_empty": "Még nincsenek csoportok.",
|
||||
"group_new_placeholder": "Csoport hozzáadása…",
|
||||
"group_delete_confirm": "Törli a(z) „{name}” csoportot?",
|
||||
"groups_manage_tasks": "Feladat-hozzárendelések kezelése…",
|
||||
"groups_open_panel": "Megnyitás a panelen",
|
||||
"unassigned": "Nincs hozzárendelve",
|
||||
"no_area": "Nincs terület",
|
||||
"has_overdue": "Van lejárt feladata",
|
||||
"object": "Objektum",
|
||||
"settings_panel_access": "Panel-hozzáférés",
|
||||
"settings_panel_access_desc": "Az adminok mindig teljes hozzáféréssel rendelkeznek. Ha a létrehozást, szerkesztést és törlést adott nem admin felhasználókra bízná, kapcsolja be ezt, és válassza ki őket lent — mindenki más csak az Elvégzés és a Kihagyás gombot látja.",
|
||||
"settings_operator_write": "A kiválasztott felhasználók létrehozhatnak, szerkeszthetnek és törölhetnek",
|
||||
"settings_operator_write_desc": "Ki: csak adminok módosíthatnak tartalmat. Be: a lent kiválasztott felhasználók is teljes hozzáférést kapnak.",
|
||||
"no_non_admin_users": "Nem található nem admin felhasználó. Vegyen fel néhányat a Beállítások → Személyek alatt.",
|
||||
"owner_label": "Tulajdonos",
|
||||
"feat_completion_actions": "Elvégzési műveletek",
|
||||
"feat_completion_actions_desc": "Feladatonkénti HA művelet elvégzéskor + gyorselvégző QR előre beállított értékekkel.",
|
||||
"on_complete_action_title": "Elvégzéskor: HA művelet indítása (opcionális)",
|
||||
"on_complete_action_desc": "HA szolgáltatást hív meg a feladat elvégzésekor — pl. számláló nullázása az eszközön.",
|
||||
"on_complete_action_service": "Szolgáltatás",
|
||||
"on_complete_action_target": "Cél entitás",
|
||||
"on_complete_action_target_hint": "Megjegyzés: az entitás doménjének egyeznie kell a szolgáltatással — pl. a „button.press” csak button.* entitáson működik, a „counter.increment” csak counter.* entitáson, az „input_button.press” csak input_button.* entitáson stb. Eltérés esetén a művelet csendben meghiúsul (a HA naplóban: „Referenced entities ... missing or not currently available”).",
|
||||
"on_complete_action_data": "Adatok (JSON, opcionális)",
|
||||
"on_complete_action_test": "Konfiguráció ellenőrzése",
|
||||
"on_complete_action_test_success": "✓ A konfiguráció érvényes (a művelet csak a feladat elvégzésekor fut le)",
|
||||
"on_complete_action_test_failed": "Sikertelen",
|
||||
"quick_complete_defaults_title": "Gyorselvégzés alapértékei (QR-beolvasáshoz, opcionális)",
|
||||
"quick_complete_defaults_desc": "Előre beállított értékek a gyorselvégző QR-beolvasásokhoz. Ezek nélkül a QR az elvégzési párbeszédablakot nyitja meg.",
|
||||
"quick_complete_defaults_notes": "Megjegyzések",
|
||||
"quick_complete_defaults_cost": "Költség",
|
||||
"quick_complete_defaults_duration": "Időtartam (perc)",
|
||||
"quick_complete_defaults_feedback_none": "Nincs visszajelzés",
|
||||
"quick_complete_defaults_feedback_needed": "Szükséges volt",
|
||||
"quick_complete_defaults_feedback_not_needed": "Nem volt szükséges",
|
||||
"quick_complete_success": "Gyorsan elvégzettként jelölve",
|
||||
"show_all_objects": "Minden objektum megjelenítése",
|
||||
"show_all_tasks": "Szűrő törlése — minden feladat megjelenítése",
|
||||
"filter_to_overdue": "Szűrés csak a lejárt feladatokra",
|
||||
"filter_to_due_soon": "Szűrés csak a hamarosan esedékes feladatokra",
|
||||
"filter_to_triggered": "Szűrés csak az aktivált feladatokra",
|
||||
"open_task": "Feladat megnyitása",
|
||||
"show_details": "Előzmények és statisztikák",
|
||||
"hide_details": "Részletek elrejtése",
|
||||
"history_empty": "Még nincsenek előzmények.",
|
||||
"history_edit_button": "Bejegyzés szerkesztése",
|
||||
"total_cost": "Összköltség",
|
||||
"times_performed": "Elvégezve",
|
||||
"older_entries": "régebbi",
|
||||
"open_in_panel": "Megnyitás a Karbantartás panelen",
|
||||
"skip_reason": "Kihagyás oka (opcionális)",
|
||||
"reset_to_date": "Utolsó elvégzés visszaállítása erre:",
|
||||
"delete_task_confirm": "Törli a feladatot az előzményeivel együtt?",
|
||||
"delete_object_confirm": "Törli az objektumot az összes feladatával együtt?",
|
||||
"loading": "Betöltés…",
|
||||
"archive": "Archiválás",
|
||||
"undo": "Visszavonás",
|
||||
"task_archived": "Feladat archiválva",
|
||||
"object_archived": "Objektum archiválva",
|
||||
"unarchive": "Archiválás visszavonása",
|
||||
"archived": "Archiválva",
|
||||
"show_archived": "Archiváltak megjelenítése",
|
||||
"hide_archived": "Archiváltak elrejtése",
|
||||
"confirm_archive_object": "Archiválja az objektumot és a feladatait? Megtartják előzményeiket, és később visszaállíthatók.",
|
||||
"settings_archive": "Archiválás és megőrzés",
|
||||
"settings_archive_desc": "Elvégzett egyszeri feladatok kivezetése törlés nélkül. Az archivált elemek rejtettek és inaktívak, de megtartják előzményeiket és költségeiket.",
|
||||
"settings_archive_oneoff_days": "Elvégzett egyszeri feladatok automatikus archiválása ennyi nap után (0 = ki)",
|
||||
"settings_delete_archived_oneoff_days": "Archivált egyszeri feladatok automatikus törlése ennyi nap után (0 = soha)",
|
||||
"archive_object": "Objektum archiválása",
|
||||
"unarchive_object": "Objektum visszaállítása",
|
||||
"documents": "Dokumentumok",
|
||||
"documents_empty": "Még nincsenek dokumentumok.",
|
||||
"doc_upload": "Fájl feltöltése",
|
||||
"doc_uploading": "Feltöltés…",
|
||||
"doc_add_link": "Hivatkozás hozzáadása",
|
||||
"doc_link_url": "URL (https://…)",
|
||||
"doc_link_title": "Cím (opcionális)",
|
||||
"doc_open": "Megnyitás",
|
||||
"doc_delete_confirm": "Törli a(z) „{name}” elemet?",
|
||||
"doc_too_large": "A fájl túl nagy (max. 25 MB).",
|
||||
"doc_upload_failed": "A feltöltés nem sikerült.",
|
||||
"completion_photo_optional": "Fotó az elvégzésről (opcionális)",
|
||||
"add_photo": "Fotó hozzáadása",
|
||||
"uploading": "Feltöltés…",
|
||||
"remove": "Eltávolítás",
|
||||
"doc_deduped": "Már máshol is tárolva — megosztott, nem foglal extra helyet.",
|
||||
"doc_dup_in_object": "Ez a fájl már csatolva van ehhez az objektumhoz.",
|
||||
"doc_link_invalid": "Csak http/https hivatkozás engedélyezett.",
|
||||
"doc_cat_manual": "Kézikönyv",
|
||||
"doc_cat_warranty": "Garancia",
|
||||
"doc_cat_invoice": "Számla",
|
||||
"doc_cat_spare_parts": "Pótalkatrészek",
|
||||
"doc_cat_photo": "Fotó",
|
||||
"doc_cat_other": "Egyéb",
|
||||
"doc_link_badge": "Hivatkozás",
|
||||
"doc_storage_title": "Dokumentumtárhely",
|
||||
"doc_storage_saved": "Deduplikációval megtakarítva",
|
||||
"doc_storage_refresh": "Frissítés",
|
||||
"doc_download": "Letöltés",
|
||||
"doc_close": "Bezárás",
|
||||
"doc_camera": "Fotó készítése",
|
||||
"doc_drop_hint": "Húzza ide a fájlokat",
|
||||
"doc_task_none": "Ehhez a feladathoz nincs dokumentum csatolva.",
|
||||
"doc_link_existing": "Dokumentum hozzárendelése…",
|
||||
"doc_attach": "Hozzárendelés",
|
||||
"doc_unlink": "Leválasztás",
|
||||
"doc_page": "Oldal",
|
||||
"chart_range_7d": "7 nap",
|
||||
"chart_range_30d": "30 nap",
|
||||
"chart_range_90d": "90 nap",
|
||||
"chart_range_1y": "1 év",
|
||||
"chart_since_service": "az utolsó szerviz óta",
|
||||
"chart_no_stats": "Nincs hosszú távú statisztika ehhez az entitáshoz — csak a karbantartási események értékei láthatók",
|
||||
"auto_complete_on_recovery": "Automatikus elvégzés, ha az érzékelő helyreáll",
|
||||
"auto_complete_on_recovery_help": "Elvégzést rögzít (beállítja az utolsó elvégzést), amikor a kiváltás magától megszűnik — pl. só utántöltve, szűrő kicserélve.",
|
||||
"doc_search": "Dokumentumok keresése…",
|
||||
"doc_search_none": "Nincs egyező dokumentum",
|
||||
"link_device_optional": "Meglévő eszközhöz kapcsolás (opcionális)",
|
||||
"parent_object_optional": "Szülőobjektum (opcionális)",
|
||||
"parent_none": "(Nincs szülő)",
|
||||
"paused": "Szüneteltetve",
|
||||
"pause_object": "Szüneteltetés",
|
||||
"resume_object": "Folytatás",
|
||||
"pause_until_prompt": "Az objektum ütemezéseinek befagyasztása — semmi nem válik esedékessé, és nincs értesítés a folytatásig. Megadhat automatikus folytatási dátumot is.",
|
||||
"pause_until_label": "Folytatás ekkor (opcionális)",
|
||||
"object_paused": "Objektum szüneteltetve",
|
||||
"object_resumed": "Objektum folytatva — az ütemezések újraindultak",
|
||||
"object_paused_badge": "Szüneteltetve",
|
||||
"paused_until_label": "eddig:",
|
||||
"replace_object": "Csere…",
|
||||
"replace_object_prompt": "Az objektum kivezetése és utód létrehozása. Az előzmények és a költségek archiválva a régin maradnak; a feladatok és a dokumentumok átkerülnek az újra, a számlálók nulláról indulnak.",
|
||||
"replace_name_label": "Utód neve",
|
||||
"object_replaced": "Objektum lecserélve — utód létrehozva",
|
||||
"reading_unit_label": "Leolvasás mértékegysége (pl. kWh, m³)",
|
||||
"reading_unit_help": "A rögzített érték mellett jelenik meg a feladat elvégzésekor.",
|
||||
"reading_value_label": "Leolvasott érték",
|
||||
"reading_label": "Leolvasás",
|
||||
"settings_templates_label": "Sablongaléria",
|
||||
"settings_templates_hint": "Vegye ki a pipát a sosem használt sablonoknál — így eltűnnek a „Sablonból” választókból (panel és konfigurációs folyamat). Semmi más nem változik; bármikor újra engedélyezheti őket.",
|
||||
"worksheet": "Munkalap",
|
||||
"worksheet_scan_view": "Olvassa be a feladat megnyitásához",
|
||||
"worksheet_scan_complete": "Olvassa be az elvégzéshez",
|
||||
"worksheet_manual_excerpt": "Kézikönyv-részlet",
|
||||
"worksheet_pages": "oldal",
|
||||
"worksheet_printed": "Nyomtatva",
|
||||
"worksheet_never": "Soha",
|
||||
"card_all_caught_up": "Minden rendben — semmi nem igényel figyelmet",
|
||||
"postpone": "Halasztás",
|
||||
"postpone_date_prompt": "Melyik dátumra halasztja ezt az alkalmat?",
|
||||
"postpone_date_label": "Új határidő",
|
||||
"postponed": "Elhalasztva",
|
||||
"postponed_to": "Elhalasztva erre:",
|
||||
"season_window_label": "Szezonális időablak (hónapok)",
|
||||
"season_window_hint": "Csak a kiválasztott hónapokban esedékes; a szezonon kívüli dátumok a következő aktív hónapra tolódnak. Nincs = egész évben.",
|
||||
"series_end_label": "Befejeződik",
|
||||
"series_end_never": "Soha (végtelen ismétlés)",
|
||||
"series_end_after_count": "Adott számú alkalom után",
|
||||
"series_end_until": "Egy adott dátumon",
|
||||
"series_end_count_label": "Alkalmak száma",
|
||||
"series_end_until_label": "Befejezés dátuma",
|
||||
"parts_section": "Alkatrészek és fogyóeszközök",
|
||||
"part_add": "Alkatrész hozzáadása",
|
||||
"part_name": "Név",
|
||||
"part_vendor": "Gyártó",
|
||||
"part_storage_location": "Tárolási hely",
|
||||
"part_product_url": "Termék URL",
|
||||
"part_unit": "Egység",
|
||||
"part_cost": "Egységár",
|
||||
"part_stock": "Készlet",
|
||||
"part_reorder_threshold": "Újrarendelés ennél",
|
||||
"part_restock_quantity": "Feltöltési mennyiség",
|
||||
"part_auto_buy": "Vásárlási feladat automatikus létrehozása, ha kevés van",
|
||||
"part_restock": "Készlet módosítása",
|
||||
"restock_quantity_label": "Vásárolt mennyiség",
|
||||
"consumes_parts_label": "Felhasznált alkatrészek",
|
||||
"parts_load_failed": "Az objektum alkatrészei nem tölthetők be — a felhasznált alkatrészek beállításai most nem érhetők el.",
|
||||
"adopt_problem_button": "Problémaérzékelők átvétele",
|
||||
"adopt_problem_title": "Problémaérzékelők átvétele",
|
||||
"adopt_problem_hint": "Alakítsa a HA problémaérzékelőit (nyomtatóhibák, szűrőfigyelmeztetések, gyenge elem) karbantartási feladatokká, amelyek a probléma fennállása alatt aktívak, és maguktól lezáródnak, amikor a probléma megoldódik.",
|
||||
"adopt_problem_none": "Nem található még nem követett problémaérzékelő.",
|
||||
"adopt_problem_active": "aktív",
|
||||
"adopt_problem_ok": "ok",
|
||||
"adopt_problem_new_object": "(új)",
|
||||
"adopt_problem_adopt": "Kijelöltek átvétele",
|
||||
"adopt_problem_done": "{tasks} problémaérzékelő átvéve",
|
||||
"views_label": "Nézetek",
|
||||
"views_none": "— Nincs nézet —",
|
||||
"views_manage": "Nézetek mentése / kezelése",
|
||||
"views_dialog_title": "Mentett nézetek",
|
||||
"views_dialog_hint": "Mentse el az aktuális szűrőket névvel ellátott nézetként, amelyet mindenki használhat.",
|
||||
"views_name_placeholder": "Nézet neve",
|
||||
"views_save_current": "Aktuális szűrők mentése",
|
||||
"views_none_yet": "Még nincsenek mentett nézetek.",
|
||||
"close": "Bezárás",
|
||||
"trigger_hint_now": "Az érzékelő jelenlegi értéke: {value}.",
|
||||
"trigger_hint_above": "A feladat akkor aktiválódik, amikor az érték {target} fölé emelkedik.",
|
||||
"trigger_hint_below": "Akkor aktiválódik, amikor az érték {target} alá csökken.",
|
||||
"trigger_hint_counter_delta": "A jelenlegi értéktől ({value}) számol: esedékes {due} értéknél (+{target}), és a számlálás minden elvégzés után újraindul.",
|
||||
"trigger_hint_counter_delta_edit": "A legutóbbi elvégzés óta számolja a használatot: esedékes +{target} után; a számlálás minden elvégzés után újraindul.",
|
||||
"trigger_hint_counter_abs": "A feladat akkor válik esedékessé, amikor az érzékelő eléri a(z) {target} értéket.",
|
||||
"trigger_hint_runtime": "A feladat {hours} óra összesített üzemidő után válik esedékessé; a számláló minden elvégzés után újraindul.",
|
||||
"trigger_hint_state_change": "A feladat {count} állapotváltozás után válik esedékessé.",
|
||||
"trigger_hint_state_change_to": "A feladat {count} alkalommal „{state}” állapotra váltás után válik esedékessé.",
|
||||
"trigger_hint_state_now": "Jelenlegi állapot: {value}.",
|
||||
"adopt_problem_part": "Alkatrészt használ: {name}",
|
||||
"label_filter": "Címke",
|
||||
"all_labels": "Minden címke",
|
||||
"settings_notify_scope": "Értesítés csak erre a nézetre",
|
||||
"settings_notify_scope_all": "Minden feladat",
|
||||
"settings_notify_scope_hint": "Csak a kiválasztott mentett nézet címke-/felhasználószűrőinek megfelelő feladatok küldenek emlékeztetőt. A nézet állapot-, rendezési és csoportosítási beállításait itt figyelmen kívül hagyjuk.",
|
||||
"card_saved_view": "Mentett nézet",
|
||||
"card_saved_view_none": "Nincs",
|
||||
"card_saved_view_help": "A nézet állapot-, felhasználó- és címkeszűrőit a fenti szűrőkön felül alkalmazza. A nézet rendezése és csoportosítása a panel megjelenítési beállítása, a kártyán nem érvényesül.",
|
||||
"doc_part_none": "Ehhez az alkatrészhez nincs dokumentum csatolva.",
|
||||
"settings_templates_toggle_group": "A csoport összes sablonjának be- vagy kikapcsolása",
|
||||
"setups_button": "Javasolt beállítások",
|
||||
"setups_title": "Javasolt beállítások (béta)",
|
||||
"setups_hint": "Támogatott integrációk eszközei, amelyek fogyóeszköz-érzékelői karbantartási feladatokat vezérelhetnek. Az átvétel létrehozza az objektumot, és minden feladatot az érzékelőjéhez köt — a feladat akkor aktiválódik, amikor a fogyóeszköz fogytán van, és a csere után magától lezáródik.",
|
||||
"setups_none": "Nem található támogatott eszköz bekötetlen fogyóeszköz-érzékelővel.",
|
||||
"setups_adopt": "Kijelöltek beállítása",
|
||||
"setups_done": "{tasks} érzékelőhöz kötött feladat létrehozva.",
|
||||
"complete_parts_used": "Most felhasznált alkatrészek",
|
||||
"part_delete_confirm": "Törli a(z) „{name}” alkatrészt? A készletkövetése, a feladatkapcsolatai és minden nyitott vásárlási emlékeztetője is törlődik.",
|
||||
"baseline_start_value": "Kezdő leolvasás (opcionális)",
|
||||
"baseline_start_help": "A számlálás ettől az értéktől indul. Hagyja üresen, ha a jelenlegi értéktől számolna; adja meg az utolsó szerviz értékét, hogy az azóta felhalmozott használat is beleszámítson.",
|
||||
"setups_baseline_hint": "érték az utolsó szerviznél (opcionális)",
|
||||
"baseline_start_help_edit": "Üresen hagyva a meglévő számlálás marad. Érték megadása újrahorgonyozza a számlálást (pl. az utolsó szerviz leolvasott értéke).",
|
||||
"baseline_current_effective": "Jelenleg érvényes kezdőérték: {value}",
|
||||
"runtime_on_states": "Aktív állapotok (vesszővel elválasztva)",
|
||||
"runtime_on_states_help": "Működésként számító állapotok — alapértelmezés: on. Pl. mowing, cleaning, printing. Attribútum kiválasztásakor annak értékei számítanak.",
|
||||
"setups_target_new": "Új létrehozása: {name}",
|
||||
"schedule_preview_title": "Következő dátumok",
|
||||
"schedule_preview_ontime": "Időben történő elvégzést feltételezve.",
|
||||
"schedule_preview_ends": "(a sorozat véget ér)",
|
||||
"adopt_problem_responsible": "Felelős felhasználó az összes átvett feladathoz (opcionális)",
|
||||
"adopt_problem_configure": "Beállítás",
|
||||
"history_auto": "Automatikus",
|
||||
"battery_fleet_title": "Elemflotta",
|
||||
"battery_fleet_none_low": "Minden elem rendben — nincs mit cserélni.",
|
||||
"battery_fleet_buy_now": "Vásárlás most",
|
||||
"battery_fleet_soon": "Hamarosan szükséges",
|
||||
"battery_fleet_soon_hint": "Az utolsó cseredátumból előrejelezve — rendeljen előre.",
|
||||
"battery_fleet_mark_all": "Mind cseréltként jelölése",
|
||||
"battery_fleet_mark_one": "Elem cseréltként jelölése",
|
||||
"battery_fleet_offline": "offline",
|
||||
"battery_fleet_trigger_lost": "A feladat érzékelős kiváltója elveszett — nem fog aktiválódni és automatikusan lezáródni sem.",
|
||||
"battery_fleet_repair": "Javítás",
|
||||
"battery_fleet_exclude": "Kizárás a flottából",
|
||||
"battery_fleet_excluded": "Kizárva",
|
||||
"battery_fleet_include": "Követés újra",
|
||||
"battery_fleet_total": "{n} elem követve",
|
||||
"battery_fleet_setup_button": "Elemflotta",
|
||||
"battery_fleet_setup_done": "Elemflotta beállítva — egyetlen feladat követi az összes elemet.",
|
||||
"update_banner": "A Maintenance Supporter újabb verziója érhető el a szerveren — töltse újra az oldalt a panel frissítéséhez.",
|
||||
"update_reload": "Újratöltés"
|
||||
}
|
||||
@@ -0,0 +1,811 @@
|
||||
{
|
||||
"maintenance": "유지보수",
|
||||
"objects": "객체",
|
||||
"tasks": "작업",
|
||||
"overdue": "기한 초과",
|
||||
"due_soon": "기한 임박",
|
||||
"triggered": "트리거됨",
|
||||
"trigger_replaced": "트리거 교체됨",
|
||||
"ok": "정상",
|
||||
"all": "전체",
|
||||
"new_object": "+ 새 객체",
|
||||
"templates_from": "템플릿에서",
|
||||
"templates_title": "템플릿으로 시작하기",
|
||||
"templates_task_count": "작업 {n}개",
|
||||
"template_created": "템플릿에서 생성됨",
|
||||
"onboard_hint": "첫 객체를 추가하여 유지보수 추적을 시작하세요.",
|
||||
"edit": "편집",
|
||||
"duplicate": "복제",
|
||||
"task_duplicated": "작업이 복제되었습니다",
|
||||
"object_duplicated": "객체가 복제되었습니다",
|
||||
"delete": "삭제",
|
||||
"add_task": "+ 작업 추가",
|
||||
"complete": "완료",
|
||||
"completed": "완료됨",
|
||||
"skip": "건너뛰기",
|
||||
"skipped": "건너뜀",
|
||||
"missed": "놓침",
|
||||
"reset": "초기화",
|
||||
"snooze": "다시 알림",
|
||||
"snoozed": "다시 알림 설정됨",
|
||||
"cancel": "취소",
|
||||
"bulk_select": "선택",
|
||||
"bulk_select_all": "모두 선택",
|
||||
"bulk_n_selected": "{n}개 선택됨",
|
||||
"bulk_completed": "작업 {n}개 완료됨",
|
||||
"bulk_archived": "작업 {n}개 보관됨",
|
||||
"completing": "완료 처리 중…",
|
||||
"interval": "주기",
|
||||
"warning": "경고",
|
||||
"last_performed": "마지막 수행일",
|
||||
"next_due": "다음 예정일",
|
||||
"days_until_due": "남은 일수",
|
||||
"avg_duration": "평균 소요 시간",
|
||||
"trigger": "트리거",
|
||||
"trigger_type": "트리거 유형",
|
||||
"threshold_above": "상한",
|
||||
"threshold_below": "하한",
|
||||
"threshold": "임계값",
|
||||
"counter": "카운터",
|
||||
"state_change": "상태 변경",
|
||||
"runtime": "가동 시간",
|
||||
"runtime_hours": "목표 가동 시간 (시간)",
|
||||
"target_value": "목표값",
|
||||
"baseline": "기준값",
|
||||
"target_changes": "목표 변경 횟수",
|
||||
"for_minutes": "지속 시간 (분)",
|
||||
"time_based": "시간 기반",
|
||||
"sensor_based": "센서 기반",
|
||||
"manual": "수동",
|
||||
"one_time": "일회성",
|
||||
"weekdays": "요일",
|
||||
"nth_weekday": "매월 N번째 요일",
|
||||
"day_of_month": "매월 특정 일",
|
||||
"recurrence_on_days": "반복 요일",
|
||||
"recurrence_occurrence": "회차",
|
||||
"recurrence_weekday": "요일",
|
||||
"recurrence_day": "일 (1–31)",
|
||||
"recurrence_last_day": "매월 마지막 날",
|
||||
"recurrence_business_day": "평일만 (주말이면 앞당김)",
|
||||
"recurrence_offset": "오프셋 (일, ±)",
|
||||
"recurrence_offset_help": "날짜를 ±N일 이동합니다. 예: -2 = 이틀 전.",
|
||||
"last_day_month": "매월 마지막 날",
|
||||
"last_business_day_month": "마지막 평일",
|
||||
"ord_1": "첫째",
|
||||
"ord_2": "둘째",
|
||||
"ord_3": "셋째",
|
||||
"ord_4": "넷째",
|
||||
"ord_5": "다섯째",
|
||||
"ord_last": "마지막",
|
||||
"day_word": "일",
|
||||
"interval_value": "주기",
|
||||
"interval_unit": "단위",
|
||||
"unit_days": "일",
|
||||
"unit_weeks": "주",
|
||||
"unit_months": "개월",
|
||||
"unit_years": "년",
|
||||
"due_date": "예정일",
|
||||
"cleaning": "청소",
|
||||
"inspection": "점검",
|
||||
"replacement": "교체",
|
||||
"calibration": "보정",
|
||||
"service": "정비",
|
||||
"reading": "검침",
|
||||
"custom": "사용자 지정",
|
||||
"history": "기록",
|
||||
"cost": "비용",
|
||||
"report_button": "보고서",
|
||||
"report_title": "유지보수 보고서",
|
||||
"report_generated": "생성일",
|
||||
"report_times_done": "수행 횟수",
|
||||
"report_total_cost": "총 비용",
|
||||
"report_every": "{n} {unit}마다",
|
||||
"report_notes": "메모",
|
||||
"report_col_type": "유형",
|
||||
"report_col_status": "상태",
|
||||
"report_col_schedule": "일정",
|
||||
"duration": "소요 시간",
|
||||
"both": "둘 다",
|
||||
"trigger_val": "트리거 값",
|
||||
"complete_title": "완료: ",
|
||||
"checklist": "체크리스트",
|
||||
"checklist_steps_optional": "체크리스트 단계 (선택)",
|
||||
"checklist_placeholder": "필터 청소\n씰 교체\n압력 테스트",
|
||||
"checklist_help": "한 줄에 한 단계씩 입력하세요. 최대 100개.",
|
||||
"err_too_long": "{field}: 너무 깁니다 (최대 {n}자)",
|
||||
"err_too_short": "{field}: 너무 짧습니다 (최소 {n}자)",
|
||||
"err_value_too_high": "{field}: 너무 큽니다 (최대 {n})",
|
||||
"err_value_too_low": "{field}: 너무 작습니다 (최소 {n})",
|
||||
"err_required": "{field}: 필수 항목입니다",
|
||||
"err_wrong_type": "{field}: 잘못된 형식입니다 (예상: {type})",
|
||||
"err_invalid_choice": "{field}: 허용되지 않는 값입니다",
|
||||
"err_invalid_value": "{field}: 유효하지 않은 값입니다",
|
||||
"feat_schedule_time": "시각 지정 일정",
|
||||
"feat_schedule_time_desc": "작업이 자정이 아닌 지정한 시각에 기한 초과로 전환됩니다.",
|
||||
"schedule_time_optional": "기한 시각 (선택, HH:MM)",
|
||||
"schedule_time_help": "비워두면 자정(기본값)입니다. HA 시간대 기준.",
|
||||
"at_time": "시각",
|
||||
"notes_optional": "메모 (선택)",
|
||||
"cost_optional": "비용 (선택)",
|
||||
"duration_minutes": "소요 시간(분, 선택)",
|
||||
"days": "일",
|
||||
"day": "일",
|
||||
"today": "오늘",
|
||||
"d_overdue": "일 초과",
|
||||
"no_tasks": "아직 유지보수 작업이 없습니다. 객체를 만들어 시작하세요.",
|
||||
"no_tasks_short": "작업 없음",
|
||||
"no_history": "아직 기록이 없습니다.",
|
||||
"show_all": "모두 보기",
|
||||
"cost_duration_chart": "비용 및 소요 시간",
|
||||
"installed": "설치일",
|
||||
"confirm_delete_object": "이 객체와 모든 작업을 삭제할까요?",
|
||||
"confirm_delete_task": "이 작업을 삭제할까요?",
|
||||
"min": "최소",
|
||||
"max": "최대",
|
||||
"save": "저장",
|
||||
"saving": "저장 중…",
|
||||
"edit_task": "작업 편집",
|
||||
"new_task": "새 유지보수 작업",
|
||||
"task_name": "작업 이름",
|
||||
"maintenance_type": "유지보수 유형",
|
||||
"priority": "우선순위",
|
||||
"labels": "라벨",
|
||||
"labels_placeholder": "예: 안전, 계절, 세입자용",
|
||||
"labels_help": "필터링과 보고서에 쓰이는 쉼표로 구분된 태그입니다.",
|
||||
"priority_low": "낮음",
|
||||
"priority_normal": "보통",
|
||||
"priority_high": "높음",
|
||||
"schedule_type": "일정 유형",
|
||||
"interval_days": "주기 (일)",
|
||||
"warning_days": "경고 일수",
|
||||
"earliest_completion_days": "조기 완료 허용 (기한 전 일수)",
|
||||
"earliest_completion_days_help": "비워두면 언제든 완료할 수 있습니다. 0 = 기한 당일 이후에만.",
|
||||
"last_performed_optional": "마지막 수행일 (선택)",
|
||||
"interval_anchor": "주기 기준",
|
||||
"anchor_completion": "완료일 기준",
|
||||
"anchor_planned": "예정일 기준 (밀림 없음)",
|
||||
"edit_object": "객체 편집",
|
||||
"name": "이름",
|
||||
"manufacturer_optional": "제조사 (선택)",
|
||||
"model_optional": "모델 (선택)",
|
||||
"serial_number_optional": "일련번호 (선택)",
|
||||
"serial_number_label": "일련번호",
|
||||
"documentation_url_label": "설명서",
|
||||
"object_notes_label": "메모",
|
||||
"sort_due_date": "예정일",
|
||||
"sort_object": "객체 이름",
|
||||
"sort_type": "유형",
|
||||
"sort_task_name": "작업 이름",
|
||||
"all_objects": "모든 객체",
|
||||
"tasks_lower": "작업",
|
||||
"no_tasks_yet": "아직 작업 없음",
|
||||
"add_first_task": "첫 작업 추가",
|
||||
"trigger_configuration": "트리거 설정",
|
||||
"entity_id": "엔티티 ID",
|
||||
"comma_separated": "쉼표로 구분",
|
||||
"entity_logic": "엔티티 논리",
|
||||
"entity_logic_any": "하나라도 트리거되면",
|
||||
"entity_logic_all": "모든 엔티티가 트리거되어야 함",
|
||||
"entities": "엔티티",
|
||||
"attribute_optional": "속성 (선택, 비우면 상태 사용)",
|
||||
"use_entity_state": "엔티티 상태 사용 (속성 없음)",
|
||||
"trigger_above": "초과 시 트리거",
|
||||
"trigger_below": "미만 시 트리거",
|
||||
"for_at_least_minutes": "최소 지속 시간 (분)",
|
||||
"safety_interval_days": "안전 주기 (일, 선택)",
|
||||
"safety_interval": "안전 주기 (선택)",
|
||||
"delta_mode": "델타 모드",
|
||||
"from_state_optional": "변경 전 상태 (선택)",
|
||||
"to_state_optional": "변경 후 상태 (선택)",
|
||||
"documentation_url_optional": "설명서 URL (선택)",
|
||||
"object_notes_optional": "메모 (선택)",
|
||||
"nfc_tag_id_optional": "NFC 태그 ID (선택)",
|
||||
"nfc_tags_empty_help": "Home Assistant에 등록된 NFC 태그가 아직 없습니다.",
|
||||
"nfc_tags_open_settings": "태그 설정 열기",
|
||||
"nfc_tags_refresh": "새로 고침",
|
||||
"environmental_entity_optional": "환경 센서 (선택)",
|
||||
"environmental_entity_helper": "예: sensor.outdoor_temperature — 환경 조건에 따라 주기를 조정합니다",
|
||||
"environmental_attribute_optional": "환경 속성 (선택)",
|
||||
"nfc_tag_id": "NFC 태그 ID",
|
||||
"nfc_linked": "NFC 태그 연결됨",
|
||||
"nfc_link_hint": "클릭하여 NFC 태그 연결",
|
||||
"responsible_user": "담당자",
|
||||
"shared_with": "공유 대상 (순환 담당)",
|
||||
"shared_with_help": "여러 명을 선택해 작업을 공유하세요. 완료할 때마다 담당자가 교대됩니다.",
|
||||
"rotation_strategy": "교대 방식",
|
||||
"rotation_none": "교대 없음",
|
||||
"rotation_round_robin": "순서대로",
|
||||
"rotation_least_completed": "완료 횟수가 적은 사람",
|
||||
"rotation_random": "무작위",
|
||||
"no_user_assigned": "(담당자 없음)",
|
||||
"all_users": "모든 사용자",
|
||||
"my_tasks": "내 작업",
|
||||
"tab_calendar": "캘린더",
|
||||
"cal_no_events": "유지보수 없음",
|
||||
"cal_window_7": "7일",
|
||||
"cal_window_14": "14일",
|
||||
"cal_window_30": "30일",
|
||||
"cal_window_365": "1년",
|
||||
"cal_every_n_days": "{n}일마다",
|
||||
"cal_source_time": "시간 기반",
|
||||
"cal_source_time_adaptive": "시간 기반 (적응형)",
|
||||
"cal_source_sensor": "센서 기반",
|
||||
"cal_predicted": "예측됨",
|
||||
"cal_confidence_high": "높은 신뢰도",
|
||||
"cal_confidence_medium": "중간 신뢰도",
|
||||
"cal_confidence_low": "낮은 신뢰도",
|
||||
"budget_monthly": "월 예산",
|
||||
"budget_yearly": "연 예산",
|
||||
"groups": "그룹",
|
||||
"new_group": "새 그룹",
|
||||
"edit_group": "그룹 편집",
|
||||
"no_groups": "아직 그룹 없음",
|
||||
"delete_group": "그룹 삭제",
|
||||
"delete_group_confirm": "'{name}' 그룹을 삭제할까요?",
|
||||
"group_select_tasks": "작업 선택",
|
||||
"group_name_required": "이름은 필수입니다",
|
||||
"description_optional": "설명 (선택)",
|
||||
"selected": "선택됨",
|
||||
"loading_chart": "차트 데이터 불러오는 중...",
|
||||
"hide_outliers": "이상값 숨기기 (센서 오류)",
|
||||
"was_maintenance_needed": "이 유지보수가 필요했나요?",
|
||||
"feedback_needed": "필요했음",
|
||||
"feedback_not_needed": "불필요했음",
|
||||
"feedback_not_sure": "잘 모름",
|
||||
"suggested_interval": "제안 주기",
|
||||
"apply_suggestion": "적용",
|
||||
"reanalyze": "재분석",
|
||||
"reanalyze_result": "새 분석 결과",
|
||||
"reanalyze_insufficient_data": "권장값을 산출하기에 데이터가 부족합니다",
|
||||
"data_points": "데이터 포인트",
|
||||
"dismiss_suggestion": "무시",
|
||||
"confidence_low": "낮음",
|
||||
"confidence_medium": "중간",
|
||||
"confidence_high": "높음",
|
||||
"recommended": "권장",
|
||||
"seasonal_awareness": "계절 인식",
|
||||
"edit_seasonal_overrides": "계절 계수 편집",
|
||||
"seasonal_overrides_title": "계절 계수 (수동 설정)",
|
||||
"seasonal_overrides_hint": "월별 계수 (0.1–5.0). 비워두면 자동으로 학습됩니다.",
|
||||
"seasonal_override_invalid": "유효하지 않은 값",
|
||||
"seasonal_override_range": "계수는 0.1에서 5.0 사이여야 합니다",
|
||||
"clear_all": "모두 지우기",
|
||||
"seasonal_chart_title": "계절 계수",
|
||||
"seasonal_learned": "학습됨",
|
||||
"seasonal_manual": "수동",
|
||||
"month_jan": "1월",
|
||||
"month_feb": "2월",
|
||||
"month_mar": "3월",
|
||||
"month_apr": "4월",
|
||||
"month_may": "5월",
|
||||
"month_jun": "6월",
|
||||
"month_jul": "7월",
|
||||
"month_aug": "8월",
|
||||
"month_sep": "9월",
|
||||
"month_oct": "10월",
|
||||
"month_nov": "11월",
|
||||
"month_dec": "12월",
|
||||
"sensor_prediction": "센서 예측",
|
||||
"degradation_trend": "추세",
|
||||
"trend_rising": "상승",
|
||||
"trend_falling": "하강",
|
||||
"trend_stable": "안정",
|
||||
"trend_insufficient_data": "데이터 부족",
|
||||
"days_until_threshold": "임계값까지 남은 일수",
|
||||
"threshold_exceeded": "임계값 초과",
|
||||
"environmental_adjustment": "환경 계수",
|
||||
"sensor_prediction_urgency": "센서 예측: 약 {days}일 후 임계값 도달",
|
||||
"day_short": "일",
|
||||
"weibull_reliability_curve": "신뢰도 곡선",
|
||||
"weibull_failure_probability": "고장 확률",
|
||||
"weibull_r_squared": "적합도 R²",
|
||||
"beta_early_failures": "초기 고장",
|
||||
"beta_random_failures": "무작위 고장",
|
||||
"beta_wear_out": "마모 고장",
|
||||
"beta_highly_predictable": "매우 예측 가능",
|
||||
"confidence_interval": "신뢰 구간",
|
||||
"confidence_conservative": "보수적",
|
||||
"confidence_aggressive": "낙관적",
|
||||
"current_interval_marker": "현재 주기",
|
||||
"recommended_marker": "권장",
|
||||
"characteristic_life": "특성 수명",
|
||||
"chart_mini_sparkline": "추세 스파크라인",
|
||||
"chart_history": "비용 및 소요 시간 기록",
|
||||
"chart_seasonal": "계절 계수, 12개월",
|
||||
"chart_weibull": "Weibull 신뢰도 곡선",
|
||||
"chart_sparkline": "센서 트리거 값 차트",
|
||||
"days_progress": "일수 진행률",
|
||||
"qr_code": "QR 코드",
|
||||
"qr_generating": "QR 코드 생성 중…",
|
||||
"qr_error": "QR 코드 생성에 실패했습니다.",
|
||||
"qr_error_no_url": "설정된 HA URL이 없습니다. 설정 → 시스템 → 네트워크에서 외부 또는 내부 URL을 설정해 주세요.",
|
||||
"save_error": "저장에 실패했습니다. 다시 시도해 주세요.",
|
||||
"qr_print": "인쇄",
|
||||
"qr_download": "SVG 다운로드",
|
||||
"qr_action": "스캔 시 동작",
|
||||
"qr_action_view": "유지보수 정보 보기",
|
||||
"qr_action_complete": "유지보수 완료로 표시",
|
||||
"qr_url_mode": "링크 유형",
|
||||
"qr_mode_companion": "Companion 앱",
|
||||
"qr_mode_local": "로컬 (mDNS)",
|
||||
"qr_mode_server": "서버 URL",
|
||||
"overview": "개요",
|
||||
"analysis": "분석",
|
||||
"recent_activities": "최근 활동",
|
||||
"search_notes": "메모 검색",
|
||||
"avg_cost": "평균 비용",
|
||||
"no_advanced_features": "활성화된 고급 기능 없음",
|
||||
"no_advanced_features_hint": "통합구성요소 설정에서 “적응형 일정” 또는 “계절 패턴”을 활성화하면 여기에서 분석 데이터를 볼 수 있습니다.",
|
||||
"analysis_not_enough_data": "아직 분석할 데이터가 충분하지 않습니다.",
|
||||
"analysis_not_enough_data_hint": "Weibull 분석에는 최소 5회의 완료 기록이 필요하며, 계절 패턴은 월별 6개 이상의 데이터 포인트가 쌓이면 표시됩니다.",
|
||||
"analysis_manual_task_hint": "주기가 없는 수동 작업은 분석 데이터를 생성하지 않습니다.",
|
||||
"completions": "회 완료",
|
||||
"current": "현재",
|
||||
"shorter": "더 짧게",
|
||||
"longer": "더 길게",
|
||||
"normal": "보통",
|
||||
"disabled": "비활성화됨",
|
||||
"compound_logic": "복합 논리",
|
||||
"compound": "복합 (여러 조건)",
|
||||
"compound_logic_and": "AND — 모든 조건이 트리거되어야 함",
|
||||
"compound_logic_or": "OR — 하나의 조건만 트리거되면 됨",
|
||||
"compound_help": "여러 센서 조건을 하나의 트리거로 결합합니다.",
|
||||
"compound_no_conditions": "아직 조건이 없습니다 — 최소 하나를 추가하세요.",
|
||||
"compound_add_condition": "조건 추가",
|
||||
"compound_condition": "조건",
|
||||
"compound_remove_condition": "조건 제거",
|
||||
"card_title": "제목",
|
||||
"card_show_header": "통계 헤더 표시",
|
||||
"card_show_actions": "동작 버튼 표시",
|
||||
"card_compact": "컴팩트 모드",
|
||||
"card_max_items": "최대 항목 수 (0 = 전체)",
|
||||
"card_filter_status": "상태로 필터",
|
||||
"card_filter_status_help": "비워두면 모든 상태를 표시합니다.",
|
||||
"card_filter_objects": "객체로 필터",
|
||||
"card_filter_objects_help": "비워두면 모든 객체를 표시합니다.",
|
||||
"card_filter_entities": "엔티티로 필터 (entity_ids)",
|
||||
"card_filter_entities_help": "이 통합구성요소의 sensor / binary_sensor 엔티티를 선택하세요. 비워두면 전체.",
|
||||
"card_loading_objects": "객체 불러오는 중…",
|
||||
"card_load_error": "객체를 불러올 수 없습니다 — WebSocket 연결을 확인하세요.",
|
||||
"card_no_tasks_title": "아직 유지보수 작업이 없습니다",
|
||||
"card_no_tasks_cta": "→ 유지보수 패널에서 만들어 보세요",
|
||||
"no_objects": "아직 객체가 없습니다.",
|
||||
"action_error": "동작에 실패했습니다. 다시 시도해 주세요.",
|
||||
"area_id_optional": "구역 (선택)",
|
||||
"installation_date_optional": "설치일 (선택)",
|
||||
"warranty_expiry_optional": "보증 만료일 (선택)",
|
||||
"warranty": "보증",
|
||||
"warranty_valid_until": "{date}까지 유효",
|
||||
"warranty_expires_in": "{days}일 후 만료",
|
||||
"warranty_expired": "만료됨",
|
||||
"cal_past_windows": "이전 기간",
|
||||
"cal_forward_windows": "이후 기간",
|
||||
"history_edit_title": "기록 항목 편집",
|
||||
"history_edit_timestamp": "타임스탬프",
|
||||
"manufacturer": "제조사",
|
||||
"model": "모델",
|
||||
"area": "구역",
|
||||
"actions": "동작",
|
||||
"view_mode_label": "보기",
|
||||
"view_cards": "카드 보기",
|
||||
"view_table": "표 보기",
|
||||
"objects_table_columns_label": "객체 표 열",
|
||||
"objects_table_columns_hint": "객체 표 보기에 표시할 열을 선택하세요.",
|
||||
"custom_icon_optional": "아이콘 (선택, 예: mdi:wrench)",
|
||||
"task_enabled": "작업 활성화",
|
||||
"skip_reason_prompt": "이 작업을 건너뛸까요?",
|
||||
"reason_optional": "사유 (선택)",
|
||||
"reset_date_prompt": "작업을 수행한 것으로 표시할까요?",
|
||||
"reset_date_optional": "마지막 수행일 (선택, 기본값은 오늘)",
|
||||
"notes_label": "메모",
|
||||
"documentation_label": "문서",
|
||||
"no_nfc_tag": "— 태그 없음 —",
|
||||
"dashboard": "대시보드",
|
||||
"tab_today": "오늘",
|
||||
"palette_placeholder": "객체와 작업 검색…",
|
||||
"palette_no_results": "일치 항목 없음",
|
||||
"palette_hint": "↑↓ 이동 · Enter 열기 · Esc 닫기",
|
||||
"today_all_caught_up": "모두 처리했습니다! 이번 주에 예정된 작업이 없습니다.",
|
||||
"today_overdue": "기한 초과",
|
||||
"today_due_today": "오늘 예정",
|
||||
"today_this_week": "이번 주",
|
||||
"settings": "설정",
|
||||
"settings_features": "고급 기능",
|
||||
"settings_features_desc": "고급 기능을 켜거나 끕니다. 끄면 UI에서 숨겨질 뿐 데이터는 삭제되지 않습니다.",
|
||||
"feat_adaptive": "적응형 일정",
|
||||
"feat_adaptive_desc": "유지보수 기록에서 최적 주기를 학습합니다",
|
||||
"feat_predictions": "센서 예측",
|
||||
"feat_predictions_desc": "센서 열화로부터 트리거 시점을 예측합니다",
|
||||
"feat_seasonal": "계절 조정",
|
||||
"feat_seasonal_desc": "계절 패턴에 따라 주기를 조정합니다",
|
||||
"feat_environmental": "환경 상관관계",
|
||||
"feat_environmental_desc": "온도/습도와 주기의 상관관계를 분석합니다",
|
||||
"feat_budget": "예산 추적",
|
||||
"feat_budget_desc": "월별·연별 유지보수 지출을 추적합니다",
|
||||
"feat_groups": "작업 그룹",
|
||||
"feat_groups_desc": "작업을 논리적 그룹으로 정리합니다",
|
||||
"feat_checklists": "체크리스트",
|
||||
"feat_checklists_desc": "작업 완료를 위한 다단계 절차",
|
||||
"settings_general": "일반",
|
||||
"settings_default_warning": "기본 경고 일수",
|
||||
"settings_panel_enabled": "사이드바 패널",
|
||||
"settings_panel_title": "사이드바 패널 제목",
|
||||
"settings_notifications": "알림",
|
||||
"settings_notify_service": "알림 서비스",
|
||||
"test_notification": "테스트 알림",
|
||||
"send_test": "테스트 보내기",
|
||||
"testing": "보내는 중…",
|
||||
"test_notification_success": "테스트 알림을 보냈습니다",
|
||||
"test_notification_failed": "테스트 알림 전송 실패",
|
||||
"settings_notify_due_soon": "기한 임박 시 알림",
|
||||
"settings_notify_overdue": "기한 초과 시 알림",
|
||||
"settings_notify_triggered": "트리거 시 알림",
|
||||
"settings_interval_hours": "반복 주기 (시간, 0 = 한 번만)",
|
||||
"settings_quiet_hours": "방해 금지 시간",
|
||||
"settings_quiet_start": "시작",
|
||||
"settings_quiet_end": "종료",
|
||||
"settings_max_per_day": "하루 최대 알림 수 (0 = 무제한)",
|
||||
"settings_bundling": "알림 묶기",
|
||||
"settings_bundle_threshold": "묶음 기준 개수",
|
||||
"settings_reminder_leads": "추가 알림 (기한 전 일수)",
|
||||
"settings_reminder_leads_hint": "쉼표로 구분한 사전 알림 시점입니다. 예: 14, 3, 0 — 해당하는 날마다 추가 알림이 한 번 발송됩니다. 비워두면 꺼짐.",
|
||||
"settings_actions": "모바일 동작 버튼",
|
||||
"settings_action_complete": "'완료' 버튼 표시",
|
||||
"settings_action_skip": "'건너뛰기' 버튼 표시",
|
||||
"settings_action_snooze": "'다시 알림' 버튼 표시",
|
||||
"settings_weekly_digest": "주간 요약",
|
||||
"settings_weekly_digest_hint": "예정된 작업이 있으면 월요일 아침에 요약 알림을 한 번 보냅니다.",
|
||||
"settings_warranty_reminder": "보증 만료 알림",
|
||||
"settings_warranty_reminder_days": "만료 전 일수",
|
||||
"settings_warranty_reminder_hint": "객체의 보증 만료가 설정한 일수만큼 남았을 때 한 번 알립니다.",
|
||||
"settings_snooze_hours": "다시 알림 대기 시간 (시간)",
|
||||
"settings_budget": "예산",
|
||||
"settings_currency": "통화",
|
||||
"settings_budget_monthly": "월 예산",
|
||||
"settings_budget_yearly": "연 예산",
|
||||
"settings_budget_alerts": "예산 경고",
|
||||
"settings_budget_threshold": "경고 기준 (%)",
|
||||
"settings_import_export": "가져오기 / 내보내기",
|
||||
"settings_export_json": "JSON 내보내기",
|
||||
"settings_export_yaml": "YAML 내보내기",
|
||||
"settings_export_csv": "CSV 내보내기",
|
||||
"settings_import_csv": "CSV 가져오기",
|
||||
"settings_import_placeholder": "JSON 또는 CSV 내용을 여기에 붙여넣으세요…",
|
||||
"settings_import_btn": "가져오기",
|
||||
"settings_import_success": "객체 {count}개를 성공적으로 가져왔습니다.",
|
||||
"settings_export_success": "내보내기 파일이 다운로드되었습니다.",
|
||||
"settings_saved": "설정이 저장되었습니다.",
|
||||
"settings_include_history": "기록 포함",
|
||||
"settings_export_selection": "선택한 객체로 제한 (선택)",
|
||||
"settings_docs_archive": "문서 아카이브 (파일 포함)",
|
||||
"settings_docs_archive_hint": "JSON/YAML/CSV 내보내기에는 설정만 포함됩니다. 이 ZIP에는 업로드한 파일 내용까지 포함되어 완전한 복원이 가능합니다.",
|
||||
"settings_docs_export_btn": "문서 ZIP 다운로드",
|
||||
"settings_docs_import_btn": "문서 ZIP 복원",
|
||||
"settings_docs_import_success": "복원됨: 파일 {blobs}개, 문서 {docs}개",
|
||||
"sort_alphabetical": "가나다순",
|
||||
"sort_due_soonest": "예정일 빠른 순",
|
||||
"sort_task_count": "작업 수",
|
||||
"sort_area": "구역",
|
||||
"sort_assigned_user": "담당자",
|
||||
"sort_group": "그룹",
|
||||
"groupby_none": "그룹화 없음",
|
||||
"groupby_area": "구역별",
|
||||
"groupby_group": "그룹별",
|
||||
"groupby_user": "사용자별",
|
||||
"filter_label": "필터",
|
||||
"user_label": "사용자",
|
||||
"sort_label": "정렬",
|
||||
"group_by_label": "그룹화",
|
||||
"state_value_help": "HA 상태 값을 사용하세요(보통 소문자, 예: \"on\"/\"off\"). 대소문자는 저장 시 정규화됩니다.",
|
||||
"target_changes_help": "트리거가 발동하기까지 필요한 일치 전환 횟수입니다 (기본값: 1).",
|
||||
"qr_print_title": "QR 코드 인쇄",
|
||||
"qr_print_desc": "잘라서 장비에 붙일 수 있는 QR 코드 인쇄 페이지를 생성합니다.",
|
||||
"qr_print_load": "객체 불러오기",
|
||||
"qr_print_filter": "필터",
|
||||
"qr_print_objects": "객체",
|
||||
"qr_print_actions": "동작",
|
||||
"qr_print_url_mode": "링크 유형",
|
||||
"qr_print_estimate": "예상 QR 코드 수",
|
||||
"qr_print_over_limit": "최대 200개입니다. 필터를 좁혀 주세요",
|
||||
"qr_print_generate": "QR 코드 생성",
|
||||
"qr_print_generating": "생성 중…",
|
||||
"qr_print_ready": "QR 코드 준비 완료",
|
||||
"qr_print_print_button": "인쇄",
|
||||
"qr_print_empty": "생성할 항목 없음",
|
||||
"qr_action_skip": "건너뛰기",
|
||||
"vacation_title": "휴가 모드",
|
||||
"vacation_active": "활성",
|
||||
"vacation_ended": "종료됨",
|
||||
"vacation_desc": "휴가를 계획하세요. 휴가 기간과 버퍼 일수 동안 알림이 일시 중지됩니다. 특정 작업은 예외로 되돌릴 수 있습니다.",
|
||||
"vacation_enable": "휴가 모드 활성화",
|
||||
"vacation_start": "시작",
|
||||
"vacation_end": "종료",
|
||||
"vacation_buffer": "버퍼 (일)",
|
||||
"vacation_exempt_title": "휴가 중에도 알림 받기",
|
||||
"vacation_exempt_desc": "휴가 중에도 알림을 받을 작업을 선택하세요 (예: 중요한 수영장 수질 관리).",
|
||||
"vacation_load_tasks": "작업 불러오기",
|
||||
"vacation_preview_btn": "미리보기 표시",
|
||||
"vacation_preview_affected": "개 작업 영향받음",
|
||||
"vacation_event_due_soon": "기한 임박 예정",
|
||||
"vacation_event_overdue": "기한 초과 예정",
|
||||
"vacation_event_triggered_est": "센서 트리거 가능",
|
||||
"vacation_sensor_based": "(센서 기반)",
|
||||
"vacation_action_notify": "그래도 알림",
|
||||
"vacation_action_unsilence": "다시 음소거",
|
||||
"vacation_marked_complete": "완료로 표시됨",
|
||||
"vacation_marked_skip": "건너뜀",
|
||||
"vacation_end_now": "지금 휴가 종료",
|
||||
"add": "추가",
|
||||
"show_stats": "통계 + 그래프 보기",
|
||||
"hide_stats": "통계 숨기기",
|
||||
"adaptive_no_data": "적응형 분석에 필요한 완료 기록이 아직 부족합니다. 이 작업을 몇 번 더 완료하면 주기 추천과 신뢰도 차트가 열립니다.",
|
||||
"suggestion_applied": "제안 주기가 적용되었습니다",
|
||||
"vacation_mode": "휴가 모드",
|
||||
"vacation_status_active": "현재 활성",
|
||||
"vacation_status_scheduled": "예약됨",
|
||||
"vacation_status_inactive": "비활성",
|
||||
"vacation_end_now_confirm": "휴가를 지금 바로 종료할까요?",
|
||||
"vacation_exempt_count": "예외",
|
||||
"vacation_advanced": "고급…",
|
||||
"vacation_open_panel": "패널에서 열기",
|
||||
"enable": "활성화",
|
||||
"saved": "저장됨",
|
||||
"budget_monthly_set": "월 예산 설정",
|
||||
"budget_yearly_set": "연 예산 설정",
|
||||
"budget_advanced": "통화, 경고…",
|
||||
"budget_open_panel": "패널에서 열기",
|
||||
"groups_empty": "아직 그룹이 없습니다.",
|
||||
"group_new_placeholder": "그룹 추가…",
|
||||
"group_delete_confirm": "\"{name}\" 그룹을 삭제할까요?",
|
||||
"groups_manage_tasks": "작업 배정 관리…",
|
||||
"groups_open_panel": "패널에서 열기",
|
||||
"unassigned": "미배정",
|
||||
"no_area": "구역 없음",
|
||||
"has_overdue": "기한 초과 작업 있음",
|
||||
"object": "객체",
|
||||
"settings_panel_access": "패널 접근 권한",
|
||||
"settings_panel_access_desc": "관리자는 항상 전체 권한을 가집니다. 특정 비관리자에게 생성·편집·삭제를 위임하려면 이 옵션을 켜고 아래에서 선택하세요. 나머지 사용자에게는 완료와 건너뛰기만 표시됩니다.",
|
||||
"settings_operator_write": "선택한 사용자에게 생성·편집·삭제 허용",
|
||||
"settings_operator_write_desc": "끔: 관리자만 내용을 변경할 수 있습니다. 켬: 아래에서 선택한 사용자도 전체 권한을 갖습니다.",
|
||||
"no_non_admin_users": "비관리자 사용자가 없습니다. 설정 → 사람에서 추가하세요.",
|
||||
"owner_label": "소유자",
|
||||
"feat_completion_actions": "완료 동작",
|
||||
"feat_completion_actions_desc": "완료 시 작업별 HA 동작 실행 + 사전 설정값이 있는 빠른 완료 QR.",
|
||||
"on_complete_action_title": "완료 시: HA 동작 실행 (선택)",
|
||||
"on_complete_action_desc": "작업이 완료되면 HA 서비스를 호출합니다 — 예: 기기의 카운터 초기화.",
|
||||
"on_complete_action_service": "서비스",
|
||||
"on_complete_action_target": "대상 엔티티",
|
||||
"on_complete_action_target_hint": "참고: 엔티티 도메인이 서비스와 일치해야 합니다 — 예: 'button.press'는 button.*에서만, 'counter.increment'는 counter.*에서만, 'input_button.press'는 input_button.*에서만 동작합니다. 불일치 시 동작이 조용히 실패합니다 (HA 로그에 'Referenced entities ... missing or not currently available' 기록).",
|
||||
"on_complete_action_data": "데이터 (JSON, 선택)",
|
||||
"on_complete_action_test": "설정 검증",
|
||||
"on_complete_action_test_success": "✓ 설정이 유효합니다 (동작은 작업 완료 시에만 실행됩니다)",
|
||||
"on_complete_action_test_failed": "실패",
|
||||
"quick_complete_defaults_title": "빠른 완료 기본값 (QR 스캔용, 선택)",
|
||||
"quick_complete_defaults_desc": "빠른 완료 QR 스캔에 쓰이는 사전 설정값입니다. 없으면 QR이 완료 대화상자를 엽니다.",
|
||||
"quick_complete_defaults_notes": "메모",
|
||||
"quick_complete_defaults_cost": "비용",
|
||||
"quick_complete_defaults_duration": "소요 시간 (분)",
|
||||
"quick_complete_defaults_feedback_none": "피드백 없음",
|
||||
"quick_complete_defaults_feedback_needed": "필요했음",
|
||||
"quick_complete_defaults_feedback_not_needed": "불필요했음",
|
||||
"quick_complete_success": "빠르게 완료로 표시됨",
|
||||
"show_all_objects": "모든 객체 보기",
|
||||
"show_all_tasks": "필터 해제 — 모든 작업 보기",
|
||||
"filter_to_overdue": "기한 초과 작업만 보기",
|
||||
"filter_to_due_soon": "기한 임박 작업만 보기",
|
||||
"filter_to_triggered": "트리거된 작업만 보기",
|
||||
"open_task": "작업 열기",
|
||||
"show_details": "기록 + 통계 보기",
|
||||
"hide_details": "상세 숨기기",
|
||||
"history_empty": "아직 기록이 없습니다.",
|
||||
"history_edit_button": "항목 편집",
|
||||
"total_cost": "총 비용",
|
||||
"times_performed": "수행 횟수",
|
||||
"older_entries": "이전 항목",
|
||||
"open_in_panel": "유지보수 패널에서 열기",
|
||||
"skip_reason": "건너뛰기 사유 (선택)",
|
||||
"reset_to_date": "마지막 수행일 재설정",
|
||||
"delete_task_confirm": "이 작업과 기록을 삭제할까요?",
|
||||
"delete_object_confirm": "이 객체와 모든 작업을 삭제할까요?",
|
||||
"loading": "불러오는 중…",
|
||||
"archive": "보관",
|
||||
"undo": "실행 취소",
|
||||
"task_archived": "작업이 보관되었습니다",
|
||||
"object_archived": "객체가 보관되었습니다",
|
||||
"unarchive": "보관 해제",
|
||||
"archived": "보관됨",
|
||||
"show_archived": "보관된 항목 보기",
|
||||
"hide_archived": "보관된 항목 숨기기",
|
||||
"confirm_archive_object": "이 객체와 작업을 보관할까요? 기록은 유지되며 나중에 보관 해제할 수 있습니다.",
|
||||
"settings_archive": "보관 및 보존",
|
||||
"settings_archive_desc": "완료된 일회성 작업을 삭제하지 않고 정리합니다. 보관된 항목은 숨겨지고 동작하지 않지만 기록과 비용은 유지됩니다.",
|
||||
"settings_archive_oneoff_days": "완료된 일회성 작업 자동 보관 (일, 0 = 끔)",
|
||||
"settings_delete_archived_oneoff_days": "보관된 일회성 작업 자동 삭제 (일, 0 = 안 함)",
|
||||
"archive_object": "객체 보관",
|
||||
"unarchive_object": "객체 보관 해제",
|
||||
"documents": "문서",
|
||||
"documents_empty": "아직 문서가 없습니다.",
|
||||
"doc_upload": "파일 업로드",
|
||||
"doc_uploading": "업로드 중…",
|
||||
"doc_add_link": "링크 추가",
|
||||
"doc_link_url": "링크 URL (https://…)",
|
||||
"doc_link_title": "제목 (선택)",
|
||||
"doc_open": "열기",
|
||||
"doc_delete_confirm": "\"{name}\"을(를) 삭제할까요?",
|
||||
"doc_too_large": "파일이 너무 큽니다 (최대 25 MB).",
|
||||
"doc_upload_failed": "업로드에 실패했습니다.",
|
||||
"completion_photo_optional": "완료 사진 (선택)",
|
||||
"add_photo": "사진 추가",
|
||||
"uploading": "업로드 중…",
|
||||
"remove": "제거",
|
||||
"doc_deduped": "이미 다른 곳에 저장됨 — 공유되어 추가 공간을 쓰지 않습니다.",
|
||||
"doc_dup_in_object": "이 파일은 이미 이 객체에 첨부되어 있습니다.",
|
||||
"doc_link_invalid": "http/https 링크만 허용됩니다.",
|
||||
"doc_cat_manual": "설명서",
|
||||
"doc_cat_warranty": "보증서",
|
||||
"doc_cat_invoice": "영수증",
|
||||
"doc_cat_spare_parts": "예비 부품",
|
||||
"doc_cat_photo": "사진",
|
||||
"doc_cat_other": "기타",
|
||||
"doc_link_badge": "링크",
|
||||
"doc_storage_title": "문서 저장소",
|
||||
"doc_storage_saved": "중복 제거로 절약됨",
|
||||
"doc_storage_refresh": "새로 고침",
|
||||
"doc_download": "다운로드",
|
||||
"doc_close": "닫기",
|
||||
"doc_camera": "사진 촬영",
|
||||
"doc_drop_hint": "파일을 여기에 놓으세요",
|
||||
"doc_task_none": "이 작업에 연결된 문서가 없습니다.",
|
||||
"doc_link_existing": "문서 연결…",
|
||||
"doc_attach": "연결",
|
||||
"doc_unlink": "연결 해제",
|
||||
"doc_page": "페이지",
|
||||
"chart_range_7d": "7일",
|
||||
"chart_range_30d": "30일",
|
||||
"chart_range_90d": "90일",
|
||||
"chart_range_1y": "1년",
|
||||
"chart_since_service": "마지막 정비 이후",
|
||||
"chart_no_stats": "이 엔티티의 장기 통계가 없습니다 — 유지보수 이벤트 값만 표시합니다",
|
||||
"auto_complete_on_recovery": "센서가 정상으로 돌아오면 자동 완료",
|
||||
"auto_complete_on_recovery_help": "트리거가 스스로 해제되면 완료를 기록합니다 (마지막 수행일 갱신) — 예: 소금 보충, 필터 교체.",
|
||||
"doc_search": "문서 검색…",
|
||||
"doc_search_none": "일치하는 문서 없음",
|
||||
"link_device_optional": "기존 기기와 연결 (선택)",
|
||||
"parent_object_optional": "상위 객체 (선택)",
|
||||
"parent_none": "(상위 없음)",
|
||||
"paused": "일시 중지됨",
|
||||
"pause_object": "일시 중지",
|
||||
"resume_object": "재개",
|
||||
"pause_until_prompt": "이 객체의 일정을 동결합니다 — 재개할 때까지 어떤 작업도 기한이 되지 않고 알림도 오지 않습니다. 자동 재개 날짜를 선택적으로 설정할 수 있습니다.",
|
||||
"pause_until_label": "재개일 (선택)",
|
||||
"object_paused": "객체가 일시 중지되었습니다",
|
||||
"object_resumed": "객체가 재개되었습니다 — 일정이 다시 시작됩니다",
|
||||
"object_paused_badge": "일시 중지됨",
|
||||
"paused_until_label": "재개일",
|
||||
"replace_object": "교체…",
|
||||
"replace_object_prompt": "이 객체를 퇴역시키고 후속 객체를 만듭니다. 기록과 비용은 기존 객체에 보관된 채 남고, 작업과 문서는 새 객체로 이어지며 카운터는 새로 시작됩니다.",
|
||||
"replace_name_label": "후속 객체 이름",
|
||||
"object_replaced": "객체가 교체되었습니다 — 후속 객체 생성됨",
|
||||
"reading_unit_label": "검침 단위 (예: kWh, m³)",
|
||||
"reading_unit_help": "이 작업을 완료할 때 기록 값 옆에 표시됩니다.",
|
||||
"reading_value_label": "검침 값",
|
||||
"reading_label": "검침",
|
||||
"settings_templates_label": "템플릿 갤러리",
|
||||
"settings_templates_hint": "필요 없는 템플릿의 체크를 해제하세요 — \"템플릿에서\" 선택 목록(패널 및 설정 흐름)에서 사라집니다. 다른 변화는 없으며 언제든 다시 활성화할 수 있습니다.",
|
||||
"worksheet": "작업 시트",
|
||||
"worksheet_scan_view": "스캔하여 작업 열기",
|
||||
"worksheet_scan_complete": "스캔하여 완료",
|
||||
"worksheet_manual_excerpt": "설명서 발췌",
|
||||
"worksheet_pages": "페이지",
|
||||
"worksheet_printed": "인쇄됨",
|
||||
"worksheet_never": "없음",
|
||||
"card_all_caught_up": "모두 처리했습니다 — 주의가 필요한 항목이 없습니다",
|
||||
"postpone": "연기",
|
||||
"postpone_date_prompt": "이번 회차를 언제로 연기할까요?",
|
||||
"postpone_date_label": "새 예정일",
|
||||
"postponed": "연기됨",
|
||||
"postponed_to": "연기됨:",
|
||||
"season_window_label": "계절 기간 (월)",
|
||||
"season_window_hint": "선택한 달에만 기한이 됩니다. 비수기 날짜는 다음 활성 달로 넘어갑니다. 선택 없음 = 연중.",
|
||||
"series_end_label": "종료",
|
||||
"series_end_never": "없음 (무기한 반복)",
|
||||
"series_end_after_count": "지정 횟수 후",
|
||||
"series_end_until": "특정 날짜에",
|
||||
"series_end_count_label": "횟수",
|
||||
"series_end_until_label": "종료일",
|
||||
"parts_section": "부품 및 소모품",
|
||||
"part_add": "부품 추가",
|
||||
"part_name": "이름",
|
||||
"part_vendor": "제조사",
|
||||
"part_storage_location": "보관 위치",
|
||||
"part_product_url": "제품 URL",
|
||||
"part_unit": "단위",
|
||||
"part_cost": "단가",
|
||||
"part_stock": "재고",
|
||||
"part_reorder_threshold": "재주문 기준",
|
||||
"part_restock_quantity": "보충 수량",
|
||||
"part_auto_buy": "재고 부족 시 구매 작업 자동 생성",
|
||||
"part_restock": "재고 조정",
|
||||
"restock_quantity_label": "구매 수량",
|
||||
"consumes_parts_label": "사용하는 부품",
|
||||
"parts_load_failed": "이 객체의 부품을 불러올 수 없습니다 — 부품 사용 옵션을 지금은 쓸 수 없습니다.",
|
||||
"adopt_problem_button": "문제 센서 가져오기",
|
||||
"adopt_problem_title": "문제 센서 가져오기",
|
||||
"adopt_problem_hint": "HA 문제 센서(프린터 오류, 필터 경고, 배터리 부족)를 유지보수 작업으로 전환합니다. 문제가 활성인 동안 트리거되고 해결되면 자동으로 해제됩니다.",
|
||||
"adopt_problem_none": "아직 추적되지 않은 문제 센서를 찾지 못했습니다.",
|
||||
"adopt_problem_active": "활성",
|
||||
"adopt_problem_ok": "정상",
|
||||
"adopt_problem_new_object": "(신규)",
|
||||
"adopt_problem_adopt": "선택 항목 가져오기",
|
||||
"adopt_problem_done": "문제 센서 {tasks}개를 가져왔습니다",
|
||||
"views_label": "보기",
|
||||
"views_none": "— 보기 없음 —",
|
||||
"views_manage": "보기 저장 / 관리",
|
||||
"views_dialog_title": "저장된 보기",
|
||||
"views_dialog_hint": "현재 필터를 이름 있는 보기로 저장하면 모두가 다시 사용할 수 있습니다.",
|
||||
"views_name_placeholder": "보기 이름",
|
||||
"views_save_current": "현재 필터 저장",
|
||||
"views_none_yet": "저장된 보기가 아직 없습니다.",
|
||||
"close": "닫기",
|
||||
"trigger_hint_now": "센서의 현재 값은 {value}입니다.",
|
||||
"trigger_hint_above": "{target}을(를) 초과하면 작업이 트리거됩니다.",
|
||||
"trigger_hint_below": "{target} 미만으로 떨어지면 트리거됩니다.",
|
||||
"trigger_hint_counter_delta": "현재 값({value})부터 계수합니다: {due} 도달 시 기한 (+{target}), 완료할 때마다 계수가 다시 시작됩니다.",
|
||||
"trigger_hint_counter_delta_edit": "마지막 완료 이후 사용량을 계수합니다: +{target} 후 기한이 되며, 완료할 때마다 계수가 다시 시작됩니다.",
|
||||
"trigger_hint_counter_abs": "센서가 {target}에 도달하면 작업 기한이 됩니다.",
|
||||
"trigger_hint_runtime": "누적 가동 {hours}시간 후 작업 기한이 됩니다. 카운터는 완료할 때마다 다시 시작됩니다.",
|
||||
"trigger_hint_state_change": "상태가 {count}회 변경되면 작업 기한이 됩니다.",
|
||||
"trigger_hint_state_change_to": "“{state}”(으)로 {count}회 변경되면 작업 기한이 됩니다.",
|
||||
"trigger_hint_state_now": "현재 상태: {value}.",
|
||||
"adopt_problem_part": "사용 부품: {name}",
|
||||
"label_filter": "라벨",
|
||||
"all_labels": "모든 라벨",
|
||||
"settings_notify_scope": "특정 보기만 알림",
|
||||
"settings_notify_scope_all": "모든 작업",
|
||||
"settings_notify_scope_hint": "선택한 저장된 보기의 라벨/사용자 필터와 일치하는 작업만 알림을 보냅니다. 보기의 상태·정렬·그룹화는 여기서 무시됩니다.",
|
||||
"card_saved_view": "저장된 보기",
|
||||
"card_saved_view_none": "없음",
|
||||
"card_saved_view_help": "위 필터에 더해 보기의 상태·사용자·라벨 필터를 적용합니다. 보기의 정렬과 그룹화는 패널 표시 설정이며 카드에는 적용되지 않습니다.",
|
||||
"doc_part_none": "이 부품에 연결된 문서가 없습니다.",
|
||||
"settings_templates_toggle_group": "이 그룹의 모든 템플릿을 켜거나 끄기",
|
||||
"setups_button": "추천 설정",
|
||||
"setups_title": "추천 설정 (베타)",
|
||||
"setups_hint": "소모품 센서로 유지보수 작업을 구동할 수 있는 지원 통합구성요소의 기기입니다. 가져오면 객체가 생성되고 각 작업이 센서에 연결됩니다 — 소모품이 부족해지면 트리거되고 교체 후 자동으로 해제됩니다.",
|
||||
"setups_none": "연결되지 않은 소모품 센서를 가진 지원 기기를 찾지 못했습니다.",
|
||||
"setups_adopt": "선택 항목 설정",
|
||||
"setups_done": "센서 연결 작업 {tasks}개가 생성되었습니다.",
|
||||
"complete_parts_used": "이번에 사용한 부품",
|
||||
"part_delete_confirm": "'{name}' 부품을 삭제할까요? 재고 추적, 작업 연결, 진행 중인 구매 알림이 모두 제거됩니다.",
|
||||
"baseline_start_value": "시작 값 (선택)",
|
||||
"baseline_start_help": "이 값부터 계수를 시작합니다. 비워두면 현재 값부터 계수합니다. 마지막 정비 시점의 값을 입력하면 그 이후의 사용량이 바로 반영됩니다.",
|
||||
"setups_baseline_hint": "마지막 정비 시점의 값 (선택)",
|
||||
"baseline_start_help_edit": "비워두면 기존 계수를 유지합니다. 값을 입력하면 계수 기준이 다시 설정됩니다 (예: 마지막 정비 시점의 값).",
|
||||
"baseline_current_effective": "현재 적용 중인 시작 값: {value}",
|
||||
"runtime_on_states": "활성 상태 (쉼표로 구분)",
|
||||
"runtime_on_states_help": "가동 중으로 계산할 상태입니다 — 기본값: on. 예: mowing, cleaning, printing. 속성을 선택한 경우 해당 속성 값과 비교합니다.",
|
||||
"setups_target_new": "새로 만들기: {name}",
|
||||
"schedule_preview_title": "다음 예정일",
|
||||
"schedule_preview_ontime": "제때 완료한다고 가정한 일정입니다.",
|
||||
"schedule_preview_ends": "(시리즈 종료)",
|
||||
"adopt_problem_responsible": "가져온 모든 작업의 담당자 (선택)",
|
||||
"adopt_problem_configure": "구성",
|
||||
"history_auto": "자동",
|
||||
"battery_fleet_title": "배터리 플릿",
|
||||
"battery_fleet_none_low": "모든 배터리 정상 — 교체할 것이 없습니다.",
|
||||
"battery_fleet_buy_now": "지금 구매",
|
||||
"battery_fleet_soon": "곧 필요",
|
||||
"battery_fleet_soon_hint": "마지막 교체일로부터 예측한 값입니다 — 미리 주문해 두세요.",
|
||||
"battery_fleet_mark_all": "모두 교체됨으로 표시",
|
||||
"battery_fleet_mark_one": "이 배터리를 교체됨으로 표시",
|
||||
"battery_fleet_offline": "오프라인",
|
||||
"battery_fleet_trigger_lost": "이 작업의 센서 트리거가 사라졌습니다 — 트리거도 자동 완료도 되지 않습니다.",
|
||||
"battery_fleet_repair": "복구",
|
||||
"battery_fleet_exclude": "플릿에서 제외",
|
||||
"battery_fleet_excluded": "제외됨",
|
||||
"battery_fleet_include": "다시 추적",
|
||||
"battery_fleet_total": "배터리 {n}개 추적 중",
|
||||
"battery_fleet_setup_button": "배터리 플릿",
|
||||
"battery_fleet_setup_done": "배터리 플릿이 설정되었습니다 — 하나의 작업이 모든 배터리를 추적합니다.",
|
||||
"update_banner": "서버에 Maintenance Supporter의 새 버전이 있습니다 — 패널을 업데이트하려면 새로 고침하세요.",
|
||||
"update_reload": "새로 고침"
|
||||
}
|
||||
@@ -0,0 +1,811 @@
|
||||
{
|
||||
"maintenance": "Manutenção",
|
||||
"objects": "Objetos",
|
||||
"tasks": "Tarefas",
|
||||
"overdue": "Atrasada",
|
||||
"due_soon": "Vence em breve",
|
||||
"triggered": "Acionada",
|
||||
"trigger_replaced": "Gatilho substituído",
|
||||
"ok": "OK",
|
||||
"all": "Todas",
|
||||
"new_object": "+ Novo objeto",
|
||||
"templates_from": "A partir de modelo",
|
||||
"templates_title": "Comece com um modelo",
|
||||
"templates_task_count": "{n} tarefas",
|
||||
"template_created": "Criado a partir do modelo",
|
||||
"onboard_hint": "Adicione seu primeiro objeto para começar a acompanhar a manutenção.",
|
||||
"edit": "Editar",
|
||||
"duplicate": "Duplicar",
|
||||
"task_duplicated": "Tarefa duplicada",
|
||||
"object_duplicated": "Objeto duplicado",
|
||||
"delete": "Excluir",
|
||||
"add_task": "+ Adicionar tarefa",
|
||||
"complete": "Concluir",
|
||||
"completed": "Concluída",
|
||||
"skip": "Pular",
|
||||
"skipped": "Pulada",
|
||||
"missed": "Perdida",
|
||||
"reset": "Redefinir",
|
||||
"snooze": "Soneca",
|
||||
"snoozed": "Em soneca",
|
||||
"cancel": "Cancelar",
|
||||
"bulk_select": "Selecionar",
|
||||
"bulk_select_all": "Selecionar tudo",
|
||||
"bulk_n_selected": "{n} selecionadas",
|
||||
"bulk_completed": "{n} tarefas concluídas",
|
||||
"bulk_archived": "{n} tarefas arquivadas",
|
||||
"completing": "Concluindo…",
|
||||
"interval": "Intervalo",
|
||||
"warning": "Aviso",
|
||||
"last_performed": "Última execução",
|
||||
"next_due": "Próximo vencimento",
|
||||
"days_until_due": "Dias até o vencimento",
|
||||
"avg_duration": "Duração média",
|
||||
"trigger": "Gatilho",
|
||||
"trigger_type": "Tipo de gatilho",
|
||||
"threshold_above": "Limite superior",
|
||||
"threshold_below": "Limite inferior",
|
||||
"threshold": "Limite",
|
||||
"counter": "Contador",
|
||||
"state_change": "Mudança de estado",
|
||||
"runtime": "Tempo de operação",
|
||||
"runtime_hours": "Tempo de operação alvo (horas)",
|
||||
"target_value": "Valor alvo",
|
||||
"baseline": "Linha de base",
|
||||
"target_changes": "Mudanças alvo",
|
||||
"for_minutes": "Durante (minutos)",
|
||||
"time_based": "Baseado em tempo",
|
||||
"sensor_based": "Baseado em sensor",
|
||||
"manual": "Manual",
|
||||
"one_time": "Única vez",
|
||||
"weekdays": "Dias da semana",
|
||||
"nth_weekday": "Enésimo dia da semana do mês",
|
||||
"day_of_month": "Dia do mês",
|
||||
"recurrence_on_days": "Repetir em",
|
||||
"recurrence_occurrence": "Ocorrência",
|
||||
"recurrence_weekday": "Dia da semana",
|
||||
"recurrence_day": "Dia do mês (1–31)",
|
||||
"recurrence_last_day": "Último dia do mês",
|
||||
"recurrence_business_day": "Somente dias úteis (antecipar do fim de semana)",
|
||||
"recurrence_offset": "Deslocamento (dias, ±)",
|
||||
"recurrence_offset_help": "Desloque a data em ±N dias, ex.: -2 = dois dias antes.",
|
||||
"last_day_month": "Último dia do mês",
|
||||
"last_business_day_month": "Último dia útil",
|
||||
"ord_1": "1º",
|
||||
"ord_2": "2º",
|
||||
"ord_3": "3º",
|
||||
"ord_4": "4º",
|
||||
"ord_5": "5º",
|
||||
"ord_last": "Último",
|
||||
"day_word": "Dia",
|
||||
"interval_value": "Intervalo",
|
||||
"interval_unit": "Unidade",
|
||||
"unit_days": "Dias",
|
||||
"unit_weeks": "Semanas",
|
||||
"unit_months": "Meses",
|
||||
"unit_years": "Anos",
|
||||
"due_date": "Data de vencimento",
|
||||
"cleaning": "Limpeza",
|
||||
"inspection": "Inspeção",
|
||||
"replacement": "Substituição",
|
||||
"calibration": "Calibração",
|
||||
"service": "Revisão",
|
||||
"reading": "Leitura",
|
||||
"custom": "Personalizado",
|
||||
"history": "Histórico",
|
||||
"cost": "Custo",
|
||||
"report_button": "Relatório",
|
||||
"report_title": "Relatório de manutenção",
|
||||
"report_generated": "Gerado em",
|
||||
"report_times_done": "Concluídas",
|
||||
"report_total_cost": "Custo total",
|
||||
"report_every": "a cada {n} {unit}",
|
||||
"report_notes": "Observações",
|
||||
"report_col_type": "Tipo",
|
||||
"report_col_status": "Status",
|
||||
"report_col_schedule": "Agendamento",
|
||||
"duration": "Duração",
|
||||
"both": "Ambos",
|
||||
"trigger_val": "Valor do gatilho",
|
||||
"complete_title": "Concluir: ",
|
||||
"checklist": "Checklist",
|
||||
"checklist_steps_optional": "Etapas do checklist (opcional)",
|
||||
"checklist_placeholder": "Limpar o filtro\nTrocar a vedação\nTestar a pressão",
|
||||
"checklist_help": "Uma etapa por linha. Máx. 100 itens.",
|
||||
"err_too_long": "{field}: muito longo (máx. {n} caracteres)",
|
||||
"err_too_short": "{field}: muito curto (mín. {n} caracteres)",
|
||||
"err_value_too_high": "{field}: muito grande (máx. {n})",
|
||||
"err_value_too_low": "{field}: muito pequeno (mín. {n})",
|
||||
"err_required": "{field}: obrigatório",
|
||||
"err_wrong_type": "{field}: tipo incorreto (esperado: {type})",
|
||||
"err_invalid_choice": "{field}: valor não permitido",
|
||||
"err_invalid_value": "{field}: valor inválido",
|
||||
"feat_schedule_time": "Agendamento por horário",
|
||||
"feat_schedule_time_desc": "As tarefas ficam atrasadas em um horário específico do dia, em vez de à meia-noite.",
|
||||
"schedule_time_optional": "Vence às (opcional, HH:MM)",
|
||||
"schedule_time_help": "Vazio = meia-noite (padrão). Fuso horário do HA.",
|
||||
"at_time": "às",
|
||||
"notes_optional": "Observações (opcional)",
|
||||
"cost_optional": "Custo (opcional)",
|
||||
"duration_minutes": "Duração em minutos (opcional)",
|
||||
"days": "dias",
|
||||
"day": "dia",
|
||||
"today": "Hoje",
|
||||
"d_overdue": "d de atraso",
|
||||
"no_tasks": "Ainda não há tarefas de manutenção. Crie um objeto para começar.",
|
||||
"no_tasks_short": "Sem tarefas",
|
||||
"no_history": "Ainda não há entradas no histórico.",
|
||||
"show_all": "Mostrar tudo",
|
||||
"cost_duration_chart": "Custo e duração",
|
||||
"installed": "Instalado",
|
||||
"confirm_delete_object": "Excluir este objeto e todas as suas tarefas?",
|
||||
"confirm_delete_task": "Excluir esta tarefa?",
|
||||
"min": "Mín",
|
||||
"max": "Máx",
|
||||
"save": "Salvar",
|
||||
"saving": "Salvando…",
|
||||
"edit_task": "Editar tarefa",
|
||||
"new_task": "Nova tarefa de manutenção",
|
||||
"task_name": "Nome da tarefa",
|
||||
"maintenance_type": "Tipo de manutenção",
|
||||
"priority": "Prioridade",
|
||||
"labels": "Etiquetas",
|
||||
"labels_placeholder": "ex.: segurança, sazonal, visível ao inquilino",
|
||||
"labels_help": "Tags separadas por vírgula para filtragem e relatórios.",
|
||||
"priority_low": "Baixa",
|
||||
"priority_normal": "Normal",
|
||||
"priority_high": "Alta",
|
||||
"schedule_type": "Tipo de agendamento",
|
||||
"interval_days": "Intervalo (dias)",
|
||||
"warning_days": "Dias de aviso",
|
||||
"earliest_completion_days": "Conclusão antecipada (dias antes do vencimento)",
|
||||
"earliest_completion_days_help": "Deixe vazio para permitir concluir a qualquer momento. 0 = somente no dia do vencimento ou depois.",
|
||||
"last_performed_optional": "Última execução (opcional)",
|
||||
"interval_anchor": "Âncora do intervalo",
|
||||
"anchor_completion": "A partir da data de conclusão",
|
||||
"anchor_planned": "A partir da data planejada (sem deriva)",
|
||||
"edit_object": "Editar objeto",
|
||||
"name": "Nome",
|
||||
"manufacturer_optional": "Fabricante (opcional)",
|
||||
"model_optional": "Modelo (opcional)",
|
||||
"serial_number_optional": "Número de série (opcional)",
|
||||
"serial_number_label": "N/S",
|
||||
"documentation_url_label": "Manual",
|
||||
"object_notes_label": "Observações",
|
||||
"sort_due_date": "Data de vencimento",
|
||||
"sort_object": "Nome do objeto",
|
||||
"sort_type": "Tipo",
|
||||
"sort_task_name": "Nome da tarefa",
|
||||
"all_objects": "Todos os objetos",
|
||||
"tasks_lower": "tarefas",
|
||||
"no_tasks_yet": "Ainda sem tarefas",
|
||||
"add_first_task": "Adicionar a primeira tarefa",
|
||||
"trigger_configuration": "Configuração do gatilho",
|
||||
"entity_id": "ID da entidade",
|
||||
"comma_separated": "separado por vírgulas",
|
||||
"entity_logic": "Lógica das entidades",
|
||||
"entity_logic_any": "Qualquer entidade aciona",
|
||||
"entity_logic_all": "Todas as entidades devem acionar",
|
||||
"entities": "entidades",
|
||||
"attribute_optional": "Atributo (opcional, vazio = estado)",
|
||||
"use_entity_state": "Usar o estado da entidade (sem atributo)",
|
||||
"trigger_above": "Acionar acima de",
|
||||
"trigger_below": "Acionar abaixo de",
|
||||
"for_at_least_minutes": "Por pelo menos (minutos)",
|
||||
"safety_interval_days": "Intervalo de segurança (dias, opcional)",
|
||||
"safety_interval": "Intervalo de segurança (opcional)",
|
||||
"delta_mode": "Modo delta",
|
||||
"from_state_optional": "Do estado (opcional)",
|
||||
"to_state_optional": "Para o estado (opcional)",
|
||||
"documentation_url_optional": "URL da documentação (opcional)",
|
||||
"object_notes_optional": "Observações (opcional)",
|
||||
"nfc_tag_id_optional": "ID da tag NFC (opcional)",
|
||||
"nfc_tags_empty_help": "Ainda não há tags NFC registradas no Home Assistant.",
|
||||
"nfc_tags_open_settings": "Abrir configurações de tags",
|
||||
"nfc_tags_refresh": "Atualizar",
|
||||
"environmental_entity_optional": "Sensor ambiental (opcional)",
|
||||
"environmental_entity_helper": "ex.: sensor.outdoor_temperature — ajusta o intervalo com base nas condições ambientais",
|
||||
"environmental_attribute_optional": "Atributo ambiental (opcional)",
|
||||
"nfc_tag_id": "ID da tag NFC",
|
||||
"nfc_linked": "Tag NFC vinculada",
|
||||
"nfc_link_hint": "Clique para vincular uma tag NFC",
|
||||
"responsible_user": "Usuário responsável",
|
||||
"shared_with": "Compartilhada com (rodízio)",
|
||||
"shared_with_help": "Escolha várias pessoas para compartilhar esta tarefa; o responsável muda em rodízio a cada conclusão.",
|
||||
"rotation_strategy": "Rodízio",
|
||||
"rotation_none": "Sem rodízio",
|
||||
"rotation_round_robin": "Revezamento",
|
||||
"rotation_least_completed": "Quem concluiu menos",
|
||||
"rotation_random": "Aleatório",
|
||||
"no_user_assigned": "(Nenhum usuário atribuído)",
|
||||
"all_users": "Todos os usuários",
|
||||
"my_tasks": "Minhas tarefas",
|
||||
"tab_calendar": "Calendário",
|
||||
"cal_no_events": "Sem manutenção",
|
||||
"cal_window_7": "7 dias",
|
||||
"cal_window_14": "14 dias",
|
||||
"cal_window_30": "30 dias",
|
||||
"cal_window_365": "1 ano",
|
||||
"cal_every_n_days": "a cada {n} dias",
|
||||
"cal_source_time": "Baseado em tempo",
|
||||
"cal_source_time_adaptive": "Baseado em tempo (adaptativo)",
|
||||
"cal_source_sensor": "Baseado em sensor",
|
||||
"cal_predicted": "previsto",
|
||||
"cal_confidence_high": "confiança alta",
|
||||
"cal_confidence_medium": "confiança média",
|
||||
"cal_confidence_low": "confiança baixa",
|
||||
"budget_monthly": "Orçamento mensal",
|
||||
"budget_yearly": "Orçamento anual",
|
||||
"groups": "Grupos",
|
||||
"new_group": "Novo grupo",
|
||||
"edit_group": "Editar grupo",
|
||||
"no_groups": "Ainda sem grupos",
|
||||
"delete_group": "Excluir grupo",
|
||||
"delete_group_confirm": "Excluir o grupo '{name}'?",
|
||||
"group_select_tasks": "Selecionar tarefas",
|
||||
"group_name_required": "O nome é obrigatório",
|
||||
"description_optional": "Descrição (opcional)",
|
||||
"selected": "Selecionadas",
|
||||
"loading_chart": "Carregando dados do gráfico...",
|
||||
"hide_outliers": "Ocultar valores atípicos (falhas do sensor)",
|
||||
"was_maintenance_needed": "Esta manutenção era necessária?",
|
||||
"feedback_needed": "Necessária",
|
||||
"feedback_not_needed": "Desnecessária",
|
||||
"feedback_not_sure": "Não sei",
|
||||
"suggested_interval": "Intervalo sugerido",
|
||||
"apply_suggestion": "Aplicar",
|
||||
"reanalyze": "Reanalisar",
|
||||
"reanalyze_result": "Nova análise",
|
||||
"reanalyze_insufficient_data": "Dados insuficientes para gerar uma recomendação",
|
||||
"data_points": "pontos de dados",
|
||||
"dismiss_suggestion": "Dispensar",
|
||||
"confidence_low": "Baixa",
|
||||
"confidence_medium": "Média",
|
||||
"confidence_high": "Alta",
|
||||
"recommended": "recomendado",
|
||||
"seasonal_awareness": "Sazonalidade",
|
||||
"edit_seasonal_overrides": "Editar fatores sazonais",
|
||||
"seasonal_overrides_title": "Fatores sazonais (manual)",
|
||||
"seasonal_overrides_hint": "Fator por mês (0,1–5,0). Vazio = aprendido automaticamente.",
|
||||
"seasonal_override_invalid": "Valor inválido",
|
||||
"seasonal_override_range": "O fator deve estar entre 0,1 e 5,0",
|
||||
"clear_all": "Limpar tudo",
|
||||
"seasonal_chart_title": "Fatores sazonais",
|
||||
"seasonal_learned": "Aprendido",
|
||||
"seasonal_manual": "Manual",
|
||||
"month_jan": "Jan",
|
||||
"month_feb": "Fev",
|
||||
"month_mar": "Mar",
|
||||
"month_apr": "Abr",
|
||||
"month_may": "Mai",
|
||||
"month_jun": "Jun",
|
||||
"month_jul": "Jul",
|
||||
"month_aug": "Ago",
|
||||
"month_sep": "Set",
|
||||
"month_oct": "Out",
|
||||
"month_nov": "Nov",
|
||||
"month_dec": "Dez",
|
||||
"sensor_prediction": "Previsão do sensor",
|
||||
"degradation_trend": "Tendência",
|
||||
"trend_rising": "Subindo",
|
||||
"trend_falling": "Caindo",
|
||||
"trend_stable": "Estável",
|
||||
"trend_insufficient_data": "Dados insuficientes",
|
||||
"days_until_threshold": "Dias até o limite",
|
||||
"threshold_exceeded": "Limite excedido",
|
||||
"environmental_adjustment": "Fator ambiental",
|
||||
"sensor_prediction_urgency": "O sensor prevê atingir o limite em ~{days} dias",
|
||||
"day_short": "dia",
|
||||
"weibull_reliability_curve": "Curva de confiabilidade",
|
||||
"weibull_failure_probability": "Probabilidade de falha",
|
||||
"weibull_r_squared": "R² do ajuste",
|
||||
"beta_early_failures": "Falhas precoces",
|
||||
"beta_random_failures": "Falhas aleatórias",
|
||||
"beta_wear_out": "Desgaste",
|
||||
"beta_highly_predictable": "Altamente previsível",
|
||||
"confidence_interval": "Intervalo de confiança",
|
||||
"confidence_conservative": "Conservador",
|
||||
"confidence_aggressive": "Otimista",
|
||||
"current_interval_marker": "Intervalo atual",
|
||||
"recommended_marker": "Recomendado",
|
||||
"characteristic_life": "Vida característica",
|
||||
"chart_mini_sparkline": "Minigráfico de tendência",
|
||||
"chart_history": "Histórico de custo e duração",
|
||||
"chart_seasonal": "Fatores sazonais, 12 meses",
|
||||
"chart_weibull": "Curva de confiabilidade Weibull",
|
||||
"chart_sparkline": "Gráfico do valor do gatilho do sensor",
|
||||
"days_progress": "Progresso em dias",
|
||||
"qr_code": "Código QR",
|
||||
"qr_generating": "Gerando código QR…",
|
||||
"qr_error": "Falha ao gerar o código QR.",
|
||||
"qr_error_no_url": "Nenhuma URL do HA configurada. Defina uma URL externa ou interna em Configurações → Sistema → Rede.",
|
||||
"save_error": "Falha ao salvar. Tente novamente.",
|
||||
"qr_print": "Imprimir",
|
||||
"qr_download": "Baixar SVG",
|
||||
"qr_action": "Ação ao escanear",
|
||||
"qr_action_view": "Ver informações de manutenção",
|
||||
"qr_action_complete": "Marcar a manutenção como concluída",
|
||||
"qr_url_mode": "Tipo de link",
|
||||
"qr_mode_companion": "Companion App",
|
||||
"qr_mode_local": "Local (mDNS)",
|
||||
"qr_mode_server": "URL do servidor",
|
||||
"overview": "Visão geral",
|
||||
"analysis": "Análise",
|
||||
"recent_activities": "Atividades recentes",
|
||||
"search_notes": "Pesquisar observações",
|
||||
"avg_cost": "Custo médio",
|
||||
"no_advanced_features": "Nenhum recurso avançado ativado",
|
||||
"no_advanced_features_hint": "Ative “Intervalos adaptativos” ou “Padrões sazonais” nas configurações da integração para ver dados de análise aqui.",
|
||||
"analysis_not_enough_data": "Ainda não há dados suficientes para análise.",
|
||||
"analysis_not_enough_data_hint": "A análise de Weibull exige pelo menos 5 manutenções concluídas; padrões sazonais aparecem após 6+ pontos de dados por mês.",
|
||||
"analysis_manual_task_hint": "Tarefas manuais sem intervalo não geram dados de análise.",
|
||||
"completions": "conclusões",
|
||||
"current": "Atual",
|
||||
"shorter": "Mais curto",
|
||||
"longer": "Mais longo",
|
||||
"normal": "Normal",
|
||||
"disabled": "Desativado",
|
||||
"compound_logic": "Lógica composta",
|
||||
"compound": "Composto (várias condições)",
|
||||
"compound_logic_and": "E — todas as condições devem acionar",
|
||||
"compound_logic_or": "OU — qualquer condição aciona",
|
||||
"compound_help": "Combine várias condições de sensor em um único gatilho.",
|
||||
"compound_no_conditions": "Ainda sem condições — adicione pelo menos uma.",
|
||||
"compound_add_condition": "Adicionar condição",
|
||||
"compound_condition": "Condição",
|
||||
"compound_remove_condition": "Remover condição",
|
||||
"card_title": "Título",
|
||||
"card_show_header": "Mostrar cabeçalho com estatísticas",
|
||||
"card_show_actions": "Mostrar botões de ação",
|
||||
"card_compact": "Modo compacto",
|
||||
"card_max_items": "Máx. de itens (0 = todos)",
|
||||
"card_filter_status": "Filtrar por status",
|
||||
"card_filter_status_help": "Vazio = mostrar todos os status.",
|
||||
"card_filter_objects": "Filtrar por objetos",
|
||||
"card_filter_objects_help": "Vazio = mostrar todos os objetos.",
|
||||
"card_filter_entities": "Filtrar por entidades (entity_ids)",
|
||||
"card_filter_entities_help": "Escolha entidades sensor / binary_sensor desta integração. Vazio = todas.",
|
||||
"card_loading_objects": "Carregando objetos…",
|
||||
"card_load_error": "Não foi possível carregar os objetos — verifique a conexão WebSocket.",
|
||||
"card_no_tasks_title": "Ainda não há tarefas de manutenção",
|
||||
"card_no_tasks_cta": "→ Crie uma no painel de Manutenção",
|
||||
"no_objects": "Ainda não há objetos.",
|
||||
"action_error": "A ação falhou. Tente novamente.",
|
||||
"area_id_optional": "Área (opcional)",
|
||||
"installation_date_optional": "Data de instalação (opcional)",
|
||||
"warranty_expiry_optional": "Fim da garantia (opcional)",
|
||||
"warranty": "Garantia",
|
||||
"warranty_valid_until": "válida até {date}",
|
||||
"warranty_expires_in": "expira em {days} dias",
|
||||
"warranty_expired": "expirada",
|
||||
"cal_past_windows": "Janelas passadas",
|
||||
"cal_forward_windows": "Janelas futuras",
|
||||
"history_edit_title": "Editar entrada do histórico",
|
||||
"history_edit_timestamp": "Data e hora",
|
||||
"manufacturer": "Fabricante",
|
||||
"model": "Modelo",
|
||||
"area": "Área",
|
||||
"actions": "Ações",
|
||||
"view_mode_label": "Visualização",
|
||||
"view_cards": "Cartões",
|
||||
"view_table": "Tabela",
|
||||
"objects_table_columns_label": "Colunas da tabela de objetos",
|
||||
"objects_table_columns_hint": "Escolha quais colunas aparecem na visualização em tabela dos objetos.",
|
||||
"custom_icon_optional": "Ícone (opcional, ex.: mdi:wrench)",
|
||||
"task_enabled": "Tarefa ativada",
|
||||
"skip_reason_prompt": "Pular esta tarefa?",
|
||||
"reason_optional": "Motivo (opcional)",
|
||||
"reset_date_prompt": "Marcar a tarefa como realizada?",
|
||||
"reset_date_optional": "Data da última execução (opcional, padrão: hoje)",
|
||||
"notes_label": "Observações",
|
||||
"documentation_label": "Documentação",
|
||||
"no_nfc_tag": "— Sem tag —",
|
||||
"dashboard": "Painel",
|
||||
"tab_today": "Hoje",
|
||||
"palette_placeholder": "Pesquisar objetos e tarefas…",
|
||||
"palette_no_results": "Nenhum resultado",
|
||||
"palette_hint": "↑↓ para navegar · Enter para abrir · Esc para fechar",
|
||||
"today_all_caught_up": "Tudo em dia! Nada vence esta semana.",
|
||||
"today_overdue": "Atrasadas",
|
||||
"today_due_today": "Vencem hoje",
|
||||
"today_this_week": "Esta semana",
|
||||
"settings": "Configurações",
|
||||
"settings_features": "Recursos avançados",
|
||||
"settings_features_desc": "Ative ou desative recursos avançados. Desativar apenas os oculta da interface, sem excluir dados.",
|
||||
"feat_adaptive": "Agendamento adaptativo",
|
||||
"feat_adaptive_desc": "Aprende intervalos ideais a partir do histórico de manutenção",
|
||||
"feat_predictions": "Previsões de sensor",
|
||||
"feat_predictions_desc": "Prevê datas de acionamento a partir da degradação do sensor",
|
||||
"feat_seasonal": "Ajustes sazonais",
|
||||
"feat_seasonal_desc": "Ajusta intervalos com base em padrões sazonais",
|
||||
"feat_environmental": "Correlação ambiental",
|
||||
"feat_environmental_desc": "Correlaciona intervalos com temperatura/umidade",
|
||||
"feat_budget": "Controle de orçamento",
|
||||
"feat_budget_desc": "Acompanha gastos mensais e anuais de manutenção",
|
||||
"feat_groups": "Grupos de tarefas",
|
||||
"feat_groups_desc": "Organiza tarefas em grupos lógicos",
|
||||
"feat_checklists": "Checklists",
|
||||
"feat_checklists_desc": "Procedimentos em várias etapas para concluir tarefas",
|
||||
"settings_general": "Geral",
|
||||
"settings_default_warning": "Dias de aviso padrão",
|
||||
"settings_panel_enabled": "Painel na barra lateral",
|
||||
"settings_panel_title": "Título do painel na barra lateral",
|
||||
"settings_notifications": "Notificações",
|
||||
"settings_notify_service": "Serviço de notificação",
|
||||
"test_notification": "Notificação de teste",
|
||||
"send_test": "Enviar teste",
|
||||
"testing": "Enviando…",
|
||||
"test_notification_success": "Notificação de teste enviada",
|
||||
"test_notification_failed": "Falha na notificação de teste",
|
||||
"settings_notify_due_soon": "Notificar quando vencer em breve",
|
||||
"settings_notify_overdue": "Notificar quando atrasada",
|
||||
"settings_notify_triggered": "Notificar quando acionada",
|
||||
"settings_interval_hours": "Intervalo de repetição (horas, 0 = uma vez)",
|
||||
"settings_quiet_hours": "Horário de silêncio",
|
||||
"settings_quiet_start": "Início",
|
||||
"settings_quiet_end": "Fim",
|
||||
"settings_max_per_day": "Máx. de notificações por dia (0 = ilimitado)",
|
||||
"settings_bundling": "Agrupar notificações",
|
||||
"settings_bundle_threshold": "Limite para agrupar",
|
||||
"settings_reminder_leads": "Lembretes extras (dias antes do vencimento)",
|
||||
"settings_reminder_leads_hint": "Antecedências separadas por vírgula, ex.: 14, 3, 0 — um lembrete extra é enviado em cada dia correspondente. Vazio = desativado.",
|
||||
"settings_actions": "Botões de ação no celular",
|
||||
"settings_action_complete": "Mostrar botão 'Concluir'",
|
||||
"settings_action_skip": "Mostrar botão 'Pular'",
|
||||
"settings_action_snooze": "Mostrar botão 'Soneca'",
|
||||
"settings_weekly_digest": "Resumo semanal",
|
||||
"settings_weekly_digest_hint": "Uma única notificação de resumo na segunda-feira de manhã quando houver tarefas vencendo.",
|
||||
"settings_warranty_reminder": "Lembrete de fim de garantia",
|
||||
"settings_warranty_reminder_days": "Dias antes do vencimento",
|
||||
"settings_warranty_reminder_hint": "Notifica uma vez quando faltar este número de dias para a garantia de um objeto expirar.",
|
||||
"settings_snooze_hours": "Duração da soneca (horas)",
|
||||
"settings_budget": "Orçamento",
|
||||
"settings_currency": "Moeda",
|
||||
"settings_budget_monthly": "Orçamento mensal",
|
||||
"settings_budget_yearly": "Orçamento anual",
|
||||
"settings_budget_alerts": "Alertas de orçamento",
|
||||
"settings_budget_threshold": "Limite de alerta (%)",
|
||||
"settings_import_export": "Importar / Exportar",
|
||||
"settings_export_json": "Exportar JSON",
|
||||
"settings_export_yaml": "Exportar YAML",
|
||||
"settings_export_csv": "Exportar CSV",
|
||||
"settings_import_csv": "Importar CSV",
|
||||
"settings_import_placeholder": "Cole o conteúdo JSON ou CSV aqui…",
|
||||
"settings_import_btn": "Importar",
|
||||
"settings_import_success": "{count} objetos importados com sucesso.",
|
||||
"settings_export_success": "Exportação baixada.",
|
||||
"settings_saved": "Configuração salva.",
|
||||
"settings_include_history": "Incluir histórico",
|
||||
"settings_export_selection": "Limitar aos objetos selecionados (opcional)",
|
||||
"settings_docs_archive": "Arquivo de documentos (com arquivos)",
|
||||
"settings_docs_archive_hint": "As exportações JSON/YAML/CSV levam apenas as configurações. Este ZIP inclui o conteúdo dos arquivos enviados para que a restauração seja completa.",
|
||||
"settings_docs_export_btn": "Baixar ZIP de documentos",
|
||||
"settings_docs_import_btn": "Restaurar ZIP de documentos",
|
||||
"settings_docs_import_success": "Restaurados: {blobs} arquivos, {docs} documentos",
|
||||
"sort_alphabetical": "Alfabética",
|
||||
"sort_due_soonest": "Vencimento mais próximo",
|
||||
"sort_task_count": "Número de tarefas",
|
||||
"sort_area": "Área",
|
||||
"sort_assigned_user": "Usuário atribuído",
|
||||
"sort_group": "Grupo",
|
||||
"groupby_none": "Sem agrupamento",
|
||||
"groupby_area": "Por área",
|
||||
"groupby_group": "Por grupo",
|
||||
"groupby_user": "Por usuário",
|
||||
"filter_label": "Filtro",
|
||||
"user_label": "Usuário",
|
||||
"sort_label": "Ordenar",
|
||||
"group_by_label": "Agrupar por",
|
||||
"state_value_help": "Use o valor de estado do HA (geralmente minúsculo, ex.: \"on\"/\"off\"). Maiúsculas e minúsculas são normalizadas ao salvar.",
|
||||
"target_changes_help": "Número de transições correspondentes antes de o gatilho disparar (padrão: 1).",
|
||||
"qr_print_title": "Imprimir códigos QR",
|
||||
"qr_print_desc": "Gere uma página imprimível de códigos QR para recortar e colar nos seus equipamentos.",
|
||||
"qr_print_load": "Carregar objetos",
|
||||
"qr_print_filter": "Filtro",
|
||||
"qr_print_objects": "Objetos",
|
||||
"qr_print_actions": "Ações",
|
||||
"qr_print_url_mode": "Tipo de link",
|
||||
"qr_print_estimate": "Códigos QR estimados",
|
||||
"qr_print_over_limit": "o limite é 200, restrinja o filtro",
|
||||
"qr_print_generate": "Gerar códigos QR",
|
||||
"qr_print_generating": "Gerando…",
|
||||
"qr_print_ready": "Códigos QR prontos",
|
||||
"qr_print_print_button": "Imprimir",
|
||||
"qr_print_empty": "Nada para gerar",
|
||||
"qr_action_skip": "Pular",
|
||||
"vacation_title": "Modo férias",
|
||||
"vacation_active": "ativo",
|
||||
"vacation_ended": "encerrado",
|
||||
"vacation_desc": "Planeje as férias: as notificações ficam pausadas durante o período mais uma margem de dias. Você pode reativar tarefas específicas.",
|
||||
"vacation_enable": "Ativar modo férias",
|
||||
"vacation_start": "Início",
|
||||
"vacation_end": "Fim",
|
||||
"vacation_buffer": "Margem (dias)",
|
||||
"vacation_exempt_title": "Notificar mesmo assim durante as férias",
|
||||
"vacation_exempt_desc": "Escolha tarefas que ainda devem notificar durante as férias (ex.: química crítica da piscina).",
|
||||
"vacation_load_tasks": "Carregar tarefas",
|
||||
"vacation_preview_btn": "Mostrar prévia",
|
||||
"vacation_preview_affected": "tarefas afetadas",
|
||||
"vacation_event_due_soon": "passa a vencer em breve",
|
||||
"vacation_event_overdue": "fica atrasada",
|
||||
"vacation_event_triggered_est": "possível acionamento por sensor",
|
||||
"vacation_sensor_based": "(baseado em sensor)",
|
||||
"vacation_action_notify": "Notificar mesmo assim",
|
||||
"vacation_action_unsilence": "Silenciar novamente",
|
||||
"vacation_marked_complete": "Marcada como concluída",
|
||||
"vacation_marked_skip": "Pulada",
|
||||
"vacation_end_now": "Encerrar as férias agora",
|
||||
"add": "Adicionar",
|
||||
"show_stats": "Mostrar estatísticas + gráficos",
|
||||
"hide_stats": "Ocultar estatísticas",
|
||||
"adaptive_no_data": "Ainda não há histórico de conclusões suficiente para a análise adaptativa. Conclua esta tarefa mais algumas vezes para desbloquear recomendações de intervalo e gráficos de confiabilidade.",
|
||||
"suggestion_applied": "Intervalo sugerido aplicado",
|
||||
"vacation_mode": "Modo férias",
|
||||
"vacation_status_active": "Ativo agora",
|
||||
"vacation_status_scheduled": "Agendado",
|
||||
"vacation_status_inactive": "Inativo",
|
||||
"vacation_end_now_confirm": "Encerrar as férias imediatamente?",
|
||||
"vacation_exempt_count": "isentas",
|
||||
"vacation_advanced": "Avançado…",
|
||||
"vacation_open_panel": "Abrir no painel",
|
||||
"enable": "Ativar",
|
||||
"saved": "Salvo",
|
||||
"budget_monthly_set": "Definir mensal",
|
||||
"budget_yearly_set": "Definir anual",
|
||||
"budget_advanced": "Moeda, alertas…",
|
||||
"budget_open_panel": "Abrir no painel",
|
||||
"groups_empty": "Ainda sem grupos.",
|
||||
"group_new_placeholder": "Adicionar grupo…",
|
||||
"group_delete_confirm": "Excluir o grupo \"{name}\"?",
|
||||
"groups_manage_tasks": "Gerenciar atribuições de tarefas…",
|
||||
"groups_open_panel": "Abrir no painel",
|
||||
"unassigned": "Sem atribuição",
|
||||
"no_area": "Sem área",
|
||||
"has_overdue": "Tem tarefas atrasadas",
|
||||
"object": "Objeto",
|
||||
"settings_panel_access": "Acesso ao painel",
|
||||
"settings_panel_access_desc": "Administradores sempre têm acesso total. Para delegar criação, edição e exclusão a não administradores específicos, ative esta opção e selecione-os abaixo — os demais veem apenas Concluir e Pular.",
|
||||
"settings_operator_write": "Permitir que os usuários selecionados criem, editem e excluam",
|
||||
"settings_operator_write_desc": "Desligado: apenas administradores podem alterar o conteúdo. Ligado: os usuários selecionados abaixo também recebem acesso total.",
|
||||
"no_non_admin_users": "Nenhum usuário não administrador encontrado. Adicione em Configurações → Pessoas.",
|
||||
"owner_label": "Proprietário",
|
||||
"feat_completion_actions": "Ações de conclusão",
|
||||
"feat_completion_actions_desc": "Ação do HA por tarefa ao concluir + QR de conclusão rápida com valores predefinidos.",
|
||||
"on_complete_action_title": "Ao concluir: acionar ação do HA (opcional)",
|
||||
"on_complete_action_desc": "Chama um serviço do HA quando a tarefa é concluída — ex.: zerar um contador no dispositivo.",
|
||||
"on_complete_action_service": "Serviço",
|
||||
"on_complete_action_target": "Entidade alvo",
|
||||
"on_complete_action_target_hint": "Atenção: o domínio da entidade deve corresponder ao serviço — ex.: 'button.press' só funciona em button.*, 'counter.increment' só em counter.*, 'input_button.press' só em input_button.* etc. Em caso de divergência, a ação falhará silenciosamente (o HA registra 'Referenced entities ... missing or not currently available').",
|
||||
"on_complete_action_data": "Dados (JSON, opcional)",
|
||||
"on_complete_action_test": "Validar configuração",
|
||||
"on_complete_action_test_success": "✓ Configuração válida (a ação só disparará na conclusão da tarefa)",
|
||||
"on_complete_action_test_failed": "Falhou",
|
||||
"quick_complete_defaults_title": "Padrões de conclusão rápida (para leituras de QR, opcional)",
|
||||
"quick_complete_defaults_desc": "Valores predefinidos para conclusões rápidas via QR. Sem eles, o QR abre o diálogo de conclusão.",
|
||||
"quick_complete_defaults_notes": "Observações",
|
||||
"quick_complete_defaults_cost": "Custo",
|
||||
"quick_complete_defaults_duration": "Duração (minutos)",
|
||||
"quick_complete_defaults_feedback_none": "Sem feedback",
|
||||
"quick_complete_defaults_feedback_needed": "Era necessária",
|
||||
"quick_complete_defaults_feedback_not_needed": "Não era necessária",
|
||||
"quick_complete_success": "Concluída rapidamente",
|
||||
"show_all_objects": "Mostrar todos os objetos",
|
||||
"show_all_tasks": "Limpar filtro — mostrar todas as tarefas",
|
||||
"filter_to_overdue": "Filtrar a lista de tarefas para apenas atrasadas",
|
||||
"filter_to_due_soon": "Filtrar a lista de tarefas para apenas vencendo em breve",
|
||||
"filter_to_triggered": "Filtrar a lista de tarefas para apenas acionadas",
|
||||
"open_task": "Abrir tarefa",
|
||||
"show_details": "Mostrar histórico + estatísticas",
|
||||
"hide_details": "Ocultar detalhes",
|
||||
"history_empty": "Ainda sem histórico.",
|
||||
"history_edit_button": "Editar entrada",
|
||||
"total_cost": "Custo total",
|
||||
"times_performed": "Realizada",
|
||||
"older_entries": "mais antigas",
|
||||
"open_in_panel": "Abrir no painel de Manutenção",
|
||||
"skip_reason": "Motivo para pular (opcional)",
|
||||
"reset_to_date": "Redefinir última execução para",
|
||||
"delete_task_confirm": "Excluir esta tarefa e seu histórico?",
|
||||
"delete_object_confirm": "Excluir este objeto e todas as suas tarefas?",
|
||||
"loading": "Carregando…",
|
||||
"archive": "Arquivar",
|
||||
"undo": "Desfazer",
|
||||
"task_archived": "Tarefa arquivada",
|
||||
"object_archived": "Objeto arquivado",
|
||||
"unarchive": "Desarquivar",
|
||||
"archived": "Arquivada",
|
||||
"show_archived": "Mostrar arquivados",
|
||||
"hide_archived": "Ocultar arquivados",
|
||||
"confirm_archive_object": "Arquivar este objeto e suas tarefas? Eles mantêm o histórico e podem ser desarquivados depois.",
|
||||
"settings_archive": "Arquivamento e retenção",
|
||||
"settings_archive_desc": "Aposente tarefas únicas concluídas sem excluí-las. Itens arquivados ficam ocultos e inativos, mas mantêm o histórico e o custo.",
|
||||
"settings_archive_oneoff_days": "Arquivar automaticamente tarefas únicas concluídas após (dias, 0 = desativado)",
|
||||
"settings_delete_archived_oneoff_days": "Excluir automaticamente tarefas únicas arquivadas após (dias, 0 = nunca)",
|
||||
"archive_object": "Arquivar objeto",
|
||||
"unarchive_object": "Desarquivar objeto",
|
||||
"documents": "Documentos",
|
||||
"documents_empty": "Ainda não há documentos.",
|
||||
"doc_upload": "Enviar arquivo",
|
||||
"doc_uploading": "Enviando…",
|
||||
"doc_add_link": "Adicionar link",
|
||||
"doc_link_url": "URL (https://…)",
|
||||
"doc_link_title": "Título (opcional)",
|
||||
"doc_open": "Abrir",
|
||||
"doc_delete_confirm": "Excluir \"{name}\"?",
|
||||
"doc_too_large": "O arquivo é muito grande (máx. 25 MB).",
|
||||
"doc_upload_failed": "Falha no envio.",
|
||||
"completion_photo_optional": "Foto da conclusão (opcional)",
|
||||
"add_photo": "Adicionar foto",
|
||||
"uploading": "Enviando…",
|
||||
"remove": "Remover",
|
||||
"doc_deduped": "Já armazenado em outro lugar — compartilhado, sem uso de espaço extra.",
|
||||
"doc_dup_in_object": "Este arquivo já está anexado a este objeto.",
|
||||
"doc_link_invalid": "Apenas links http/https são permitidos.",
|
||||
"doc_cat_manual": "Manual",
|
||||
"doc_cat_warranty": "Garantia",
|
||||
"doc_cat_invoice": "Nota fiscal",
|
||||
"doc_cat_spare_parts": "Peças de reposição",
|
||||
"doc_cat_photo": "Foto",
|
||||
"doc_cat_other": "Outros",
|
||||
"doc_link_badge": "Link",
|
||||
"doc_storage_title": "Armazenamento de documentos",
|
||||
"doc_storage_saved": "Economizado por deduplicação",
|
||||
"doc_storage_refresh": "Atualizar",
|
||||
"doc_download": "Baixar",
|
||||
"doc_close": "Fechar",
|
||||
"doc_camera": "Tirar foto",
|
||||
"doc_drop_hint": "Solte os arquivos aqui",
|
||||
"doc_task_none": "Nenhum documento vinculado a esta tarefa.",
|
||||
"doc_link_existing": "Vincular um documento…",
|
||||
"doc_attach": "Vincular",
|
||||
"doc_unlink": "Desvincular",
|
||||
"doc_page": "Página",
|
||||
"chart_range_7d": "7d",
|
||||
"chart_range_30d": "30d",
|
||||
"chart_range_90d": "90d",
|
||||
"chart_range_1y": "1a",
|
||||
"chart_since_service": "desde a última manutenção",
|
||||
"chart_no_stats": "Sem estatísticas de longo prazo para esta entidade — mostrando apenas valores de eventos de manutenção",
|
||||
"auto_complete_on_recovery": "Concluir automaticamente quando o sensor se recuperar",
|
||||
"auto_complete_on_recovery_help": "Registra uma conclusão (define a última execução) quando o gatilho se resolve sozinho — ex.: sal reposto, filtro trocado.",
|
||||
"doc_search": "Pesquisar documentos…",
|
||||
"doc_search_none": "Nenhum documento correspondente",
|
||||
"link_device_optional": "Vincular a um dispositivo existente (opcional)",
|
||||
"parent_object_optional": "Objeto pai (opcional)",
|
||||
"parent_none": "(Sem pai)",
|
||||
"paused": "Pausado",
|
||||
"pause_object": "Pausar",
|
||||
"resume_object": "Retomar",
|
||||
"pause_until_prompt": "Congele os agendamentos deste objeto — nada vence e nada notifica até que ele seja retomado. Opcionalmente, defina uma data de retomada automática.",
|
||||
"pause_until_label": "Retomar em (opcional)",
|
||||
"object_paused": "Objeto pausado",
|
||||
"object_resumed": "Objeto retomado — agendamentos reiniciados",
|
||||
"object_paused_badge": "Pausado",
|
||||
"paused_until_label": "até",
|
||||
"replace_object": "Substituir…",
|
||||
"replace_object_prompt": "Aposente este objeto e crie um sucessor. O histórico e os custos ficam arquivados no antigo; as tarefas e os documentos passam para o novo, e os contadores recomeçam do zero.",
|
||||
"replace_name_label": "Nome do sucessor",
|
||||
"object_replaced": "Objeto substituído — sucessor criado",
|
||||
"reading_unit_label": "Unidade da leitura (ex.: kWh, m³)",
|
||||
"reading_unit_help": "Exibida ao lado do valor registrado ao concluir esta tarefa.",
|
||||
"reading_value_label": "Valor da leitura",
|
||||
"reading_label": "Leitura",
|
||||
"settings_templates_label": "Galeria de modelos",
|
||||
"settings_templates_hint": "Desmarque os modelos de que você nunca precisará — eles somem dos seletores \"A partir de modelo\" (painel e fluxo de configuração). Nada mais muda; você pode reativá-los a qualquer momento.",
|
||||
"worksheet": "Folha de trabalho",
|
||||
"worksheet_scan_view": "Escaneie para abrir a tarefa",
|
||||
"worksheet_scan_complete": "Escaneie para concluir",
|
||||
"worksheet_manual_excerpt": "Trecho do manual",
|
||||
"worksheet_pages": "páginas",
|
||||
"worksheet_printed": "Impressa em",
|
||||
"worksheet_never": "Nunca",
|
||||
"card_all_caught_up": "Tudo em dia — nada precisa de atenção",
|
||||
"postpone": "Adiar",
|
||||
"postpone_date_prompt": "Adiar esta ocorrência para qual data?",
|
||||
"postpone_date_label": "Nova data de vencimento",
|
||||
"postponed": "Adiada",
|
||||
"postponed_to": "Adiada para",
|
||||
"season_window_label": "Janela sazonal (meses)",
|
||||
"season_window_hint": "Vence apenas nos meses selecionados; datas fora de temporada passam para o próximo mês ativo. Nenhum = o ano todo.",
|
||||
"series_end_label": "Termina",
|
||||
"series_end_never": "Nunca (repete indefinidamente)",
|
||||
"series_end_after_count": "Após um número de vezes",
|
||||
"series_end_until": "Em uma data",
|
||||
"series_end_count_label": "Número de vezes",
|
||||
"series_end_until_label": "Data final",
|
||||
"parts_section": "Peças e consumíveis",
|
||||
"part_add": "Adicionar peça",
|
||||
"part_name": "Nome",
|
||||
"part_vendor": "Fabricante",
|
||||
"part_storage_location": "Local de armazenamento",
|
||||
"part_product_url": "URL do produto",
|
||||
"part_unit": "Unidade",
|
||||
"part_cost": "Preço unitário",
|
||||
"part_stock": "Estoque",
|
||||
"part_reorder_threshold": "Repor em",
|
||||
"part_restock_quantity": "Quantidade de reposição",
|
||||
"part_auto_buy": "Criar tarefa de compra automaticamente quando estiver baixo",
|
||||
"part_restock": "Ajustar estoque",
|
||||
"restock_quantity_label": "Quantidade comprada",
|
||||
"consumes_parts_label": "Consome peças",
|
||||
"parts_load_failed": "Não foi possível carregar as peças deste objeto — as opções de consumo de peças estão indisponíveis no momento.",
|
||||
"adopt_problem_button": "Adotar sensores de problema",
|
||||
"adopt_problem_title": "Adotar sensores de problema",
|
||||
"adopt_problem_hint": "Transforme sensores de problema do HA (erros de impressora, avisos de filtro, bateria fraca) em tarefas de manutenção que são acionadas enquanto o problema está ativo e se resolvem sozinhas quando ele desaparece.",
|
||||
"adopt_problem_none": "Nenhum sensor de problema encontrado que ainda não seja acompanhado.",
|
||||
"adopt_problem_active": "ativo",
|
||||
"adopt_problem_ok": "ok",
|
||||
"adopt_problem_new_object": "(novo)",
|
||||
"adopt_problem_adopt": "Adotar selecionados",
|
||||
"adopt_problem_done": "{tasks} sensor(es) de problema adotado(s)",
|
||||
"views_label": "Visualizações",
|
||||
"views_none": "— Nenhuma visualização —",
|
||||
"views_manage": "Salvar / gerenciar visualizações",
|
||||
"views_dialog_title": "Visualizações salvas",
|
||||
"views_dialog_hint": "Salve os filtros atuais como uma visualização nomeada que todos podem reutilizar.",
|
||||
"views_name_placeholder": "Nome da visualização",
|
||||
"views_save_current": "Salvar filtros atuais",
|
||||
"views_none_yet": "Ainda não há visualizações salvas.",
|
||||
"close": "Fechar",
|
||||
"trigger_hint_now": "O sensor lê {value} neste momento.",
|
||||
"trigger_hint_above": "A tarefa é acionada quando o valor sobe acima de {target}.",
|
||||
"trigger_hint_below": "É acionada quando o valor cai abaixo de {target}.",
|
||||
"trigger_hint_counter_delta": "Conta a partir da leitura atual ({value}): vence em {due} (+{target}), e a contagem recomeça após cada conclusão.",
|
||||
"trigger_hint_counter_delta_edit": "Conta o uso desde a última conclusão: vence após +{target}; a contagem recomeça após cada conclusão.",
|
||||
"trigger_hint_counter_abs": "A tarefa vence quando o sensor atinge {target}.",
|
||||
"trigger_hint_runtime": "A tarefa vence após {hours} h de funcionamento acumulado; o contador recomeça após cada conclusão.",
|
||||
"trigger_hint_state_change": "A tarefa vence após {count} mudança(s) de estado.",
|
||||
"trigger_hint_state_change_to": "A tarefa vence após {count} mudança(s) para “{state}”.",
|
||||
"trigger_hint_state_now": "Estado atual: {value}.",
|
||||
"adopt_problem_part": "Usa a peça: {name}",
|
||||
"label_filter": "Etiqueta",
|
||||
"all_labels": "Todas as etiquetas",
|
||||
"settings_notify_scope": "Notificar apenas para a visualização",
|
||||
"settings_notify_scope_all": "Todas as tarefas",
|
||||
"settings_notify_scope_hint": "Apenas tarefas que correspondem aos filtros de etiqueta/usuário da visualização salva selecionada enviam lembretes. Status, ordenação e agrupamento da visualização são ignorados aqui.",
|
||||
"card_saved_view": "Visualização salva",
|
||||
"card_saved_view_none": "Nenhuma",
|
||||
"card_saved_view_help": "Aplica os filtros de status, usuário e etiqueta da visualização por cima dos filtros acima. A ordenação e o agrupamento da visualização são configurações de exibição do painel e não se aplicam ao cartão.",
|
||||
"doc_part_none": "Nenhum documento vinculado a esta peça.",
|
||||
"settings_templates_toggle_group": "Ativar ou desativar todos os modelos deste grupo",
|
||||
"setups_button": "Configurações sugeridas",
|
||||
"setups_title": "Configurações sugeridas (Beta)",
|
||||
"setups_hint": "Dispositivos de integrações compatíveis cujos sensores de consumíveis podem alimentar tarefas de manutenção. Adotar cria o objeto e conecta cada tarefa ao seu sensor — ela é acionada quando o consumível fica baixo e se resolve sozinha após a troca.",
|
||||
"setups_none": "Nenhum dispositivo compatível com sensores de consumíveis ainda não conectados foi encontrado.",
|
||||
"setups_adopt": "Configurar selecionados",
|
||||
"setups_done": "{tasks} tarefas conectadas a sensores foram criadas.",
|
||||
"complete_parts_used": "Peças usadas desta vez",
|
||||
"part_delete_confirm": "Excluir a peça '{name}'? O controle de estoque, os vínculos com tarefas e qualquer lembrete de compra aberto serão removidos.",
|
||||
"baseline_start_value": "Leitura inicial (opcional)",
|
||||
"baseline_start_help": "A contagem começa a partir desta leitura. Deixe vazio para contar a partir do valor atual; informe a leitura da última manutenção para que o uso desde então já seja contado.",
|
||||
"setups_baseline_hint": "leitura na última manutenção (opcional)",
|
||||
"baseline_start_help_edit": "Deixe vazio para manter a contagem existente. Informar um valor reancora a contagem (ex.: a leitura da última manutenção).",
|
||||
"baseline_current_effective": "Valor inicial efetivo atual: {value}",
|
||||
"runtime_on_states": "Estados ativos (separados por vírgula)",
|
||||
"runtime_on_states_help": "Estados que contam como em funcionamento — padrão: on. Ex.: mowing, cleaning, printing. Com um atributo selecionado, os valores dele são comparados.",
|
||||
"setups_target_new": "Criar novo: {name}",
|
||||
"schedule_preview_title": "Próximas datas",
|
||||
"schedule_preview_ontime": "Supondo conclusão em dia.",
|
||||
"schedule_preview_ends": "(a série termina)",
|
||||
"adopt_problem_responsible": "Usuário responsável por todas as tarefas adotadas (opcional)",
|
||||
"adopt_problem_configure": "Configurar",
|
||||
"history_auto": "Automática",
|
||||
"battery_fleet_title": "Frota de baterias",
|
||||
"battery_fleet_none_low": "Todas as baterias OK — nada a substituir.",
|
||||
"battery_fleet_buy_now": "Comprar agora",
|
||||
"battery_fleet_soon": "Necessárias em breve",
|
||||
"battery_fleet_soon_hint": "Previsto a partir da data da última troca — compre com antecedência.",
|
||||
"battery_fleet_mark_all": "Marcar todas como trocadas",
|
||||
"battery_fleet_mark_one": "Marcar esta bateria como trocada",
|
||||
"battery_fleet_offline": "offline",
|
||||
"battery_fleet_trigger_lost": "O gatilho do sensor desta tarefa foi perdido — ela não será acionada nem concluída automaticamente.",
|
||||
"battery_fleet_repair": "Reparar",
|
||||
"battery_fleet_exclude": "Remover da frota",
|
||||
"battery_fleet_excluded": "Removida",
|
||||
"battery_fleet_include": "Acompanhar novamente",
|
||||
"battery_fleet_total": "{n} baterias acompanhadas",
|
||||
"battery_fleet_setup_button": "Frota de baterias",
|
||||
"battery_fleet_setup_done": "Frota de baterias configurada — uma única tarefa acompanha todas as suas baterias.",
|
||||
"update_banner": "Há uma versão mais nova do Maintenance Supporter no servidor — recarregue para atualizar o painel.",
|
||||
"update_reload": "Recarregar"
|
||||
}
|
||||
@@ -0,0 +1,811 @@
|
||||
{
|
||||
"maintenance": "Bakım",
|
||||
"objects": "Nesneler",
|
||||
"tasks": "Görevler",
|
||||
"overdue": "Gecikmiş",
|
||||
"due_soon": "Yaklaşan",
|
||||
"triggered": "Tetiklendi",
|
||||
"trigger_replaced": "Tetikleyici değiştirildi",
|
||||
"ok": "Tamam",
|
||||
"all": "Tümü",
|
||||
"new_object": "+ Yeni Nesne",
|
||||
"templates_from": "Şablondan",
|
||||
"templates_title": "Bir şablonla başlayın",
|
||||
"templates_task_count": "{n} görev",
|
||||
"template_created": "Şablondan oluşturuldu",
|
||||
"onboard_hint": "Bakım takibine başlamak için ilk nesnenizi ekleyin.",
|
||||
"edit": "Düzenle",
|
||||
"duplicate": "Çoğalt",
|
||||
"task_duplicated": "Görev çoğaltıldı",
|
||||
"object_duplicated": "Nesne çoğaltıldı",
|
||||
"delete": "Sil",
|
||||
"add_task": "+ Görev Ekle",
|
||||
"complete": "Tamamla",
|
||||
"completed": "Tamamlandı",
|
||||
"skip": "Atla",
|
||||
"skipped": "Atlandı",
|
||||
"missed": "Kaçırıldı",
|
||||
"reset": "Sıfırla",
|
||||
"snooze": "Ertele",
|
||||
"snoozed": "Ertelendi",
|
||||
"cancel": "İptal",
|
||||
"bulk_select": "Seç",
|
||||
"bulk_select_all": "Tümünü seç",
|
||||
"bulk_n_selected": "{n} seçildi",
|
||||
"bulk_completed": "{n} görev tamamlandı",
|
||||
"bulk_archived": "{n} görev arşivlendi",
|
||||
"completing": "Tamamlanıyor…",
|
||||
"interval": "Aralık",
|
||||
"warning": "Uyarı",
|
||||
"last_performed": "Son yapılma",
|
||||
"next_due": "Sonraki vade",
|
||||
"days_until_due": "Vadeye kalan gün",
|
||||
"avg_duration": "Ort. süre",
|
||||
"trigger": "Tetikleyici",
|
||||
"trigger_type": "Tetikleyici türü",
|
||||
"threshold_above": "Üst sınır",
|
||||
"threshold_below": "Alt sınır",
|
||||
"threshold": "Eşik",
|
||||
"counter": "Sayaç",
|
||||
"state_change": "Durum değişikliği",
|
||||
"runtime": "Çalışma süresi",
|
||||
"runtime_hours": "Hedef çalışma süresi (saat)",
|
||||
"target_value": "Hedef değer",
|
||||
"baseline": "Başlangıç değeri",
|
||||
"target_changes": "Hedef değişiklik sayısı",
|
||||
"for_minutes": "Süre (dakika)",
|
||||
"time_based": "Zamana dayalı",
|
||||
"sensor_based": "Sensöre dayalı",
|
||||
"manual": "Manuel",
|
||||
"one_time": "Tek seferlik",
|
||||
"weekdays": "Haftanın günleri",
|
||||
"nth_weekday": "Ayın n. hafta günü",
|
||||
"day_of_month": "Ayın günü",
|
||||
"recurrence_on_days": "Tekrar günleri",
|
||||
"recurrence_occurrence": "Kaçıncı",
|
||||
"recurrence_weekday": "Haftanın günü",
|
||||
"recurrence_day": "Ayın günü (1–31)",
|
||||
"recurrence_last_day": "Ayın son günü",
|
||||
"recurrence_business_day": "Yalnızca iş günleri (hafta sonundan geriye kaydır)",
|
||||
"recurrence_offset": "Kaydırma (gün, ±)",
|
||||
"recurrence_offset_help": "Tarihi ±N gün kaydırır, örn. -2 = iki gün önce.",
|
||||
"last_day_month": "Ayın son günü",
|
||||
"last_business_day_month": "Son iş günü",
|
||||
"ord_1": "1.",
|
||||
"ord_2": "2.",
|
||||
"ord_3": "3.",
|
||||
"ord_4": "4.",
|
||||
"ord_5": "5.",
|
||||
"ord_last": "Son",
|
||||
"day_word": "Gün",
|
||||
"interval_value": "Aralık",
|
||||
"interval_unit": "Birim",
|
||||
"unit_days": "Gün",
|
||||
"unit_weeks": "Hafta",
|
||||
"unit_months": "Ay",
|
||||
"unit_years": "Yıl",
|
||||
"due_date": "Vade tarihi",
|
||||
"cleaning": "Temizlik",
|
||||
"inspection": "Kontrol",
|
||||
"replacement": "Değişim",
|
||||
"calibration": "Kalibrasyon",
|
||||
"service": "Servis",
|
||||
"reading": "Okuma",
|
||||
"custom": "Özel",
|
||||
"history": "Geçmiş",
|
||||
"cost": "Maliyet",
|
||||
"report_button": "Rapor",
|
||||
"report_title": "Bakım raporu",
|
||||
"report_generated": "Oluşturulma",
|
||||
"report_times_done": "Yapıldı",
|
||||
"report_total_cost": "Toplam maliyet",
|
||||
"report_every": "her {n} {unit}",
|
||||
"report_notes": "Notlar",
|
||||
"report_col_type": "Tür",
|
||||
"report_col_status": "Durum",
|
||||
"report_col_schedule": "Zamanlama",
|
||||
"duration": "Süre",
|
||||
"both": "Her ikisi",
|
||||
"trigger_val": "Tetikleme değeri",
|
||||
"complete_title": "Tamamla: ",
|
||||
"checklist": "Kontrol listesi",
|
||||
"checklist_steps_optional": "Kontrol listesi adımları (isteğe bağlı)",
|
||||
"checklist_placeholder": "Filtreyi temizle\nContayı değiştir\nBasıncı test et",
|
||||
"checklist_help": "Her satıra bir adım. En fazla 100 madde.",
|
||||
"err_too_long": "{field}: çok uzun (en fazla {n} karakter)",
|
||||
"err_too_short": "{field}: çok kısa (en az {n} karakter)",
|
||||
"err_value_too_high": "{field}: çok büyük (en fazla {n})",
|
||||
"err_value_too_low": "{field}: çok küçük (en az {n})",
|
||||
"err_required": "{field}: zorunlu",
|
||||
"err_wrong_type": "{field}: yanlış tür (beklenen: {type})",
|
||||
"err_invalid_choice": "{field}: izin verilen bir değer değil",
|
||||
"err_invalid_value": "{field}: geçersiz değer",
|
||||
"feat_schedule_time": "Gün içi saat zamanlaması",
|
||||
"feat_schedule_time_desc": "Görevler gece yarısı yerine günün belirli bir saatinde gecikmiş olur.",
|
||||
"schedule_time_optional": "Vade saati (isteğe bağlı, SS:DD)",
|
||||
"schedule_time_help": "Boş = gece yarısı (varsayılan). HA saat dilimi.",
|
||||
"at_time": "saat",
|
||||
"notes_optional": "Notlar (isteğe bağlı)",
|
||||
"cost_optional": "Maliyet (isteğe bağlı)",
|
||||
"duration_minutes": "Dakika cinsinden süre (isteğe bağlı)",
|
||||
"days": "gün",
|
||||
"day": "gün",
|
||||
"today": "Bugün",
|
||||
"d_overdue": "g gecikmiş",
|
||||
"no_tasks": "Henüz bakım görevi yok. Başlamak için bir nesne oluşturun.",
|
||||
"no_tasks_short": "Görev yok",
|
||||
"no_history": "Henüz geçmiş kaydı yok.",
|
||||
"show_all": "Tümünü göster",
|
||||
"cost_duration_chart": "Maliyet ve Süre",
|
||||
"installed": "Kurulum",
|
||||
"confirm_delete_object": "Bu nesne ve tüm görevleri silinsin mi?",
|
||||
"confirm_delete_task": "Bu görev silinsin mi?",
|
||||
"min": "Min",
|
||||
"max": "Maks",
|
||||
"save": "Kaydet",
|
||||
"saving": "Kaydediliyor…",
|
||||
"edit_task": "Görevi Düzenle",
|
||||
"new_task": "Yeni Bakım Görevi",
|
||||
"task_name": "Görev adı",
|
||||
"maintenance_type": "Bakım türü",
|
||||
"priority": "Öncelik",
|
||||
"labels": "Etiketler",
|
||||
"labels_placeholder": "örn. güvenlik, mevsimlik, kiracıya görünür",
|
||||
"labels_help": "Filtreleme ve raporlama için virgülle ayrılmış etiketler.",
|
||||
"priority_low": "Düşük",
|
||||
"priority_normal": "Normal",
|
||||
"priority_high": "Yüksek",
|
||||
"schedule_type": "Zamanlama türü",
|
||||
"interval_days": "Aralık (gün)",
|
||||
"warning_days": "Uyarı günleri",
|
||||
"earliest_completion_days": "En erken tamamlama (vadeden gün önce)",
|
||||
"earliest_completion_days_help": "Her zaman tamamlanabilmesi için boş bırakın. 0 = yalnızca vade gününde veya sonrasında.",
|
||||
"last_performed_optional": "Son yapılma (isteğe bağlı)",
|
||||
"interval_anchor": "Aralık referansı",
|
||||
"anchor_completion": "Tamamlama tarihinden",
|
||||
"anchor_planned": "Planlanan tarihten (kayma olmaz)",
|
||||
"edit_object": "Nesneyi Düzenle",
|
||||
"name": "Ad",
|
||||
"manufacturer_optional": "Üretici (isteğe bağlı)",
|
||||
"model_optional": "Model (isteğe bağlı)",
|
||||
"serial_number_optional": "Seri numarası (isteğe bağlı)",
|
||||
"serial_number_label": "S/N",
|
||||
"documentation_url_label": "Kılavuz",
|
||||
"object_notes_label": "Notlar",
|
||||
"sort_due_date": "Vade tarihi",
|
||||
"sort_object": "Nesne adı",
|
||||
"sort_type": "Tür",
|
||||
"sort_task_name": "Görev adı",
|
||||
"all_objects": "Tüm nesneler",
|
||||
"tasks_lower": "görev",
|
||||
"no_tasks_yet": "Henüz görev yok",
|
||||
"add_first_task": "İlk görevi ekle",
|
||||
"trigger_configuration": "Tetikleyici Yapılandırması",
|
||||
"entity_id": "Varlık kimliği",
|
||||
"comma_separated": "virgülle ayrılmış",
|
||||
"entity_logic": "Varlık mantığı",
|
||||
"entity_logic_any": "Herhangi bir varlık tetikler",
|
||||
"entity_logic_all": "Tüm varlıklar tetiklemeli",
|
||||
"entities": "varlık",
|
||||
"attribute_optional": "Öznitelik (isteğe bağlı, boş = durum)",
|
||||
"use_entity_state": "Varlık durumunu kullan (öznitelik yok)",
|
||||
"trigger_above": "Üstünde tetikle",
|
||||
"trigger_below": "Altında tetikle",
|
||||
"for_at_least_minutes": "En az (dakika)",
|
||||
"safety_interval_days": "Güvenlik aralığı (gün, isteğe bağlı)",
|
||||
"safety_interval": "Güvenlik aralığı (isteğe bağlı)",
|
||||
"delta_mode": "Fark modu",
|
||||
"from_state_optional": "Başlangıç durumu (isteğe bağlı)",
|
||||
"to_state_optional": "Hedef durum (isteğe bağlı)",
|
||||
"documentation_url_optional": "Dokümantasyon URL'si (isteğe bağlı)",
|
||||
"object_notes_optional": "Notlar (isteğe bağlı)",
|
||||
"nfc_tag_id_optional": "NFC Etiket Kimliği (isteğe bağlı)",
|
||||
"nfc_tags_empty_help": "Home Assistant'ta henüz kayıtlı NFC etiketi yok.",
|
||||
"nfc_tags_open_settings": "Etiket ayarlarını aç",
|
||||
"nfc_tags_refresh": "Yenile",
|
||||
"environmental_entity_optional": "Çevresel sensör (isteğe bağlı)",
|
||||
"environmental_entity_helper": "örn. sensor.outdoor_temperature — aralığı çevresel koşullara göre ayarlar",
|
||||
"environmental_attribute_optional": "Çevresel öznitelik (isteğe bağlı)",
|
||||
"nfc_tag_id": "NFC Etiket Kimliği",
|
||||
"nfc_linked": "NFC etiketi bağlandı",
|
||||
"nfc_link_hint": "NFC etiketi bağlamak için tıklayın",
|
||||
"responsible_user": "Sorumlu Kullanıcı",
|
||||
"shared_with": "Paylaşılanlar (rotasyon)",
|
||||
"shared_with_help": "Bu görevi paylaşmak için birden fazla kişi seçin; sorumlu kişi her tamamlamada sırayla değişir.",
|
||||
"rotation_strategy": "Rotasyon",
|
||||
"rotation_none": "Rotasyon yok",
|
||||
"rotation_round_robin": "Sırayla",
|
||||
"rotation_least_completed": "En az tamamlayan",
|
||||
"rotation_random": "Rastgele",
|
||||
"no_user_assigned": "(Kullanıcı atanmadı)",
|
||||
"all_users": "Tüm Kullanıcılar",
|
||||
"my_tasks": "Görevlerim",
|
||||
"tab_calendar": "Takvim",
|
||||
"cal_no_events": "Bakım yok",
|
||||
"cal_window_7": "7 gün",
|
||||
"cal_window_14": "14 gün",
|
||||
"cal_window_30": "30 gün",
|
||||
"cal_window_365": "1 yıl",
|
||||
"cal_every_n_days": "her {n} günde bir",
|
||||
"cal_source_time": "Zamana dayalı",
|
||||
"cal_source_time_adaptive": "Zamana dayalı (uyarlanabilir)",
|
||||
"cal_source_sensor": "Sensöre dayalı",
|
||||
"cal_predicted": "tahmini",
|
||||
"cal_confidence_high": "yüksek güven",
|
||||
"cal_confidence_medium": "orta güven",
|
||||
"cal_confidence_low": "düşük güven",
|
||||
"budget_monthly": "Aylık bütçe",
|
||||
"budget_yearly": "Yıllık bütçe",
|
||||
"groups": "Gruplar",
|
||||
"new_group": "Yeni grup",
|
||||
"edit_group": "Grubu düzenle",
|
||||
"no_groups": "Henüz grup yok",
|
||||
"delete_group": "Grubu sil",
|
||||
"delete_group_confirm": "'{name}' grubu silinsin mi?",
|
||||
"group_select_tasks": "Görevleri seç",
|
||||
"group_name_required": "Ad zorunludur",
|
||||
"description_optional": "Açıklama (isteğe bağlı)",
|
||||
"selected": "Seçili",
|
||||
"loading_chart": "Grafik verileri yükleniyor...",
|
||||
"hide_outliers": "Aykırı değerleri gizle (sensör hataları)",
|
||||
"was_maintenance_needed": "Bu bakım gerekli miydi?",
|
||||
"feedback_needed": "Gerekliydi",
|
||||
"feedback_not_needed": "Gerekli değildi",
|
||||
"feedback_not_sure": "Emin değilim",
|
||||
"suggested_interval": "Önerilen aralık",
|
||||
"apply_suggestion": "Uygula",
|
||||
"reanalyze": "Yeniden analiz et",
|
||||
"reanalyze_result": "Yeni analiz",
|
||||
"reanalyze_insufficient_data": "Öneri üretmek için yeterli veri yok",
|
||||
"data_points": "veri noktası",
|
||||
"dismiss_suggestion": "Yoksay",
|
||||
"confidence_low": "Düşük",
|
||||
"confidence_medium": "Orta",
|
||||
"confidence_high": "Yüksek",
|
||||
"recommended": "önerilen",
|
||||
"seasonal_awareness": "Mevsimsel Farkındalık",
|
||||
"edit_seasonal_overrides": "Mevsimsel faktörleri düzenle",
|
||||
"seasonal_overrides_title": "Mevsimsel faktörler (elle ayar)",
|
||||
"seasonal_overrides_hint": "Ay başına faktör (0.1–5.0). Boş = otomatik öğrenilir.",
|
||||
"seasonal_override_invalid": "Geçersiz değer",
|
||||
"seasonal_override_range": "Faktör 0.1 ile 5.0 arasında olmalıdır",
|
||||
"clear_all": "Tümünü temizle",
|
||||
"seasonal_chart_title": "Mevsimsel Faktörler",
|
||||
"seasonal_learned": "Öğrenilmiş",
|
||||
"seasonal_manual": "Manuel",
|
||||
"month_jan": "Oca",
|
||||
"month_feb": "Şub",
|
||||
"month_mar": "Mar",
|
||||
"month_apr": "Nis",
|
||||
"month_may": "May",
|
||||
"month_jun": "Haz",
|
||||
"month_jul": "Tem",
|
||||
"month_aug": "Ağu",
|
||||
"month_sep": "Eyl",
|
||||
"month_oct": "Eki",
|
||||
"month_nov": "Kas",
|
||||
"month_dec": "Ara",
|
||||
"sensor_prediction": "Sensör Tahmini",
|
||||
"degradation_trend": "Eğilim",
|
||||
"trend_rising": "Yükseliyor",
|
||||
"trend_falling": "Düşüyor",
|
||||
"trend_stable": "Sabit",
|
||||
"trend_insufficient_data": "Yetersiz veri",
|
||||
"days_until_threshold": "Eşiğe kalan gün",
|
||||
"threshold_exceeded": "Eşik aşıldı",
|
||||
"environmental_adjustment": "Çevresel faktör",
|
||||
"sensor_prediction_urgency": "Sensör, eşiğe ~{days} gün kaldığını öngörüyor",
|
||||
"day_short": "gün",
|
||||
"weibull_reliability_curve": "Güvenilirlik Eğrisi",
|
||||
"weibull_failure_probability": "Arıza Olasılığı",
|
||||
"weibull_r_squared": "Uyum R²",
|
||||
"beta_early_failures": "Erken Arızalar",
|
||||
"beta_random_failures": "Rastgele Arızalar",
|
||||
"beta_wear_out": "Aşınma",
|
||||
"beta_highly_predictable": "Yüksek Öngörülebilirlik",
|
||||
"confidence_interval": "Güven Aralığı",
|
||||
"confidence_conservative": "Temkinli",
|
||||
"confidence_aggressive": "İyimser",
|
||||
"current_interval_marker": "Mevcut aralık",
|
||||
"recommended_marker": "Önerilen",
|
||||
"characteristic_life": "Karakteristik ömür",
|
||||
"chart_mini_sparkline": "Eğilim mini grafiği",
|
||||
"chart_history": "Maliyet ve süre geçmişi",
|
||||
"chart_seasonal": "Mevsimsel faktörler, 12 ay",
|
||||
"chart_weibull": "Weibull güvenilirlik eğrisi",
|
||||
"chart_sparkline": "Sensör tetikleme değeri grafiği",
|
||||
"days_progress": "Gün ilerlemesi",
|
||||
"qr_code": "QR Kodu",
|
||||
"qr_generating": "QR kodu oluşturuluyor…",
|
||||
"qr_error": "QR kodu oluşturulamadı.",
|
||||
"qr_error_no_url": "Yapılandırılmış bir HA URL'si yok. Lütfen Ayarlar → Sistem → Ağ bölümünden bir dış veya iç URL ayarlayın.",
|
||||
"save_error": "Kaydedilemedi. Lütfen tekrar deneyin.",
|
||||
"qr_print": "Yazdır",
|
||||
"qr_download": "SVG indir",
|
||||
"qr_action": "Tarama eylemi",
|
||||
"qr_action_view": "Bakım bilgisini görüntüle",
|
||||
"qr_action_complete": "Bakımı tamamlandı olarak işaretle",
|
||||
"qr_url_mode": "Bağlantı türü",
|
||||
"qr_mode_companion": "Companion uygulaması",
|
||||
"qr_mode_local": "Yerel (mDNS)",
|
||||
"qr_mode_server": "Sunucu URL'si",
|
||||
"overview": "Genel Bakış",
|
||||
"analysis": "Analiz",
|
||||
"recent_activities": "Son Etkinlikler",
|
||||
"search_notes": "Notlarda ara",
|
||||
"avg_cost": "Ort. Maliyet",
|
||||
"no_advanced_features": "Etkin gelişmiş özellik yok",
|
||||
"no_advanced_features_hint": "Burada analiz verilerini görmek için entegrasyon ayarlarından “Uyarlanabilir Aralıklar” veya “Mevsimsel Desenler” özelliğini etkinleştirin.",
|
||||
"analysis_not_enough_data": "Analiz için henüz yeterli veri yok.",
|
||||
"analysis_not_enough_data_hint": "Weibull analizi en az 5 tamamlanmış bakım gerektirir; mevsimsel desenler ay başına 6+ veri noktasından sonra görünür olur.",
|
||||
"analysis_manual_task_hint": "Aralığı olmayan manuel görevler analiz verisi üretmez.",
|
||||
"completions": "tamamlama",
|
||||
"current": "Mevcut",
|
||||
"shorter": "Daha kısa",
|
||||
"longer": "Daha uzun",
|
||||
"normal": "Normal",
|
||||
"disabled": "Devre dışı",
|
||||
"compound_logic": "Bileşik mantık",
|
||||
"compound": "Bileşik (birden fazla koşul)",
|
||||
"compound_logic_and": "VE — tüm koşullar tetiklenmeli",
|
||||
"compound_logic_or": "VEYA — herhangi bir koşul tetikler",
|
||||
"compound_help": "Birden fazla sensör koşulunu tek bir tetikleyicide birleştirin.",
|
||||
"compound_no_conditions": "Henüz koşul yok — en az bir tane ekleyin.",
|
||||
"compound_add_condition": "Koşul ekle",
|
||||
"compound_condition": "Koşul",
|
||||
"compound_remove_condition": "Koşulu kaldır",
|
||||
"card_title": "Başlık",
|
||||
"card_show_header": "İstatistikli başlığı göster",
|
||||
"card_show_actions": "Eylem düğmelerini göster",
|
||||
"card_compact": "Kompakt mod",
|
||||
"card_max_items": "En fazla öğe (0 = tümü)",
|
||||
"card_filter_status": "Duruma göre filtrele",
|
||||
"card_filter_status_help": "Boş = tüm durumları göster.",
|
||||
"card_filter_objects": "Nesnelere göre filtrele",
|
||||
"card_filter_objects_help": "Boş = tüm nesneleri göster.",
|
||||
"card_filter_entities": "Varlıklara göre filtrele (entity_id)",
|
||||
"card_filter_entities_help": "Bu entegrasyonun sensor / binary_sensor varlıklarını seçin. Boş = tümü.",
|
||||
"card_loading_objects": "Nesneler yükleniyor…",
|
||||
"card_load_error": "Nesneler yüklenemedi — WebSocket bağlantısını kontrol edin.",
|
||||
"card_no_tasks_title": "Henüz bakım görevi yok",
|
||||
"card_no_tasks_cta": "→ Bakım panelinde bir tane oluşturun",
|
||||
"no_objects": "Henüz nesne yok.",
|
||||
"action_error": "Eylem başarısız oldu. Lütfen tekrar deneyin.",
|
||||
"area_id_optional": "Alan (isteğe bağlı)",
|
||||
"installation_date_optional": "Kurulum tarihi (isteğe bağlı)",
|
||||
"warranty_expiry_optional": "Garanti bitişi (isteğe bağlı)",
|
||||
"warranty": "Garanti",
|
||||
"warranty_valid_until": "{date} tarihine kadar geçerli",
|
||||
"warranty_expires_in": "{days} gün içinde sona eriyor",
|
||||
"warranty_expired": "süresi doldu",
|
||||
"cal_past_windows": "Geçmiş dönemler",
|
||||
"cal_forward_windows": "Gelecek dönemler",
|
||||
"history_edit_title": "Geçmiş kaydını düzenle",
|
||||
"history_edit_timestamp": "Zaman damgası",
|
||||
"manufacturer": "Üretici",
|
||||
"model": "Model",
|
||||
"area": "Alan",
|
||||
"actions": "Eylemler",
|
||||
"view_mode_label": "Görünüm",
|
||||
"view_cards": "Kart görünümü",
|
||||
"view_table": "Tablo görünümü",
|
||||
"objects_table_columns_label": "Nesne tablosu sütunları",
|
||||
"objects_table_columns_hint": "Nesne tablosu görünümünde hangi sütunların görüneceğini seçin.",
|
||||
"custom_icon_optional": "Simge (isteğe bağlı, örn. mdi:wrench)",
|
||||
"task_enabled": "Görev etkin",
|
||||
"skip_reason_prompt": "Bu görev atlansın mı?",
|
||||
"reason_optional": "Neden (isteğe bağlı)",
|
||||
"reset_date_prompt": "Görev yapıldı olarak işaretlensin mi?",
|
||||
"reset_date_optional": "Son yapılma tarihi (isteğe bağlı, varsayılan bugün)",
|
||||
"notes_label": "Notlar",
|
||||
"documentation_label": "Dokümantasyon",
|
||||
"no_nfc_tag": "— Etiket yok —",
|
||||
"dashboard": "Gösterge Paneli",
|
||||
"tab_today": "Bugün",
|
||||
"palette_placeholder": "Nesne ve görevlerde ara…",
|
||||
"palette_no_results": "Eşleşme yok",
|
||||
"palette_hint": "↑↓ gezinme · Enter açma · Esc kapatma",
|
||||
"today_all_caught_up": "Her şey tamam! Bu hafta vadesi gelen yok.",
|
||||
"today_overdue": "Gecikmiş",
|
||||
"today_due_today": "Bugün vadeli",
|
||||
"today_this_week": "Bu hafta",
|
||||
"settings": "Ayarlar",
|
||||
"settings_features": "Gelişmiş Özellikler",
|
||||
"settings_features_desc": "Gelişmiş özellikleri etkinleştirin veya devre dışı bırakın. Devre dışı bırakmak onları arayüzden gizler ancak verileri silmez.",
|
||||
"feat_adaptive": "Uyarlanabilir Zamanlama",
|
||||
"feat_adaptive_desc": "Bakım geçmişinden en uygun aralıkları öğren",
|
||||
"feat_predictions": "Sensör Tahminleri",
|
||||
"feat_predictions_desc": "Sensör bozulmasından tetiklenme tarihlerini öngör",
|
||||
"feat_seasonal": "Mevsimsel Ayarlamalar",
|
||||
"feat_seasonal_desc": "Aralıkları mevsimsel desenlere göre ayarla",
|
||||
"feat_environmental": "Çevresel Korelasyon",
|
||||
"feat_environmental_desc": "Aralıkları sıcaklık/nemle ilişkilendir",
|
||||
"feat_budget": "Bütçe Takibi",
|
||||
"feat_budget_desc": "Aylık ve yıllık bakım harcamalarını takip et",
|
||||
"feat_groups": "Görev Grupları",
|
||||
"feat_groups_desc": "Görevleri mantıksal gruplar halinde düzenle",
|
||||
"feat_checklists": "Kontrol Listeleri",
|
||||
"feat_checklists_desc": "Görev tamamlama için çok adımlı prosedürler",
|
||||
"settings_general": "Genel",
|
||||
"settings_default_warning": "Varsayılan uyarı günleri",
|
||||
"settings_panel_enabled": "Kenar çubuğu paneli",
|
||||
"settings_panel_title": "Kenar çubuğu paneli başlığı",
|
||||
"settings_notifications": "Bildirimler",
|
||||
"settings_notify_service": "Bildirim servisi",
|
||||
"test_notification": "Test bildirimi",
|
||||
"send_test": "Test gönder",
|
||||
"testing": "Gönderiliyor…",
|
||||
"test_notification_success": "Test bildirimi gönderildi",
|
||||
"test_notification_failed": "Test bildirimi başarısız oldu",
|
||||
"settings_notify_due_soon": "Vade yaklaştığında bildir",
|
||||
"settings_notify_overdue": "Geciktiğinde bildir",
|
||||
"settings_notify_triggered": "Tetiklendiğinde bildir",
|
||||
"settings_interval_hours": "Tekrar aralığı (saat, 0 = bir kez)",
|
||||
"settings_quiet_hours": "Sessiz saatler",
|
||||
"settings_quiet_start": "Başlangıç",
|
||||
"settings_quiet_end": "Bitiş",
|
||||
"settings_max_per_day": "Günlük en fazla bildirim (0 = sınırsız)",
|
||||
"settings_bundling": "Bildirimleri grupla",
|
||||
"settings_bundle_threshold": "Gruplama eşiği",
|
||||
"settings_reminder_leads": "Ek hatırlatmalar (vadeden gün önce)",
|
||||
"settings_reminder_leads_hint": "Virgülle ayrılmış süreler, örn. 14, 3, 0 — eşleşen her günde bir ek hatırlatma gönderilir. Boş = kapalı.",
|
||||
"settings_actions": "Mobil Eylem Düğmeleri",
|
||||
"settings_action_complete": "'Tamamla' düğmesini göster",
|
||||
"settings_action_skip": "'Atla' düğmesini göster",
|
||||
"settings_action_snooze": "'Ertele' düğmesini göster",
|
||||
"settings_weekly_digest": "Haftalık özet",
|
||||
"settings_weekly_digest_hint": "Vadesi gelen görevler olduğunda pazartesi sabahı tek bir özet bildirimi.",
|
||||
"settings_warranty_reminder": "Garanti bitiş hatırlatması",
|
||||
"settings_warranty_reminder_days": "Bitişten gün önce",
|
||||
"settings_warranty_reminder_hint": "Bir nesnenin garantisinin bitmesine bu kadar gün kaldığında bir kez bildir.",
|
||||
"settings_snooze_hours": "Erteleme süresi (saat)",
|
||||
"settings_budget": "Bütçe",
|
||||
"settings_currency": "Para birimi",
|
||||
"settings_budget_monthly": "Aylık bütçe",
|
||||
"settings_budget_yearly": "Yıllık bütçe",
|
||||
"settings_budget_alerts": "Bütçe uyarıları",
|
||||
"settings_budget_threshold": "Uyarı eşiği (%)",
|
||||
"settings_import_export": "İçe / Dışa Aktarma",
|
||||
"settings_export_json": "JSON dışa aktar",
|
||||
"settings_export_yaml": "YAML dışa aktar",
|
||||
"settings_export_csv": "CSV dışa aktar",
|
||||
"settings_import_csv": "CSV içe aktar",
|
||||
"settings_import_placeholder": "JSON veya CSV içeriğini buraya yapıştırın…",
|
||||
"settings_import_btn": "İçe aktar",
|
||||
"settings_import_success": "{count} nesne başarıyla içe aktarıldı.",
|
||||
"settings_export_success": "Dışa aktarma indirildi.",
|
||||
"settings_saved": "Ayar kaydedildi.",
|
||||
"settings_include_history": "Geçmişi dahil et",
|
||||
"settings_export_selection": "Seçili nesnelerle sınırla (isteğe bağlı)",
|
||||
"settings_docs_archive": "Belge arşivi (dosyalarla birlikte)",
|
||||
"settings_docs_archive_hint": "JSON/YAML/CSV dışa aktarmaları yalnızca ayarları içerir. Bu ZIP, geri yüklemenin eksiksiz olması için yüklenen dosya içeriklerini de kapsar.",
|
||||
"settings_docs_export_btn": "Belge ZIP'ini indir",
|
||||
"settings_docs_import_btn": "Belge ZIP'ini geri yükle",
|
||||
"settings_docs_import_success": "Geri yüklendi: {blobs} dosya, {docs} belge",
|
||||
"sort_alphabetical": "Alfabetik",
|
||||
"sort_due_soonest": "En yakın vade",
|
||||
"sort_task_count": "Görev sayısı",
|
||||
"sort_area": "Alan",
|
||||
"sort_assigned_user": "Atanan kullanıcı",
|
||||
"sort_group": "Grup",
|
||||
"groupby_none": "Gruplama yok",
|
||||
"groupby_area": "Alana göre",
|
||||
"groupby_group": "Gruba göre",
|
||||
"groupby_user": "Kullanıcıya göre",
|
||||
"filter_label": "Filtre",
|
||||
"user_label": "Kullanıcı",
|
||||
"sort_label": "Sırala",
|
||||
"group_by_label": "Grupla",
|
||||
"state_value_help": "HA durum değerini kullanın (genellikle küçük harf, örn. \"on\"/\"off\"). Büyük/küçük harf kaydederken normalleştirilir.",
|
||||
"target_changes_help": "Tetikleyici çalışmadan önceki eşleşen geçiş sayısı (varsayılan: 1).",
|
||||
"qr_print_title": "QR kodlarını yazdır",
|
||||
"qr_print_desc": "Kesip ekipmanınıza yapıştırmak için yazdırılabilir bir QR kodu sayfası oluşturun.",
|
||||
"qr_print_load": "Nesneleri yükle",
|
||||
"qr_print_filter": "Filtre",
|
||||
"qr_print_objects": "Nesneler",
|
||||
"qr_print_actions": "Eylemler",
|
||||
"qr_print_url_mode": "Bağlantı türü",
|
||||
"qr_print_estimate": "Tahmini QR kodu sayısı",
|
||||
"qr_print_over_limit": "üst sınır 200, filtreyi daraltın",
|
||||
"qr_print_generate": "QR kodları oluştur",
|
||||
"qr_print_generating": "Oluşturuluyor…",
|
||||
"qr_print_ready": "QR kodları hazır",
|
||||
"qr_print_print_button": "Yazdır",
|
||||
"qr_print_empty": "Oluşturulacak bir şey yok",
|
||||
"qr_action_skip": "Atla",
|
||||
"vacation_title": "Tatil modu",
|
||||
"vacation_active": "etkin",
|
||||
"vacation_ended": "sona erdi",
|
||||
"vacation_desc": "Bir tatil planlayın: bildirimler bu dönem artı tampon günler boyunca duraklatılır. Belirli görevleri yine de bildirime dahil edebilirsiniz.",
|
||||
"vacation_enable": "Tatil modunu etkinleştir",
|
||||
"vacation_start": "Başlangıç",
|
||||
"vacation_end": "Bitiş",
|
||||
"vacation_buffer": "Tampon (gün)",
|
||||
"vacation_exempt_title": "Tatilde yine de bildir",
|
||||
"vacation_exempt_desc": "Tatil sırasında yine de bildirim göndermesi gereken görevleri seçin (örn. kritik havuz kimyası).",
|
||||
"vacation_load_tasks": "Görevleri yükle",
|
||||
"vacation_preview_btn": "Önizlemeyi göster",
|
||||
"vacation_preview_affected": "görev etkileniyor",
|
||||
"vacation_event_due_soon": "vadesi yaklaşacak",
|
||||
"vacation_event_overdue": "gecikecek",
|
||||
"vacation_event_triggered_est": "sensör tetiklemesi olası",
|
||||
"vacation_sensor_based": "(sensöre dayalı)",
|
||||
"vacation_action_notify": "Yine de bildir",
|
||||
"vacation_action_unsilence": "Yeniden sustur",
|
||||
"vacation_marked_complete": "Tamamlandı olarak işaretlendi",
|
||||
"vacation_marked_skip": "Atlandı",
|
||||
"vacation_end_now": "Tatili şimdi bitir",
|
||||
"add": "Ekle",
|
||||
"show_stats": "İstatistik + grafikleri göster",
|
||||
"hide_stats": "İstatistikleri gizle",
|
||||
"adaptive_no_data": "Uyarlanabilir analiz için henüz yeterli tamamlama geçmişi yok. Aralık önerilerini ve güvenilirlik grafiklerini açmak için bu görevi birkaç kez daha tamamlayın.",
|
||||
"suggestion_applied": "Önerilen aralık uygulandı",
|
||||
"vacation_mode": "Tatil modu",
|
||||
"vacation_status_active": "Şu an etkin",
|
||||
"vacation_status_scheduled": "Planlandı",
|
||||
"vacation_status_inactive": "Devre dışı",
|
||||
"vacation_end_now_confirm": "Tatil hemen bitirilsin mi?",
|
||||
"vacation_exempt_count": "muaf",
|
||||
"vacation_advanced": "Gelişmiş…",
|
||||
"vacation_open_panel": "Panelde aç",
|
||||
"enable": "Etkinleştir",
|
||||
"saved": "Kaydedildi",
|
||||
"budget_monthly_set": "Aylık ayarla",
|
||||
"budget_yearly_set": "Yıllık ayarla",
|
||||
"budget_advanced": "Para birimi, uyarılar…",
|
||||
"budget_open_panel": "Panelde aç",
|
||||
"groups_empty": "Henüz grup yok.",
|
||||
"group_new_placeholder": "Grup ekle…",
|
||||
"group_delete_confirm": "\"{name}\" grubu silinsin mi?",
|
||||
"groups_manage_tasks": "Görev atamalarını yönet…",
|
||||
"groups_open_panel": "Panelde aç",
|
||||
"unassigned": "Atanmamış",
|
||||
"no_area": "Alan yok",
|
||||
"has_overdue": "Gecikmiş görevi var",
|
||||
"object": "Nesne",
|
||||
"settings_panel_access": "Panel erişimi",
|
||||
"settings_panel_access_desc": "Yöneticiler her zaman tam erişime sahiptir. Oluşturma, düzenleme ve silmeyi belirli yönetici olmayan kullanıcılara devretmek için bunu açın ve onları aşağıdan seçin — diğer herkes yalnızca Tamamla ve Atla görür.",
|
||||
"settings_operator_write": "Seçili kullanıcılara oluşturma, düzenleme ve silme izni ver",
|
||||
"settings_operator_write_desc": "Kapalı: içeriği yalnızca yöneticiler değiştirebilir. Açık: aşağıda seçilen kullanıcılar da tam erişim alır.",
|
||||
"no_non_admin_users": "Yönetici olmayan kullanıcı bulunamadı. Ayarlar → Kişiler bölümünden ekleyin.",
|
||||
"owner_label": "Sahip",
|
||||
"feat_completion_actions": "Tamamlama eylemleri",
|
||||
"feat_completion_actions_desc": "Görev başına tamamlamada HA eylemi + önceden ayarlı değerlerle hızlı tamamlama QR'ı.",
|
||||
"on_complete_action_title": "Tamamlandığında: HA eylemi tetikle (isteğe bağlı)",
|
||||
"on_complete_action_desc": "Görev tamamlandığında bir HA servisi çağırır — örn. cihazdaki bir sayacı sıfırlar.",
|
||||
"on_complete_action_service": "Servis",
|
||||
"on_complete_action_target": "Hedef varlık",
|
||||
"on_complete_action_target_hint": "Not: varlık alan adı servisle eşleşmelidir — örn. 'button.press' yalnızca button.* üzerinde, 'counter.increment' yalnızca counter.* üzerinde, 'input_button.press' yalnızca input_button.* üzerinde çalışır. Eşleşmezse eylem sessizce başarısız olur (HA günlüğü: 'Referenced entities ... missing or not currently available').",
|
||||
"on_complete_action_data": "Veri (JSON, isteğe bağlı)",
|
||||
"on_complete_action_test": "Yapılandırmayı doğrula",
|
||||
"on_complete_action_test_success": "✓ Yapılandırma geçerli (eylem yalnızca görev tamamlandığında çalışır)",
|
||||
"on_complete_action_test_failed": "Başarısız",
|
||||
"quick_complete_defaults_title": "Hızlı tamamlama varsayılanları (QR taramaları için, isteğe bağlı)",
|
||||
"quick_complete_defaults_desc": "Hızlı tamamlama QR taramaları için önceden ayarlı değerler. Bunlar olmadan QR, tamamlama penceresini açar.",
|
||||
"quick_complete_defaults_notes": "Notlar",
|
||||
"quick_complete_defaults_cost": "Maliyet",
|
||||
"quick_complete_defaults_duration": "Süre (dakika)",
|
||||
"quick_complete_defaults_feedback_none": "Geri bildirim yok",
|
||||
"quick_complete_defaults_feedback_needed": "Gerekliydi",
|
||||
"quick_complete_defaults_feedback_not_needed": "Gerekli değildi",
|
||||
"quick_complete_success": "Hızlıca tamamlandı olarak işaretlendi",
|
||||
"show_all_objects": "Tüm nesneleri göster",
|
||||
"show_all_tasks": "Filtreyi temizle — tüm görevleri göster",
|
||||
"filter_to_overdue": "Görev listesini yalnızca gecikmişlere filtrele",
|
||||
"filter_to_due_soon": "Görev listesini yalnızca vadesi yaklaşanlara filtrele",
|
||||
"filter_to_triggered": "Görev listesini yalnızca tetiklenenlere filtrele",
|
||||
"open_task": "Görevi aç",
|
||||
"show_details": "Geçmiş + istatistikleri göster",
|
||||
"hide_details": "Ayrıntıları gizle",
|
||||
"history_empty": "Henüz geçmiş yok.",
|
||||
"history_edit_button": "Kaydı düzenle",
|
||||
"total_cost": "Toplam maliyet",
|
||||
"times_performed": "Yapılma sayısı",
|
||||
"older_entries": "daha eski",
|
||||
"open_in_panel": "Bakım panelinde aç",
|
||||
"skip_reason": "Atlama nedeni (isteğe bağlı)",
|
||||
"reset_to_date": "Son yapılmayı şu tarihe sıfırla",
|
||||
"delete_task_confirm": "Bu görev ve geçmişi silinsin mi?",
|
||||
"delete_object_confirm": "Bu nesne ve tüm görevleri silinsin mi?",
|
||||
"loading": "Yükleniyor…",
|
||||
"archive": "Arşivle",
|
||||
"undo": "Geri al",
|
||||
"task_archived": "Görev arşivlendi",
|
||||
"object_archived": "Nesne arşivlendi",
|
||||
"unarchive": "Arşivden çıkar",
|
||||
"archived": "Arşivlendi",
|
||||
"show_archived": "Arşivlenenleri göster",
|
||||
"hide_archived": "Arşivlenenleri gizle",
|
||||
"confirm_archive_object": "Bu nesne ve görevleri arşivlensin mi? Geçmişleri korunur ve daha sonra arşivden çıkarılabilirler.",
|
||||
"settings_archive": "Arşiv ve Saklama",
|
||||
"settings_archive_desc": "Tamamlanmış tek seferlik görevleri silmeden emekliye ayırın. Arşivlenen öğeler gizlenir ve pasiftir ancak geçmişlerini ve maliyetlerini korurlar.",
|
||||
"settings_archive_oneoff_days": "Tamamlanan tek seferlik görevleri şu kadar gün sonra otomatik arşivle (0 = kapalı)",
|
||||
"settings_delete_archived_oneoff_days": "Arşivlenen tek seferlik görevleri şu kadar gün sonra otomatik sil (0 = asla)",
|
||||
"archive_object": "Nesneyi arşivle",
|
||||
"unarchive_object": "Nesneyi arşivden çıkar",
|
||||
"documents": "Belgeler",
|
||||
"documents_empty": "Henüz belge yok.",
|
||||
"doc_upload": "Dosya yükle",
|
||||
"doc_uploading": "Yükleniyor…",
|
||||
"doc_add_link": "Bağlantı ekle",
|
||||
"doc_link_url": "URL (https://…)",
|
||||
"doc_link_title": "Başlık (isteğe bağlı)",
|
||||
"doc_open": "Aç",
|
||||
"doc_delete_confirm": "\"{name}\" silinsin mi?",
|
||||
"doc_too_large": "Dosya çok büyük (en fazla 25 MB).",
|
||||
"doc_upload_failed": "Yükleme başarısız oldu.",
|
||||
"completion_photo_optional": "Tamamlama fotoğrafı (isteğe bağlı)",
|
||||
"add_photo": "Fotoğraf ekle",
|
||||
"uploading": "Yükleniyor…",
|
||||
"remove": "Kaldır",
|
||||
"doc_deduped": "Zaten başka bir yerde saklı — paylaşıldı, ek alan kullanılmadı.",
|
||||
"doc_dup_in_object": "Bu dosya zaten bu nesneye ekli.",
|
||||
"doc_link_invalid": "Yalnızca http/https bağlantılarına izin verilir.",
|
||||
"doc_cat_manual": "Kılavuz",
|
||||
"doc_cat_warranty": "Garanti",
|
||||
"doc_cat_invoice": "Fatura",
|
||||
"doc_cat_spare_parts": "Yedek parçalar",
|
||||
"doc_cat_photo": "Fotoğraf",
|
||||
"doc_cat_other": "Diğer",
|
||||
"doc_link_badge": "Bağlantı",
|
||||
"doc_storage_title": "Belge depolama",
|
||||
"doc_storage_saved": "Tekilleştirmeyle kazanıldı",
|
||||
"doc_storage_refresh": "Yenile",
|
||||
"doc_download": "İndir",
|
||||
"doc_close": "Kapat",
|
||||
"doc_camera": "Fotoğraf çek",
|
||||
"doc_drop_hint": "Dosyaları buraya bırakın",
|
||||
"doc_task_none": "Bu göreve bağlı belge yok.",
|
||||
"doc_link_existing": "Belge bağla…",
|
||||
"doc_attach": "Bağla",
|
||||
"doc_unlink": "Bağlantıyı kaldır",
|
||||
"doc_page": "Sayfa",
|
||||
"chart_range_7d": "7g",
|
||||
"chart_range_30d": "30g",
|
||||
"chart_range_90d": "90g",
|
||||
"chart_range_1y": "1y",
|
||||
"chart_since_service": "son servisten beri",
|
||||
"chart_no_stats": "Bu varlık için uzun dönem istatistiği yok — yalnızca bakım olayı değerleri gösteriliyor",
|
||||
"auto_complete_on_recovery": "Sensör düzelince otomatik tamamla",
|
||||
"auto_complete_on_recovery_help": "Tetikleyici kendiliğinden temizlendiğinde bir tamamlama kaydeder (son yapılmayı ayarlar) — örn. tuz dolduruldu, filtre değiştirildi.",
|
||||
"doc_search": "Belgelerde ara…",
|
||||
"doc_search_none": "Eşleşen belge yok",
|
||||
"link_device_optional": "Mevcut bir cihaza bağla (isteğe bağlı)",
|
||||
"parent_object_optional": "Üst nesne (isteğe bağlı)",
|
||||
"parent_none": "(Üst nesne yok)",
|
||||
"paused": "Duraklatıldı",
|
||||
"pause_object": "Duraklat",
|
||||
"resume_object": "Devam ettir",
|
||||
"pause_until_prompt": "Bu nesnenin zamanlamalarını dondurur — devam ettirilene kadar hiçbir şeyin vadesi gelmez ve bildirim gönderilmez. İsteğe bağlı olarak bir otomatik devam tarihi ayarlayın.",
|
||||
"pause_until_label": "Devam tarihi (isteğe bağlı)",
|
||||
"object_paused": "Nesne duraklatıldı",
|
||||
"object_resumed": "Nesne devam ettirildi — zamanlamalar yeniden başlatıldı",
|
||||
"object_paused_badge": "Duraklatıldı",
|
||||
"paused_until_label": "şu tarihe kadar",
|
||||
"replace_object": "Değiştir…",
|
||||
"replace_object_prompt": "Bu nesneyi emekliye ayırın ve bir halef oluşturun. Geçmiş ve maliyetler eski nesnede arşivli kalır; görevler ve belgeler yenisine taşınır, sayaçlar sıfırdan başlar.",
|
||||
"replace_name_label": "Yeni nesne adı",
|
||||
"object_replaced": "Nesne değiştirildi — halefi oluşturuldu",
|
||||
"reading_unit_label": "Okuma birimi (örn. kWh, m³)",
|
||||
"reading_unit_help": "Bu görevi tamamlarken kaydedilen değerin yanında gösterilir.",
|
||||
"reading_value_label": "Okuma değeri",
|
||||
"reading_label": "Okuma",
|
||||
"settings_templates_label": "Şablon galerisi",
|
||||
"settings_templates_hint": "Asla ihtiyaç duymayacağınız şablonların işaretini kaldırın — \"Şablondan\" seçicilerinden (panel ve yapılandırma akışı) kaybolurlar. Başka hiçbir şey değişmez; istediğiniz zaman yeniden etkinleştirebilirsiniz.",
|
||||
"worksheet": "Çalışma sayfası",
|
||||
"worksheet_scan_view": "Görevi açmak için tarayın",
|
||||
"worksheet_scan_complete": "Tamamlamak için tarayın",
|
||||
"worksheet_manual_excerpt": "Kılavuz alıntısı",
|
||||
"worksheet_pages": "sayfa",
|
||||
"worksheet_printed": "Yazdırıldı",
|
||||
"worksheet_never": "Hiç",
|
||||
"card_all_caught_up": "Her şey tamam — ilgilenilmesi gereken bir şey yok",
|
||||
"postpone": "Ötele",
|
||||
"postpone_date_prompt": "Bu tekrar hangi tarihe ötelensin?",
|
||||
"postpone_date_label": "Yeni vade tarihi",
|
||||
"postponed": "Ötelendi",
|
||||
"postponed_to": "Şu tarihe ötelendi",
|
||||
"season_window_label": "Mevsim penceresi (aylar)",
|
||||
"season_window_hint": "Yalnızca seçili aylarda vadesi gelir; sezon dışı tarihler bir sonraki etkin aya kayar. Hiçbiri = tüm yıl.",
|
||||
"series_end_label": "Bitiş",
|
||||
"series_end_never": "Asla (süresiz tekrar eder)",
|
||||
"series_end_after_count": "Belirli bir sayıdan sonra",
|
||||
"series_end_until": "Bir tarihte",
|
||||
"series_end_count_label": "Tekrar sayısı",
|
||||
"series_end_until_label": "Bitiş tarihi",
|
||||
"parts_section": "Parçalar ve sarf malzemeleri",
|
||||
"part_add": "Parça ekle",
|
||||
"part_name": "Ad",
|
||||
"part_vendor": "Üretici",
|
||||
"part_storage_location": "Saklama yeri",
|
||||
"part_product_url": "Ürün URL'si",
|
||||
"part_unit": "Birim",
|
||||
"part_cost": "Birim fiyat",
|
||||
"part_stock": "Stok",
|
||||
"part_reorder_threshold": "Sipariş eşiği",
|
||||
"part_restock_quantity": "Stok yenileme miktarı",
|
||||
"part_auto_buy": "Azaldığında otomatik satın alma görevi oluştur",
|
||||
"part_restock": "Stoku ayarla",
|
||||
"restock_quantity_label": "Satın alınan miktar",
|
||||
"consumes_parts_label": "Parça tüketir",
|
||||
"parts_load_failed": "Bu nesnenin parçaları yüklenemedi — parça tüketimi seçenekleri şu anda kullanılamıyor.",
|
||||
"adopt_problem_button": "Sorun sensörlerini devral",
|
||||
"adopt_problem_title": "Sorun sensörlerini devral",
|
||||
"adopt_problem_hint": "HA sorun sensörlerini (yazıcı hataları, filtre uyarıları, düşük pil) sorun etkinken tetiklenen ve sorun çözülünce kendini temizleyen bakım görevlerine dönüştürün.",
|
||||
"adopt_problem_none": "Halihazırda takip edilmeyen sorun sensörü bulunamadı.",
|
||||
"adopt_problem_active": "etkin",
|
||||
"adopt_problem_ok": "tamam",
|
||||
"adopt_problem_new_object": "(yeni)",
|
||||
"adopt_problem_adopt": "Seçilenleri devral",
|
||||
"adopt_problem_done": "{tasks} sorun sensörü devralındı",
|
||||
"views_label": "Görünümler",
|
||||
"views_none": "— Görünüm yok —",
|
||||
"views_manage": "Görünümleri kaydet / yönet",
|
||||
"views_dialog_title": "Kayıtlı görünümler",
|
||||
"views_dialog_hint": "Geçerli filtreleri herkesin yeniden kullanabileceği adlandırılmış bir görünüm olarak kaydedin.",
|
||||
"views_name_placeholder": "Görünüm adı",
|
||||
"views_save_current": "Geçerli filtreleri kaydet",
|
||||
"views_none_yet": "Henüz kayıtlı görünüm yok.",
|
||||
"close": "Kapat",
|
||||
"trigger_hint_now": "Sensör şu anda {value} değerini okuyor.",
|
||||
"trigger_hint_above": "Görev, değer {target} üzerine çıktığında tetiklenir.",
|
||||
"trigger_hint_below": "Değer {target} altına düştüğünde tetiklenir.",
|
||||
"trigger_hint_counter_delta": "Mevcut okumadan ({value}) itibaren sayar: {due} değerinde vadesi gelir (+{target}) ve sayım her tamamlamadan sonra yeniden başlar.",
|
||||
"trigger_hint_counter_delta_edit": "Son tamamlamadan bu yana kullanımı sayar: +{target} sonrasında vadesi gelir; sayım her tamamlamadan sonra yeniden başlar.",
|
||||
"trigger_hint_counter_abs": "Sensör {target} değerine ulaştığında görevin vadesi gelir.",
|
||||
"trigger_hint_runtime": "Görevin vadesi, toplam {hours} saatlik çalışma süresinden sonra gelir; sayaç her tamamlamadan sonra yeniden başlar.",
|
||||
"trigger_hint_state_change": "Görevin vadesi {count} durum değişikliğinden sonra gelir.",
|
||||
"trigger_hint_state_change_to": "Görevin vadesi, “{state}” durumuna {count} geçişten sonra gelir.",
|
||||
"trigger_hint_state_now": "Mevcut durum: {value}.",
|
||||
"adopt_problem_part": "Kullanılan parça: {name}",
|
||||
"label_filter": "Etiket",
|
||||
"all_labels": "Tüm etiketler",
|
||||
"settings_notify_scope": "Yalnızca şu görünüm için bildir",
|
||||
"settings_notify_scope_all": "Tüm görevler",
|
||||
"settings_notify_scope_hint": "Yalnızca seçili kayıtlı görünümün etiket/kullanıcı filtreleriyle eşleşen görevler hatırlatma gönderir. Görünümün durum, sıralama ve gruplaması burada dikkate alınmaz.",
|
||||
"card_saved_view": "Kayıtlı görünüm",
|
||||
"card_saved_view_none": "Yok",
|
||||
"card_saved_view_help": "Görünümün durum, kullanıcı ve etiket filtrelerini yukarıdaki filtrelerin üzerine uygular. Görünümün sıralaması ve gruplaması panel görüntüleme ayarlarıdır ve kartta uygulanmaz.",
|
||||
"doc_part_none": "Bu parçaya bağlı belge yok.",
|
||||
"settings_templates_toggle_group": "Bu gruptaki tüm şablonları etkinleştir veya devre dışı bırak",
|
||||
"setups_button": "Önerilen kurulumlar",
|
||||
"setups_title": "Önerilen kurulumlar (Beta)",
|
||||
"setups_hint": "Sarf malzemesi sensörleri bakım görevlerini yönetebilecek, desteklenen entegrasyonlara ait cihazlar. Devralma, nesneyi oluşturur ve her görevi sensörüne bağlar — sarf malzemesi azalınca tetiklenir ve değişimden sonra kendini çözer.",
|
||||
"setups_none": "Bağlanmamış sarf malzemesi sensörü olan desteklenen cihaz bulunamadı.",
|
||||
"setups_adopt": "Seçilenleri kur",
|
||||
"setups_done": "{tasks} sensöre bağlı görev oluşturuldu.",
|
||||
"complete_parts_used": "Bu sefer kullanılan parçalar",
|
||||
"part_delete_confirm": "'{name}' parçası silinsin mi? Stok takibi, görev bağlantıları ve açık satın alma hatırlatmaları kaldırılacak.",
|
||||
"baseline_start_value": "Başlangıç okuması (isteğe bağlı)",
|
||||
"baseline_start_help": "Sayım bu okumadan başlar. Mevcut değerden saymak için boş bırakın; son servisteki okumayı girerseniz o zamandan beri olan kullanım da sayılır.",
|
||||
"setups_baseline_hint": "son servisteki okuma (isteğe bağlı)",
|
||||
"baseline_start_help_edit": "Mevcut sayımı korumak için boş bırakın. Bir değer girmek sayımı yeniden sabitler (örn. son servisteki okuma).",
|
||||
"baseline_current_effective": "Şu anda geçerli başlangıç değeri: {value}",
|
||||
"runtime_on_states": "Etkin durumlar (virgülle ayrılmış)",
|
||||
"runtime_on_states_help": "Çalışıyor sayılan durumlar — varsayılan: on. Örn. mowing, cleaning, printing. Bir öznitelik seçiliyse onun değerleri eşleştirilir.",
|
||||
"setups_target_new": "Yeni oluştur: {name}",
|
||||
"schedule_preview_title": "Sonraki tarihler",
|
||||
"schedule_preview_ontime": "Zamanında tamamlama varsayılarak.",
|
||||
"schedule_preview_ends": "(seri sona erer)",
|
||||
"adopt_problem_responsible": "Devralınan tüm görevler için sorumlu kullanıcı (isteğe bağlı)",
|
||||
"adopt_problem_configure": "Yapılandır",
|
||||
"history_auto": "Otomatik",
|
||||
"battery_fleet_title": "Pil filosu",
|
||||
"battery_fleet_none_low": "Tüm piller iyi durumda — değiştirilecek bir şey yok.",
|
||||
"battery_fleet_buy_now": "Şimdi satın al",
|
||||
"battery_fleet_soon": "Yakında gerekli",
|
||||
"battery_fleet_soon_hint": "Son değişim tarihinden tahmin edildi — önceden sipariş verin.",
|
||||
"battery_fleet_mark_all": "Tümünü değiştirildi olarak işaretle",
|
||||
"battery_fleet_mark_one": "Bu pili değiştirildi olarak işaretle",
|
||||
"battery_fleet_offline": "çevrimdışı",
|
||||
"battery_fleet_trigger_lost": "Bu görevin sensör tetikleyicisi kayboldu — tetiklenmeyecek ve otomatik tamamlanmayacak.",
|
||||
"battery_fleet_repair": "Onar",
|
||||
"battery_fleet_exclude": "Filodan hariç tut",
|
||||
"battery_fleet_excluded": "Hariç tutuldu",
|
||||
"battery_fleet_include": "Yeniden takip et",
|
||||
"battery_fleet_total": "{n} pil takip ediliyor",
|
||||
"battery_fleet_setup_button": "Pil filosu",
|
||||
"battery_fleet_setup_done": "Pil filosu kuruldu — tek bir görev tüm pillerinizi takip ediyor.",
|
||||
"update_banner": "Sunucuda Maintenance Supporter'ın daha yeni bir sürümü var — paneli güncellemek için sayfayı yeniden yükleyin.",
|
||||
"update_reload": "Yeniden yükle"
|
||||
}
|
||||
+125
@@ -0,0 +1,125 @@
|
||||
import{a as f}from"./chunk-Q7DQUCT7.js";import{a as h,b as o,d as b,e as m,f as g,g as n,h as _,i as a,k as v,s as p}from"./chunk-X7OW5OLQ.js";import{a as i}from"./chunk-PEGRBZWY.js";var s=class extends m{constructor(){super(...arguments);this._config={type:""};this._status=null;this._busy=!1;this._error="";this._localMonthly="";this._localYearly="";this._dirty=!1;this._loaded=!1}setConfig(t){this._config=t}getCardSize(){return 2}get _lang(){return this.hass?.language||"en"}get _isAdmin(){return this.hass?.user?.is_admin??!0}updated(t){super.updated(t),t.has("hass")&&this.hass&&!this._loaded&&(this._loaded=!0,this._load(),v(this._lang).then(()=>this.requestUpdate()))}async _load(){try{let t=await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/budget_status"});this._status=t,this._localMonthly=t.monthly_budget?String(t.monthly_budget):"",this._localYearly=t.yearly_budget?String(t.yearly_budget):"",this._dirty=!1}catch(t){this._error=p(t,this._lang)}}async _save(){if(this._isAdmin){this._busy=!0,this._error="";try{let t=parseFloat(this._localMonthly),e=parseFloat(this._localYearly),r={};!isNaN(t)&&t>=0&&(r.budget_monthly=t),!isNaN(e)&&e>=0&&(r.budget_yearly=e),await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/global/update",settings:r}),await this._load()}catch(t){this._error=p(t,this._lang)}finally{this._busy=!1}}}_onDeepLink(){history.pushState(null,"","/maintenance-supporter?ms_action=open_budget"),window.dispatchEvent(new CustomEvent("location-changed"))}render(){let t=this._lang,e=this._status;if(!e)return o`<ha-card><div class="loading">${a("loading",t)||"Loading\u2026"}</div></ha-card>`;let r=e.currency_symbol||_,l=e.monthly_budget?Math.min(100,(e.monthly_spent||0)/e.monthly_budget*100):0,d=e.yearly_budget?Math.min(100,(e.yearly_spent||0)/e.yearly_budget*100):0,u=l>=100?"danger":l>=80?"warning":"ok",y=d>=100?"danger":d>=80?"warning":"ok";return o`
|
||||
<ha-card>
|
||||
<div class="card-content">
|
||||
<div class="header">
|
||||
<div class="title">
|
||||
<span class="emoji">💰</span>
|
||||
<span>${this._config.title||a("settings_budget",t)||"Budget"}</span>
|
||||
</div>
|
||||
<span class="currency">${r}</span>
|
||||
</div>
|
||||
|
||||
${this._error?o`<div class="error">${this._error}</div>`:b}
|
||||
|
||||
<div class="track">
|
||||
<div class="track-label-row">
|
||||
<label>${a("budget_monthly",t)||"Monthly"}</label>
|
||||
<span class="track-numbers ${u}">
|
||||
${(e.monthly_spent||0).toFixed(0)} / ${(e.monthly_budget||0).toFixed(0)} ${r}
|
||||
</span>
|
||||
</div>
|
||||
<div class="bar"><div class="bar-fill ${u}" style="width:${l}%"></div></div>
|
||||
</div>
|
||||
|
||||
<div class="track">
|
||||
<div class="track-label-row">
|
||||
<label>${a("budget_yearly",t)||"Yearly"}</label>
|
||||
<span class="track-numbers ${y}">
|
||||
${(e.yearly_spent||0).toFixed(0)} / ${(e.yearly_budget||0).toFixed(0)} ${r}
|
||||
</span>
|
||||
</div>
|
||||
<div class="bar"><div class="bar-fill ${y}" style="width:${d}%"></div></div>
|
||||
</div>
|
||||
|
||||
${this._isAdmin?o`
|
||||
<div class="inputs-row">
|
||||
<div class="input-field">
|
||||
<label>${a("budget_monthly_set",t)||"Set monthly"}</label>
|
||||
<div class="input-wrap">
|
||||
<input type="number" min="0" step="1"
|
||||
.value=${this._localMonthly}
|
||||
?disabled=${this._busy}
|
||||
@input=${c=>{this._localMonthly=c.target.value,this._dirty=!0}} />
|
||||
<span class="input-suffix">${r}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-field">
|
||||
<label>${a("budget_yearly_set",t)||"Set yearly"}</label>
|
||||
<div class="input-wrap">
|
||||
<input type="number" min="0" step="1"
|
||||
.value=${this._localYearly}
|
||||
?disabled=${this._busy}
|
||||
@input=${c=>{this._localYearly=c.target.value,this._dirty=!0}} />
|
||||
<span class="input-suffix">${r}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<button class="btn ${this._dirty?"primary":"muted"}"
|
||||
@click=${this._save}
|
||||
?disabled=${this._busy||!this._dirty}>
|
||||
<ha-icon icon="${this._dirty?"mdi:content-save":"mdi:check"}"></ha-icon>
|
||||
${this._dirty?a("save",t)||"Save":a("saved",t)||"Saved"}
|
||||
</button>
|
||||
<button class="btn link" @click=${this._onDeepLink}>
|
||||
${a("budget_advanced",t)||"Currency, alerts\u2026"}
|
||||
</button>
|
||||
</div>
|
||||
`:o`
|
||||
<button class="btn link" @click=${this._onDeepLink}>
|
||||
${a("budget_open_panel",t)||"Open in panel"}
|
||||
</button>
|
||||
`}
|
||||
</div>
|
||||
</ha-card>
|
||||
`}};s.styles=[f,h`
|
||||
.currency {
|
||||
font-size: 14px; font-weight: 600;
|
||||
color: var(--secondary-text-color);
|
||||
background: var(--secondary-background-color);
|
||||
padding: 2px 10px; border-radius: 999px;
|
||||
}
|
||||
.track { display: flex; flex-direction: column; gap: 4px; }
|
||||
.track-label-row {
|
||||
display: flex; align-items: center; justify-content: space-between;
|
||||
}
|
||||
.track-label-row label {
|
||||
font-size: 12px; color: var(--secondary-text-color);
|
||||
text-transform: uppercase; letter-spacing: 0.5px;
|
||||
}
|
||||
.track-numbers { font-size: 13px; font-weight: 600; }
|
||||
.track-numbers.ok { color: var(--primary-text-color); }
|
||||
.track-numbers.warning { color: #ff9800; }
|
||||
.track-numbers.danger { color: var(--error-color, #f44336); }
|
||||
.bar {
|
||||
height: 6px; background: var(--secondary-background-color);
|
||||
border-radius: 3px; overflow: hidden;
|
||||
}
|
||||
.bar-fill { height: 100%; transition: width 0.3s; border-radius: 3px; }
|
||||
.bar-fill.ok { background: var(--primary-color); }
|
||||
.bar-fill.warning { background: #ff9800; }
|
||||
.bar-fill.danger { background: var(--error-color, #f44336); }
|
||||
.inputs-row {
|
||||
display: grid; grid-template-columns: 1fr 1fr; gap: 8px;
|
||||
padding-top: 4px; border-top: 1px solid var(--divider-color);
|
||||
}
|
||||
.input-field { display: flex; flex-direction: column; gap: 4px; }
|
||||
.input-field label {
|
||||
font-size: 11px; color: var(--secondary-text-color);
|
||||
text-transform: uppercase; letter-spacing: 0.3px;
|
||||
}
|
||||
.input-wrap { position: relative; display: flex; align-items: center; }
|
||||
.input-wrap input {
|
||||
flex: 1; padding: 6px 32px 6px 8px; font-size: 13px;
|
||||
background: var(--secondary-background-color, #2c2c2c);
|
||||
color: var(--primary-text-color);
|
||||
border: 1px solid var(--divider-color); border-radius: 6px;
|
||||
font-family: inherit;
|
||||
}
|
||||
.input-suffix {
|
||||
position: absolute; right: 8px;
|
||||
color: var(--secondary-text-color); font-size: 13px;
|
||||
pointer-events: none;
|
||||
}
|
||||
.actions { display: flex; gap: 8px; align-items: center; }
|
||||
`],i([g({attribute:!1})],s.prototype,"hass",2),i([n()],s.prototype,"_config",2),i([n()],s.prototype,"_status",2),i([n()],s.prototype,"_busy",2),i([n()],s.prototype,"_error",2),i([n()],s.prototype,"_localMonthly",2),i([n()],s.prototype,"_localYearly",2),i([n()],s.prototype,"_dirty",2);customElements.get("maintenance-budget-section-card")||customElements.define("maintenance-budget-section-card",s);window.customCards=window.customCards||[];window.customCards.push({type:"maintenance-budget-section-card",name:"Maintenance Supporter \u2014 Budget",description:"Inline monthly + yearly budget editor",preview:!1});export{s as MaintenanceBudgetSectionCard};
|
||||
@@ -0,0 +1,59 @@
|
||||
import{a as r}from"./chunk-X7OW5OLQ.js";var a=r`
|
||||
ha-card { overflow: hidden; }
|
||||
.card-content {
|
||||
padding: 16px;
|
||||
display: flex; flex-direction: column;
|
||||
gap: 12px;
|
||||
}
|
||||
.header {
|
||||
display: flex; align-items: center; justify-content: space-between;
|
||||
gap: 12px;
|
||||
}
|
||||
.title {
|
||||
display: flex; align-items: center; gap: 8px;
|
||||
font-size: 16px; font-weight: 500;
|
||||
}
|
||||
.emoji { font-size: 20px; }
|
||||
|
||||
/* Button family — primary action / muted-saved-state / link / icon-with-text */
|
||||
.btn {
|
||||
padding: 6px 12px; font-size: 13px;
|
||||
border-radius: 6px; cursor: pointer;
|
||||
border: 1px solid var(--divider-color);
|
||||
background: var(--secondary-background-color, transparent);
|
||||
color: var(--primary-text-color);
|
||||
font-weight: 500;
|
||||
display: inline-flex; align-items: center; gap: 4px;
|
||||
}
|
||||
.btn:hover { background: var(--state-icon-color, rgba(255,255,255,0.06)); }
|
||||
.btn[disabled] { opacity: 0.5; cursor: not-allowed; }
|
||||
.btn.primary {
|
||||
background: var(--primary-color);
|
||||
color: var(--text-primary-color, white);
|
||||
border-color: var(--primary-color);
|
||||
}
|
||||
.btn.primary[disabled] { opacity: 0.6; }
|
||||
.btn.muted {
|
||||
background: transparent;
|
||||
color: var(--secondary-text-color);
|
||||
border-style: dashed;
|
||||
}
|
||||
.btn.muted[disabled] { opacity: 1; cursor: default; }
|
||||
.btn.muted ha-icon, .btn.primary ha-icon { --mdc-icon-size: 14px; }
|
||||
.btn.link {
|
||||
background: transparent; border: none; padding: 6px 4px;
|
||||
color: var(--primary-color); margin-left: auto;
|
||||
}
|
||||
.btn.link:hover { background: transparent; text-decoration: underline; }
|
||||
|
||||
/* Error + loading states */
|
||||
.error {
|
||||
padding: 8px; border-radius: 6px;
|
||||
background: rgba(211, 47, 47, 0.1);
|
||||
color: var(--error-color, #d32f2f); font-size: 13px;
|
||||
}
|
||||
.loading {
|
||||
padding: 24px; text-align: center;
|
||||
color: var(--secondary-text-color);
|
||||
}
|
||||
`;export{a};
|
||||
File diff suppressed because one or more lines are too long
+2374
File diff suppressed because one or more lines are too long
+136
@@ -0,0 +1,136 @@
|
||||
import{a as m}from"./chunk-Q7DQUCT7.js";import{a as u,b as s,d as l,e as h,f as g,g as o,i,k as _,s as p}from"./chunk-X7OW5OLQ.js";import{a}from"./chunk-PEGRBZWY.js";var e=class extends h{constructor(){super(...arguments);this._config={type:""};this._groups={};this._loaded=!1;this._busy=!1;this._error="";this._newName="";this._editingId=null;this._editingName="";this._hasInitiallyLoaded=!1}setConfig(t){this._config=t}getCardSize(){return 2}get _lang(){return this.hass?.language||"en"}get _isAdmin(){return this.hass?.user?.is_admin??!0}updated(t){super.updated(t),t.has("hass")&&this.hass&&!this._hasInitiallyLoaded&&(this._hasInitiallyLoaded=!0,this._load(),_(this._lang).then(()=>this.requestUpdate()))}async _load(){try{let t=await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/groups"});this._groups=t.groups||{},this._loaded=!0}catch(t){this._error=p(t,this._lang)}}async _addGroup(){if(!this._isAdmin)return;let t=this._newName.trim();if(t){this._busy=!0,this._error="";try{await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/group/create",name:t}),this._newName="",await this._load()}catch(r){this._error=p(r,this._lang)}finally{this._busy=!1}}}_startEdit(t){this._editingId=t,this._editingName=this._groups[t]?.name||""}async _saveEdit(){if(!this._isAdmin||!this._editingId)return;let t=this._editingName.trim();if(t){this._busy=!0,this._error="";try{await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/group/update",group_id:this._editingId,name:t}),this._editingId=null,this._editingName="",await this._load()}catch(r){this._error=p(r,this._lang)}finally{this._busy=!1}}}async _deleteGroup(t,r){if(!this._isAdmin)return;let n=(i("group_delete_confirm",this._lang)||'Delete group "{name}"?').replace("{name}",r);if(window.confirm(n)){this._busy=!0;try{await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/group/delete",group_id:t}),await this._load()}catch(d){this._error=p(d,this._lang)}finally{this._busy=!1}}}_onDeepLink(){history.pushState(null,"","/maintenance-supporter?ms_action=open_groups"),window.dispatchEvent(new CustomEvent("location-changed"))}_onKeyDown(t,r){t.key==="Enter"?(t.preventDefault(),r()):t.key==="Escape"&&(t.preventDefault(),this._editingId=null,this._editingName="")}render(){let t=this._lang;if(!this._loaded)return s`<ha-card><div class="loading">${i("loading",t)||"Loading\u2026"}</div></ha-card>`;let r=Object.keys(this._groups);return s`
|
||||
<ha-card>
|
||||
<div class="card-content">
|
||||
<div class="header">
|
||||
<div class="title">
|
||||
<span class="emoji">🏷️</span>
|
||||
<span>${this._config.title||i("groups",t)||"Groups"}</span>
|
||||
<span class="count">${r.length}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
${this._error?s`<div class="error">${this._error}</div>`:l}
|
||||
|
||||
${r.length===0?s`<div class="empty">${i("groups_empty",t)||"No groups yet."}</div>`:s`
|
||||
<div class="group-list">
|
||||
${r.map(n=>{let d=this._groups[n],v=d.task_refs?.length??0,b=this._editingId===n;return s`
|
||||
<div class="group-row">
|
||||
${b?s`
|
||||
<input class="edit-input" type="text"
|
||||
.value=${this._editingName}
|
||||
?disabled=${this._busy}
|
||||
@input=${c=>{this._editingName=c.target.value}}
|
||||
@keydown=${c=>this._onKeyDown(c,this._saveEdit.bind(this))} />
|
||||
<button class="btn small primary"
|
||||
@click=${this._saveEdit}
|
||||
?disabled=${this._busy||!this._editingName.trim()}>
|
||||
${i("save",t)||"Save"}
|
||||
</button>
|
||||
<button class="btn small"
|
||||
@click=${()=>{this._editingId=null}}>
|
||||
${i("cancel",t)||"Cancel"}
|
||||
</button>
|
||||
`:s`
|
||||
<span class="group-name">${d.name||"Unnamed"}</span>
|
||||
<span class="task-count">${v}</span>
|
||||
${this._isAdmin?s`
|
||||
<button class="icon-btn"
|
||||
title="${i("edit",t)||"Edit"}"
|
||||
@click=${()=>this._startEdit(n)}
|
||||
?disabled=${this._busy}>
|
||||
<ha-icon icon="mdi:pencil"></ha-icon>
|
||||
</button>
|
||||
<button class="icon-btn danger"
|
||||
title="${i("delete",t)||"Delete"}"
|
||||
@click=${()=>this._deleteGroup(n,d.name||"Unnamed")}
|
||||
?disabled=${this._busy}>
|
||||
<ha-icon icon="mdi:delete"></ha-icon>
|
||||
</button>
|
||||
`:l}
|
||||
`}
|
||||
</div>
|
||||
`})}
|
||||
</div>
|
||||
`}
|
||||
|
||||
${this._isAdmin?s`
|
||||
<div class="add-row">
|
||||
<input type="text"
|
||||
placeholder="${i("group_new_placeholder",t)||"Add group\u2026"}"
|
||||
.value=${this._newName}
|
||||
?disabled=${this._busy}
|
||||
@input=${n=>{this._newName=n.target.value}}
|
||||
@keydown=${n=>this._onKeyDown(n,this._addGroup.bind(this))} />
|
||||
<button class="btn primary"
|
||||
@click=${this._addGroup}
|
||||
?disabled=${this._busy||!this._newName.trim()}>
|
||||
<ha-icon icon="mdi:plus"></ha-icon>
|
||||
${i("add",t)||"Add"}
|
||||
</button>
|
||||
</div>
|
||||
<button class="btn link" @click=${this._onDeepLink}>
|
||||
${i("groups_manage_tasks",t)||"Manage task assignments\u2026"}
|
||||
</button>
|
||||
`:s`
|
||||
<button class="btn link" @click=${this._onDeepLink}>
|
||||
${i("groups_open_panel",t)||"Open in panel"}
|
||||
</button>
|
||||
`}
|
||||
</div>
|
||||
</ha-card>
|
||||
`}};e.styles=[m,u`
|
||||
.count {
|
||||
font-size: 12px; color: var(--secondary-text-color);
|
||||
background: var(--secondary-background-color);
|
||||
padding: 2px 8px; border-radius: 999px;
|
||||
}
|
||||
.empty {
|
||||
padding: 16px; text-align: center;
|
||||
color: var(--secondary-text-color); font-style: italic;
|
||||
}
|
||||
.group-list { display: flex; flex-direction: column; gap: 4px; }
|
||||
.group-row {
|
||||
display: flex; align-items: center; gap: 8px;
|
||||
padding: 6px 8px; border-radius: 6px;
|
||||
background: var(--secondary-background-color, rgba(255,255,255,0.03));
|
||||
}
|
||||
.group-name { flex: 1; font-size: 14px; }
|
||||
.task-count {
|
||||
font-size: 11px; color: var(--secondary-text-color);
|
||||
background: var(--card-background-color, rgba(0,0,0,0.2));
|
||||
padding: 1px 8px; border-radius: 999px;
|
||||
font-weight: 500;
|
||||
}
|
||||
.edit-input {
|
||||
flex: 1; padding: 4px 8px; font-size: 14px;
|
||||
background: var(--card-background-color, #1c1c1c);
|
||||
color: var(--primary-text-color);
|
||||
border: 1px solid var(--primary-color); border-radius: 4px;
|
||||
font-family: inherit;
|
||||
}
|
||||
.icon-btn {
|
||||
background: transparent; border: none; cursor: pointer;
|
||||
color: var(--secondary-text-color); padding: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.icon-btn:hover {
|
||||
background: var(--state-icon-color, rgba(255,255,255,0.06));
|
||||
color: var(--primary-text-color);
|
||||
}
|
||||
.icon-btn.danger:hover { color: var(--error-color); }
|
||||
.icon-btn ha-icon { --mdc-icon-size: 18px; }
|
||||
.add-row {
|
||||
display: flex; gap: 6px;
|
||||
padding-top: 8px; border-top: 1px solid var(--divider-color);
|
||||
}
|
||||
.add-row input {
|
||||
flex: 1; padding: 6px 8px; font-size: 13px;
|
||||
background: var(--secondary-background-color, #2c2c2c);
|
||||
color: var(--primary-text-color);
|
||||
border: 1px solid var(--divider-color); border-radius: 6px;
|
||||
font-family: inherit;
|
||||
}
|
||||
/* Card-specific overrides on the shared .btn */
|
||||
.btn.small { padding: 4px 8px; font-size: 12px; }
|
||||
.btn ha-icon { --mdc-icon-size: 16px; }
|
||||
`],a([g({attribute:!1})],e.prototype,"hass",2),a([o()],e.prototype,"_config",2),a([o()],e.prototype,"_groups",2),a([o()],e.prototype,"_loaded",2),a([o()],e.prototype,"_busy",2),a([o()],e.prototype,"_error",2),a([o()],e.prototype,"_newName",2),a([o()],e.prototype,"_editingId",2),a([o()],e.prototype,"_editingName",2);customElements.get("maintenance-groups-section-card")||customElements.define("maintenance-groups-section-card",e);window.customCards=window.customCards||[];window.customCards.push({type:"maintenance-groups-section-card",name:"Maintenance Supporter \u2014 Groups",description:"Inline group CRUD",preview:!1});export{e as MaintenanceGroupsSectionCard};
|
||||
+121
@@ -0,0 +1,121 @@
|
||||
import{a as m}from"./chunk-Q7DQUCT7.js";import{a as h,b as n,d as c,e as _,f as v,g as r,i as e,k as f,s as l}from"./chunk-X7OW5OLQ.js";import{a as i}from"./chunk-PEGRBZWY.js";var a=class extends _{constructor(){super(...arguments);this._config={type:""};this._state=null;this._busy=!1;this._error="";this._localStart="";this._localEnd="";this._localBuffer=7;this._dirty=!1;this._loaded=!1}setConfig(t){this._config=t}getCardSize(){return 2}get _lang(){return this.hass?.language||"en"}get _isAdmin(){return this.hass?.user?.is_admin??!0}updated(t){super.updated(t),t.has("hass")&&this.hass&&!this._loaded&&(this._loaded=!0,this._load(),f(this._lang).then(()=>this.requestUpdate()))}async _load(){try{let t=await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/vacation/state"});this._state=t,this._localStart=t.start||"",this._localEnd=t.end||"",this._localBuffer=t.buffer_days??7,this._dirty=!1}catch(t){this._error=l(t,this._lang)}}async _toggleEnabled(t){this._busy=!0,this._error="";try{let s=await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/vacation/update",enabled:t});this._state=s}catch(s){this._error=l(s,this._lang)}finally{this._busy=!1}}async _save(){if(this._isAdmin){this._busy=!0,this._error="";try{let t=await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/vacation/update",start:this._localStart||null,end:this._localEnd||null,buffer_days:this._localBuffer});this._state=t,this._dirty=!1}catch(t){this._error=l(t,this._lang)}finally{this._busy=!1}}}async _endNow(){if(this._isAdmin&&window.confirm(e("vacation_end_now_confirm",this._lang)||"End vacation immediately?")){this._busy=!0;try{let t=await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/vacation/end_now"});this._state=t,this._localStart=t.start||"",this._localEnd=t.end||""}catch(t){this._error=l(t,this._lang)}finally{this._busy=!1}}}_onDeepLink(){history.pushState(null,"","/maintenance-supporter?ms_action=open_vacation"),window.dispatchEvent(new CustomEvent("location-changed"))}render(){let t=this._lang,s=this._state;if(!s)return n`<ha-card><div class="loading">${e("loading",t)||"Loading\u2026"}</div></ha-card>`;let p=s.is_active===!0,d=s.enabled===!0,u=s.exempt_task_ids?.length??0,b=p?e("vacation_status_active",t)||"Active now":d?e("vacation_status_scheduled",t)||"Scheduled":e("vacation_status_inactive",t)||"Inactive",g=p?"active":d?"scheduled":"inactive";return n`
|
||||
<ha-card>
|
||||
<div class="card-content">
|
||||
<div class="header">
|
||||
<div class="title">
|
||||
<span class="emoji">🏖️</span>
|
||||
<span>${this._config.title||e("vacation_mode",t)||"Vacation mode"}</span>
|
||||
</div>
|
||||
<span class="status-pill ${g}">${b}</span>
|
||||
</div>
|
||||
|
||||
${this._error?n`<div class="error">${this._error}</div>`:c}
|
||||
|
||||
${this._isAdmin?n`
|
||||
<div class="row toggle-row">
|
||||
<label>${e("enable",t)||"Enable"}</label>
|
||||
<ha-switch
|
||||
.checked=${d}
|
||||
.disabled=${this._busy}
|
||||
@change=${o=>this._toggleEnabled(o.target.checked)}
|
||||
></ha-switch>
|
||||
</div>
|
||||
|
||||
<div class="dates-row">
|
||||
<div class="date-field">
|
||||
<label>${e("vacation_start",t)||"Start"}</label>
|
||||
<input type="date" .value=${this._localStart}
|
||||
?disabled=${this._busy}
|
||||
@input=${o=>{this._localStart=o.target.value,this._dirty=!0}} />
|
||||
</div>
|
||||
<div class="date-field">
|
||||
<label>${e("vacation_end",t)||"End"}</label>
|
||||
<input type="date" .value=${this._localEnd}
|
||||
?disabled=${this._busy}
|
||||
@input=${o=>{this._localEnd=o.target.value,this._dirty=!0}} />
|
||||
</div>
|
||||
<div class="date-field buffer">
|
||||
<label>${e("vacation_buffer",t)||"Buffer days"}</label>
|
||||
<input type="number" min="0" max="14"
|
||||
.value=${String(this._localBuffer)}
|
||||
?disabled=${this._busy}
|
||||
@input=${o=>{this._localBuffer=parseInt(o.target.value,10)||0,this._dirty=!0}} />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<button class="btn ${this._dirty?"primary":"muted"}"
|
||||
@click=${this._save}
|
||||
?disabled=${this._busy||!this._dirty}>
|
||||
<ha-icon icon="${this._dirty?"mdi:content-save":"mdi:check"}"></ha-icon>
|
||||
${this._dirty?e("save",t)||"Save":e("saved",t)||"Saved"}
|
||||
</button>
|
||||
${p?n`<button class="btn"
|
||||
@click=${this._endNow}
|
||||
?disabled=${this._busy}>
|
||||
${e("vacation_end_now",t)||"End now"}
|
||||
</button>`:c}
|
||||
${u>0?n`<button class="btn link"
|
||||
@click=${this._onDeepLink}>
|
||||
${u} ${e("vacation_exempt_count",t)||"exempt"}…
|
||||
</button>`:n`<button class="btn link"
|
||||
@click=${this._onDeepLink}>
|
||||
${e("vacation_advanced",t)||"Advanced\u2026"}
|
||||
</button>`}
|
||||
</div>
|
||||
`:n`
|
||||
<div class="readonly">
|
||||
${d&&s.start&&s.end?n`<div>${s.start} → ${s.end}</div>`:c}
|
||||
<button class="btn link" @click=${this._onDeepLink}>
|
||||
${e("vacation_open_panel",t)||"Open in panel"}
|
||||
</button>
|
||||
</div>
|
||||
`}
|
||||
</div>
|
||||
</ha-card>
|
||||
`}};a.styles=[m,h`
|
||||
.status-pill {
|
||||
font-size: 11px; font-weight: 600;
|
||||
padding: 3px 8px; border-radius: 999px;
|
||||
text-transform: uppercase; letter-spacing: 0.5px;
|
||||
}
|
||||
.status-pill.active {
|
||||
background: rgba(76, 175, 80, 0.15);
|
||||
color: #4caf50;
|
||||
}
|
||||
.status-pill.scheduled {
|
||||
background: rgba(255, 152, 0, 0.15);
|
||||
color: #ff9800;
|
||||
}
|
||||
.status-pill.inactive {
|
||||
background: rgba(158, 158, 158, 0.15);
|
||||
color: var(--secondary-text-color);
|
||||
}
|
||||
.row.toggle-row {
|
||||
display: flex; align-items: center; justify-content: space-between;
|
||||
}
|
||||
.row.toggle-row label {
|
||||
font-size: 14px; color: var(--primary-text-color);
|
||||
}
|
||||
.dates-row {
|
||||
display: grid; grid-template-columns: 1fr 1fr 100px; gap: 10px;
|
||||
}
|
||||
.date-field.buffer label { white-space: nowrap; }
|
||||
.date-field { display: flex; flex-direction: column; gap: 4px; }
|
||||
.date-field label {
|
||||
font-size: 11px; color: var(--secondary-text-color);
|
||||
text-transform: uppercase; letter-spacing: 0.3px;
|
||||
}
|
||||
.date-field input {
|
||||
padding: 6px 8px; font-size: 13px;
|
||||
background: var(--secondary-background-color, #2c2c2c);
|
||||
color: var(--primary-text-color);
|
||||
border: 1px solid var(--divider-color); border-radius: 6px;
|
||||
font-family: inherit;
|
||||
}
|
||||
.date-field input:disabled { opacity: 0.5; cursor: not-allowed; }
|
||||
.actions {
|
||||
display: flex; gap: 8px; align-items: center; flex-wrap: wrap;
|
||||
}
|
||||
.readonly { display: flex; flex-direction: column; gap: 8px; }
|
||||
`],i([v({attribute:!1})],a.prototype,"hass",2),i([r()],a.prototype,"_config",2),i([r()],a.prototype,"_state",2),i([r()],a.prototype,"_busy",2),i([r()],a.prototype,"_error",2),i([r()],a.prototype,"_localStart",2),i([r()],a.prototype,"_localEnd",2),i([r()],a.prototype,"_localBuffer",2),i([r()],a.prototype,"_dirty",2);customElements.get("maintenance-vacation-section-card")||customElements.define("maintenance-vacation-section-card",a);window.customCards=window.customCards||[];window.customCards.push({type:"maintenance-vacation-section-card",name:"Maintenance Supporter \u2014 Vacation",description:"Inline vacation mode toggle + dates",preview:!1});export{a as MaintenanceVacationSectionCard};
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,671 @@
|
||||
/**
|
||||
* TaskMate Routine Card (#676)
|
||||
*
|
||||
* A guided, one-task-at-a-time flow for morning and bedtime routines. The
|
||||
* child card is a checklist — good for scanning, poor for a five-year-old
|
||||
* being walked through getting ready. This shows a single task at a time with
|
||||
* a big Done button, a progress bar, and a celebration at the end.
|
||||
*
|
||||
* Availability comes from the backend's own chore_availability matrix rather
|
||||
* than a re-implementation of the child card's filter, so the weather gate,
|
||||
* reactive deadlines, dependencies and rotation are all honoured for free.
|
||||
*
|
||||
* Version: 1.0.0
|
||||
*/
|
||||
|
||||
const LitElement = customElements.get("hui-masonry-view")
|
||||
? Object.getPrototypeOf(customElements.get("hui-masonry-view"))
|
||||
: Object.getPrototypeOf(customElements.get("hui-view"));
|
||||
|
||||
const html = LitElement.prototype.html;
|
||||
const css = LitElement.prototype.css;
|
||||
|
||||
const _safeColor = (c, d) => (typeof c === "string" && /^#[0-9a-fA-F]{3,8}$/.test(c) ? c : d);
|
||||
|
||||
const TIME_CATEGORIES = ["all", "morning", "afternoon", "evening", "night", "anytime"];
|
||||
|
||||
// The card has ONE layout, so it consumes the design tokens directly rather
|
||||
// than carrying a second _renderDesigned() template like the multi-layout
|
||||
// cards do. Every --tmd-* reference below is written with the card's original
|
||||
// value as the fallback, so "classic" — which defines no tokens — renders
|
||||
// exactly as it did before the design system was wired in.
|
||||
const DEFAULT_ACCENT = "#7c3aed";
|
||||
|
||||
class TaskMateRoutineCard extends LitElement {
|
||||
static get properties() {
|
||||
return {
|
||||
hass: { type: Object },
|
||||
config: { type: Object },
|
||||
_index: { type: Number },
|
||||
_finished: { type: Boolean },
|
||||
_busy: { type: Boolean },
|
||||
};
|
||||
}
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
this._index = 0;
|
||||
this._finished = false;
|
||||
this._busy = false;
|
||||
// Chores completed during THIS run, so the finish screen can total what
|
||||
// was just earned rather than everything the child has done today.
|
||||
this._runCompleted = new Map();
|
||||
// Tasks the child chose to leave for later. Kept for this run only.
|
||||
this._skipped = new Set();
|
||||
}
|
||||
|
||||
setConfig(config) {
|
||||
if (!config.entity) throw new Error("You need to define an entity");
|
||||
if (!config.child_id) throw new Error("You need to define a child_id");
|
||||
if (config.time_category && !TIME_CATEGORIES.includes(config.time_category)) {
|
||||
throw new Error(`time_category must be one of: ${TIME_CATEGORIES.join(", ")}`);
|
||||
}
|
||||
this.config = config;
|
||||
}
|
||||
|
||||
getCardSize() { return 8; }
|
||||
|
||||
static getStubConfig() {
|
||||
return { entity: "sensor.taskmate_overview", child_id: "", time_category: "morning" };
|
||||
}
|
||||
|
||||
shouldUpdate(changedProps) {
|
||||
if (changedProps.has("hass")) {
|
||||
return window.__taskmate_hasChanged
|
||||
? window.__taskmate_hasChanged(changedProps.get("hass"), this.hass, this.config?.entity)
|
||||
: true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
_t(key, params) {
|
||||
const fn = window.__taskmate_localize;
|
||||
return fn ? fn(this.hass, key, params) : key;
|
||||
}
|
||||
|
||||
_attrs() {
|
||||
return (window.__taskmate_attrs && window.__taskmate_attrs(this.hass, this.config.entity))
|
||||
|| this.hass?.states?.[this.config.entity]?.attributes || {};
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve the active design, stamp data-tm-design on the host (which is what
|
||||
* makes the :host-scoped token block apply inside this shadow root), and
|
||||
* settle the header colour.
|
||||
*
|
||||
* The accent is set as an inline property on the host rather than from a
|
||||
* <style> in the template: a shadow tree's <style> is ordered BEFORE
|
||||
* adoptedStyleSheets, so it loses to the :host default in static styles()
|
||||
* at equal specificity. An element's own inline property beats both.
|
||||
* An explicit header_color always wins; otherwise the rule in styles()
|
||||
* takes the design's accent, falling back to the card's purple in classic.
|
||||
* Headers stay full-colour in every style per the house rule.
|
||||
*/
|
||||
_applyDesign() {
|
||||
const design = window.__taskmate_design
|
||||
? window.__taskmate_design.apply(this, this.hass, this.config, this.config.entity)
|
||||
: "classic";
|
||||
const configured = this.config.header_color;
|
||||
if (typeof configured === "string" && /^#[0-9a-fA-F]{3,8}$/.test(configured)) {
|
||||
this.style.setProperty("--routine-accent", _safeColor(configured, DEFAULT_ACCENT));
|
||||
} else {
|
||||
this.style.removeProperty("--routine-accent");
|
||||
}
|
||||
return design;
|
||||
}
|
||||
|
||||
_child() {
|
||||
const attrs = this._attrs();
|
||||
return (attrs.children || []).find(c => String(c.id) === String(this.config.child_id));
|
||||
}
|
||||
|
||||
/**
|
||||
* The routine's task list: chores the backend says are available to this
|
||||
* child, in the child's configured order, filtered to the card's period.
|
||||
* Chores completed during this run stay in the list (so the progress bar
|
||||
* doesn't jump around) but are marked done.
|
||||
*/
|
||||
_tasks() {
|
||||
const attrs = this._attrs();
|
||||
const child = this._child();
|
||||
if (!child) return [];
|
||||
|
||||
const childId = String(child.id);
|
||||
const availability = attrs.chore_availability || {};
|
||||
const period = this.config.time_category || "all";
|
||||
|
||||
const completedToday = new Set(
|
||||
(attrs.todays_completions || [])
|
||||
.filter(c => String(c.child_id) === childId && !c.bonus_subtask_id)
|
||||
.map(c => String(c.chore_id))
|
||||
);
|
||||
|
||||
const order = (child.chore_order || []).map(String);
|
||||
const list = (attrs.chores || []).filter(chore => {
|
||||
const id = String(chore.id);
|
||||
// Anything finished in this run stays visible as a completed step.
|
||||
if (this._runCompleted.has(id)) return true;
|
||||
if (!availability[id] || availability[id][childId] !== true) return false;
|
||||
if (completedToday.has(id)) return false;
|
||||
if (period !== "all" && chore.time_category !== period) return false;
|
||||
return true;
|
||||
});
|
||||
|
||||
list.sort((a, b) => {
|
||||
const ai = order.indexOf(String(a.id));
|
||||
const bi = order.indexOf(String(b.id));
|
||||
if (ai !== -1 && bi !== -1) return ai - bi;
|
||||
if (ai !== -1) return -1;
|
||||
if (bi !== -1) return 1;
|
||||
return String(a.name).localeCompare(String(b.name));
|
||||
});
|
||||
return list;
|
||||
}
|
||||
|
||||
_pointsFor(chore) {
|
||||
return chore.effective_points ?? chore.points ?? 0;
|
||||
}
|
||||
|
||||
async _complete(chore) {
|
||||
if (this._busy) return;
|
||||
const child = this._child();
|
||||
if (!child) return;
|
||||
this._busy = true;
|
||||
try {
|
||||
// Prefer the per-chore button entity so HA state-trigger automations
|
||||
// fire, exactly as the child card does. Fall back to the service when
|
||||
// the entity isn't registered yet (e.g. right after a restart).
|
||||
const buttonEntityId = window.__taskmate_find_button
|
||||
&& window.__taskmate_find_button(this.hass, child.id, "complete", chore.id);
|
||||
if (buttonEntityId) {
|
||||
await this.hass.callService("button", "press", { entity_id: buttonEntityId });
|
||||
} else {
|
||||
await this.hass.callService("taskmate", "complete_chore", {
|
||||
chore_id: chore.id, child_id: child.id,
|
||||
});
|
||||
}
|
||||
this._runCompleted.set(String(chore.id), {
|
||||
points: this._pointsFor(chore),
|
||||
pending: chore.requires_approval !== false,
|
||||
});
|
||||
// Skipped then done later is not "left for later" — otherwise the finish
|
||||
// screen claims tasks are outstanding that the child actually did.
|
||||
this._skipped.delete(String(chore.id));
|
||||
this._advance();
|
||||
} catch (err) {
|
||||
// Surface rather than silently stalling the routine on a failed call.
|
||||
this.dispatchEvent(new CustomEvent("hass-notification", {
|
||||
detail: { message: String(err?.message || err) }, bubbles: true, composed: true,
|
||||
}));
|
||||
} finally {
|
||||
this._busy = false;
|
||||
this.requestUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
_advance() {
|
||||
const total = this._tasks().length;
|
||||
if (this._index >= total - 1) {
|
||||
this._finished = true;
|
||||
} else {
|
||||
this._index = this._index + 1;
|
||||
}
|
||||
this.requestUpdate();
|
||||
}
|
||||
|
||||
_skip() {
|
||||
const tasks = this._tasks();
|
||||
const chore = tasks[this._index];
|
||||
if (chore) this._skipped.add(String(chore.id));
|
||||
this._advance();
|
||||
}
|
||||
|
||||
_back() {
|
||||
if (this._finished) { this._finished = false; return; }
|
||||
if (this._index > 0) this._index = this._index - 1;
|
||||
this.requestUpdate();
|
||||
}
|
||||
|
||||
_restart() {
|
||||
this._index = 0;
|
||||
this._finished = false;
|
||||
this._runCompleted = new Map();
|
||||
this._skipped = new Set();
|
||||
this.requestUpdate();
|
||||
}
|
||||
|
||||
render() {
|
||||
if (!this.hass || !this.config) return html``;
|
||||
this._applyDesign();
|
||||
const child = this._child();
|
||||
if (!child) {
|
||||
return html`<ha-card><div class="pad error">${this._t("routine.no_child")}</div></ha-card>`;
|
||||
}
|
||||
|
||||
const attrs = this._attrs();
|
||||
const pointsIcon = attrs.points_icon || "mdi:star";
|
||||
const tasks = this._tasks();
|
||||
const title = this.config.title || this._t("routine.title", { name: child.name });
|
||||
|
||||
if (!tasks.length) return this._renderEmpty(title);
|
||||
if (this._finished) return this._renderFinished(title, tasks, pointsIcon, child);
|
||||
|
||||
// Guard against the list shrinking underneath us (a parent ticking a chore
|
||||
// off elsewhere) — clamp rather than render undefined.
|
||||
const index = Math.min(this._index, tasks.length - 1);
|
||||
const chore = tasks[index];
|
||||
const done = this._runCompleted.get(String(chore.id));
|
||||
const pct = Math.round((index / tasks.length) * 100);
|
||||
|
||||
return html`
|
||||
<ha-card>
|
||||
<div class="head">
|
||||
<span class="who">${title}</span>
|
||||
</div>
|
||||
|
||||
<div class="progress">
|
||||
<div class="rt-bar"><i style="width:${pct}%"></i></div>
|
||||
<div class="count">${this._t("routine.task_of", { current: index + 1, total: tasks.length })}</div>
|
||||
</div>
|
||||
|
||||
<div class="dots">
|
||||
${tasks.map((t, i) => html`
|
||||
<span class="dot ${this._runCompleted.has(String(t.id)) ? "done" : ""} ${i === index ? "now" : ""}"></span>
|
||||
`)}
|
||||
</div>
|
||||
|
||||
<div class="body">
|
||||
<div class="icon"><ha-icon icon="${chore.icon || "mdi:checkbox-marked-circle-outline"}"></ha-icon></div>
|
||||
<div class="task">${chore.name}</div>
|
||||
${chore.description ? html`<div class="desc">${chore.description}</div>` : ""}
|
||||
<div class="points">
|
||||
<ha-icon icon="${pointsIcon}"></ha-icon> +${this._pointsFor(chore)}
|
||||
</div>
|
||||
${done?.pending ? html`<div class="pending">${this._t("routine.waiting_for_parent")}</div>` : ""}
|
||||
${chore.require_photo ? html`<div class="note">${this._t("routine.photo_note")}</div>` : ""}
|
||||
</div>
|
||||
|
||||
<div class="foot">
|
||||
${done
|
||||
? html`<button class="rt-btn rt-done is-done" disabled>
|
||||
${done.pending ? this._t("routine.sent_for_checking") : this._t("routine.completed")}
|
||||
</button>`
|
||||
: html`<button class="rt-btn rt-done" ?disabled=${this._busy}
|
||||
@click=${() => this._complete(chore)}>
|
||||
${this._t("routine.done")}
|
||||
</button>`}
|
||||
<div class="rt-row">
|
||||
<button class="rt-btn rt-back" ?disabled=${index === 0} @click=${this._back}>
|
||||
${this._t("routine.back")}
|
||||
</button>
|
||||
<button class="rt-btn rt-skip" @click=${this._skip}>
|
||||
${done ? this._t("routine.next") : this._t("routine.skip")}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</ha-card>
|
||||
`;
|
||||
}
|
||||
|
||||
_renderEmpty(title) {
|
||||
return html`
|
||||
<ha-card>
|
||||
<div class="head"><span class="who">${title}</span></div>
|
||||
<div class="empty">
|
||||
<ha-icon icon="mdi:check-circle-outline"></ha-icon>
|
||||
<h2>${this._t("routine.empty_title")}</h2>
|
||||
<p>${this._t("routine.empty_body")}</p>
|
||||
</div>
|
||||
</ha-card>
|
||||
`;
|
||||
}
|
||||
|
||||
_renderFinished(title, tasks, pointsIcon, child) {
|
||||
let earned = 0;
|
||||
let pending = 0;
|
||||
for (const entry of this._runCompleted.values()) {
|
||||
if (entry.pending) pending += entry.points; else earned += entry.points;
|
||||
}
|
||||
const skipped = this._skipped.size;
|
||||
|
||||
return html`
|
||||
<ha-card>
|
||||
<div class="head"><span class="who">${title}</span></div>
|
||||
<div class="progress">
|
||||
<div class="rt-bar"><i class="full" style="width:100%"></i></div>
|
||||
<div class="count">${this._t("routine.all_done_count", { total: tasks.length })}</div>
|
||||
</div>
|
||||
<div class="finished">
|
||||
<div class="cheer">🎉</div>
|
||||
<h2>${this._t("routine.finished_title")}</h2>
|
||||
<p>${this._t("routine.finished_body", { name: child.name })}</p>
|
||||
${earned > 0 ? html`
|
||||
<div class="earned"><ha-icon icon="${pointsIcon}"></ha-icon> ${this._t("routine.earned", { points: earned })}</div>
|
||||
` : ""}
|
||||
${pending > 0 ? html`
|
||||
<div class="earned pending-total">${this._t("routine.awaiting_points", { points: pending })}</div>
|
||||
` : ""}
|
||||
${skipped > 0 ? html`
|
||||
<p class="skipped">${this._t("routine.skipped_note", { count: skipped })}</p>
|
||||
` : ""}
|
||||
</div>
|
||||
<div class="foot">
|
||||
<button class="rt-btn rt-done" @click=${this._restart}>${this._t("routine.start_again")}</button>
|
||||
</div>
|
||||
</ha-card>
|
||||
`;
|
||||
}
|
||||
|
||||
static get styles() {
|
||||
// Layout classes carry an rt- prefix because the shared design kit defines
|
||||
// its own .btn and .bar, and its :host([data-tm-design=...]) .btn rules
|
||||
// outrank a bare .btn-done here — which repainted the green Done button
|
||||
// with the console gradient and gave Skip equal visual weight.
|
||||
const base = css`
|
||||
:host { display: block; --routine-accent: var(--tmd-accent, #7c3aed); }
|
||||
ha-card {
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 460px;
|
||||
font-family: var(--tmd-font-body, inherit);
|
||||
background: var(--tmd-surface, var(--ha-card-background, var(--card-background-color, #fff)));
|
||||
color: var(--tmd-text, var(--primary-text-color));
|
||||
border-radius: var(--tmd-radius, var(--ha-card-border-radius, 12px));
|
||||
}
|
||||
.head {
|
||||
background: var(--routine-accent);
|
||||
color: var(--tmd-hd-text, #fff);
|
||||
padding: 16px 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
.who {
|
||||
font-weight: 800; font-size: 17px; flex: 1;
|
||||
font-family: var(--tmd-font-display, inherit);
|
||||
}
|
||||
|
||||
.progress { padding: 14px 20px 0; }
|
||||
.rt-bar {
|
||||
height: 8px;
|
||||
border-radius: 99px;
|
||||
background: var(--tmd-surface-2, var(--divider-color, #e5e7eb));
|
||||
border: 1px solid var(--tmd-border, transparent);
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
}
|
||||
.rt-bar > i {
|
||||
display: block;
|
||||
height: 100%;
|
||||
border-radius: 99px;
|
||||
background: var(--routine-accent);
|
||||
transition: width 0.25s ease;
|
||||
}
|
||||
.rt-bar > i.full { background: var(--tmd-good, var(--success-color, #16a34a)); }
|
||||
.count {
|
||||
font-size: 12.5px;
|
||||
color: var(--tmd-dim, var(--secondary-text-color));
|
||||
margin-top: 7px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.dots {
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
justify-content: center;
|
||||
padding: 10px 20px 0;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.dot {
|
||||
width: 9px; height: 9px;
|
||||
border-radius: 50%;
|
||||
background: var(--tmd-surface-2, var(--divider-color, #e5e7eb));
|
||||
/* Transparent under classic, so the outline only appears in the
|
||||
designed styles — it is what keeps the steps distinguishable in
|
||||
accessible, where meaning must not rest on hue alone. */
|
||||
border: 1px solid var(--tmd-border, transparent);
|
||||
box-sizing: border-box;
|
||||
transition: transform 0.2s ease;
|
||||
}
|
||||
.dot.done { background: var(--tmd-good, var(--success-color, #16a34a)); }
|
||||
.dot.now { background: var(--routine-accent); transform: scale(1.35); }
|
||||
|
||||
.body {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
padding: 20px 26px 8px;
|
||||
gap: 14px;
|
||||
}
|
||||
.icon {
|
||||
width: 128px; height: 128px;
|
||||
border-radius: var(--tmd-radius, 34px);
|
||||
background: color-mix(in srgb, var(--routine-accent), transparent 88%);
|
||||
display: grid;
|
||||
place-items: center;
|
||||
color: var(--routine-accent);
|
||||
}
|
||||
.icon ha-icon { --mdc-icon-size: 64px; }
|
||||
.task {
|
||||
font-size: 27px; font-weight: 800; line-height: 1.2;
|
||||
font-family: var(--tmd-font-display, inherit);
|
||||
}
|
||||
.desc {
|
||||
font-size: 14.5px; line-height: 1.45;
|
||||
color: var(--tmd-dim, var(--secondary-text-color));
|
||||
}
|
||||
.points {
|
||||
display: inline-flex; align-items: center; gap: 6px;
|
||||
background: color-mix(in srgb, var(--tmd-warn, #f59e0b) 16%, transparent);
|
||||
color: var(--tmd-gold, #92400e);
|
||||
padding: 5px 13px; border-radius: 99px;
|
||||
font-weight: 800; font-size: 14px;
|
||||
}
|
||||
.points ha-icon { --mdc-icon-size: 17px; }
|
||||
.pending {
|
||||
display: inline-flex; align-items: center; gap: 6px;
|
||||
background: color-mix(in srgb, var(--tmd-bad, #f97316) 12%, transparent);
|
||||
color: var(--tmd-bad, #9a3412);
|
||||
border: 1px solid color-mix(in srgb, var(--tmd-bad, #f97316) 35%, transparent);
|
||||
padding: 5px 12px; border-radius: 99px;
|
||||
font-weight: 700; font-size: 12.5px;
|
||||
}
|
||||
.note { font-size: 12.5px; color: var(--tmd-dim, var(--secondary-text-color)); }
|
||||
|
||||
.foot { padding: 14px 20px 20px; display: flex; flex-direction: column; gap: 10px; }
|
||||
.rt-btn {
|
||||
border: 0; border-radius: var(--tmd-radius-sm, 16px);
|
||||
font-family: var(--tmd-font-display, inherit); font-weight: 800;
|
||||
width: 100%; cursor: pointer;
|
||||
}
|
||||
.rt-btn:disabled { cursor: default; }
|
||||
.rt-done {
|
||||
background: var(--tmd-good, var(--success-color, #16a34a));
|
||||
color: #fff; padding: 19px; font-size: 19px;
|
||||
}
|
||||
/* The shared kit renders a "good" button as dark ink on the good colour
|
||||
(.btn.good in taskmate-design.js). Matching it here matters beyond
|
||||
consistency: on the accessible palette's #009E73, dark ink measures
|
||||
4.2:1 against white's 3.4:1. */
|
||||
:host([data-tm-design]:not([data-tm-design="classic"])) .rt-done { color: #06301f; }
|
||||
.rt-done.is-done {
|
||||
background: var(--tmd-dim, var(--disabled-text-color, #9ca3af));
|
||||
}
|
||||
:host([data-tm-design]:not([data-tm-design="classic"])) .rt-done.is-done { color: #fff; }
|
||||
.rt-row { display: flex; gap: 10px; }
|
||||
.rt-skip {
|
||||
background: var(--tmd-surface-2, var(--divider-color, #e5e7eb));
|
||||
color: var(--tmd-text, var(--primary-text-color));
|
||||
border: 1px solid var(--tmd-border, transparent);
|
||||
padding: 12px; font-size: 14px; flex: 1;
|
||||
}
|
||||
.rt-back {
|
||||
background: transparent;
|
||||
color: var(--tmd-dim, var(--secondary-text-color));
|
||||
border: 1px solid var(--tmd-border, var(--divider-color, #e5e7eb));
|
||||
padding: 12px; font-size: 14px; flex: 0 0 96px;
|
||||
}
|
||||
.rt-back:disabled { opacity: 0.4; }
|
||||
|
||||
.finished { text-align: center; padding: 34px 26px; flex: 1; }
|
||||
.finished .cheer { font-size: 66px; line-height: 1; }
|
||||
.finished h2 {
|
||||
font-size: 25px; margin: 12px 0 6px;
|
||||
font-family: var(--tmd-font-display, inherit);
|
||||
}
|
||||
.finished p {
|
||||
color: var(--tmd-dim, var(--secondary-text-color));
|
||||
font-size: 15px; margin: 0 0 6px;
|
||||
}
|
||||
.finished .skipped { font-size: 13px; margin-top: 12px; }
|
||||
.earned {
|
||||
display: inline-flex; gap: 6px; align-items: center; margin-top: 10px;
|
||||
background: color-mix(in srgb, var(--tmd-good, #16a34a) 14%, transparent);
|
||||
color: var(--tmd-good, #166534);
|
||||
padding: 9px 18px; border-radius: 99px;
|
||||
font-weight: 800; font-size: 16px;
|
||||
}
|
||||
.earned.pending-total {
|
||||
background: color-mix(in srgb, var(--tmd-bad, #f97316) 12%, transparent);
|
||||
color: var(--tmd-bad, #9a3412);
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.empty {
|
||||
text-align: center; padding: 64px 26px; flex: 1;
|
||||
color: var(--tmd-dim, var(--secondary-text-color));
|
||||
}
|
||||
.empty ha-icon { --mdc-icon-size: 60px; opacity: 0.5; }
|
||||
.empty h2 {
|
||||
font-size: 20px; margin: 14px 0 6px;
|
||||
color: var(--tmd-text, var(--primary-text-color));
|
||||
font-family: var(--tmd-font-display, inherit);
|
||||
}
|
||||
.empty p { font-size: 14.5px; margin: 0; }
|
||||
|
||||
.pad { padding: 24px; }
|
||||
.error { color: var(--tmd-bad, var(--error-color, #c62828)); }
|
||||
|
||||
@media (max-width: 420px) {
|
||||
.icon { width: 104px; height: 104px; border-radius: 28px; }
|
||||
.icon ha-icon { --mdc-icon-size: 52px; }
|
||||
.task { font-size: 23px; }
|
||||
}
|
||||
`;
|
||||
// The token block is :host-scoped, so it only takes effect when included
|
||||
// in THIS card's styles — a document-level rule cannot cross into the
|
||||
// shadow root.
|
||||
const tokens = window.__taskmate_design && window.__taskmate_design.styles
|
||||
? window.__taskmate_design.styles() : null;
|
||||
return tokens ? [tokens, base] : base;
|
||||
}
|
||||
}
|
||||
|
||||
class TaskMateRoutineCardEditor extends LitElement {
|
||||
static get properties() {
|
||||
return { hass: { type: Object }, _config: { type: Object } };
|
||||
}
|
||||
|
||||
setConfig(config) { this._config = { ...config }; }
|
||||
|
||||
_t(key, params) {
|
||||
const fn = window.__taskmate_localize;
|
||||
return fn ? fn(this.hass, key, params) : key;
|
||||
}
|
||||
|
||||
render() {
|
||||
if (!this._config) return html``;
|
||||
const attrs = (window.__taskmate_attrs && window.__taskmate_attrs(this.hass, this._config.entity)) || {};
|
||||
const children = attrs.children || [];
|
||||
return html`
|
||||
<div class="form">
|
||||
<ha-textfield
|
||||
label="Entity"
|
||||
.value=${this._config.entity || "sensor.taskmate_overview"}
|
||||
@input=${e => this._set("entity", e.target.value)}
|
||||
></ha-textfield>
|
||||
|
||||
<ha-select
|
||||
label="Child"
|
||||
.value=${this._config.child_id || ""}
|
||||
@selected=${e => this._set("child_id", e.target.value)}
|
||||
@closed=${e => e.stopPropagation()}
|
||||
>
|
||||
${children.map(c => html`<mwc-list-item .value=${c.id}>${c.name}</mwc-list-item>`)}
|
||||
</ha-select>
|
||||
|
||||
<ha-select
|
||||
label="Time of day"
|
||||
.value=${this._config.time_category || "all"}
|
||||
@selected=${e => this._set("time_category", e.target.value)}
|
||||
@closed=${e => e.stopPropagation()}
|
||||
>
|
||||
${TIME_CATEGORIES.map(t => html`<mwc-list-item .value=${t}>${t}</mwc-list-item>`)}
|
||||
</ha-select>
|
||||
|
||||
<ha-textfield
|
||||
label="Title (optional)"
|
||||
.value=${this._config.title || ""}
|
||||
@input=${e => this._set("title", e.target.value)}
|
||||
></ha-textfield>
|
||||
|
||||
<ha-select
|
||||
.label=${this._t("common.design.field_label")}
|
||||
.value=${this._config.card_design || "global"}
|
||||
@selected=${e => this._set("card_design", e.target.value)}
|
||||
@closed=${e => e.stopPropagation()}
|
||||
>
|
||||
${(window.__taskmate_design
|
||||
? window.__taskmate_design.editorOptions(this._t.bind(this))
|
||||
: [{ value: "global", label: "Use global default" }]
|
||||
).map(o => html`<mwc-list-item .value=${o.value}>${o.label}</mwc-list-item>`)}
|
||||
</ha-select>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
_set(key, value) {
|
||||
const newConfig = { ...this._config, [key]: value };
|
||||
// "global" is the absence of a per-card override, not a value to store.
|
||||
if (key === "card_design" && value === "global") delete newConfig[key];
|
||||
else if (value === null || value === "" || value === undefined) delete newConfig[key];
|
||||
this._config = newConfig;
|
||||
this.dispatchEvent(new CustomEvent("config-changed", {
|
||||
detail: { config: newConfig }, bubbles: true, composed: true,
|
||||
}));
|
||||
}
|
||||
|
||||
static get styles() {
|
||||
return css`
|
||||
.form { display: flex; flex-direction: column; gap: 14px; padding: 8px 0; }
|
||||
`;
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("taskmate-routine-card", TaskMateRoutineCard);
|
||||
customElements.define("taskmate-routine-card-editor", TaskMateRoutineCardEditor);
|
||||
|
||||
window.customCards = window.customCards || [];
|
||||
window.customCards.push({
|
||||
type: "taskmate-routine-card",
|
||||
name: "TaskMate Routine",
|
||||
description: "Guided one-task-at-a-time flow for morning and bedtime routines",
|
||||
preview: true,
|
||||
getEntitySuggestion: (hass, entityId) =>
|
||||
window.__taskmate_suggest(hass, entityId, "taskmate-routine-card", "overview"),
|
||||
});
|
||||
|
||||
// Version is injected by the HA resource URL (?v=x.x.x) and read from the DOM
|
||||
const _tmVersion = new URLSearchParams(
|
||||
Array.from(document.querySelectorAll('script[src*="/taskmate-routine-card.js"]'))
|
||||
.map(s => s.src.split("?")[1]).find(Boolean) || ""
|
||||
).get("v") || "?";
|
||||
console.info(
|
||||
"%c TASKMATE ROUTINE CARD %c v" + _tmVersion + " ",
|
||||
"background:#7c3aed;color:white;font-weight:bold;padding:2px 4px;border-radius:4px 0 0 4px;",
|
||||
"background:#2c3e50;color:white;font-weight:bold;padding:2px 4px;border-radius:0 4px 4px 0;"
|
||||
);
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"ha-direct": {
|
||||
"type": "remote",
|
||||
"url": "http://192.168.1.140:9584/private_bjV5uaDnrjS1JEtBg8UP-g",
|
||||
"enabled": true
|
||||
}
|
||||
},
|
||||
"tools": {
|
||||
"ha-direct_*": true
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,276 @@
|
||||
{
|
||||
"0xffffb40e0607ace4": {
|
||||
"energy": 12.43,
|
||||
"state": "ON",
|
||||
"led_brightness": 100,
|
||||
"countdown_to_turn_off": 0,
|
||||
"voltage": 121.8,
|
||||
"countdown_to_turn_on": 0,
|
||||
"ac_frequency": 60,
|
||||
"power_factor": 0.13,
|
||||
"update": {
|
||||
"state": "idle",
|
||||
"installed_version": 268513381,
|
||||
"latest_version": 268513381,
|
||||
"latest_source": "https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/ThirdReality/SmartPlug_Zigbee_PROD_OTA_V101_1.01.01.ota",
|
||||
"latest_release_notes": null
|
||||
},
|
||||
"power": 0.5,
|
||||
"linkquality": 120,
|
||||
"current": 0.03,
|
||||
"power_on_behavior": "on"
|
||||
},
|
||||
"0xffffb40e0607af27": {
|
||||
"state": "ON",
|
||||
"voltage": 121.4,
|
||||
"ac_frequency": 60,
|
||||
"led_brightness": 100,
|
||||
"countdown_to_turn_off": 0,
|
||||
"countdown_to_turn_on": 0,
|
||||
"power": 2,
|
||||
"current": 0.12,
|
||||
"energy": 23.05,
|
||||
"power_factor": 0.16,
|
||||
"update": {
|
||||
"state": "idle",
|
||||
"installed_version": 268513381,
|
||||
"latest_version": 268513381,
|
||||
"latest_source": "https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/ThirdReality/SmartPlug_Zigbee_PROD_OTA_V101_1.01.01.ota",
|
||||
"latest_release_notes": null
|
||||
},
|
||||
"linkquality": 109,
|
||||
"power_on_behavior": "on"
|
||||
},
|
||||
"0xffffb40e0607aee8": {
|
||||
"state": "ON",
|
||||
"led_brightness": 100,
|
||||
"countdown_to_turn_off": 0,
|
||||
"voltage": 121,
|
||||
"countdown_to_turn_on": 0,
|
||||
"energy": 42.42,
|
||||
"power_factor": 0.88,
|
||||
"ac_frequency": 60,
|
||||
"update": {
|
||||
"state": "idle",
|
||||
"installed_version": 268513381,
|
||||
"latest_version": 268513381,
|
||||
"latest_source": "https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/ThirdReality/SmartPlug_Zigbee_PROD_OTA_V101_1.01.01.ota",
|
||||
"latest_release_notes": null
|
||||
},
|
||||
"linkquality": 83,
|
||||
"power": 82.5,
|
||||
"current": 0.81,
|
||||
"power_on_behavior": "on"
|
||||
},
|
||||
"0xb40e060fffe031e3": {
|
||||
"battery": 100,
|
||||
"contact": true,
|
||||
"tamper": false,
|
||||
"battery_low": false,
|
||||
"linkquality": 87,
|
||||
"voltage": 3100
|
||||
},
|
||||
"0xffffb40e060762a4": {
|
||||
"led_brightness": 100,
|
||||
"countdown_to_turn_off": 0,
|
||||
"countdown_to_turn_on": 0,
|
||||
"voltage": 120,
|
||||
"state": "ON",
|
||||
"ac_frequency": 60,
|
||||
"energy": 85.12,
|
||||
"power": 93.3,
|
||||
"current": 0.85,
|
||||
"power_factor": 0.9,
|
||||
"update": {
|
||||
"state": "idle",
|
||||
"installed_version": 268513381,
|
||||
"latest_version": 268513381,
|
||||
"latest_source": "https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/ThirdReality/SmartPlug_Zigbee_PROD_OTA_V101_1.01.01.ota",
|
||||
"latest_release_notes": null
|
||||
},
|
||||
"linkquality": 109,
|
||||
"power_on_behavior": "on"
|
||||
},
|
||||
"0xffffb40e0607b680": {
|
||||
"led_brightness": 100,
|
||||
"countdown_to_turn_off": 0,
|
||||
"countdown_to_turn_on": 0,
|
||||
"voltage": 121.8,
|
||||
"energy": 34.62,
|
||||
"state": "ON",
|
||||
"power": 18.7,
|
||||
"current": 0.26,
|
||||
"ac_frequency": 60,
|
||||
"power_factor": 0.57,
|
||||
"update": {
|
||||
"state": "idle",
|
||||
"installed_version": 268513381,
|
||||
"latest_version": 268513381,
|
||||
"latest_source": "https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/ThirdReality/SmartPlug_Zigbee_PROD_OTA_V101_1.01.01.ota",
|
||||
"latest_release_notes": null
|
||||
},
|
||||
"linkquality": 69,
|
||||
"power_on_behavior": "on"
|
||||
},
|
||||
"0xffffb40e060895b3": {
|
||||
"state": "ON",
|
||||
"voltage": 121.6,
|
||||
"ac_frequency": 60,
|
||||
"energy": 5.46,
|
||||
"current": 0.01,
|
||||
"power": 0.1,
|
||||
"power_factor": 0.11,
|
||||
"linkquality": 109,
|
||||
"update": {
|
||||
"state": "idle",
|
||||
"installed_version": 268513381,
|
||||
"latest_version": 268513381,
|
||||
"latest_source": "https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/ThirdReality/SmartPlug_Zigbee_PROD_OTA_V101_1.01.01.ota",
|
||||
"latest_release_notes": null
|
||||
},
|
||||
"led_brightness": 100,
|
||||
"countdown_to_turn_off": 0,
|
||||
"countdown_to_turn_on": 0,
|
||||
"power_on_behavior": "on"
|
||||
},
|
||||
"0xffffb40e0608864e": {
|
||||
"led_brightness": 100,
|
||||
"countdown_to_turn_off": 0,
|
||||
"voltage": 121.5,
|
||||
"energy": 15.09,
|
||||
"countdown_to_turn_on": 0,
|
||||
"state": "ON",
|
||||
"current": 0.02,
|
||||
"ac_frequency": 60,
|
||||
"power": 0.3,
|
||||
"power_factor": 0.2,
|
||||
"update": {
|
||||
"state": "idle",
|
||||
"installed_version": 268513381,
|
||||
"latest_version": 268513381,
|
||||
"latest_source": "https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/ThirdReality/SmartPlug_Zigbee_PROD_OTA_V101_1.01.01.ota",
|
||||
"latest_release_notes": null
|
||||
},
|
||||
"linkquality": 112,
|
||||
"power_on_behavior": "on"
|
||||
},
|
||||
"0xb40e060fffe2d218": {
|
||||
"linkquality": 134,
|
||||
"water_leak_buzzer": "OFF",
|
||||
"battery": 0,
|
||||
"water_leak": false,
|
||||
"battery_low": false,
|
||||
"state": "ON",
|
||||
"update": {
|
||||
"state": "available",
|
||||
"installed_version": 66,
|
||||
"latest_version": 73,
|
||||
"latest_source": "https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/ThirdReality/Water_Leak_Sensor_PROD_OTA_V73_v1.00.73.ota",
|
||||
"latest_release_notes": null
|
||||
}
|
||||
},
|
||||
"0xffffb40e060893d8": {
|
||||
"state": "ON",
|
||||
"led_brightness": 100,
|
||||
"voltage": 122.1,
|
||||
"countdown_to_turn_off": 0,
|
||||
"countdown_to_turn_on": 0,
|
||||
"energy": 2.96,
|
||||
"power_on_behavior": "on",
|
||||
"linkquality": 94,
|
||||
"current": 0.03,
|
||||
"ac_frequency": 60,
|
||||
"update": {
|
||||
"state": "idle",
|
||||
"installed_version": 268513381,
|
||||
"latest_version": 268513381,
|
||||
"latest_source": "https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/ThirdReality/SmartPlug_Zigbee_PROD_OTA_V101_1.01.01.ota",
|
||||
"latest_release_notes": null
|
||||
},
|
||||
"power_factor": 0.07,
|
||||
"power": 0.1
|
||||
},
|
||||
"0xa4c1380d0679ffff": {
|
||||
"battery": 100,
|
||||
"temperature": 27.1,
|
||||
"temperature_units": "celsius",
|
||||
"temperature_calibration": 0,
|
||||
"update": {
|
||||
"state": "idle",
|
||||
"installed_version": 4352,
|
||||
"latest_version": 4352,
|
||||
"latest_source": "https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/Sonoff/snzb02lwd_v1.1.0.ota",
|
||||
"latest_release_notes": null
|
||||
},
|
||||
"linkquality": 102
|
||||
},
|
||||
"0xffffb40e0606234b": {
|
||||
"contact": true,
|
||||
"battery_low": false,
|
||||
"battery": 100,
|
||||
"linkquality": 94,
|
||||
"update": {
|
||||
"state": "idle",
|
||||
"installed_version": 36,
|
||||
"latest_version": 36,
|
||||
"latest_source": "https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/ThirdReality/GarageDoorSensor_PROD_OTA_V36_v1.00.36.ota",
|
||||
"latest_release_notes": null
|
||||
}
|
||||
},
|
||||
"0x881a14fffe410db3": {
|
||||
"state": "ON",
|
||||
"update": {
|
||||
"state": "idle",
|
||||
"installed_version": 50331681,
|
||||
"latest_version": 50331681,
|
||||
"latest_source": "https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/IKEA/zingo-ws_release_prod_v50331681_969bee21-eca6-4f10-a4c0-9685c0cd5d52.ota",
|
||||
"latest_release_notes": "https://ww8.ikea.com/ikeahomesmart/releasenotes/releasenotes.html"
|
||||
},
|
||||
"brightness": 254,
|
||||
"color_temp": 357,
|
||||
"color_mode": "color_temp",
|
||||
"linkquality": 43
|
||||
},
|
||||
"0x7cc6b6fffe606710": {
|
||||
"state": "ON",
|
||||
"update": {
|
||||
"state": "idle",
|
||||
"installed_version": 16777282,
|
||||
"latest_version": 16777282,
|
||||
"latest_source": "https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/IKEA/zingo-ww_release_prod_v16777282_a39f1e76-af87-4f04-bd7f-0faf71baf3e4.ota",
|
||||
"latest_release_notes": "https://ww8.ikea.com/ikeahomesmart/releasenotes/releasenotes.html"
|
||||
},
|
||||
"brightness": 254,
|
||||
"linkquality": 36
|
||||
},
|
||||
"0xb40e060fffe717c5": {
|
||||
"battery": 100,
|
||||
"occupancy": false,
|
||||
"tamper": false,
|
||||
"battery_low": false,
|
||||
"linkquality": 65,
|
||||
"voltage": 3100,
|
||||
"update": {
|
||||
"state": "idle",
|
||||
"installed_version": 79,
|
||||
"latest_version": 79,
|
||||
"latest_source": "https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/ThirdReality/Motion_Sensor_PROD_OTA_V79_v1.00.79.ota",
|
||||
"latest_release_notes": null
|
||||
}
|
||||
},
|
||||
"0xb40e060fffe7180a": {
|
||||
"battery": 100,
|
||||
"occupancy": false,
|
||||
"tamper": false,
|
||||
"battery_low": false,
|
||||
"linkquality": 91,
|
||||
"voltage": 3200,
|
||||
"update": {
|
||||
"state": "idle",
|
||||
"installed_version": 79,
|
||||
"latest_version": 79,
|
||||
"latest_source": "https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/images/ThirdReality/Motion_Sensor_PROD_OTA_V79_v1.00.79.ota",
|
||||
"latest_release_notes": null
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user