diff --git a/custom_components/choreops/translations/ca.json b/custom_components/choreops/translations/ca.json index a3007ff..dd385a2 100644 --- a/custom_components/choreops/translations/ca.json +++ b/custom_components/choreops/translations/ca.json @@ -81,13 +81,15 @@ "name": "Nom", "ha_user_id": "Usuari de l'Assistent de la Llar", "dashboard_language": "Llengua", - "mobile_notify_service": "Notificacions" + "mobile_notify_service": "Notificacions", + "notif_click_url": "URL de toc de notificació" }, "data_description": { "name": "Nom únic per a aquest perfil d'usuari.", "ha_user_id": "Opcional: Enllaça aquest perfil a un usuari de Home Assistant. Si el mode quiosc està desactivat, les accions de reclamació i bescanvi de dispositius compartits depenen d'aquest enllaç.", "dashboard_language": "Idioma utilitzat per al contingut i les notificacions del tauler de control.", - "mobile_notify_service": "Seleccioneu el servei de notificacions o deixeu-ho en blanc per desactivar les notificacions." + "mobile_notify_service": "Seleccioneu el servei de notificacions o deixeu-ho en blanc per desactivar les notificacions.", + "notif_click_url": "URL opcional per obrir quan es toca la notificació. Deixeu-ho en blanc per al comportament predeterminat." } }, "section_system_usage": { @@ -110,12 +112,18 @@ "data": { "can_approve": "Pot aprovar", "can_manage": "Pot gestionar", - "associated_user_ids": "Usuaris associats" + "associated_user_ids": "Usuaris associats", + "notif_approve_click_url": "URL de notificació d'aprovació", + "chores_paused": "Pausa les tasques", + "chores_paused_until": "En pausa fins a" }, "data_description": { "can_approve": "Permet accions d'aprovació i desaprovació.", "can_manage": "Permet accions de gestió que requereixen permisos elevats.", - "associated_user_ids": "Usuaris que aquest aprovador/administrador supervisa per a les accions d'aprovació." + "associated_user_ids": "Usuaris que aquest aprovador/administrador supervisa per a les accions d'aprovació.", + "notif_approve_click_url": "URL opcional per a les notificacions d'aprovació. Substitueix l'URL general de notificació quan s'aproven tasques o recompenses.", + "chores_paused": "Posa en pausa el processament de les tasques. No s'acumulen estadístiques endarrerides ni perdudes.", + "chores_paused_until": "Data de retorn opcional. Si s'estableix, les tasques es reprenen automàticament a mitjanit després d'aquesta data." } } } @@ -483,6 +491,8 @@ "invalid_reward_count": "Recompte de recompenses no vàlid", "invalid_reward_name": "Nom de recompensa no vàlid", "invalid_reward_cost": "El cost de la recompensa ha de ser zero o superior amb un màxim de 2 decimals", + "invalid_reward_assigned_users": "Un o més usuaris assignats no són vàlids", + "mixed_reward_assignment_sentinel": "No es poden barrejar \"tots els usuaris\" amb usuaris específics", "invalid_bonus": "Bonificació no vàlida", "invalid_bonus_count": "Recompte de bonificacions no vàlid", "invalid_bonus_name": "Nom de bonificació no vàlid", @@ -569,13 +579,15 @@ "name": "Nom", "ha_user_id": "Usuari de l'Assistent de la Llar", "dashboard_language": "Llengua", - "mobile_notify_service": "Notificacions" + "mobile_notify_service": "Notificacions", + "notif_click_url": "URL de toc de notificació" }, "data_description": { "name": "Nom únic per a aquest perfil d'usuari.", "ha_user_id": "Opcional: Enllaça aquest perfil a un usuari de Home Assistant. Si el mode quiosc està desactivat, les accions de reclamació i bescanvi de dispositius compartits depenen d'aquest enllaç.", "dashboard_language": "Idioma utilitzat per al contingut i les notificacions del tauler de control.", - "mobile_notify_service": "Seleccioneu el servei de notificacions o deixeu-ho en blanc per desactivar les notificacions." + "mobile_notify_service": "Seleccioneu el servei de notificacions o deixeu-ho en blanc per desactivar les notificacions.", + "notif_click_url": "URL opcional per obrir quan es toca la notificació. Deixeu-ho en blanc per al comportament predeterminat." } }, "section_system_usage": { @@ -598,12 +610,18 @@ "data": { "can_approve": "Pot aprovar", "can_manage": "Pot gestionar", - "associated_user_ids": "Usuaris associats" + "associated_user_ids": "Usuaris associats", + "notif_approve_click_url": "URL de notificació d'aprovació", + "chores_paused": "Pausa les tasques", + "chores_paused_until": "En pausa fins a" }, "data_description": { "can_approve": "Permet accions d'aprovació i desaprovació.", "can_manage": "Permet accions de gestió que requereixen permisos elevats.", - "associated_user_ids": "Usuaris que aquest aprovador/administrador supervisa per a les accions d'aprovació." + "associated_user_ids": "Usuaris que aquest aprovador/administrador supervisa per a les accions d'aprovació.", + "notif_approve_click_url": "URL opcional per a les notificacions d'aprovació. Substitueix l'URL general de notificació quan s'aproven tasques o recompenses.", + "chores_paused": "Posa en pausa el processament de les tasques. No s'acumulen estadístiques endarrerides ni perdudes.", + "chores_paused_until": "Data de retorn opcional. Si s'estableix, les tasques es reprenen automàticament a mitjanit després d'aquesta data." } } } @@ -926,7 +944,8 @@ "cost": "Cost de la recompensa", "description": "Descripció (opcional)", "reward_labels": "Etiquetes de recompensa", - "icon": "Icona (mdi:xxx)" + "icon": "Icona (mdi:xxx)", + "assigned_user_ids": "Assignat a" } }, "add_penalty": { @@ -1000,13 +1019,15 @@ "name": "Nom", "ha_user_id": "Usuari de l'Assistent de la Llar", "dashboard_language": "Llengua", - "mobile_notify_service": "Notificacions" + "mobile_notify_service": "Notificacions", + "notif_click_url": "URL de toc de notificació" }, "data_description": { "name": "Nom únic per a aquest perfil d'usuari.", "ha_user_id": "Opcional: Enllaça aquest perfil a un usuari de Home Assistant. Si el mode quiosc està desactivat, les accions de reclamació i bescanvi de dispositius compartits depenen d'aquest enllaç.", "dashboard_language": "Idioma utilitzat per al contingut i les notificacions del tauler de control.", - "mobile_notify_service": "Seleccioneu el servei de notificacions o deixeu-ho en blanc per desactivar les notificacions." + "mobile_notify_service": "Seleccioneu el servei de notificacions o deixeu-ho en blanc per desactivar les notificacions.", + "notif_click_url": "URL opcional per obrir quan es toca la notificació. Deixeu-ho en blanc per al comportament predeterminat." } }, "section_system_usage": { @@ -1029,12 +1050,18 @@ "data": { "can_approve": "Pot aprovar", "can_manage": "Pot gestionar", - "associated_user_ids": "Usuaris associats" + "associated_user_ids": "Usuaris associats", + "notif_approve_click_url": "URL de notificació d'aprovació", + "chores_paused": "Pausa les tasques", + "chores_paused_until": "En pausa fins a" }, "data_description": { "can_approve": "Permet accions d'aprovació i desaprovació.", "can_manage": "Permet accions de gestió que requereixen permisos elevats.", - "associated_user_ids": "Usuaris que aquest aprovador/administrador supervisa per a les accions d'aprovació." + "associated_user_ids": "Usuaris que aquest aprovador/administrador supervisa per a les accions d'aprovació.", + "notif_approve_click_url": "URL opcional per a les notificacions d'aprovació. Substitueix l'URL general de notificació quan s'aproven tasques o recompenses.", + "chores_paused": "Posa en pausa el processament de les tasques. No s'acumulen estadístiques endarrerides ni perdudes.", + "chores_paused_until": "Data de retorn opcional. Si s'estableix, les tasques es reprenen automàticament a mitjanit després d'aquesta data." } } } @@ -1385,7 +1412,8 @@ "cost": "Cost de la recompensa", "description": "Descripció (opcional)", "reward_labels": "Etiquetes de recompensa", - "icon": "Icona (mdi:xxx)" + "icon": "Icona (mdi:xxx)", + "assigned_user_ids": "Assignat a" } }, "edit_penalty": { @@ -1633,6 +1661,7 @@ "title": "Opcions generals", "description": "Gestiona la configuració general per a la integració de ChoreOps.\n\n ℹ️ [Més informació sobre les opcions generals]({documentation_url})", "data": { + "dashboard_points_precision": "Precisió dels punts del tauler de control", "default_chore_points": "Punts per defecte per tasca", "points_adjust_values": "Valors del botó d'ajust manual de punts", "update_interval": "Interval d'actualització", @@ -1649,6 +1678,7 @@ "backup_action_selection": "Accions de còpia de seguretat" }, "data_description": { + "dashboard_points_precision": "Trieu com es mostren els punts als taulers de control compatibles. Això només canvia el format del tauler de control i no canvia els valors ni els càlculs dels punts emmagatzemats.", "default_chore_points": "El valor de punts per defecte s'utilitza per a les tasques noves quan no s'especifiquen punts personalitzats.", "points_adjust_values": "Llista de valors per als botons d'ajust manual de punts. Cada valor està separat per '|'.", "update_interval": "Interval en minuts per actualitzar l'estat intern de ChoreOps.", @@ -1948,6 +1978,14 @@ "return_to_menu": "↩️ Torna al menú principal" } }, + "dashboard_points_precision": { + "options": { + "fixed_0": "Només nombres enters", + "adaptive": "Adaptatiu (mostra els decimals només quan cal)", + "fixed_1": "Sempre 1 decimal", + "fixed_2": "Sempre 2 decimals" + } + }, "select_backup_to_delete": { "options": { "cancel": "↩️ Cancel·la (torna al menú de còpia de seguretat)" @@ -2223,6 +2261,37 @@ } } }, + "pause_user_chores": { + "name": "Pausa les tasques de l'usuari", + "description": "Pausa o reprèn el processament de tasques per a un usuari.", + "fields": { + "config_entry_id": { + "name": "ID d'entrada de configuració (opcional)", + "description": "Feu servir això si teniu més d'una configuració de ChoreOps. Està dirigit a una configuració específica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nom de l'entrada de configuració (opcional)", + "description": "Feu servir això si teniu més d'una configuració ChoreOps i cadascuna té noms únics. Si els noms es repeteixen, feu servir l'ID d'entrada de configuració.", + "example": "Tasques familiars" + }, + "user_name": { + "name": "Nom d'usuari", + "description": "Nom de l'usuari les tasques del qual es volen posar en pausa o reprendre.", + "example": "Sara" + }, + "paused": { + "name": "En pausa", + "description": "Cert per pausar les tasques, Fals per reprendre-les.", + "example": "cert" + }, + "paused_until": { + "name": "En pausa fins a", + "description": "Data de retorn opcional. Si s'estableix, les tasques es reprenen automàticament a mitjanit després d'aquesta data.", + "example": "2026-06-10T00:00:00+00:00" + } + } + }, "redeem_reward": { "name": "Bescanvia la recompensa", "description": "Un aprovador bescanvia una recompensa per a un assignat, restant punts.", @@ -2461,6 +2530,11 @@ "name": "Etiquetes", "description": "Etiquetes per agrupar recompenses.", "example": "['cap de setmana', 'especial']" + }, + "assigned_user_names": { + "name": "Assignat a", + "description": "Noms de visualització dels usuaris assignats a aquesta recompensa. Feu servir [\"*\"] per a tots els usuaris. Passeu una llista buida per assignar-la a cap usuari.", + "example": "['Zoë', 'Max!']" } } }, @@ -2507,6 +2581,11 @@ "name": "Etiquetes", "description": "Etiquetes actualitzades.", "example": "['premium', 'especial']" + }, + "assigned_user_names": { + "name": "Assignat a", + "description": "Noms de visualització dels usuaris assignats a aquesta recompensa. Feu servir [\"*\"] per a tots els usuaris. Passeu una llista buida per eliminar tots els usuaris assignats. Ometeu-ho per deixar les assignacions actuals sense canvis.", + "example": "['Zoë', 'Max!']" } } }, @@ -2557,7 +2636,7 @@ }, "assigned_user_names": { "name": "Assignat a", - "description": "Llista de noms de persones a qui assignar aquesta tasca.", + "description": "Llista de noms de persones a qui assignar aquesta tasca. Utilitzeu [\"*\"] per a tots els usuaris assignables. Passeu una llista buida per crear sense persones assignades.", "example": "['Emma', 'Jack']" }, "points": { @@ -2663,7 +2742,7 @@ }, "assigned_user_names": { "name": "Assignat a", - "description": "Nova llista de noms de persones a qui assignar aquesta tasca.", + "description": "Nova llista de noms de persones assignables a aquesta tasca. Utilitzeu [\"*\"] per a tots els usuaris assignables. Passeu una llista buida per eliminar tots els usuaris assignats. Ometeu-ho per deixar les assignacions actuals sense canvis.", "example": "['Emma', 'Jack']" }, "points": { @@ -2735,6 +2814,11 @@ "name": "Compensació de recordatori de venciment", "description": "Nou desplaçament del recordatori de venciment. Durada abans de la data de venciment per enviar la notificació de recordatori. Format: '30m', '1h', '1d 6h 30m', etc. Utilitzeu '0' per desactivar-lo.", "example": "30 m" + }, + "assignment_action": { + "name": "Acció d'assignació", + "description": "Com gestionar la llista assigned_user_names. 'replace' estableix la llista directament (per defecte, compatible amb versions anteriors). 'add' afegeix els usuaris llistats als assignats existents. 'remove' elimina els usuaris llistats dels assignats existents.", + "example": "afegeix" } } }, @@ -3096,6 +3180,11 @@ "name": "Omet les tasques no recurrents", "description": "Activeu això per deixar les tasques no recurrents sense canvis en comptes de moure la seva data de venciment al límit.", "example": "fals" + }, + "allow_long_recurrences": { + "name": "Permetre recurrències llargues", + "description": "Permet la reprogramació de recurrències mensuals, trimestrals, anuals i altres recurrències d'interval llarg. El valor per defecte és fals per evitar salts grans accidentals.", + "example": "cert" } } }, @@ -3179,7 +3268,8 @@ "completed_by_other": "Completat per altres", "waiting": "Esperant (finestra de venciment no oberta)", "not_my_turn": "No és el meu torn (rotació)", - "missed": "Perdut (Bloquejat)" + "missed": "Perdut (Bloquejat)", + "paused": "En pausa" }, "state_attributes": { "purpose": { @@ -3426,7 +3516,8 @@ "blocked_pending_claim": "Reclamació pendent", "blocked_waiting_window": "Esperant la finestra de venciment", "blocked_not_my_turn": "No és el teu torn", - "blocked_missed_locked": "Perdut i bloquejat" + "blocked_missed_locked": "Perdut i bloquejat", + "blocked_paused": "Les tasques estan en pausa per a aquest usuari" } }, "turn_user_name": { @@ -4740,9 +4831,15 @@ "core_sensors": { "name": "Sensors centrals" }, + "dashboard_config": { + "name": "Configuració del tauler de control" + }, "dashboard_helpers": { "name": "Ajudants del tauler de control" }, + "shard_runtime": { + "name": "Temps d'execució de la llista de tasques" + }, "chores_by_label": { "name": "Tasques per segell discogràfic" }, @@ -4753,6 +4850,29 @@ "name": "Llengua" } } + }, + "assignee_dashboard_chore_list_helper_sensor": { + "name": "Llista de tasques del tauler de control de la interfície d'usuari {shard_index}", + "state_attributes": { + "purpose": { + "name": "Propòsit", + "state": { + "purpose_dashboard_chore_shard_helper": "Proporciona una llista de tasques per a la visualització del tauler de control quan la llista completa de tasques d'un usuari és massa gran per a l'ajudant principal." + } + }, + "chores": { + "name": "Tasques domèstiques" + }, + "shard_index": { + "name": "Número de llista de tasques" + }, + "shard_count": { + "name": "Llistes totals de tasques" + }, + "helper_contract_version": { + "name": "Versió del contracte d'ajuda" + } + } } }, "select": { @@ -5314,6 +5434,9 @@ }, "notif_message_chore_missed": { "message": "{assignee_name} no he pogut fer la feina: {chore_name}" + }, + "chore_paused": { + "message": "El processament de tasques està actualment en pausa per a aquest usuari." } } } diff --git a/custom_components/choreops/translations/da.json b/custom_components/choreops/translations/da.json index 83d2448..6fbf89b 100644 --- a/custom_components/choreops/translations/da.json +++ b/custom_components/choreops/translations/da.json @@ -81,13 +81,15 @@ "name": "Navn", "ha_user_id": "Hjemmeassistent-bruger", "dashboard_language": "Sprog", - "mobile_notify_service": "Notifikationer" + "mobile_notify_service": "Notifikationer", + "notif_click_url": "URL til tryk på notifikationen" }, "data_description": { "name": "Unikt navn for denne brugerprofil.", "ha_user_id": "Valgfrit: Link denne profil til en Home Assistant-bruger. Hvis kiosktilstand er deaktiveret, afhænger handlinger for krav og indløsning af delte enheder af dette link.", "dashboard_language": "Sprog, der bruges til dashboardindhold og meddelelser.", - "mobile_notify_service": "Vælg notifikationstjeneste, eller lad feltet stå tomt for at deaktivere notifikationer." + "mobile_notify_service": "Vælg notifikationstjeneste, eller lad feltet stå tomt for at deaktivere notifikationer.", + "notif_click_url": "Valgfri URL, der skal åbnes, når der trykkes på en notifikation. Lad feltet stå tomt for standardadfærd." } }, "section_system_usage": { @@ -110,12 +112,18 @@ "data": { "can_approve": "Kan godkende", "can_manage": "Kan administrere", - "associated_user_ids": "Tilknyttede brugere" + "associated_user_ids": "Tilknyttede brugere", + "notif_approve_click_url": "URL til tryk på godkendelsesmeddelelse", + "chores_paused": "Sæt pligter på pause", + "chores_paused_until": "Pause indtil" }, "data_description": { "can_approve": "Tillader godkendelses- og afvisningshandlinger.", "can_manage": "Tillader administrationshandlinger, der kræver forhøjede tilladelser.", - "associated_user_ids": "Brugere, som denne godkender/administrator overvåger, i forbindelse med godkendelseshandlinger." + "associated_user_ids": "Brugere, som denne godkender/administrator overvåger, i forbindelse med godkendelseshandlinger.", + "notif_approve_click_url": "Valgfri URL til godkendelsesmeddelelser. Tilsidesætter den generelle URL til tryk på meddelelser ved godkendelse af pligter eller belønninger.", + "chores_paused": "Sætter opgaver på pause. Der akkumuleres ingen statistikker for forsinkede eller mistede opgaver.", + "chores_paused_until": "Valgfri returdato. Hvis angivet, genoptages opgaver automatisk ved midnat efter denne dato." } } } @@ -483,6 +491,8 @@ "invalid_reward_count": "Ugyldigt antal belønninger", "invalid_reward_name": "Ugyldigt belønningsnavn", "invalid_reward_cost": "Belønningsomkostningerne skal være nul eller større med op til 2 decimaler", + "invalid_reward_assigned_users": "En eller flere tildelte brugere er ikke gyldige", + "mixed_reward_assignment_sentinel": "Kan ikke blande 'alle brugere' med specifikke brugere", "invalid_bonus": "Ugyldig bonus", "invalid_bonus_count": "Ugyldigt bonusantal", "invalid_bonus_name": "Ugyldigt bonusnavn", @@ -569,13 +579,15 @@ "name": "Navn", "ha_user_id": "Hjemmeassistent-bruger", "dashboard_language": "Sprog", - "mobile_notify_service": "Notifikationer" + "mobile_notify_service": "Notifikationer", + "notif_click_url": "URL til tryk på notifikationen" }, "data_description": { "name": "Unikt navn for denne brugerprofil.", "ha_user_id": "Valgfrit: Link denne profil til en Home Assistant-bruger. Hvis kiosktilstand er deaktiveret, afhænger handlinger for krav og indløsning af delte enheder af dette link.", "dashboard_language": "Sprog, der bruges til dashboardindhold og meddelelser.", - "mobile_notify_service": "Vælg notifikationstjeneste, eller lad feltet stå tomt for at deaktivere notifikationer." + "mobile_notify_service": "Vælg notifikationstjeneste, eller lad feltet stå tomt for at deaktivere notifikationer.", + "notif_click_url": "Valgfri URL, der skal åbnes, når der trykkes på en notifikation. Lad feltet stå tomt for standardadfærd." } }, "section_system_usage": { @@ -598,12 +610,18 @@ "data": { "can_approve": "Kan godkende", "can_manage": "Kan administrere", - "associated_user_ids": "Tilknyttede brugere" + "associated_user_ids": "Tilknyttede brugere", + "notif_approve_click_url": "URL til tryk på godkendelsesmeddelelse", + "chores_paused": "Sæt pligter på pause", + "chores_paused_until": "Pause indtil" }, "data_description": { "can_approve": "Tillader godkendelses- og afvisningshandlinger.", "can_manage": "Tillader administrationshandlinger, der kræver forhøjede tilladelser.", - "associated_user_ids": "Brugere, som denne godkender/administrator overvåger, i forbindelse med godkendelseshandlinger." + "associated_user_ids": "Brugere, som denne godkender/administrator overvåger, i forbindelse med godkendelseshandlinger.", + "notif_approve_click_url": "Valgfri URL til godkendelsesmeddelelser. Tilsidesætter den generelle URL til tryk på meddelelser ved godkendelse af pligter eller belønninger.", + "chores_paused": "Sætter opgaver på pause. Der akkumuleres ingen statistikker for forsinkede eller mistede opgaver.", + "chores_paused_until": "Valgfri returdato. Hvis angivet, genoptages opgaver automatisk ved midnat efter denne dato." } } } @@ -926,7 +944,8 @@ "cost": "Belønningsomkostninger", "description": "Beskrivelse (valgfrit)", "reward_labels": "Belønningsetiketter", - "icon": "Ikon (mdi:xxx)" + "icon": "Ikon (mdi:xxx)", + "assigned_user_ids": "Tildelt til" } }, "add_penalty": { @@ -1000,13 +1019,15 @@ "name": "Navn", "ha_user_id": "Hjemmeassistent-bruger", "dashboard_language": "Sprog", - "mobile_notify_service": "Notifikationer" + "mobile_notify_service": "Notifikationer", + "notif_click_url": "URL til tryk på notifikationen" }, "data_description": { "name": "Unikt navn for denne brugerprofil.", "ha_user_id": "Valgfrit: Link denne profil til en Home Assistant-bruger. Hvis kiosktilstand er deaktiveret, afhænger handlinger for krav og indløsning af delte enheder af dette link.", "dashboard_language": "Sprog, der bruges til dashboardindhold og meddelelser.", - "mobile_notify_service": "Vælg notifikationstjeneste, eller lad feltet stå tomt for at deaktivere notifikationer." + "mobile_notify_service": "Vælg notifikationstjeneste, eller lad feltet stå tomt for at deaktivere notifikationer.", + "notif_click_url": "Valgfri URL, der skal åbnes, når der trykkes på en notifikation. Lad feltet stå tomt for standardadfærd." } }, "section_system_usage": { @@ -1029,12 +1050,18 @@ "data": { "can_approve": "Kan godkende", "can_manage": "Kan administrere", - "associated_user_ids": "Tilknyttede brugere" + "associated_user_ids": "Tilknyttede brugere", + "notif_approve_click_url": "URL til tryk på godkendelsesmeddelelse", + "chores_paused": "Sæt pligter på pause", + "chores_paused_until": "Pause indtil" }, "data_description": { "can_approve": "Tillader godkendelses- og afvisningshandlinger.", "can_manage": "Tillader administrationshandlinger, der kræver forhøjede tilladelser.", - "associated_user_ids": "Brugere, som denne godkender/administrator overvåger, i forbindelse med godkendelseshandlinger." + "associated_user_ids": "Brugere, som denne godkender/administrator overvåger, i forbindelse med godkendelseshandlinger.", + "notif_approve_click_url": "Valgfri URL til godkendelsesmeddelelser. Tilsidesætter den generelle URL til tryk på meddelelser ved godkendelse af pligter eller belønninger.", + "chores_paused": "Sætter opgaver på pause. Der akkumuleres ingen statistikker for forsinkede eller mistede opgaver.", + "chores_paused_until": "Valgfri returdato. Hvis angivet, genoptages opgaver automatisk ved midnat efter denne dato." } } } @@ -1385,7 +1412,8 @@ "cost": "Belønningsomkostninger", "description": "Beskrivelse (valgfrit)", "reward_labels": "Belønningsetiketter", - "icon": "Ikon (mdi:xxx)" + "icon": "Ikon (mdi:xxx)", + "assigned_user_ids": "Tildelt til" } }, "edit_penalty": { @@ -1633,6 +1661,7 @@ "title": "Generelle muligheder", "description": "Administrer generelle indstillinger for ChoreOps-integrationen.\n\n ℹ️ [Læs mere om generelle indstillinger]({documentation_url})", "data": { + "dashboard_points_precision": "Præcision i dashboardpunkter", "default_chore_points": "Standardpoint pr. opgave", "points_adjust_values": "Værdier for knap til manuel justering af punkter", "update_interval": "Opdateringsinterval", @@ -1649,6 +1678,7 @@ "backup_action_selection": "Sikkerhedskopieringshandlinger" }, "data_description": { + "dashboard_points_precision": "Vælg, hvordan punkter vises på tværs af understøttede dashboards. Dette ændrer kun dashboardformateringen og ændrer ikke gemte punktværdier eller beregninger.", "default_chore_points": "Standardpointværdi brugt til nye opgaver, når brugerdefinerede point ikke er angivet.", "points_adjust_values": "Liste over værdier for knapperne til manuel punktjustering. Hver værdi adskilt af '|'.", "update_interval": "Interval i minutter for opdatering af ChoreOps' interne tilstand.", @@ -1948,6 +1978,14 @@ "return_to_menu": "↩️ Tilbage til hovedmenuen" } }, + "dashboard_points_precision": { + "options": { + "fixed_0": "Kun hele tal", + "adaptive": "Adaptiv (vis kun decimaler når det er nødvendigt)", + "fixed_1": "Altid 1 decimal", + "fixed_2": "Altid 2 decimaler" + } + }, "select_backup_to_delete": { "options": { "cancel": "↩️ Annuller (gå tilbage til backupmenuen)" @@ -2223,6 +2261,37 @@ } } }, + "pause_user_chores": { + "name": "Sæt brugerens pligter på pause", + "description": "Sæt en brugers pligtbehandling på pause eller genoptag den.", + "fields": { + "config_entry_id": { + "name": "Konfigurationsindgangs-ID (valgfrit)", + "description": "Brug dette, hvis du har mere end én ChoreOps-opsætning. Den er rettet mod én specifik opsætning.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Navn på konfigurationspost (valgfrit)", + "description": "Brug dette, hvis du har mere end én ChoreOps-opsætning, og de hver især har unikke navne. Hvis navnene gentages, skal du bruge Config Entry ID.", + "example": "Familiepligter" + }, + "user_name": { + "name": "Brugernavn", + "description": "Navn på den bruger, hvis opgaver skal sættes på pause eller genoptages.", + "example": "Sara" + }, + "paused": { + "name": "Pausesat", + "description": "Sandt for at sætte pligter på pause, Falsk for at genoptage dem.", + "example": "ægte" + }, + "paused_until": { + "name": "Pause indtil", + "description": "Valgfri returdato. Hvis angivet, genoptages opgaver automatisk ved midnat efter denne dato.", + "example": "2026-06-10T00:00:00+00:00" + } + } + }, "redeem_reward": { "name": "Indløs belønning", "description": "En godkender indløser en belønning for en tildelt person og trækker point fra.", @@ -2461,6 +2530,11 @@ "name": "Etiketter", "description": "Etiketter til gruppering af belønninger.", "example": "['weekend', 'speciel']" + }, + "assigned_user_names": { + "name": "Tildelt til", + "description": "Brugervisningsnavne tildelt denne belønning. Brug [\"*\"] for alle brugere. Vis en tom liste for ikke at tildele til nogen brugere.", + "example": "['Zoë', 'Max!']" } } }, @@ -2507,6 +2581,11 @@ "name": "Etiketter", "description": "Opdaterede etiketter.", "example": "['præmie', 'special']" + }, + "assigned_user_names": { + "name": "Tildelt til", + "description": "Brugernavne, der er tildelt denne belønning. Brug [\"*\"] for alle brugere. Send en tom liste for at fjerne alle tildelte brugere. Undlad at lade aktuelle tildelinger være uændrede.", + "example": "['Zoë', 'Max!']" } } }, @@ -2557,7 +2636,7 @@ }, "assigned_user_names": { "name": "Tildelt til", - "description": "Liste over navne på tildelte personer, som denne opgave skal tildeles.", + "description": "Liste over navne på tildelte personer, som denne opgave skal tildeles. Brug [\"*\"] for alle brugere, der kan tildeles. Giv en tom liste for at oprette uden tildelte personer.", "example": "['Emma', 'Jack']" }, "points": { @@ -2663,7 +2742,7 @@ }, "assigned_user_names": { "name": "Tildelt til", - "description": "Ny liste over navne på tildelte personer, som denne opgave skal tildeles.", + "description": "Ny liste over navne på tildelte personer, som denne opgave skal tildeles. Brug [\"*\"] for alle brugere, der kan tildeles. Send en tom liste for at fjerne alle tildelte brugere. Undlad at lade aktuelle tildelinger være uændrede.", "example": "['Emma', 'Jack']" }, "points": { @@ -2735,6 +2814,11 @@ "name": "Forskydning af påmindelse", "description": "Ny forskydning af påmindelse om forfald. Varighed før forfaldsdato for afsendelse af påmindelsesbesked. Format: '30m', '1t', '1d 6t 30m' osv. Brug '0' for at deaktivere.", "example": "30m" + }, + "assignment_action": { + "name": "Tildelingshandling", + "description": "Sådan håndteres listen assigned_user_names. 'replace' angiver listen direkte (standard, bagudkompatibel). 'add' tilføjer de anførte brugere til eksisterende tildelte. 'remove' fjerner de anførte brugere fra eksisterende tildelte.", + "example": "tilføje" } } }, @@ -3096,6 +3180,11 @@ "name": "Spring ikke-tilbagevendende pligter over", "description": "Aktiver dette for at lade engangsopgaver være uændrede i stedet for at flytte deres forfaldsdato til grænsen.", "example": "falsk" + }, + "allow_long_recurrences": { + "name": "Tillad lange gentagelser", + "description": "Tillad omplanlægning af månedlige, kvartalsvise, årlige og andre gentagelser med lang intervaller. Standardindstillingen er falsk for at forhindre utilsigtede store spring.", + "example": "ægte" } } }, @@ -3179,7 +3268,8 @@ "completed_by_other": "Udfyldt af Anden", "waiting": "Venter (frist ikke åben)", "not_my_turn": "Ikke min tur (rotation)", - "missed": "Mistet (Låst)" + "missed": "Mistet (Låst)", + "paused": "Pausesat" }, "state_attributes": { "purpose": { @@ -3426,7 +3516,8 @@ "blocked_pending_claim": "Afventende krav", "blocked_waiting_window": "Venter på forfaldsfrist", "blocked_not_my_turn": "Ikke din tur", - "blocked_missed_locked": "Mistet og låst" + "blocked_missed_locked": "Mistet og låst", + "blocked_paused": "Huslige pligter er sat på pause for denne bruger" } }, "turn_user_name": { @@ -4740,9 +4831,15 @@ "core_sensors": { "name": "Kernesensorer" }, + "dashboard_config": { + "name": "Dashboardkonfiguration" + }, "dashboard_helpers": { "name": "Dashboard-hjælpere" }, + "shard_runtime": { + "name": "Kørselstid for pligtliste" + }, "chores_by_label": { "name": "Huslige pligter efter label" }, @@ -4753,6 +4850,29 @@ "name": "Sprog" } } + }, + "assignee_dashboard_chore_list_helper_sensor": { + "name": "Liste over opgaver i brugergrænseflade-dashboard {shard_index}", + "state_attributes": { + "purpose": { + "name": "Formål", + "state": { + "purpose_dashboard_chore_shard_helper": "Viser én opgaveliste på dashboardet, når en brugers fulde opgaveliste er for stor til hovedhjælperen." + } + }, + "chores": { + "name": "Huslige pligter" + }, + "shard_index": { + "name": "Nummer på pligtliste" + }, + "shard_count": { + "name": "Samlede opgaver" + }, + "helper_contract_version": { + "name": "Hjælpekontraktversion" + } + } } }, "select": { @@ -5314,6 +5434,9 @@ }, "notif_message_chore_missed": { "message": "{assignee_name} missede opgaven: {chore_name}" + }, + "chore_paused": { + "message": "Behandling af huslige pligter er i øjeblikket sat på pause for denne bruger." } } } diff --git a/custom_components/choreops/translations/de.json b/custom_components/choreops/translations/de.json index 93c17d1..8678349 100644 --- a/custom_components/choreops/translations/de.json +++ b/custom_components/choreops/translations/de.json @@ -81,13 +81,15 @@ "name": "Name", "ha_user_id": "Home Assistant Benutzer", "dashboard_language": "Sprache", - "mobile_notify_service": "Benachrichtigungen" + "mobile_notify_service": "Benachrichtigungen", + "notif_click_url": "URL für Benachrichtigungs-Tipp" }, "data_description": { "name": "Eindeutiger Name für dieses Benutzerprofil.", "ha_user_id": "Optional: Verknüpfen Sie dieses Profil mit einem Home Assistant-Benutzer. Wenn der Kioskmodus deaktiviert ist, basieren Aktionen zum Beanspruchen und Einlösen von gemeinsam genutzten Geräten auf dieser Verknüpfung.", "dashboard_language": "Sprache, die für Dashboard-Inhalte und Benachrichtigungen verwendet wird.", - "mobile_notify_service": "Wähle einen Benachrichtigungsdienst aus oder lass das Feld leer, um Benachrichtigungen zu deaktivieren." + "mobile_notify_service": "Wähle einen Benachrichtigungsdienst aus oder lass das Feld leer, um Benachrichtigungen zu deaktivieren.", + "notif_click_url": "Optionale URL, die beim Antippen der Benachrichtigung geöffnet wird. Für das Standardverhalten leer lassen." } }, "section_system_usage": { @@ -110,12 +112,18 @@ "data": { "can_approve": "Kann genehmigen", "can_manage": "Kann verwalten", - "associated_user_ids": "Zugehörige Benutzer" + "associated_user_ids": "Zugehörige Benutzer", + "notif_approve_click_url": "URL für Genehmigungsbenachrichtigung", + "chores_paused": "Hausarbeiten pausieren", + "chores_paused_until": "Angehalten bis" }, "data_description": { "can_approve": "Ermöglicht Genehmigungs- und Ablehnungsmaßnahmen.", "can_manage": "Ermöglicht Managementaktionen, die erhöhte Berechtigungen erfordern.", - "associated_user_ids": "Benutzer, die von diesem Genehmiger/Administrator für Genehmigungsvorgänge überwacht werden." + "associated_user_ids": "Benutzer, die von diesem Genehmiger/Administrator für Genehmigungsvorgänge überwacht werden.", + "notif_approve_click_url": "Optionale URL für Genehmigungsbenachrichtigungen. Überschreibt die allgemeine Benachrichtigungs-URL beim Genehmigen von Aufgaben oder Belohnungen.", + "chores_paused": "Die Verarbeitung von Aufgaben wird unterbrochen. Es sammeln sich keine überfälligen oder verpassten Statistiken an.", + "chores_paused_until": "Optionales Rückkehrdatum. Falls festgelegt, werden die Aufgaben automatisch um Mitternacht nach diesem Datum fortgesetzt." } } } @@ -483,6 +491,8 @@ "invalid_reward_count": "Ungültige Anzahl von Belohnungen", "invalid_reward_name": "Ungültiger Belohnungsname", "invalid_reward_cost": "Die Kosten der Belohnung müssen null oder höher sein (mit maximal zwei Dezimalstellen).", + "invalid_reward_assigned_users": "Mindestens ein zugewiesener Benutzer ist ungültig.", + "mixed_reward_assignment_sentinel": "„Alle Benutzer“ und „Bestimmte Benutzer“ können nicht vermischt werden.", "invalid_bonus": "Ungültiger Bonus", "invalid_bonus_count": "Ungültige Anzahl von Boni", "invalid_bonus_name": "Ungültiger Bonusname", @@ -569,13 +579,15 @@ "name": "Name", "ha_user_id": "Home Assistant Benutzer", "dashboard_language": "Sprache", - "mobile_notify_service": "Benachrichtigungen" + "mobile_notify_service": "Benachrichtigungen", + "notif_click_url": "URL für Benachrichtigungs-Tipp" }, "data_description": { "name": "Eindeutiger Name für dieses Benutzerprofil.", "ha_user_id": "Optional: Verknüpfen Sie dieses Profil mit einem Home Assistant-Benutzer. Wenn der Kioskmodus deaktiviert ist, basieren Aktionen zum Beanspruchen und Einlösen von gemeinsam genutzten Geräten auf dieser Verknüpfung.", "dashboard_language": "Sprache, die für Dashboard-Inhalte und Benachrichtigungen verwendet wird.", - "mobile_notify_service": "Wählen Sie einen Benachrichtigungsdienst aus oder lassen Sie das Feld leer, um Benachrichtigungen zu deaktivieren." + "mobile_notify_service": "Wählen Sie einen Benachrichtigungsdienst aus oder lassen Sie das Feld leer, um Benachrichtigungen zu deaktivieren.", + "notif_click_url": "Optionale URL, die beim Antippen der Benachrichtigung geöffnet wird. Für das Standardverhalten leer lassen." } }, "section_system_usage": { @@ -598,12 +610,18 @@ "data": { "can_approve": "Kann zustimmen", "can_manage": "Kann ich bewältigen", - "associated_user_ids": "Zugehörige Benutzer" + "associated_user_ids": "Zugehörige Benutzer", + "notif_approve_click_url": "URL für Genehmigungsbenachrichtigung", + "chores_paused": "Hausarbeiten pausieren", + "chores_paused_until": "Angehalten bis" }, "data_description": { "can_approve": "Ermöglicht Genehmigungs- und Ablehnungsmaßnahmen.", "can_manage": "Ermöglicht Managementaktionen, die erhöhte Berechtigungen erfordern.", - "associated_user_ids": "Benutzer, die von diesem Genehmiger/Administrator für Genehmigungsvorgänge überwacht werden." + "associated_user_ids": "Benutzer, die von diesem Genehmiger/Administrator für Genehmigungsvorgänge überwacht werden.", + "notif_approve_click_url": "Optionale URL für Genehmigungsbenachrichtigungen. Überschreibt die allgemeine Benachrichtigungs-URL beim Genehmigen von Aufgaben oder Belohnungen.", + "chores_paused": "Die Verarbeitung von Aufgaben wird unterbrochen. Es sammeln sich keine überfälligen oder verpassten Statistiken an.", + "chores_paused_until": "Optionales Rückkehrdatum. Falls festgelegt, werden die Aufgaben automatisch um Mitternacht nach diesem Datum fortgesetzt." } } } @@ -926,7 +944,8 @@ "cost": "Kosten der Belohnung", "description": "Beschreibung (optional)", "reward_labels": "Belohnungsetiketten", - "icon": "Symbol (mdi:xxx)" + "icon": "Symbol (mdi:xxx)", + "assigned_user_ids": "Zugewiesen an" } }, "add_penalty": { @@ -1000,13 +1019,15 @@ "name": "Name", "ha_user_id": "Home Assistant Benutzer", "dashboard_language": "Sprache", - "mobile_notify_service": "Benachrichtigungen" + "mobile_notify_service": "Benachrichtigungen", + "notif_click_url": "URL für Benachrichtigungs-Tipp" }, "data_description": { "name": "Eindeutiger Name für dieses Benutzerprofil.", "ha_user_id": "Optional: Verknüpfen Sie dieses Profil mit einem Home Assistant-Benutzer. Wenn der Kioskmodus deaktiviert ist, basieren Aktionen zum Beanspruchen und Einlösen von gemeinsam genutzten Geräten auf dieser Verknüpfung.", "dashboard_language": "Sprache, die für Dashboard-Inhalte und Benachrichtigungen verwendet wird.", - "mobile_notify_service": "Wählen Sie einen Benachrichtigungsdienst aus oder lassen Sie das Feld leer, um Benachrichtigungen zu deaktivieren." + "mobile_notify_service": "Wählen Sie einen Benachrichtigungsdienst aus oder lassen Sie das Feld leer, um Benachrichtigungen zu deaktivieren.", + "notif_click_url": "Optionale URL, die beim Antippen der Benachrichtigung geöffnet wird. Für das Standardverhalten leer lassen." } }, "section_system_usage": { @@ -1029,12 +1050,18 @@ "data": { "can_approve": "Kann genehmigen", "can_manage": "Kann ich bewältigen?", - "associated_user_ids": "Zugehörige Benutzer" + "associated_user_ids": "Zugehörige Benutzer", + "notif_approve_click_url": "URL für Genehmigungsbenachrichtigung", + "chores_paused": "Hausarbeiten pausieren", + "chores_paused_until": "Angehalten bis" }, "data_description": { "can_approve": "Ermöglicht Genehmigungs- und Ablehnungsmaßnahmen.", "can_manage": "Ermöglicht Managementaktionen, die erhöhte Berechtigungen erfordern.", - "associated_user_ids": "Benutzer, die von diesem Genehmiger/Administrator für Genehmigungsvorgänge überwacht werden." + "associated_user_ids": "Benutzer, die von diesem Genehmiger/Administrator für Genehmigungsvorgänge überwacht werden.", + "notif_approve_click_url": "Optionale URL für Genehmigungsbenachrichtigungen. Überschreibt die allgemeine Benachrichtigungs-URL beim Genehmigen von Aufgaben oder Belohnungen.", + "chores_paused": "Die Verarbeitung von Aufgaben wird unterbrochen. Es sammeln sich keine überfälligen oder verpassten Statistiken an.", + "chores_paused_until": "Optionales Rückkehrdatum. Falls festgelegt, werden die Aufgaben automatisch um Mitternacht nach diesem Datum fortgesetzt." } } } @@ -1385,7 +1412,8 @@ "cost": "Kosten der Belohnung", "description": "Beschreibung (optional)", "reward_labels": "Belohnungsetiketten", - "icon": "Symbol (mdi:xxx)" + "icon": "Symbol (mdi:xxx)", + "assigned_user_ids": "Zugewiesen an" } }, "edit_penalty": { @@ -1633,6 +1661,7 @@ "title": "Allgemeine Optionen", "description": "Allgemeine Einstellungen für die ChoreOps-Integration verwalten.\n\n ℹ️ [Mehr über allgemeine Optionen erfahren]({documentation_url})", "data": { + "dashboard_points_precision": "Dashboard-Punkte-Präzision", "default_chore_points": "Standardpunkte pro Aufgabe", "points_adjust_values": "Manuelle Punkte-Anpassungswerte", "update_interval": "Aktualisierungsintervall", @@ -1649,6 +1678,7 @@ "backup_action_selection": "Sicherungsaktionen" }, "data_description": { + "dashboard_points_precision": "Wählen Sie aus, wie die Punkte in den unterstützten Dashboards angezeigt werden. Dies ändert nur die Dashboard-Formatierung und nicht die gespeicherten Punktwerte oder Berechnungen.", "default_chore_points": "Standardpunktwert, der für neue Aufgaben verwendet wird, wenn keine benutzerdefinierten Punkte angegeben werden.", "points_adjust_values": "Liste von Werten für die Schaltflächen zur manuellen Punkteanpassung. Jeden Wert durch '|' trennen..", "update_interval": "Intervall in Minuten für die Aktualisierung des internen Status von ChoreOps.", @@ -1948,6 +1978,14 @@ "return_to_menu": "↩️ Zurück zum Hauptmenü" } }, + "dashboard_points_precision": { + "options": { + "fixed_0": "Nur ganze Zahlen", + "adaptive": "Adaptiv (Dezimalstellen nur bei Bedarf anzeigen)", + "fixed_1": "Immer auf eine Dezimalstelle gerundet", + "fixed_2": "Immer auf 2 Dezimalstellen gerundet" + } + }, "select_backup_to_delete": { "options": { "cancel": "↩️ Abbrechen (zurück zum Backup-Menü)" @@ -2223,6 +2261,37 @@ } } }, + "pause_user_chores": { + "name": "Aufgaben des Benutzers pausieren", + "description": "Aufgabenverarbeitung für einen Benutzer pausieren oder fortsetzen.", + "fields": { + "config_entry_id": { + "name": "Konfigurationseintrags-ID (optional)", + "description": "Verwenden Sie diese Option, wenn Sie mehrere ChoreOps-Setups haben. Sie ist auf ein bestimmtes Setup ausgerichtet.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Name des Konfigurationseintrags (optional)", + "description": "Verwenden Sie diese Option, wenn Sie mehrere ChoreOps-Setups mit jeweils eindeutigen Namen haben. Bei sich wiederholenden Namen verwenden Sie die Konfigurationseintrags-ID.", + "example": "Familienaufgaben" + }, + "user_name": { + "name": "Benutzername", + "description": "Name des Benutzers, dessen Aufgaben pausiert oder fortgesetzt werden sollen.", + "example": "Sarah" + }, + "paused": { + "name": "Angehalten", + "description": "Wahr, um Aufgaben zu pausieren, Falsch, um sie fortzusetzen.", + "example": "WAHR" + }, + "paused_until": { + "name": "Angehalten bis", + "description": "Optionales Rückkehrdatum. Falls festgelegt, werden die Aufgaben automatisch um Mitternacht nach diesem Datum fortgesetzt.", + "example": "2026-06-10T00:00:00+00:00" + } + } + }, "redeem_reward": { "name": "Belohnung einlösen", "description": "Ein Genehmiger löst eine Prämie für einen Beauftragten ein und zieht dabei Punkte ab.", @@ -2461,6 +2530,11 @@ "name": "Etiketten", "description": "Etiketten zur Gruppierung von Belohnungen.", "example": "['Wochenende', 'Spezial']" + }, + "assigned_user_names": { + "name": "Zugewiesen an", + "description": "Benutzeranzeigennamen, die dieser Belohnung zugewiesen werden. Verwenden Sie [\"*\"] für alle Benutzer. Übergeben Sie eine leere Liste, um die Belohnung keinem Benutzer zuzuweisen.", + "example": "['Zoë', 'Max!']" } } }, @@ -2507,6 +2581,11 @@ "name": "Etiketten", "description": "Aktualisierte Etiketten.", "example": "['Premium', 'Spezial']" + }, + "assigned_user_names": { + "name": "Zugewiesen an", + "description": "Benutzernamen, die dieser Belohnung zugewiesen sind. Verwenden Sie [\"*\"] für alle Benutzer. Übergeben Sie eine leere Liste, um alle zugewiesenen Benutzer zu entfernen. Lassen Sie die Angabe weg, um die aktuellen Zuweisungen beizubehalten.", + "example": "['Zoë', 'Max!']" } } }, @@ -2557,7 +2636,7 @@ }, "assigned_user_names": { "name": "Zugewiesen an", - "description": "Liste der Namen derjenigen, denen diese Aufgabe zugewiesen werden soll.", + "description": "Liste der Namen derjenigen, denen diese Aufgabe zugewiesen werden soll. Verwenden Sie [\"*\"] für alle zuweisbaren Benutzer. Übergeben Sie eine leere Liste, um die Aufgabe ohne Zuweisungen zu erstellen.", "example": "['Emma', 'Jack']" }, "points": { @@ -2663,7 +2742,7 @@ }, "assigned_user_names": { "name": "Zugewiesen an", - "description": "Neue Liste der Namen derjenigen, denen diese Aufgabe zugewiesen werden soll.", + "description": "Neue Liste der Bearbeiter für diese Aufgabe. Verwenden Sie [\"*\"] für alle bearbeitern Benutzer. Übergeben Sie eine leere Liste, um alle bearbeitern Benutzer zu entfernen. Lassen Sie die Liste weg, um die aktuellen Bearbeiter zu belassen.", "example": "['Emma', 'Jack']" }, "points": { @@ -2735,6 +2814,11 @@ "name": "Fälligkeitserinnerung Verrechnung", "description": "Neuer Erinnerungs-Offset. Dauer vor dem Fälligkeitsdatum, bis eine Erinnerung versendet wird. Format: '30m', '1h', '1d 6h 30m' usw. '0' zum Deaktivieren verwenden.", "example": "30 m" + }, + "assignment_action": { + "name": "Zuweisungsaktion", + "description": "So wird die Liste „assigned_user_names“ verarbeitet: „replace“ setzt die Liste direkt (Standard, abwärtskompatibel). „add“ fügt die aufgelisteten Benutzer bestehenden Bearbeitern hinzu. „remove“ entfernt die aufgelisteten Benutzer aus bestehenden Bearbeitern.", + "example": "hinzufügen" } } }, @@ -3096,6 +3180,11 @@ "name": "Nicht wiederkehrende Aufgaben überspringen", "description": "Aktivieren Sie diese Option, damit einmalige Aufgaben unverändert bleiben, anstatt deren Fälligkeitsdatum in den Bereich zu verschieben.", "example": "FALSCH" + }, + "allow_long_recurrences": { + "name": "Lange Wiederholungen zulassen", + "description": "Ermöglicht die Neuplanung monatlicher, vierteljährlicher, jährlicher und anderer langintervalliger Wiederholungen. Standardmäßig deaktiviert, um versehentliche große Zeitsprünge zu vermeiden.", + "example": "WAHR" } } }, @@ -3179,7 +3268,8 @@ "completed_by_other": "Ausgefüllt von Anderen", "waiting": "Warten (Terminfenster nicht geöffnet)", "not_my_turn": "Nicht meine Runde (Rotation)", - "missed": "Verpasst (gesperrt)" + "missed": "Verpasst (gesperrt)", + "paused": "Angehalten" }, "state_attributes": { "purpose": { @@ -3426,7 +3516,8 @@ "blocked_pending_claim": "Anhängiger Anspruch", "blocked_waiting_window": "Warten auf das Fälligkeitsfenster", "blocked_not_my_turn": "Du bist nicht dran.", - "blocked_missed_locked": "Verpasst und gesperrt" + "blocked_missed_locked": "Verpasst und gesperrt", + "blocked_paused": "Die Aufgaben für diesen Benutzer sind pausiert." } }, "turn_user_name": { @@ -4740,9 +4831,15 @@ "core_sensors": { "name": "Kernsensoren" }, + "dashboard_config": { + "name": "Dashboard-Konfiguration" + }, "dashboard_helpers": { "name": "Dashboard-Helfer" }, + "shard_runtime": { + "name": "Laufzeit der Aufgabenliste" + }, "chores_by_label": { "name": "Aufgaben nach Label" }, @@ -4753,6 +4850,29 @@ "name": "Sprache" } } + }, + "assignee_dashboard_chore_list_helper_sensor": { + "name": "Aufgabenliste im UI-Dashboard {shard_index}", + "state_attributes": { + "purpose": { + "name": "Zweck", + "state": { + "purpose_dashboard_chore_shard_helper": "Bietet eine Aufgabenliste für die Anzeige im Dashboard, wenn die vollständige Aufgabenliste eines Benutzers zu groß für den Hauptassistenten ist." + } + }, + "chores": { + "name": "Aufgaben" + }, + "shard_index": { + "name": "Aufgabenliste Nummer" + }, + "shard_count": { + "name": "Vollständige Aufgabenlisten" + }, + "helper_contract_version": { + "name": "Helfervertragsversion" + } + } } }, "select": { @@ -5314,6 +5434,9 @@ }, "notif_message_chore_missed": { "message": "{assignee_name} hat die Aufgabe verpasst: {chore_name}" + }, + "chore_paused": { + "message": "Die Aufgabenverarbeitung ist für diesen Benutzer derzeit pausiert." } } } diff --git a/custom_components/choreops/translations/es.json b/custom_components/choreops/translations/es.json index cd9fb5a..4a37aa5 100644 --- a/custom_components/choreops/translations/es.json +++ b/custom_components/choreops/translations/es.json @@ -81,13 +81,15 @@ "name": "Nombre", "ha_user_id": "Usuario de Home Assistant", "dashboard_language": "Idioma", - "mobile_notify_service": "Notificaciones" + "mobile_notify_service": "Notificaciones", + "notif_click_url": "URL de notificación" }, "data_description": { "name": "Nombre único para este perfil de usuario.", "ha_user_id": "Opcional: Vincula este perfil a un usuario de Home Assistant. Si el modo quiosco está desactivado, las acciones de reclamación y canje de dispositivos compartidos dependen de este vínculo.", "dashboard_language": "Idioma utilizado para el contenido del panel y las notificaciones.", - "mobile_notify_service": "Seleccione el servicio de notificaciones o déjelo vacío para deshabilitar las notificaciones." + "mobile_notify_service": "Seleccione el servicio de notificaciones o déjelo vacío para deshabilitar las notificaciones.", + "notif_click_url": "URL opcional que se abrirá al pulsar la notificación. Déjela en blanco para que se active el comportamiento predeterminado." } }, "section_system_usage": { @@ -110,12 +112,18 @@ "data": { "can_approve": "Puede aprobar", "can_manage": "Puede administrar", - "associated_user_ids": "Usuarios asociados" + "associated_user_ids": "Usuarios asociados", + "notif_approve_click_url": "URL para tocar la notificación de aprobación", + "chores_paused": "Pausar las tareas", + "chores_paused_until": "Pausa hasta" }, "data_description": { "can_approve": "Permite acciones de aprobación y desaprobación.", "can_manage": "Permite acciones de gestión que requieren permisos elevados.", - "associated_user_ids": "Usuarios que este aprobador/administrador supervisa para acciones de aprobación." + "associated_user_ids": "Usuarios que este aprobador/administrador supervisa para acciones de aprobación.", + "notif_approve_click_url": "URL opcional para notificaciones de aprobación. Anula la URL general de notificación al aprobar tareas o recompensas.", + "chores_paused": "Pausa el procesamiento de tareas. No se acumulan estadísticas atrasadas ni perdidas.", + "chores_paused_until": "Fecha de regreso opcional. Si se establece, las tareas se reanudarán automáticamente a medianoche después de esta fecha." } } } @@ -483,6 +491,8 @@ "invalid_reward_count": "Cantidad de recompensas no válida", "invalid_reward_name": "Nombre de recompensa no válido", "invalid_reward_cost": "El costo de la recompensa debe ser cero o mayor con hasta 2 decimales.", + "invalid_reward_assigned_users": "Uno o más usuarios asignados no son válidos", + "mixed_reward_assignment_sentinel": "No se pueden combinar \"todos los usuarios\" con usuarios específicos.", "invalid_bonus": "Bonificación no válida", "invalid_bonus_count": "Cantidad de bonificaciones no válida", "invalid_bonus_name": "Nombre de bonificación no válido", @@ -569,13 +579,15 @@ "name": "Nombre", "ha_user_id": "Usuario de Home Assistant", "dashboard_language": "Idioma", - "mobile_notify_service": "Notificaciones" + "mobile_notify_service": "Notificaciones", + "notif_click_url": "URL de notificación" }, "data_description": { "name": "Nombre único para este perfil de usuario.", "ha_user_id": "Opcional: Vincula este perfil a un usuario de Home Assistant. Si el modo quiosco está desactivado, las acciones de reclamación y canje de dispositivos compartidos dependen de este vínculo.", "dashboard_language": "Idioma utilizado para el contenido del panel y las notificaciones.", - "mobile_notify_service": "Seleccione el servicio de notificaciones o déjelo vacío para deshabilitar las notificaciones." + "mobile_notify_service": "Seleccione el servicio de notificaciones o déjelo vacío para deshabilitar las notificaciones.", + "notif_click_url": "URL opcional que se abrirá al pulsar la notificación. Déjela en blanco para que se active el comportamiento predeterminado." } }, "section_system_usage": { @@ -598,12 +610,18 @@ "data": { "can_approve": "Puede aprobar", "can_manage": "Puede administrar", - "associated_user_ids": "Usuarios asociados" + "associated_user_ids": "Usuarios asociados", + "notif_approve_click_url": "URL para tocar la notificación de aprobación", + "chores_paused": "Pausar las tareas", + "chores_paused_until": "Pausa hasta" }, "data_description": { "can_approve": "Permite acciones de aprobación y desaprobación.", "can_manage": "Permite acciones de gestión que requieren permisos elevados.", - "associated_user_ids": "Usuarios que este aprobador/administrador supervisa para acciones de aprobación." + "associated_user_ids": "Usuarios que este aprobador/administrador supervisa para acciones de aprobación.", + "notif_approve_click_url": "URL opcional para notificaciones de aprobación. Anula la URL general de notificación al aprobar tareas o recompensas.", + "chores_paused": "Pausa el procesamiento de tareas. No se acumulan estadísticas atrasadas ni perdidas.", + "chores_paused_until": "Fecha de regreso opcional. Si se establece, las tareas se reanudarán automáticamente a medianoche después de esta fecha." } } } @@ -926,7 +944,8 @@ "cost": "Costo de recompensa", "description": "Descripción (opcional)", "reward_labels": "Etiquetas de recompensa", - "icon": "Icono (mdi:xxx)" + "icon": "Icono (mdi:xxx)", + "assigned_user_ids": "Asignado a" } }, "add_penalty": { @@ -1000,13 +1019,15 @@ "name": "Nombre", "ha_user_id": "Usuario de Home Assistant", "dashboard_language": "Idioma", - "mobile_notify_service": "Notificaciones" + "mobile_notify_service": "Notificaciones", + "notif_click_url": "URL de notificación" }, "data_description": { "name": "Nombre único para este perfil de usuario.", "ha_user_id": "Opcional: Vincula este perfil a un usuario de Home Assistant. Si el modo quiosco está desactivado, las acciones de reclamación y canje de dispositivos compartidos dependen de este vínculo.", "dashboard_language": "Idioma utilizado para el contenido del panel y las notificaciones.", - "mobile_notify_service": "Seleccione el servicio de notificaciones o déjelo vacío para deshabilitar las notificaciones." + "mobile_notify_service": "Seleccione el servicio de notificaciones o déjelo vacío para deshabilitar las notificaciones.", + "notif_click_url": "URL opcional que se abrirá al pulsar la notificación. Déjela en blanco para que se active el comportamiento predeterminado." } }, "section_system_usage": { @@ -1029,12 +1050,18 @@ "data": { "can_approve": "Puede aprobar", "can_manage": "Puede administrar", - "associated_user_ids": "Usuarios asociados" + "associated_user_ids": "Usuarios asociados", + "notif_approve_click_url": "URL para tocar la notificación de aprobación", + "chores_paused": "Pausar las tareas", + "chores_paused_until": "Pausa hasta" }, "data_description": { "can_approve": "Permite acciones de aprobación y desaprobación.", "can_manage": "Permite acciones de gestión que requieren permisos elevados.", - "associated_user_ids": "Usuarios que este aprobador/administrador supervisa para acciones de aprobación." + "associated_user_ids": "Usuarios que este aprobador/administrador supervisa para acciones de aprobación.", + "notif_approve_click_url": "URL opcional para notificaciones de aprobación. Anula la URL general de notificación al aprobar tareas o recompensas.", + "chores_paused": "Pausa el procesamiento de tareas. No se acumulan estadísticas atrasadas ni perdidas.", + "chores_paused_until": "Fecha de regreso opcional. Si se establece, las tareas se reanudarán automáticamente a medianoche después de esta fecha." } } } @@ -1385,7 +1412,8 @@ "cost": "Costo de la Recompensa", "description": "Descripción (opcional)", "reward_labels": "Etiquetas de la Recompensa", - "icon": "Ícono (mdi:xxx)" + "icon": "Ícono (mdi:xxx)", + "assigned_user_ids": "Asignado a" } }, "edit_penalty": { @@ -1633,6 +1661,7 @@ "title": "Opciones Generales", "description": "Administrar la configuración general para la integración de ChoreOps.\n\n ℹ️ [Obtener más información sobre las opciones generales]({documentation_url})", "data": { + "dashboard_points_precision": "Precisión de los puntos del panel de control", "default_chore_points": "Puntos predeterminados por tarea", "points_adjust_values": "Valores de Ajuste Manual de Puntos", "update_interval": "Intervalo de Actualización", @@ -1649,6 +1678,7 @@ "backup_action_selection": "Acciones de Copia de Seguridad" }, "data_description": { + "dashboard_points_precision": "Elige cómo se muestran los puntos en los paneles compatibles. Esto solo modifica el formato del panel y no altera los valores de los puntos almacenados ni los cálculos.", "default_chore_points": "Valor de puntos predeterminado utilizado para nuevas tareas cuando no se especifican puntos personalizados.", "points_adjust_values": "Lista de valores para los botones de ajuste manual de puntos. Cada valor separado por '|'.", "update_interval": "Intervalo en minutos para actualizar el estado interno de ChoreOps.", @@ -1948,6 +1978,14 @@ "return_to_menu": "↩️ Volver al menú principal" } }, + "dashboard_points_precision": { + "options": { + "fixed_0": "Solo números enteros", + "adaptive": "Adaptativo (muestra los decimales solo cuando es necesario)", + "fixed_1": "Siempre 1 decimal", + "fixed_2": "Siempre dos decimales" + } + }, "select_backup_to_delete": { "options": { "cancel": "↩️ Cancelar (volver al menú de copias)" @@ -2223,6 +2261,37 @@ } } }, + "pause_user_chores": { + "name": "Pausar las tareas del usuario", + "description": "Pausar o reanudar el procesamiento de tareas para un usuario.", + "fields": { + "config_entry_id": { + "name": "ID de entrada de configuración (opcional)", + "description": "Úselo si tiene más de una configuración de ChoreOps. Se centra en una configuración específica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nombre de la entrada de configuración (opcional)", + "description": "Use esto si tiene varias configuraciones de ChoreOps y cada una tiene un nombre único. Si los nombres se repiten, use el ID de entrada de configuración.", + "example": "Tareas familiares" + }, + "user_name": { + "name": "Nombre de usuario", + "description": "Nombre del usuario cuyas tareas se deben pausar o reanudar.", + "example": "Sarah" + }, + "paused": { + "name": "Pausa", + "description": "Verdadero para pausar las tareas, falso para reanudarlas.", + "example": "verdadero" + }, + "paused_until": { + "name": "Pausa hasta", + "description": "Fecha de regreso opcional. Si se establece, las tareas se reanudarán automáticamente a medianoche después de esta fecha.", + "example": "2026-06-10T00:00:00+00:00" + } + } + }, "redeem_reward": { "name": "Canjear Recompensa", "description": "Un aprobador canjea una recompensa por un cesionario, deduciendo puntos.", @@ -2461,6 +2530,11 @@ "name": "Etiquetas", "description": "Etiquetas para agrupar recompensas.", "example": "['fin de semana', 'especial']" + }, + "assigned_user_names": { + "name": "Asignado a", + "description": "Nombres de usuario asignados a esta recompensa. Use [\"*\"] para todos los usuarios. Pase una lista vacía para no asignarla a ningún usuario.", + "example": "['Zoë', 'Max!']" } } }, @@ -2507,6 +2581,11 @@ "name": "Etiquetas", "description": "Etiquetas actualizadas.", "example": "['premium', 'especial']" + }, + "assigned_user_names": { + "name": "Asignado a", + "description": "Nombres de usuario asignados a esta recompensa. Use [\"*\"] para todos los usuarios. Pase una lista vacía para eliminar a todos los usuarios asignados. Omita este campo para dejar las asignaciones actuales sin cambios.", + "example": "['Zoë', 'Max!']" } } }, @@ -2557,7 +2636,7 @@ }, "assigned_user_names": { "name": "Asignado a", - "description": "Lista de nombres de personas a quienes se asignará esta tarea.", + "description": "Lista de nombres de personas a quienes asignar esta tarea. Use [\"*\"] para todos los usuarios a los que se les puede asignar. Pase una lista vacía para crearla sin personas asignadas.", "example": "['Emma', 'Jack']" }, "points": { @@ -2663,7 +2742,7 @@ }, "assigned_user_names": { "name": "Asignado a", - "description": "Nueva lista de nombres de personas a quienes asignar esta tarea.", + "description": "Nueva lista de nombres de personas a quienes asignar esta tarea. Use [\"*\"] para todos los usuarios a quienes asignar. Pase una lista vacía para eliminar a todos los usuarios asignados. Omita este campo para dejar las asignaciones actuales sin cambios.", "example": "['Emma', 'Jack']" }, "points": { @@ -2735,6 +2814,11 @@ "name": "Compensación del recordatorio de vencimiento", "description": "Nuevo tiempo de espera para el recordatorio de vencimiento. Tiempo antes de la fecha de vencimiento para enviar la notificación de recordatorio. Formato: '30m', '1h', '1d 6h 30m', etc. Use '0' para desactivarlo.", "example": "30 metros" + }, + "assignment_action": { + "name": "Acción de asignación", + "description": "Cómo gestionar la lista assigned_user_names. 'replace' establece la lista directamente (opción predeterminada, compatible con versiones anteriores). 'add' agrega los usuarios de la lista a los asignados existentes. 'remove' elimina los usuarios de la lista de los asignados existentes.", + "example": "añadir" } } }, @@ -3096,6 +3180,11 @@ "name": "Omitir tareas no recurrentes", "description": "Habilite esta opción para que las tareas no recurrentes permanezcan sin cambios en lugar de trasladar su fecha de vencimiento al límite.", "example": "fALSO" + }, + "allow_long_recurrences": { + "name": "Permitir recurrencias largas", + "description": "Permite reprogramar periodicidades mensuales, trimestrales, anuales y de otros intervalos largos. El valor predeterminado es falso para evitar grandes saltos accidentales.", + "example": "verdadero" } } }, @@ -3179,7 +3268,8 @@ "completed_by_other": "Completado por Otros", "waiting": "Esperando (Ventana de vencimiento no abierta)", "not_my_turn": "No es mi turno (Rotación)", - "missed": "Perdido (Bloqueado)" + "missed": "Perdido (Bloqueado)", + "paused": "Pausa" }, "state_attributes": { "purpose": { @@ -3426,7 +3516,8 @@ "blocked_pending_claim": "Reclamación pendiente", "blocked_waiting_window": "Esperando la ventana de vencimiento", "blocked_not_my_turn": "No es tu turno", - "blocked_missed_locked": "Perdido y bloqueado" + "blocked_missed_locked": "Perdido y bloqueado", + "blocked_paused": "Las tareas están pausadas para este usuario." } }, "turn_user_name": { @@ -4740,9 +4831,15 @@ "core_sensors": { "name": "Sensores centrales" }, + "dashboard_config": { + "name": "Configuración del panel de control" + }, "dashboard_helpers": { "name": "Ayudantes del panel de control" }, + "shard_runtime": { + "name": "Tiempo de ejecución de la lista de tareas" + }, "chores_by_label": { "name": "Tareas por etiqueta" }, @@ -4753,6 +4850,29 @@ "name": "Idioma" } } + }, + "assignee_dashboard_chore_list_helper_sensor": { + "name": "Lista de tareas del panel de control de la interfaz de usuario {shard_index}", + "state_attributes": { + "purpose": { + "name": "Objetivo", + "state": { + "purpose_dashboard_chore_shard_helper": "Proporciona una lista de tareas para mostrar en el panel de control cuando la lista completa de tareas de un usuario es demasiado grande para el asistente principal." + } + }, + "chores": { + "name": "Tareas" + }, + "shard_index": { + "name": "Número de lista de tareas" + }, + "shard_count": { + "name": "Listas de tareas completas" + }, + "helper_contract_version": { + "name": "Versión del contrato de ayuda" + } + } } }, "select": { @@ -5314,6 +5434,9 @@ }, "notif_message_chore_missed": { "message": "{assignee_name} se perdió la tarea: {chore_name}" + }, + "chore_paused": { + "message": "El procesamiento de tareas está actualmente en pausa para este usuario." } } } diff --git a/custom_components/choreops/translations/fi.json b/custom_components/choreops/translations/fi.json index 4402881..aed81a3 100644 --- a/custom_components/choreops/translations/fi.json +++ b/custom_components/choreops/translations/fi.json @@ -81,13 +81,15 @@ "name": "Nimi", "ha_user_id": "Kotiavustaja-käyttäjä", "dashboard_language": "Kieli", - "mobile_notify_service": "Ilmoitukset" + "mobile_notify_service": "Ilmoitukset", + "notif_click_url": "Ilmoitusnapautuksen URL-osoite" }, "data_description": { "name": "Tämän käyttäjäprofiilin yksilöllinen nimi.", "ha_user_id": "Valinnainen: Linkitä tämä profiili Home Assistant -käyttäjään. Jos kioskitila on poistettu käytöstä, jaetun laitteen lunastustoiminnot edellyttävät tätä linkkiä.", "dashboard_language": "Kojelaudan sisällössä ja ilmoituksissa käytetty kieli.", - "mobile_notify_service": "Valitse ilmoituspalvelu tai jätä tyhjäksi poistaaksesi ilmoitukset käytöstä." + "mobile_notify_service": "Valitse ilmoituspalvelu tai jätä tyhjäksi poistaaksesi ilmoitukset käytöstä.", + "notif_click_url": "Valinnainen URL-osoite, joka avataan ilmoitusta napautettaessa. Jätä tyhjäksi oletusarvoista toimintaa varten." } }, "section_system_usage": { @@ -110,12 +112,18 @@ "data": { "can_approve": "Voi hyväksyä", "can_manage": "Voi hallita", - "associated_user_ids": "Liittyvät käyttäjät" + "associated_user_ids": "Liittyvät käyttäjät", + "notif_approve_click_url": "Hyväksymisilmoituksen napautusosoite", + "chores_paused": "Keskeytä askareita", + "chores_paused_until": "Tauko, kunnes" }, "data_description": { "can_approve": "Sallii hyväksymis- ja hylkäystoiminnot.", "can_manage": "Sallii hallintatoiminnot, jotka vaativat laajennettuja käyttöoikeuksia.", - "associated_user_ids": "Käyttäjät, joita tämä hyväksyjä/ylläpitäjä valvoo hyväksyntätoimien osalta." + "associated_user_ids": "Käyttäjät, joita tämä hyväksyjä/ylläpitäjä valvoo hyväksyntätoimien osalta.", + "notif_approve_click_url": "Valinnainen URL-osoite hyväksymisilmoituksille. Korvaa yleisen ilmoitusnapautuksen URL-osoitteen, kun hyväksytään askareita tai palkintoja.", + "chores_paused": "Keskeyttää tehtävien käsittelyn. Myöhässä olevia tai puuttuvia tilastoja ei kerry.", + "chores_paused_until": "Valinnainen palautuspäivämäärä. Jos asetettu, tehtävät jatkuvat automaattisesti keskiyöllä tämän päivämäärän jälkeen." } } } @@ -483,6 +491,8 @@ "invalid_reward_count": "Virheellinen palkintojen määrä", "invalid_reward_name": "Virheellinen palkinnon nimi", "invalid_reward_cost": "Palkkion hinnan on oltava nolla tai suurempi, enintään kahden desimaalin tarkkuudella.", + "invalid_reward_assigned_users": "Yksi tai useampi määritetty käyttäjä ei ole kelvollinen", + "mixed_reward_assignment_sentinel": "Kaikkia käyttäjiä ei voi yhdistää tiettyihin käyttäjiin", "invalid_bonus": "Virheellinen bonus", "invalid_bonus_count": "Virheellinen bonusten määrä", "invalid_bonus_name": "Virheellinen bonuksen nimi", @@ -569,13 +579,15 @@ "name": "Nimi", "ha_user_id": "Kotiavustaja-käyttäjä", "dashboard_language": "Kieli", - "mobile_notify_service": "Ilmoitukset" + "mobile_notify_service": "Ilmoitukset", + "notif_click_url": "Ilmoitusnapautuksen URL-osoite" }, "data_description": { "name": "Tämän käyttäjäprofiilin yksilöllinen nimi.", "ha_user_id": "Valinnainen: Linkitä tämä profiili Home Assistant -käyttäjään. Jos kioskitila on poistettu käytöstä, jaetun laitteen lunastustoiminnot edellyttävät tätä linkkiä.", "dashboard_language": "Kojelaudan sisällössä ja ilmoituksissa käytetty kieli.", - "mobile_notify_service": "Valitse ilmoituspalvelu tai jätä tyhjäksi poistaaksesi ilmoitukset käytöstä." + "mobile_notify_service": "Valitse ilmoituspalvelu tai jätä tyhjäksi poistaaksesi ilmoitukset käytöstä.", + "notif_click_url": "Valinnainen URL-osoite, joka avataan ilmoitusta napautettaessa. Jätä tyhjäksi oletusarvoista toimintaa varten." } }, "section_system_usage": { @@ -598,12 +610,18 @@ "data": { "can_approve": "Voi hyväksyä", "can_manage": "Voi hallita", - "associated_user_ids": "Liittyvät käyttäjät" + "associated_user_ids": "Liittyvät käyttäjät", + "notif_approve_click_url": "Hyväksymisilmoituksen napautusosoite", + "chores_paused": "Keskeytä askareita", + "chores_paused_until": "Tauko, kunnes" }, "data_description": { "can_approve": "Sallii hyväksymis- ja hylkäystoiminnot.", "can_manage": "Sallii hallintatoiminnot, jotka vaativat laajennettuja käyttöoikeuksia.", - "associated_user_ids": "Käyttäjät, joita tämä hyväksyjä/ylläpitäjä valvoo hyväksyntätoimien osalta." + "associated_user_ids": "Käyttäjät, joita tämä hyväksyjä/ylläpitäjä valvoo hyväksyntätoimien osalta.", + "notif_approve_click_url": "Valinnainen URL-osoite hyväksymisilmoituksille. Korvaa yleisen ilmoitusnapautuksen URL-osoitteen, kun hyväksytään askareita tai palkintoja.", + "chores_paused": "Keskeyttää tehtävien käsittelyn. Myöhässä olevia tai puuttuvia tilastoja ei kerry.", + "chores_paused_until": "Valinnainen palautuspäivämäärä. Jos asetettu, tehtävät jatkuvat automaattisesti keskiyöllä tämän päivämäärän jälkeen." } } } @@ -926,7 +944,8 @@ "cost": "Palkkion hinta", "description": "Kuvaus (valinnainen)", "reward_labels": "Palkintotarrat", - "icon": "Kuvake (mdi:xxx)" + "icon": "Kuvake (mdi:xxx)", + "assigned_user_ids": "Määrätty" } }, "add_penalty": { @@ -1000,13 +1019,15 @@ "name": "Nimi", "ha_user_id": "Kotiavustaja-käyttäjä", "dashboard_language": "Kieli", - "mobile_notify_service": "Ilmoitukset" + "mobile_notify_service": "Ilmoitukset", + "notif_click_url": "Ilmoitusnapautuksen URL-osoite" }, "data_description": { "name": "Tämän käyttäjäprofiilin yksilöllinen nimi.", "ha_user_id": "Valinnainen: Linkitä tämä profiili Home Assistant -käyttäjään. Jos kioskitila on poistettu käytöstä, jaetun laitteen lunastustoiminnot edellyttävät tätä linkkiä.", "dashboard_language": "Kojelaudan sisällössä ja ilmoituksissa käytetty kieli.", - "mobile_notify_service": "Valitse ilmoituspalvelu tai jätä tyhjäksi poistaaksesi ilmoitukset käytöstä." + "mobile_notify_service": "Valitse ilmoituspalvelu tai jätä tyhjäksi poistaaksesi ilmoitukset käytöstä.", + "notif_click_url": "Valinnainen URL-osoite, joka avataan ilmoitusta napautettaessa. Jätä tyhjäksi oletusarvoista toimintaa varten." } }, "section_system_usage": { @@ -1029,12 +1050,18 @@ "data": { "can_approve": "Voi hyväksyä", "can_manage": "Voi hallita", - "associated_user_ids": "Liittyvät käyttäjät" + "associated_user_ids": "Liittyvät käyttäjät", + "notif_approve_click_url": "Hyväksymisilmoituksen napautusosoite", + "chores_paused": "Keskeytä askareita", + "chores_paused_until": "Tauko, kunnes" }, "data_description": { "can_approve": "Sallii hyväksymis- ja hylkäystoiminnot.", "can_manage": "Sallii hallintatoiminnot, jotka vaativat laajennettuja käyttöoikeuksia.", - "associated_user_ids": "Käyttäjät, joita tämä hyväksyjä/ylläpitäjä valvoo hyväksyntätoimien osalta." + "associated_user_ids": "Käyttäjät, joita tämä hyväksyjä/ylläpitäjä valvoo hyväksyntätoimien osalta.", + "notif_approve_click_url": "Valinnainen URL-osoite hyväksymisilmoituksille. Korvaa yleisen ilmoitusnapautuksen URL-osoitteen, kun hyväksytään askareita tai palkintoja.", + "chores_paused": "Keskeyttää tehtävien käsittelyn. Myöhässä olevia tai puuttuvia tilastoja ei kerry.", + "chores_paused_until": "Valinnainen palautuspäivämäärä. Jos asetettu, tehtävät jatkuvat automaattisesti keskiyöllä tämän päivämäärän jälkeen." } } } @@ -1385,7 +1412,8 @@ "cost": "Palkkion hinta", "description": "Kuvaus (valinnainen)", "reward_labels": "Palkintotarrat", - "icon": "Kuvake (mdi:xxx)" + "icon": "Kuvake (mdi:xxx)", + "assigned_user_ids": "Määrätty" } }, "edit_penalty": { @@ -1633,6 +1661,7 @@ "title": "Yleiset asetukset", "description": "Hallitse ChoreOps-integraation yleisiä asetuksia.\n\n ℹ️ [Lisätietoja yleisistä asetuksista]({documentation_url})", "data": { + "dashboard_points_precision": "Kojelaudan pisteiden tarkkuus", "default_chore_points": "Oletuspisteet per työtehtävä", "points_adjust_values": "Manuaalisten pisteiden säätöpainikkeiden arvot", "update_interval": "Päivitysväli", @@ -1649,6 +1678,7 @@ "backup_action_selection": "Varmuuskopiointitoiminnot" }, "data_description": { + "dashboard_points_precision": "Valitse, miten pisteet näytetään tuetuissa kojelaudoissa. Tämä muuttaa vain kojelaudan muotoilua eikä muuta tallennettuja pistearvoja tai laskelmia.", "default_chore_points": "Uusille töille käytetään oletuspistearvoa, kun mukautettuja pisteitä ei ole määritetty.", "points_adjust_values": "Luettelo manuaalisten pisteiden säätöpainikkeiden arvoista. Arvot erotetaan merkillä '|'.", "update_interval": "ChoreOpsin sisäisen tilan päivitysväli minuutteina.", @@ -1948,6 +1978,14 @@ "return_to_menu": "↩️ Palaa päävalikkoon" } }, + "dashboard_points_precision": { + "options": { + "fixed_0": "Vain kokonaisluvut", + "adaptive": "Adaptiivinen (näytä desimaalit vain tarvittaessa)", + "fixed_1": "Aina yksi desimaali", + "fixed_2": "Aina kaksi desimaalia" + } + }, "select_backup_to_delete": { "options": { "cancel": "↩️ Peruuta (palaa varmuuskopiovalikkoon)" @@ -2223,6 +2261,37 @@ } } }, + "pause_user_chores": { + "name": "Keskeytä käyttäjän askareita", + "description": "Keskeytä tai jatka käyttäjän työtehtävien käsittelyä.", + "fields": { + "config_entry_id": { + "name": "Konfiguraatiomerkinnän tunnus (valinnainen)", + "description": "Käytä tätä, jos sinulla on useampi kuin yksi ChoreOps-kokoonpano. Se kohdistuu yhteen tiettyyn kokoonpanoon.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Konfiguraatiomerkinnän nimi (valinnainen)", + "description": "Käytä tätä, jos sinulla on useampi kuin yksi ChoreOps-asetus ja niillä jokaisella on yksilölliset nimet. Jos nimet toistuvat, käytä määritysmerkinnän tunnusta.", + "example": "Perheen askareita" + }, + "user_name": { + "name": "Käyttäjänimi", + "description": "Käyttäjän nimi, jonka tehtäviä haluat keskeyttää tai jatkaa.", + "example": "Saara" + }, + "paused": { + "name": "Keskeytetty", + "description": "Tosi keskeyttääksesi askareita, Epätosi jatkaaksesi.", + "example": "totta" + }, + "paused_until": { + "name": "Keskeytetty, kunnes", + "description": "Valinnainen palautuspäivämäärä. Jos asetettu, tehtävät jatkuvat automaattisesti keskiyöllä tämän päivämäärän jälkeen.", + "example": "2026-06-10T00:00:00+00:00" + } + } + }, "redeem_reward": { "name": "Lunasta palkinto", "description": "Hyväksyjä lunastaa palkkion vastuuhenkilölle vähentäen pisteitä.", @@ -2461,6 +2530,11 @@ "name": "Tarrat", "description": "Palkintojen ryhmittelyyn tarkoitetut tunnisteet.", "example": "['viikonloppu', 'erikoinen']" + }, + "assigned_user_names": { + "name": "Määrätty", + "description": "Tälle palkinnolle on määritetty käyttäjien näyttönimet. Käytä [\"*\"] kaikille käyttäjille. Jos et halua käyttäjiä, anna tyhjä lista.", + "example": "['Zoë', 'Max!']" } } }, @@ -2507,6 +2581,11 @@ "name": "Tarrat", "description": "Päivitetyt tunnisteet.", "example": "['premium', 'erikoinen']" + }, + "assigned_user_names": { + "name": "Määrätty", + "description": "Tälle palkinnolle määritetyt käyttäjien näyttönimet. Käytä [\"*\"] kaikille käyttäjille. Poista kaikki määritetyt käyttäjät antamalla tyhjä lista. Jätä pois, jos haluat nykyiset määritykset ennalleen.", + "example": "['Zoë', 'Max!']" } } }, @@ -2557,7 +2636,7 @@ }, "assigned_user_names": { "name": "Määrätty", - "description": "Luettelo vastuuhenkilöistä, joille tämä työ annetaan.", + "description": "Luettelo vastuuhenkilöistä, joille tämä työ annetaan. Käytä [\"*\"] kaikille luovutettaville käyttäjille. Anna tyhjä lista, jos haluat luoda listan ilman vastuuhenkilöitä.", "example": "['Emma', 'Jack']" }, "points": { @@ -2663,7 +2742,7 @@ }, "assigned_user_names": { "name": "Määrätty", - "description": "Uusi luettelo vastuuhenkilöistä, joille tämä tehtävä annetaan.", + "description": "Uusi lista vastuuhenkilöistä, joille tämä työ annetaan. Käytä [\"*\"] kaikille luovutettaville käyttäjille. Anna tyhjä lista poistaaksesi kaikki luovutetut käyttäjät. Jätä pois, jos haluat nykyiset siirrot ennalleen.", "example": "['Emma', 'Jack']" }, "points": { @@ -2735,6 +2814,11 @@ "name": "Eräpäivämuistutuksen siirtymä", "description": "Uusi eräpäivän muistutusviive. Aika ennen eräpäivää, jolloin muistutus lähetetään. Muoto: '30 min', '1 h', '1 pv 6 h 30 min' jne. Käytä '0' poistaaksesi sen käytöstä.", "example": "30 metriä" + }, + "assignment_action": { + "name": "Tehtävätoiminto", + "description": "Kuinka käsitellä assigned_user_names-luetteloa. 'replace' asettaa luettelon suoraan (oletus, taaksepäin yhteensopiva). 'add' liittää luetellut käyttäjät olemassa oleviin vastuuhenkilöihin. 'remove' poistaa luetellut käyttäjät olemassa olevista vastuuhenkilöistä.", + "example": "lisätä" } } }, @@ -3096,6 +3180,11 @@ "name": "Ohita kertaluonteiset askareet", "description": "Ota tämä käyttöön, jos haluat jättää ei-toistuvat tehtävät ennalleen sen sijaan, että niiden määräpäivä siirrettäisiin rajaan.", "example": "väärä" + }, + "allow_long_recurrences": { + "name": "Salli pitkät toistot", + "description": "Salli kuukausittaisten, neljännesvuosittaisten, vuosittaisten ja muiden pitkän aikavälin toistumisten uudelleenajoitus. Oletusarvo on false, jotta vältetään vahingossa tapahtuvat suuret hypyt.", + "example": "totta" } } }, @@ -3179,7 +3268,8 @@ "completed_by_other": "Muun suorittama", "waiting": "Odotetaan (eräaika ei ole auki)", "not_my_turn": "Ei minun vuoroni (kierto)", - "missed": "Menetetty (lukittu)" + "missed": "Menetetty (lukittu)", + "paused": "Keskeytetty" }, "state_attributes": { "purpose": { @@ -3426,7 +3516,8 @@ "blocked_pending_claim": "Odottava vaatimus", "blocked_waiting_window": "Odotetaan eräpäivää", "blocked_not_my_turn": "Ei sinun vuorosi", - "blocked_missed_locked": "Kadonnut ja lukittu" + "blocked_missed_locked": "Kadonnut ja lukittu", + "blocked_paused": "Askareita on keskeytetty tälle käyttäjälle" } }, "turn_user_name": { @@ -4740,9 +4831,15 @@ "core_sensors": { "name": "Ydinanturit" }, + "dashboard_config": { + "name": "Kojelaudan konfigurointi" + }, "dashboard_helpers": { "name": "Kojelaudan apuohjelmat" }, + "shard_runtime": { + "name": "Työlistan suoritusaikainen" + }, "chores_by_label": { "name": "Kotityöt merkin mukaan" }, @@ -4753,6 +4850,29 @@ "name": "Kieli" } } + }, + "assignee_dashboard_chore_list_helper_sensor": { + "name": "Käyttöliittymän kojelaudan tehtävälista {shard_index}", + "state_attributes": { + "purpose": { + "name": "Tarkoitus", + "state": { + "purpose_dashboard_chore_shard_helper": "Tarjoaa yhden työlistan kojelaudalle, kun käyttäjän koko työlista on liian suuri pääapulle" + } + }, + "chores": { + "name": "Kotityöt" + }, + "shard_index": { + "name": "Työlistan numero" + }, + "shard_count": { + "name": "Yhteensä kotitehtävälistoja" + }, + "helper_contract_version": { + "name": "Avustajasopimuksen versio" + } + } } }, "select": { @@ -5314,6 +5434,9 @@ }, "notif_message_chore_missed": { "message": "{assignee_name} jätti tehtävän väliin: {chore_name}" + }, + "chore_paused": { + "message": "Työn käsittely on tällä hetkellä keskeytetty tällä käyttäjällä." } } } diff --git a/custom_components/choreops/translations/fr.json b/custom_components/choreops/translations/fr.json index 830155b..4721554 100644 --- a/custom_components/choreops/translations/fr.json +++ b/custom_components/choreops/translations/fr.json @@ -81,13 +81,15 @@ "name": "Nom", "ha_user_id": "Utilisateur de Home Assistant", "dashboard_language": "Langue", - "mobile_notify_service": "Notifications" + "mobile_notify_service": "Notifications", + "notif_click_url": "URL de l'appui sur la notification" }, "data_description": { "name": "Nom unique pour ce profil utilisateur.", "ha_user_id": "Facultatif : associez ce profil à un utilisateur Home Assistant. Si le mode kiosque est désactivé, les actions de revendication et d’utilisation d’appareils partagés dépendent de cette association.", "dashboard_language": "Langue utilisée pour le contenu du tableau de bord et les notifications.", - "mobile_notify_service": "Sélectionnez un service de notification ou laissez vide pour désactiver les notifications." + "mobile_notify_service": "Sélectionnez un service de notification ou laissez vide pour désactiver les notifications.", + "notif_click_url": "URL facultative à ouvrir lorsque l'utilisateur appuie sur la notification. Laisser vide pour le comportement par défaut." } }, "section_system_usage": { @@ -110,12 +112,18 @@ "data": { "can_approve": "Peut approuver", "can_manage": "Peut gérer", - "associated_user_ids": "Utilisateurs associés" + "associated_user_ids": "Utilisateurs associés", + "notif_approve_click_url": "URL du bouton de notification d'approbation", + "chores_paused": "Pause pour les tâches ménagères", + "chores_paused_until": "En pause jusqu'à" }, "data_description": { "can_approve": "Permet les actions d'approbation et de refus.", "can_manage": "Autorise la gestion d'actions demandant une permission élevé", - "associated_user_ids": "Utilisateurs supervisés par cet approbateur/administrateur pour les actions d'approbation." + "associated_user_ids": "Utilisateurs supervisés par cet approbateur/administrateur pour les actions d'approbation.", + "notif_approve_click_url": "URL facultative pour les notifications d'approbation. Remplace l'URL de notification générale lors de l'approbation de tâches ou de récompenses.", + "chores_paused": "Suspend le traitement des tâches. Aucune statistique de retard ou d'oubli ne s'accumule.", + "chores_paused_until": "Date de retour facultative. Si cette date est définie, les tâches reprennent automatiquement à minuit après cette date." } } } @@ -483,6 +491,8 @@ "invalid_reward_count": "Nombre de récompenses invalide", "invalid_reward_name": "Nom de récompense invalide", "invalid_reward_cost": "Le coût de la récompense doit être égal ou supérieur à zéro, avec jusqu'à deux décimales.", + "invalid_reward_assigned_users": "Un ou plusieurs utilisateurs assignés ne sont pas valides", + "mixed_reward_assignment_sentinel": "Impossible de mélanger « tous les utilisateurs » avec des utilisateurs spécifiques", "invalid_bonus": "Bonus invalide", "invalid_bonus_count": "Nombre de bonus invalide", "invalid_bonus_name": "Nom de bonus invalide", @@ -569,13 +579,15 @@ "name": "Nom", "ha_user_id": "Utilisateur de Home Assistant", "dashboard_language": "Langue", - "mobile_notify_service": "Notifications" + "mobile_notify_service": "Notifications", + "notif_click_url": "URL de l'appui sur la notification" }, "data_description": { "name": "Nom unique pour ce profil utilisateur.", "ha_user_id": "Facultatif : associez ce profil à un utilisateur Home Assistant. Si le mode kiosque est désactivé, les actions de revendication et d’utilisation d’appareils partagés dépendent de cette association.", "dashboard_language": "Langue utilisée pour le contenu du tableau de bord et les notifications.", - "mobile_notify_service": "Sélectionnez un service de notification ou laissez vide pour désactiver les notifications." + "mobile_notify_service": "Sélectionnez un service de notification ou laissez vide pour désactiver les notifications.", + "notif_click_url": "URL facultative à ouvrir lorsque l'utilisateur appuie sur la notification. Laisser vide pour le comportement par défaut." } }, "section_system_usage": { @@ -598,12 +610,18 @@ "data": { "can_approve": "Peut approuver", "can_manage": "Peut gérer", - "associated_user_ids": "Utilisateurs associés" + "associated_user_ids": "Utilisateurs associés", + "notif_approve_click_url": "URL du bouton de notification d'approbation", + "chores_paused": "Pause pour les tâches ménagères", + "chores_paused_until": "En pause jusqu'à" }, "data_description": { "can_approve": "Permet les actions d'approbation et de désapprobation.", "can_manage": "Autorise les actions de gestion nécessitant des autorisations élevées.", - "associated_user_ids": "Utilisateurs supervisés par cet approbateur/administrateur pour les actions d'approbation." + "associated_user_ids": "Utilisateurs supervisés par cet approbateur/administrateur pour les actions d'approbation.", + "notif_approve_click_url": "URL facultative pour les notifications d'approbation. Remplace l'URL de notification générale lors de l'approbation de tâches ou de récompenses.", + "chores_paused": "Suspend le traitement des tâches. Aucune statistique de retard ou d'oubli ne s'accumule.", + "chores_paused_until": "Date de retour facultative. Si cette date est définie, les tâches reprennent automatiquement à minuit après cette date." } } } @@ -926,7 +944,8 @@ "cost": "Coût de la récompense", "description": "Description (facultatif)", "reward_labels": "Étiquettes de récompense", - "icon": "Icône (mdi:xxx)" + "icon": "Icône (mdi:xxx)", + "assigned_user_ids": "Affecté à" } }, "add_penalty": { @@ -1000,13 +1019,15 @@ "name": "Nom", "ha_user_id": "Utilisateur de Home Assistant", "dashboard_language": "Langue", - "mobile_notify_service": "Notifications" + "mobile_notify_service": "Notifications", + "notif_click_url": "URL de l'appui sur la notification" }, "data_description": { "name": "Nom unique pour ce profil utilisateur.", "ha_user_id": "Facultatif : associez ce profil à un utilisateur Home Assistant. Si le mode kiosque est désactivé, les actions de revendication et d’utilisation d’appareils partagés dépendent de cette association.", "dashboard_language": "Langue utilisée pour le contenu du tableau de bord et les notifications.", - "mobile_notify_service": "Sélectionnez un service de notification ou laissez vide pour désactiver les notifications." + "mobile_notify_service": "Sélectionnez un service de notification ou laissez vide pour désactiver les notifications.", + "notif_click_url": "URL facultative à ouvrir lorsque l'utilisateur appuie sur la notification. Laisser vide pour le comportement par défaut." } }, "section_system_usage": { @@ -1029,12 +1050,18 @@ "data": { "can_approve": "Peut approuver", "can_manage": "Peut gérer", - "associated_user_ids": "Utilisateurs associés" + "associated_user_ids": "Utilisateurs associés", + "notif_approve_click_url": "URL du bouton de notification d'approbation", + "chores_paused": "Pause pour les tâches ménagères", + "chores_paused_until": "En pause jusqu'à" }, "data_description": { "can_approve": "Permet les actions d'approbation et de désapprobation.", "can_manage": "Autorise les actions de gestion nécessitant des autorisations élevées.", - "associated_user_ids": "Utilisateurs supervisés par cet approbateur/administrateur pour les actions d'approbation." + "associated_user_ids": "Utilisateurs supervisés par cet approbateur/administrateur pour les actions d'approbation.", + "notif_approve_click_url": "URL facultative pour les notifications d'approbation. Remplace l'URL de notification générale lors de l'approbation de tâches ou de récompenses.", + "chores_paused": "Suspend le traitement des tâches. Aucune statistique de retard ou d'oubli ne s'accumule.", + "chores_paused_until": "Date de retour facultative. Si cette date est définie, les tâches reprennent automatiquement à minuit après cette date." } } } @@ -1385,7 +1412,8 @@ "cost": "Coût de la récompense", "description": "Description (facultatif)", "reward_labels": "Étiquettes de récompense", - "icon": "Icône (mdi:xxx)" + "icon": "Icône (mdi:xxx)", + "assigned_user_ids": "Affecté à" } }, "edit_penalty": { @@ -1633,6 +1661,7 @@ "title": "Options générales", "description": "Gérez les paramètres généraux de l'intégration ChoreOps.\n\n ℹ️ [En savoir plus sur les options générales]({documentation_url})", "data": { + "dashboard_points_precision": "Précision des points du tableau de bord", "default_chore_points": "Points par défaut par tâche", "points_adjust_values": "Valeurs du bouton de réglage manuel des points", "update_interval": "Intervalle de mise à jour", @@ -1649,6 +1678,7 @@ "backup_action_selection": "Actions de sauvegarde" }, "data_description": { + "dashboard_points_precision": "Choisissez le mode d'affichage des points sur les tableaux de bord compatibles. Cela modifie uniquement la mise en forme du tableau de bord et n'affecte ni les valeurs des points enregistrés ni les calculs.", "default_chore_points": "Valeur de points par défaut utilisée pour les nouvelles tâches lorsque les points personnalisés ne sont pas spécifiés.", "points_adjust_values": "Liste des valeurs des boutons de réglage manuel des points. Chaque valeur est séparée par '|'.", "update_interval": "Intervalle en minutes pour la mise à jour de l'état interne de ChoreOps.", @@ -1948,6 +1978,14 @@ "return_to_menu": "↩️ Retour au menu principal" } }, + "dashboard_points_precision": { + "options": { + "fixed_0": "Nombres entiers uniquement", + "adaptive": "Adaptatif (n'affiche les décimales que lorsque cela est nécessaire)", + "fixed_1": "Toujours une décimale.", + "fixed_2": "Toujours deux décimales." + } + }, "select_backup_to_delete": { "options": { "cancel": "↩️ Annuler (retour au menu de sauvegarde)" @@ -2223,6 +2261,37 @@ } } }, + "pause_user_chores": { + "name": "Mettre en pause les tâches de l'utilisateur", + "description": "Mettre en pause ou reprendre le traitement des tâches pour un utilisateur.", + "fields": { + "config_entry_id": { + "name": "ID de l'entrée de configuration (facultatif)", + "description": "Utilisez cette option si vous avez plusieurs configurations ChoreOps. Elle cible une configuration spécifique.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nom de l'entrée de configuration (facultatif)", + "description": "Utilisez cette option si vous avez plusieurs configurations ChoreOps et que chacune possède un nom unique. Si des noms se répètent, utilisez l'ID d'entrée de configuration.", + "example": "Tâches familiales" + }, + "user_name": { + "name": "Nom d'utilisateur", + "description": "Nom de l'utilisateur dont les tâches doivent être mises en pause ou reprises.", + "example": "Sarah" + }, + "paused": { + "name": "En pause", + "description": "Vrai pour interrompre les tâches, faux pour les reprendre.", + "example": "vrai" + }, + "paused_until": { + "name": "En pause jusqu'à", + "description": "Date de retour facultative. Si cette date est définie, les tâches reprennent automatiquement à minuit après cette date.", + "example": "2026-06-10T00:00:00+00:00" + } + } + }, "redeem_reward": { "name": "Échanger une récompense", "description": "Un approbateur attribue une récompense à un bénéficiaire, en déduisant des points.", @@ -2461,6 +2530,11 @@ "name": "Étiquettes", "description": "Étiquettes pour le regroupement des récompenses.", "example": "['week-end', 'spécial']" + }, + "assigned_user_names": { + "name": "Affecté à", + "description": "Noms d'affichage des utilisateurs associés à cette récompense. Utilisez [\"*\"] pour tous les utilisateurs. Indiquez une liste vide pour ne l'attribuer à aucun utilisateur.", + "example": "['Zoë', 'Max !']" } } }, @@ -2507,6 +2581,11 @@ "name": "Étiquettes", "description": "Étiquettes mises à jour.", "example": "['premium', 'spécial']" + }, + "assigned_user_names": { + "name": "Affecté à", + "description": "Noms d'affichage des utilisateurs associés à cette récompense. Utilisez [\"*\"] pour tous les utilisateurs. Indiquez une liste vide pour supprimer tous les utilisateurs associés. Omettez cette option pour conserver les attributions actuelles.", + "example": "['Zoë', 'Max !']" } } }, @@ -2557,7 +2636,7 @@ }, "assigned_user_names": { "name": "Affecté à", - "description": "Liste des noms des personnes auxquelles confier cette tâche.", + "description": "Liste des personnes auxquelles assigner cette tâche. Utilisez [\"*\"] pour tous les utilisateurs assignables. Indiquez une liste vide pour créer une liste sans personnes assignées.", "example": "['Emma', 'Jack']" }, "points": { @@ -2663,7 +2742,7 @@ }, "assigned_user_names": { "name": "Affecté à", - "description": "Nouvelle liste des personnes auxquelles confier cette tâche.", + "description": "Nouvelle liste des personnes auxquelles attribuer cette tâche. Utilisez [\"*\"] pour tous les utilisateurs pouvant être affectés. Indiquez une liste vide pour supprimer tous les utilisateurs affectés. Omettez cette option pour conserver les affectations actuelles.", "example": "['Emma', 'Jack']" }, "points": { @@ -2735,6 +2814,11 @@ "name": "Compensation du rappel d'échéance", "description": "Nouveau délai avant l'envoi du rappel. Durée avant la date d'échéance pour l'envoi de la notification de rappel. Format : « 30 min », « 1 h », « 1 j 6 h 30 min », etc. Utilisez « 0 » pour désactiver.", "example": "30 m" + }, + "assignment_action": { + "name": "Action d'affectation", + "description": "Comment gérer la liste assigned_user_names ? « replace » définit directement la liste (comportement par défaut, rétrocompatible). « add » ajoute les utilisateurs listés aux personnes assignées. « remove » supprime les utilisateurs listés des personnes assignées.", + "example": "ajouter" } } }, @@ -3096,6 +3180,11 @@ "name": "Évitez les tâches non récurrentes", "description": "Activez cette option pour que les tâches non récurrentes restent inchangées au lieu de déplacer leur date d'échéance à la limite.", "example": "Faux" + }, + "allow_long_recurrences": { + "name": "Autoriser les longues récurrences", + "description": "Autoriser la reprogrammation des échéances mensuelles, trimestrielles, annuelles et autres échéances longues. Par défaut, la valeur est « false » afin d’éviter les changements brusques et accidentels.", + "example": "vrai" } } }, @@ -3179,7 +3268,8 @@ "completed_by_other": "Réalisé par d'autres", "waiting": "En attente (fenêtre fermée)", "not_my_turn": "Ce n'est pas mon tour (rotation)", - "missed": "Manqué (Verrouillé)" + "missed": "Manqué (Verrouillé)", + "paused": "En pause" }, "state_attributes": { "purpose": { @@ -3426,7 +3516,8 @@ "blocked_pending_claim": "Réclamation en cours", "blocked_waiting_window": "En attente de l'échéance", "blocked_not_my_turn": "À votre tour", - "blocked_missed_locked": "Manqué et verrouillé" + "blocked_missed_locked": "Manqué et verrouillé", + "blocked_paused": "Les tâches sont suspendues pour cet utilisateur." } }, "turn_user_name": { @@ -4740,9 +4831,15 @@ "core_sensors": { "name": "Capteurs essentiels" }, + "dashboard_config": { + "name": "Configuration du tableau de bord" + }, "dashboard_helpers": { "name": "Assistants de tableau de bord" }, + "shard_runtime": { + "name": "Durée de la liste des tâches" + }, "chores_by_label": { "name": "Tâches par étiquette" }, @@ -4753,6 +4850,29 @@ "name": "Langue" } } + }, + "assignee_dashboard_chore_list_helper_sensor": { + "name": "Liste des tâches du tableau de bord de l'interface utilisateur {shard_index}", + "state_attributes": { + "purpose": { + "name": "But", + "state": { + "purpose_dashboard_chore_shard_helper": "Fournit une liste de tâches à afficher sur le tableau de bord lorsque la liste complète des tâches de l'utilisateur est trop volumineuse pour l'assistant principal." + } + }, + "chores": { + "name": "Tâches" + }, + "shard_index": { + "name": "Numéro de la liste des tâches" + }, + "shard_count": { + "name": "Listes complètes des tâches ménagères" + }, + "helper_contract_version": { + "name": "Version du contrat d'assistance" + } + } } }, "select": { @@ -5314,6 +5434,9 @@ }, "notif_message_chore_missed": { "message": "{assignee_name} a raté la corvée : {chore_name}" + }, + "chore_paused": { + "message": "Le traitement des tâches est actuellement suspendu pour cet utilisateur." } } } diff --git a/custom_components/choreops/translations/it.json b/custom_components/choreops/translations/it.json new file mode 100644 index 0000000..eb208fc --- /dev/null +++ b/custom_components/choreops/translations/it.json @@ -0,0 +1,5442 @@ +{ + "title": "ChoreOps", + "config": { + "step": { + "intro": { + "title": "Benvenuti in ChoreOps", + "description": "Questa procedura guidata ti accompagnerà nella configurazione di ChoreOps.\n\n ℹ️ [Guida rapida]({documentation_url})" + }, + "data_recovery": { + "title": "Opzioni di recupero dati", + "description": "Dati ChoreOps esistenti trovati in:\n{storage_path}\n\nTrovati {backup_count} file di backup.\n\nCosa desideri fare?\n\n ℹ️ [Scopri di più su Backup e ripristino]({documentation_url})", + "data": { + "backup_selection": "Seleziona l'opzione" + } + }, + "paste_json_input": { + "title": "Importa dati JSON", + "description": "Incolla il contenuto JSON completo da uno dei seguenti:\n\n• Un file di dati ChoreOps (choreops_data)\n• Un download di diagnostica\n\nIl sistema rileverà e decodificherà automaticamente il formato secondo necessità. Sono supportati sia i dati di archiviazione grezzi che i formati di esportazione della diagnostica.", + "data": { + "json_data": "Dati JSON" + }, + "data_description": { + "json_data": "Incolla qui il contenuto JSON completo. Accetta dati dal file choreops_data o dall'esportazione diagnostica (estrae automaticamente la struttura aggiuntiva)." + } + }, + "points_label": { + "title": "Etichetta punti", + "description": "Scegli un'etichetta e un'icona per i punti.", + "data": { + "points_label": "Etichetta punti", + "points_icon": "Icona punti", + "default_chore_points": "Punti predefiniti per ogni compito" + }, + "data_description": { + "default_chore_points": "Valore predefinito in punti utilizzato durante la creazione di un'attività, a meno che non si impostino punteggi personalizzati per tale attività." + } + }, + "reconfigure": { + "title": "Riconfigura le impostazioni di sistema", + "description": "Aggiorna le impostazioni di sistema, come l'etichetta e l'icona dei punti.", + "data": { + "points_label": "Etichetta punti", + "points_icon": "Icona punti", + "default_chore_points": "Punti predefiniti per ogni compito", + "update_interval": "Intervallo di aggiornamento (minuti)", + "calendar_show_period": "Calendario Mostra periodo (giorni)", + "retention_daily": "Tempo di ritenzione giornaliero (giorni)", + "retention_weekly": "Tasso di fidelizzazione settimanale (settimane)", + "retention_monthly": "Tasso di fidelizzazione mensile (mesi)", + "retention_yearly": "Tasso di fidelizzazione annuale (anni)", + "points_adjust_values": "Valori di regolazione dei punti (separati da tubi)" + }, + "data_description": { + "points_label": "Etichetta visualizzata per i punti (ad esempio, 'Punti', 'Stelle', 'Monete')", + "points_icon": "Icona MDI per i punti (ad esempio, 'mdi:star', 'mdi:coin', 'mdi:trophy')", + "default_chore_points": "Valore predefinito in punti utilizzato durante la creazione di un'attività, a meno che non vengano impostati punti personalizzati.", + "update_interval": "Frequenza di aggiornamento dei dati (minimo: 1 minuto)", + "calendar_show_period": "Giorni di storia da mostrare nel calendario (minimo 1)", + "retention_daily": "Giorni per conservare gli aggregati giornalieri", + "retention_weekly": "Settimane per mantenere gli aggregati settimanali", + "retention_monthly": "Mesi per mantenere gli aggregati mensili", + "retention_yearly": "Anni per conservare gli aggregati annuali", + "points_adjust_values": "Valori dei punti separati da barre verticali per i pulsanti di regolazione manuale (ad esempio, +1.0|-1.0|+10.0|-10.0)" + } + }, + "user_count": { + "title": "Numero di utenti", + "description": "Quanti utenti desideri definire inizialmente?", + "data": { + "user_count": "Numero di utenti" + } + }, + "users": { + "title": "Definizione dell'utente", + "description": "Inserisci i dettagli per ciascun profilo utente.", + "sections": { + "section_identity_profile": { + "name": "Identità e profilo", + "description": "Impostazioni principali relative a identità, collegamento degli account e personalizzazione.", + "data": { + "name": "Nome", + "ha_user_id": "Utente di Home Assistant", + "dashboard_language": "Lingua", + "mobile_notify_service": "Notifiche", + "notif_click_url": "URL del tocco di notifica" + }, + "data_description": { + "name": "Nome univoco per questo profilo utente.", + "ha_user_id": "Opzionale: collega questo profilo a un utente di Home Assistant. Se la modalità chiosco è disabilitata, le azioni di richiesta e riscatto dei dispositivi condivisi dipendono da questo collegamento.", + "dashboard_language": "Lingua utilizzata per i contenuti del pannello di controllo e le notifiche.", + "mobile_notify_service": "Seleziona il servizio di notifica oppure lascia vuoto per disattivare le notifiche.", + "notif_click_url": "URL facoltativo da aprire quando si tocca la notifica. Lasciare vuoto per il comportamento predefinito." + } + }, + "section_system_usage": { + "name": "Utilizzo del sistema", + "description": "Comandi per l'utilizzo normale nelle faccende domestiche e per la gamificazione.", + "data": { + "can_be_assigned": "Può essere assegnato", + "enable_chore_workflow": "Flusso di lavoro abilitato", + "enable_gamification": "Gamificazione abilitata" + }, + "data_description": { + "can_be_assigned": "Consente di assegnare incarichi a questo profilo.", + "enable_chore_workflow": "Consente di accettare/rifiutare le azioni del flusso di lavoro per le attività assegnate.", + "enable_gamification": "Consente di accumulare punti, ottenere badge e premi partecipando." + } + }, + "section_admin_approval": { + "name": "Opzioni di amministrazione e approvazione", + "description": "Controlli di approvazione e gestione con privilegi più elevati.", + "data": { + "can_approve": "Può approvare", + "can_manage": "Può gestire", + "associated_user_ids": "Utenti associati", + "notif_approve_click_url": "URL del tocco di notifica di approvazione", + "chores_paused": "Metti in pausa le faccende domestiche", + "chores_paused_until": "In pausa fino a" + }, + "data_description": { + "can_approve": "Consente azioni di approvazione e disapprovazione.", + "can_manage": "Consente azioni di gestione che richiedono autorizzazioni elevate.", + "associated_user_ids": "Utenti supervisionati da questo responsabile/amministratore per le azioni di approvazione.", + "notif_approve_click_url": "URL facoltativo per le notifiche di approvazione. Sovrascrive l'URL generale delle notifiche quando si approvano incarichi o premi.", + "chores_paused": "Mette in pausa l'elaborazione delle attività. Non si accumulano statistiche relative a lavori in ritardo o mancati.", + "chores_paused_until": "Data di rientro facoltativa. Se impostata, le pulizie riprenderanno automaticamente a mezzanotte successiva a tale data." + } + } + } + }, + "chore_count": { + "title": "Numero di faccende domestiche", + "description": "Quante mansioni desideri definire?", + "data": { + "chore_count": "Numero di faccende domestiche" + } + }, + "chores": { + "title": "Aggiungi compito", + "description": "Crea una nuova attività con punti, incarichi e pianificazione ricorrente.", + "sections": { + "section_root_form": { + "name": "Definizione", + "description": "Identità, assegnazione e impostazioni contrattuali principali.", + "data": { + "name": "📋 Nome dell'attività", + "chore_description": "📋 Descrizione (facoltativa)", + "icon": "📋 Icona (mdi:xxx)", + "default_points": "💰 Punti assegnati", + "assigned_user_ids": "👥 Assegnato a", + "completion_criteria": "👥 Criteri di completamento" + }, + "data_description": { + "name": "Nome univoco visualizzato in tutto il sistema.", + "chore_description": "Istruzioni o dettagli facoltativi su come completare questa attività.", + "icon": "Icona Material Design (ad esempio, mdi:scopa, mdi:lavastoviglie).", + "default_points": "Punti guadagnati al completamento.", + "assigned_user_ids": "Incaricati che possono visualizzare e richiedere questo incarico.", + "completion_criteria": "Controlla la modalità di completamento dell'attività quando sono assegnati più incaricati: monitoraggio individuale, completamento condiviso o rotazione a turni." + } + }, + "section_schedule": { + "name": "Programma", + "description": "Impostazioni relative a tempi, finestra di accesso e intervallo di ricorrenza.", + "data": { + "recurring_frequency": "🔄 Programma: Frequenza", + "due_date": "📅 Programma: Data di scadenza (facoltativa)", + "clear_due_date": "🗑️ Data di scadenza chiara", + "applicable_days": "📅 Programma: Giorni applicabili (facoltativo)", + "chore_due_window_offset": "⏱️ Periodo di scadenza: Compensazione prima della data di scadenza", + "chore_claim_lock_until_window": "🔒 Blocca la richiesta fino all'apertura della finestra di scadenza?", + "custom_interval": "🔄 Programmazione: Intervallo personalizzato (per frequenza personalizzata)", + "custom_interval_unit": "🔄 Programma: Unità di intervallo personalizzata" + }, + "data_description": { + "recurring_frequency": "Con quale frequenza si ripete l'attività: giornaliera, settimanale, mensile, annuale, personalizzata o mai.", + "due_date": "Scadenza facoltativa. Può essere combinata con pianificazioni ricorrenti.", + "clear_due_date": "Seleziona questa casella per rimuovere la data di scadenza da questa attività.", + "applicable_days": "Lascia vuoto per tutti i giorni. Seleziona SOLO i giorni specifici da limitare.", + "chore_due_window_offset": "Quando lo stato dell'attività cambia da In sospeso a Scadenza. Formato: '1d 6h 30m' o semplicemente '30' per i minuti. Inserisci '0' per disabilitare. Esempio: '1d' significa che l'attività viene visualizzata come 'Scadenza' 1 giorno prima della scadenza.", + "chore_claim_lock_until_window": "Quando questa opzione è abilitata, gli incaricati non possono rivendicare questo compito prima dell'inizio del periodo di scadenza.", + "custom_interval": "Numero di unità di tempo tra le ripetizioni (ad esempio, 3 per \"ogni 3 settimane\"). Utilizzato solo con la frequenza personalizzata.", + "custom_interval_unit": "Unità di tempo per intervalli personalizzati (giorni, settimane, mesi). Utilizzata solo con frequenze personalizzate." + } + }, + "section_advanced_configurations": { + "name": "Configurazioni avanzate", + "description": "Automazione del ciclo di vita, notifiche, visibilità e metadati.", + "data": { + "approval_reset_type": "➡️ Completamenti consentiti e tempi di ripristino dell'approvazione", + "approval_reset_pending_claim_action": "➡️ Gestione delle richieste in sospeso al momento del ripristino dell'approvazione", + "auto_approve": "✅ Approvazione automatica delle richieste di rimborso?", + "overdue_handling_type": "⏰ In ritardo: Gestione", + "chore_due_reminder_offset": "🔔 Promemoria scadenza: Compensazione prima della data di scadenza", + "chore_notifications": "🔔 Notifiche di eventi (facoltative)", + "show_on_calendar": "📅 Mostra sul calendario?", + "chore_labels": "📋 Etichette (facoltative)" + }, + "data_description": { + "approval_reset_type": "Controlla quando si attiva il limite del ciclo di approvazione dell'attività (mezzanotte, data di scadenza, al completamento o attivazione manuale).", + "approval_reset_pending_claim_action": "Ecco cosa succede alle richieste ancora in attesa di approvazione quando si verifica il ripristino del processo di approvazione.", + "auto_approve": "Quando questa opzione è abilitata, le richieste vengono approvate istantaneamente senza necessità di revisione da parte dell'approvatore.", + "overdue_handling_type": "Azioni da intraprendere dopo la data di scadenza: nascondere lo stato di \"scaduto\", lasciare che rimanga scaduto fino al momento del pagamento, oppure riportarlo allo stato \"in sospeso\" al successivo ciclo di approvazione.", + "chore_due_reminder_offset": "Quando inviare la notifica di promemoria. Formato: '1d 6h 30m' o semplicemente '30' per i minuti. Predefinito: 30m (30 minuti prima della scadenza). Inserire '0' per disabilitare.", + "chore_notifications": "Quando inviare le notifiche: in caso di richiesta, di approvazione, di rifiuto o in qualsiasi combinazione di questi momenti.", + "show_on_calendar": "Visualizza quest'attività nella vista calendario.", + "chore_labels": "Etichette per organizzare le attività (ad esempio, 'cucina', 'esterno'). Lasciare vuoto se non necessario." + } + } + }, + "data": { + "name": "📋 Nome dell'attività", + "chore_description": "📋 Descrizione (facoltativa)", + "icon": "📋 Icona (mdi:xxx)", + "chore_labels": "📋 Etichette (facoltative)", + "default_points": "💰 Punti assegnati", + "assigned_user_ids": "👥 Assegnato a", + "completion_criteria": "👥 Criteri di completamento", + "approval_reset_type": "➡️ Completamenti consentiti e tempi di ripristino dell'approvazione", + "approval_reset_pending_claim_action": "➡️ Gestione delle richieste in sospeso al momento del ripristino dell'approvazione", + "overdue_handling_type": "⏰ In ritardo: Gestione", + "chore_claim_lock_until_window": "🔒 Blocca la richiesta fino all'apertura della finestra di scadenza?", + "auto_approve": "✅ Approvazione automatica delle richieste di rimborso?", + "recurring_frequency": "🔄 Programma: Frequenza", + "custom_interval": "🔄 Programmazione: Intervallo personalizzato (per frequenza personalizzata)", + "custom_interval_unit": "🔄 Programma: Unità di intervallo personalizzata", + "applicable_days": "📅 Programma: Giorni applicabili (facoltativo)", + "due_date": "📅 Programma: Data di scadenza (facoltativa)", + "chore_due_window_offset": "⏱️ Periodo di scadenza: Compensazione prima della data di scadenza", + "chore_due_reminder_offset": "🔔 Promemoria scadenza: Compensazione prima della data di scadenza", + "show_on_calendar": "📅 Mostra sul calendario?", + "chore_notifications": "🔔 Notifiche di eventi (facoltative)" + }, + "data_description": { + "name": "Nome univoco visualizzato in tutto il sistema.", + "chore_description": "Istruzioni o dettagli facoltativi su come completare questa attività.", + "icon": "Icona Material Design (ad esempio, mdi:scopa, mdi:lavastoviglie).", + "chore_labels": "Etichette per organizzare le attività (ad esempio, 'cucina', 'esterno'). Lasciare vuoto se non necessario.", + "default_points": "Punti guadagnati al completamento.", + "assigned_user_ids": "Incaricati che possono visualizzare e richiedere questo incarico.", + "completion_criteria": "Controlla la modalità di completamento dell'attività quando sono assegnati più incaricati: monitoraggio individuale, completamento condiviso o rotazione a turni.", + "approval_reset_type": "Controlla quando si attiva il limite del ciclo di approvazione dell'attività (mezzanotte, data di scadenza, al completamento o attivazione manuale).", + "approval_reset_pending_claim_action": "Ecco cosa succede alle richieste ancora in attesa di approvazione quando si verifica il ripristino del processo di approvazione.", + "overdue_handling_type": "Azioni da intraprendere dopo la data di scadenza: nascondere lo stato di \"scaduto\", lasciare che rimanga scaduto fino al momento del pagamento, oppure riportarlo allo stato \"in sospeso\" al successivo ciclo di approvazione.", + "chore_claim_lock_until_window": "Quando questa opzione è abilitata, gli incaricati non possono rivendicare questo compito prima dell'inizio del periodo di scadenza.", + "auto_approve": "Quando questa opzione è abilitata, le richieste vengono approvate istantaneamente senza necessità di revisione da parte dell'approvatore.", + "recurring_frequency": "Con quale frequenza si ripete l'attività: giornalmente, settimanalmente, mensilmente, annualmente, personalizzata o mai.", + "custom_interval": "Numero di unità di tempo tra le ripetizioni (ad esempio, 3 per \"ogni 3 settimane\"). Utilizzato solo con la frequenza personalizzata.", + "custom_interval_unit": "Unità di tempo per intervalli personalizzati (giorni, settimane, mesi). Utilizzata solo con frequenze personalizzate.", + "applicable_days": "Lascia vuoto per tutti i giorni. Seleziona SOLO i giorni specifici da limitare.", + "due_date": "Scadenza facoltativa. Può essere combinata con pianificazioni ricorrenti.", + "chore_due_window_offset": "Quando lo stato dell'attività cambia da In sospeso a Scaduto. Formato: '1d 6h 30m' o semplicemente '30' per i minuti. Inserisci '0' per disabilitare. Esempio: '1d' significa che l'attività viene visualizzata come 'Scaduto' 1 giorno prima della scadenza.", + "chore_due_reminder_offset": "Quando inviare la notifica di promemoria. Formato: '1d 6h 30m' o semplicemente '30' per i minuti. Predefinito: 30m (30 minuti prima della scadenza). Inserire '0' per disabilitare.", + "show_on_calendar": "Visualizza quest'attività nella vista calendario.", + "chore_notifications": "Quando inviare le notifiche: in caso di richiesta, di approvazione, di rifiuto o in qualsiasi combinazione di questi momenti." + } + }, + "badge_count": { + "title": "Numero di distintivi", + "description": "Quanti badge desideri definire?", + "data": { + "badge_count": "Conteggio dei distintivi" + } + }, + "badges": { + "title": "Aggiungi badge cumulativo", + "description": "Configura i dettagli per un badge cumulativo. Questi badge premiano gli assegnati al raggiungimento di soglie di punti totali e supportano i cicli di manutenzione per incoraggiare prestazioni continue.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "badge_name": "Nome del distintivo", + "badge_description": "Descrizione del badge (facoltativa)", + "badge_labels": "Etichette (facoltative)", + "icon": "Icona del badge (mdi:xxx)", + "target_type": "🎯 BERSAGLIO: Tipo di bersaglio", + "threshold_value": "🎯 TARGET: Valore di soglia", + "maintenance_rules": "🎯 OBIETTIVO: Punti di manutenzione (Opzionale)", + "occasion_type": "🎉 Tipo di occasione", + "associated_achievement": "🏆 Risultati associati", + "selected_chores": "🧹 Attività domestiche monitorate (Opzionale)", + "assigned_user_ids": "🧒 Assegnato a", + "award_items": "🎁 PREMI: Seleziona punti, premi, bonus, moltiplicatore (facoltativo)", + "award_points": "🎁 PREMI: Punti assegnati (facoltativo)", + "points_multiplier": "🎁 PREMI: Moltiplicatore punti (Predefinito 💎 1.0x)", + "recurring_frequency": "🔄 CICLO DI MANUTENZIONE: Frequenza", + "custom_interval": "🔄 CICLO DI MANUTENZIONE: Intervallo personalizzato (necessario per la frequenza personalizzata)", + "custom_interval_unit": "🔄 CICLO DI MANUTENZIONE: Unità di intervallo personalizzata (necessaria per la frequenza personalizzata)", + "start_date": "🔄 CICLO DI RIPRISTINO: Data di inizio (facoltativa)", + "end_date": "🔄 CICLO DI MANUTENZIONE: Data di fine (facoltativa)", + "grace_period_days": "🔄 CICLO DI MANUTENZIONE: Periodo di grazia in giorni (facoltativo)" + }, + "data_description": { + "badge_name": "Inserisci un nome univoco per il badge. Questo nome verrà visualizzato nel sistema.", + "badge_description": "Fornire una descrizione dello scopo o dei criteri per l'assegnazione del badge (facoltativo).", + "badge_labels": "Aggiungi etichette per categorizzare o taggare il badge (facoltativo).", + "icon": "Specifica un'icona per il badge utilizzando le icone di Material Design (ad esempio, mdi:star).", + "target_type": "Seleziona il tipo di obiettivo per questo badge (ad esempio, punti o conteggio delle attività).", + "threshold_value": "Imposta il punteggio totale necessario per ottenere questo badge.", + "maintenance_rules": "Specificare il punteggio minimo richiesto durante il ciclo di manutenzione per conservare il badge e il relativo moltiplicatore attivo (facoltativo).", + "occasion_type": "Scegli il tipo di occasione per questo badge (ad esempio, festività, compleanno).", + "associated_achievement": "Collega questo badge a un obiettivo per monitorarne il raggiungimento.", + "selected_chores": "Seleziona le attività che contribuiscono al raggiungimento di questo badge. Lascia vuoto se desideri tenere traccia di tutte le attività assegnate (facoltativo).", + "assigned_user_ids": "Assegna questo badge a specifici destinatari per il monitoraggio.", + "award_items": "Seleziona uno o più elementi tra punti, premi, bonus o un moltiplicatore di punti. Tutti gli elementi selezionati verranno assegnati o applicati al conseguimento del badge. (facoltativo)", + "award_points": "Se i punti sono un premio selezionato, specificare il numero di punti da applicare al conseguimento di questo badge (facoltativo).", + "points_multiplier": "Se il moltiplicatore è un premio selezionato, imposta un moltiplicatore per i punti guadagnati mentre questo badge è attivo (ad esempio, 1,5x).", + "recurring_frequency": "Attiva il ciclo di manutenzione, che richiede il raggiungimento del punteggio minimo specificato entro la fine del periodo (ad esempio, settimanale, mensile).", + "custom_interval": "Specifica il NUMERO di giorni, settimane, mesi, ecc. per la Frequenza personalizzata (ad esempio, 3 se imposti 3 settimane). Si applica solo alla Frequenza personalizzata.", + "custom_interval_unit": "Seleziona l'unità per l'intervallo personalizzato (ad esempio, giorni, settimane). Si applica solo alla Frequenza personalizzata.", + "start_date": "Imposta la data di inizio (facoltativo).", + "end_date": "Selezionare la data di fine del ciclo di manutenzione (facoltativo).", + "grace_period_days": "Specificare il numero di giorni aggiuntivi dopo la fine del ciclo per i dipendenti incaricati di raggiungere i punti richiesti prima della retrocessione (facoltativo)." + } + }, + "reward_count": { + "title": "Numero di premi", + "description": "Quanti premi desideri definire?", + "data": { + "reward_count": "Conteggio delle ricompense" + } + }, + "rewards": { + "title": "Definire la ricompensa", + "description": "Inserisci i dettagli per ogni premio.", + "data": { + "name": "Nome del premio", + "internal_id": "ID interno", + "cost": "Costo della ricompensa", + "description": "Descrizione (facoltativa)", + "reward_labels": "Etichette premio", + "icon": "Icona (mdi:xxx)" + } + }, + "penalty_count": { + "title": "Numero di sanzioni", + "description": "Quante sanzioni desideri definire?", + "data": { + "penalty_count": "Conteggio delle penalità" + } + }, + "penalties": { + "title": "Definire la sanzione", + "description": "Inserisci i dettagli per ogni sanzione.", + "data": { + "name": "Nome della sanzione", + "penalty_description": "Descrizione (facoltativa)", + "penalty_labels": "Etichette di penalità", + "internal_id": "ID interno", + "penalty_points": "Punti di penalità (negativi)", + "icon": "Icona (mdi:xxx)" + } + }, + "bonus_count": { + "title": "Numero di bonus", + "description": "Quanti bonus desideri definire?", + "data": { + "bonus_count": "I bonus contano" + } + }, + "bonuses": { + "title": "Definizione di Bonus", + "description": "Inserisci i dettagli per ogni bonus.", + "data": { + "name": "Nome bonus", + "bonus_description": "Descrizione (facoltativa)", + "bonus_labels": "Etichette bonus", + "internal_id": "ID interno", + "bonus_points": "Punti bonus", + "icon": "Icona (mdi:xxx)" + } + }, + "achievement_count": { + "title": "Numero di traguardi raggiunti", + "description": "Quanti traguardi desideri definire?", + "data": { + "achievement_count": "Conteggio dei risultati" + } + }, + "achievements": { + "title": "Definire il successo", + "description": "Inserisci i dettagli per ogni risultato raggiunto.", + "data": { + "name": "Nome del risultato", + "description": "Descrizione (facoltativa)", + "achievement_labels": "Etichette di successo", + "icon": "Icona (mdi:xxx)", + "assigned_user_ids": "Assegnato a", + "type": "Tipo di risultato", + "selected_chore_id": "Seleziona l'attività associata", + "criteria": "Criteri (facoltativi)", + "target_value": "Obiettivo di raggiungimento", + "reward_points": "Punti extra per il completamento dell'obiettivo", + "internal_id": "ID interno" + } + }, + "challenge_count": { + "title": "Numero di sfide", + "description": "Quante sfide desideri definire?", + "data": { + "challenge_count": "Conteggio delle sfide" + } + }, + "challenges": { + "title": "Definire la sfida", + "description": "Inserisci i dettagli per ogni sfida.", + "data": { + "name": "Nome del contratto", + "description": "Descrizione (facoltativa)", + "challenge_labels": "Etichette di sfida", + "icon": "Icona (mdi:xxx)", + "assigned_user_ids": "Assegnato a", + "type": "Tipo di sfida", + "selected_chore_id": "Seleziona l'attività associata alla sfida (facoltativo)", + "criteria": "Criteri (facoltativi)", + "target_value": "Sfide Obiettivo", + "reward_points": "Punti extra per il completamento della sfida", + "start_date": "Data di lancio", + "end_date": "Data di fine", + "internal_id": "ID interno" + } + }, + "finish": { + "title": "Revisione e conclusione", + "description": "Rivedi la configurazione:\n{summary}\nFai clic su Invia per finalizzare." + } + }, + "error": { + "a_chore_must_be_selected": "È necessario selezionare un compito", + "badge_requires_assignment": "A questo badge deve essere assegnato almeno un incaricato.", + "error_badge_achievement_required": "Per ottenere i badge collegati a un risultato, è necessario selezionarne uno.", + "error_badge_occasion_type_required": "Per i badge per occasioni speciali è necessario specificare un tipo di occasione.", + "target_threshold_required": "È richiesta la soglia obiettivo", + "invalid_maintenance_rules": "Il valore delle regole di manutenzione non è valido", + "error_badge_challenge_required": "Per ottenere i badge collegati a una sfida, è necessario selezionarne una.", + "error_award_points_minimum": "I punti premio devono essere maggiori di zero", + "error_award_invalid_multiplier": "Il moltiplicatore dei punti deve essere maggiore di zero", + "invalid_award_item_selected": "Uno o più elementi del premio selezionati non sono validi", + "start_date_required": "È richiesta la data di inizio", + "end_date_required": "È richiesta la data di fine", + "end_date_before_start_date": "La data di fine deve essere successiva alla data di inizio.", + "duplicate_achievement": "Esiste già un risultato con questo nome", + "duplicate_badge": "Esiste già un badge con questo nome", + "duplicate_challenge": "Esiste già una sfida con questo nome", + "duplicate_chore": "Esiste già un compito con questo nome", + "duplicate_assignee": "Esiste già un assegnatario con questo nome", + "duplicate_approver": "Esiste già un utente con questo nome", + "duplicate_penalty": "Esiste già una sanzione con questo nome", + "duplicate_reward": "Esiste già una ricompensa con questo nome", + "duplicate_bonus": "Esiste già un bonus con questo nome", + "due_date_in_past": "La data di scadenza deve essere futura.", + "end_date_in_past": "La data di fine deve essere futura.", + "end_date_not_after_start_date": "La data di fine deve essere successiva alla data di inizio.", + "err_end_before_start": "La data di fine deve essere successiva alla data di inizio.", + "err_name_duplicate": "Esiste già una sfida con questo nome", + "err_name_required": "Il nome della sfida è obbligatorio", + "err_dates_required": "Sono richieste le date di inizio e fine.", + "err_invalid_date": "Le date di contestazione non sono valide", + "err_target_invalid": "Il valore obiettivo della sfida deve essere maggiore di zero", + "err_points_negative": "I punti premio della sfida non possono essere negativi", + "err_points_invalid": "I punti premio della sfida non sono validi", + "achievement_no_assignees_assigned": "Almeno un responsabile deve essere assegnato al risultato", + "challenge_no_assignees_assigned": "Almeno un incaricato deve essere assegnato alla sfida", + "invalid_achievement_count": "Conteggio dei risultati non valido", + "invalid_achievement_name": "Nome risultato non valido", + "invalid_achievement_reward_points": "I punti premio per il raggiungimento degli obiettivi devono essere pari o superiori a zero, con un massimo di due cifre decimali.", + "invalid_badge": "Badge non valido", + "invalid_badge_count": "Conteggio badge non valido", + "invalid_badge_name": "Nome badge non valido", + "invalid_challenge_count": "Conteggio delle sfide non valido", + "invalid_challenge_name": "Nome della sfida non valido", + "invalid_chore": "compito non valido", + "invalid_chore_count": "Conteggio delle faccende domestiche non valido", + "rotation_min_assignees": "Le mansioni a rotazione richiedono almeno 2 incaricati assegnati", + "invalid_chore_name": "Nome dell'attività non valido", + "custom_interval_required": "Per le frequenze personalizzate è necessario un intervallo personalizzato.", + "custom_interval_invalid": "L'intervallo personalizzato deve essere un numero intero maggiore di zero.", + "custom_interval_unit_required": "Per le frequenze personalizzate è necessaria un'unità di intervallo personalizzata.", + "custom_interval_unit_invalid": "L'unità di misura personalizzata per l'intervallo deve essere ore, giorni, settimane o mesi.", + "invalid_points": "I punti devono essere zero o superiori", + "invalid_overdue_reset_combination": "La gestione dei pagamenti in ritardo \"Alla data di scadenza, quindi ripristina\" funziona solo con i tipi di ripristino a mezzanotte. Seleziona \"A mezzanotte (una sola volta)\" o \"A mezzanotte (ripetibile)\" come tipo di ripristino dell'approvazione.", + "invalid_due_date": "Data di scadenza non valida", + "date_required_for_frequency": "Per questa frequenza ricorrente è necessaria una data di scadenza. La cancellazione delle date funziona solo con le frequenze Nessuna o Giornaliera.", + "invalid_end_date": "Data di fine non valida.", + "invalid_assignee_count": "Numero di assegnatari non valido", + "invalid_assignee_name": "Nome dell'assegnatario non valido", + "invalid_user_count": "Conteggio utenti non valido", + "invalid_approver_name": "Nome utente non valido", + "no_assignees_assigned": "Almeno un incaricato deve essere assegnato al compito", + "invalid_penalty": "Penalità non valida", + "invalid_penalty_count": "Conteggio delle penalità non valido", + "invalid_penalty_name": "Nome della penalità non valido", + "invalid_reward": "Ricompensa non valida", + "invalid_reward_count": "Conteggio ricompense non valido", + "invalid_reward_name": "Nome del premio non valido", + "invalid_reward_cost": "Il costo della ricompensa deve essere pari o superiore a zero con un massimo di 2 cifre decimali.", + "invalid_reward_assigned_users": "Uno o più utenti assegnati non sono validi", + "mixed_reward_assignment_sentinel": "Non è possibile combinare \"tutti gli utenti\" con utenti specifici.", + "invalid_bonus": "Bonus non valido", + "invalid_bonus_count": "Conteggio bonus non valido", + "invalid_bonus_name": "Nome bonus non valido", + "invalid_start_date": "Data di inizio non valida.", + "start_date_in_past": "La data di inizio deve essere futura.", + "points_label_required": "È necessaria l'etichetta dei punti", + "corrupt_file": "Il file selezionato contiene JSON non valido e non può essere letto.", + "invalid_structure": "Il file selezionato non presenta la struttura dati richiesta.", + "file_not_found": "Impossibile trovare il file selezionato.", + "invalid_selection": "Seleziona un'opzione valida.", + "invalid_input": "I dati inseriti non sono validi. Si prega di verificare i dati inseriti e riprovare.", + "duplicate_name": "Esiste già un elemento con questo nome. Scegli un nome diverso.", + "invalid_date_range": "L'intervallo di date non è valido. La data di fine deve essere successiva alla data di inizio.", + "missing_required": "Campo obbligatorio mancante. Si prega di fornire tutte le informazioni richieste.", + "invalid_format": "Il formato non è valido. Verifica i dati inseriti e riprova.", + "usage_requires_assignment_or_approval": "Abilitare l'opzione \"Può essere assegnato\" oppure \"Può approvare\".", + "associated_users_require_approval": "L'opzione \"Utenti associati\" può essere impostata solo quando è abilitata l'opzione \"Può approvare\".", + "approval_requires_associated_users": "È necessario almeno un assegnatario/utente associato quando l'opzione \"Può approvare\" è abilitata.", + "chore_options_require_assignment": "Per sfruttare appieno il flusso di lavoro e le opzioni di gamificazione relative alle faccende domestiche, è necessario prima abilitare l'opzione \"Consenti l'assegnazione delle faccende domestiche a me\".", + "invalid_update_interval": "Intervallo di aggiornamento non valido. Deve essere un numero intero positivo.", + "invalid_calendar_show_period": "Periodo di visualizzazione del calendario non valido. Deve essere un numero intero positivo.", + "invalid_default_chore_points": "Punti di incombenza predefiniti non validi. Deve essere un numero positivo maggiore di 0 con al massimo 2 cifre decimali.", + "invalid_retention_period": "Periodo di conservazione non valido. Deve essere un numero intero positivo.", + "invalid_points_adjust_values": "I punti non validi modificano i valori. Deve essere un elenco." + }, + "abort": { + "single_instance_allowed": "È possibile configurare una sola istanza di ChoreOps.", + "already_configured": "I dati di ChoreOps sono stati ripristinati correttamente. Ora puoi ricaricare l'integrazione.", + "file_not_found": "Impossibile trovare il file di backup selezionato.", + "corrupt_file": "Il file selezionato contiene JSON non valido e non può essere letto.", + "invalid_structure": "Il file selezionato non contiene la struttura dati ChoreOps richiesta.", + "reconfigure_failed": "Riconfigurazione non riuscita. Riprova.", + "reconfigure_successful": "Impostazioni di sistema aggiornate correttamente." + } + }, + "options": { + "step": { + "init": { + "title": "Opzioni ChoreOps", + "description": "Gestisci le operazioni domestiche, il motore di gamification e le preferenze di sistema.\n\n ℹ️ [Visualizza la documentazione]({documentation_url})            ❤️ _[Supporta ChoreOps]({sponsor_url})_", + "data": { + "menu_selection": "Seleziona un'opzione" + } + }, + "manage_entity": { + "title": "Seleziona azione", + "description": "Aggiungi, modifica o elimina opzioni.", + "data": { + "manage_action": "Seleziona un'azione" + } + }, + "challenge_coming_soon": { + "title": "Prossimamente nuove sfide", + "description": "Le sfide saranno rese disponibili in un futuro aggiornamento.\n\nDurante la migrazione, i record delle sfide esistenti vengono convertiti in un tracciamento equivalente dei badge periodici per preservare, ove possibile, l'intento e il comportamento di progresso. I badge collegati alle sfide vengono rimossi in questa versione.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": {} + }, + "select_entity": { + "title": "Seleziona {entity_type}", + "description": "Seleziona il {entity_type} che desideri {action}.", + "data": { + "entity_name": "Nome" + } + }, + "manage_points": { + "title": "Modifica le impostazioni dei punti", + "description": "Modifica l'etichetta, l'icona e i punti predefiniti per ogni attività utilizzata in ChoreOps.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "points_label": "Etichetta punti", + "points_icon": "Icona punti", + "default_chore_points": "Punti predefiniti per ogni compito" + }, + "data_description": { + "default_chore_points": "Valore predefinito in punti utilizzato per le nuove attività quando non vengono specificati punti personalizzati. Deve essere un numero positivo maggiore di 0 con al massimo 2 cifre decimali." + } + }, + "add_user": { + "title": "Aggiungi utente", + "description": "Fornisci i dettagli per il nuovo profilo utente.\n\n{user_access_warning}\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "sections": { + "section_identity_profile": { + "name": "Identità e profilo", + "description": "Impostazioni principali relative a identità, collegamento degli account e personalizzazione.", + "data": { + "name": "Nome", + "ha_user_id": "Utente di Home Assistant", + "dashboard_language": "Lingua", + "mobile_notify_service": "Notifiche", + "notif_click_url": "URL del tocco di notifica" + }, + "data_description": { + "name": "Nome univoco per questo profilo utente.", + "ha_user_id": "Opzionale: collega questo profilo a un utente di Home Assistant. Se la modalità chiosco è disabilitata, le azioni di richiesta e riscatto dei dispositivi condivisi dipendono da questo collegamento.", + "dashboard_language": "Lingua utilizzata per i contenuti del pannello di controllo e le notifiche.", + "mobile_notify_service": "Seleziona il servizio di notifica oppure lascia vuoto per disattivare le notifiche.", + "notif_click_url": "URL facoltativo da aprire quando si tocca la notifica. Lasciare vuoto per il comportamento predefinito." + } + }, + "section_system_usage": { + "name": "Utilizzo del sistema", + "description": "Comandi per l'utilizzo normale nelle attività quotidiane e per la gamificazione.", + "data": { + "can_be_assigned": "Può essere assegnato", + "enable_chore_workflow": "Flusso di lavoro abilitato", + "enable_gamification": "Gamificazione abilitata" + }, + "data_description": { + "can_be_assigned": "Consente di assegnare incarichi a questo profilo.", + "enable_chore_workflow": "Consente di accettare/rifiutare le azioni del flusso di lavoro per le attività assegnate.", + "enable_gamification": "Consente di accumulare punti, ottenere badge e premi partecipando." + } + }, + "section_admin_approval": { + "name": "Opzioni di amministrazione e approvazione", + "description": "Controlli di approvazione e gestione con privilegi più elevati.", + "data": { + "can_approve": "Può approvare", + "can_manage": "Può gestire", + "associated_user_ids": "Utenti associati", + "notif_approve_click_url": "URL del tocco di notifica di approvazione", + "chores_paused": "Metti in pausa le faccende domestiche", + "chores_paused_until": "In pausa fino a" + }, + "data_description": { + "can_approve": "Consente azioni di approvazione e disapprovazione.", + "can_manage": "Consente azioni di gestione che richiedono autorizzazioni elevate.", + "associated_user_ids": "Utenti supervisionati da questo responsabile/amministratore per le azioni di approvazione.", + "notif_approve_click_url": "URL facoltativo per le notifiche di approvazione. Sovrascrive l'URL generale delle notifiche quando si approvano incarichi o premi.", + "chores_paused": "Mette in pausa l'elaborazione delle attività. Non si accumulano statistiche relative a lavori in ritardo o mancati.", + "chores_paused_until": "Data di rientro facoltativa. Se impostata, le pulizie riprenderanno automaticamente a mezzanotte successiva a tale data." + } + } + } + }, + "add_chore": { + "title": "Aggiungi compito", + "description": "Crea una nuova attività con punti, incarichi e programmazione ricorrente.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "sections": { + "section_root_form": { + "name": "Definizione", + "description": "Identità, assegnazione e impostazioni contrattuali principali.", + "data": { + "name": "📋 Nome del compito", + "chore_description": "📋 Descrizione (facoltativa)", + "icon": "📋 Icona (mdi:xxx)", + "default_points": "💰 Punti assegnati", + "assigned_user_ids": "👥 Assegnato a", + "completion_criteria": "👥 Criteri di completamento" + }, + "data_description": { + "name": "Nome univoco visualizzato in tutto il sistema.", + "chore_description": "Istruzioni o dettagli facoltativi su come completare questa attività.", + "icon": "Icona Material Design (ad esempio, mdi:scopa, mdi:lavastoviglie).", + "default_points": "Punti guadagnati al completamento.", + "assigned_user_ids": "Incaricati che possono visualizzare e richiedere questo incarico.", + "completion_criteria": "Controlla la modalità di completamento dell'attività quando sono assegnati più incaricati: monitoraggio individuale, completamento condiviso o rotazione a turni." + } + }, + "section_schedule": { + "name": "Programma", + "description": "Impostazioni relative a tempi, finestra di accesso e intervallo di ricorrenza.", + "data": { + "recurring_frequency": "🔄 Programma: Frequenza", + "due_date": "📅 Programma: Data di scadenza (facoltativa)", + "clear_due_date": "🗑️ Data di scadenza chiara", + "applicable_days": "📅 Programma: Giorni applicabili (facoltativo)", + "chore_due_window_offset": "⏱️ Periodo di scadenza: Compensazione prima della data di scadenza", + "chore_claim_lock_until_window": "🔒 Blocca la richiesta fino all'apertura della finestra di scadenza?", + "custom_interval": "🔄 Programmazione: Intervallo personalizzato (per frequenza personalizzata)", + "custom_interval_unit": "🔄 Programma: Unità di intervallo personalizzata" + }, + "data_description": { + "recurring_frequency": "Frequenza con cui si ripete l'attività: giornaliera, settimanale, mensile, annuale, personalizzata o nessuna. Se si seleziona \"Giornaliera - Più volte al giorno\", verrà visualizzata una schermata aggiuntiva per configurare gli orari specifici.", + "due_date": "Scadenza facoltativa. Può essere combinata con pianificazioni ricorrenti. Per le attività INDIPENDENTI, funge da modello: apparirà una schermata aggiuntiva che consentirà di inserire date individuali per ciascun utente.", + "clear_due_date": "Seleziona questa casella per rimuovere la data di scadenza da questa attività.", + "applicable_days": "Lascia vuoto per tutti i giorni. Seleziona SOLO i giorni specifici da limitare.", + "chore_due_window_offset": "Quando lo stato dell'attività cambia da In sospeso a Scaduto. Formato: '1d 6h 30m' o semplicemente '30' per i minuti. Inserisci '0' per disabilitare. Esempio: '1d' significa che l'attività viene visualizzata come 'Scaduto' 1 giorno prima della scadenza.", + "chore_claim_lock_until_window": "Quando questa opzione è abilitata, gli incaricati non possono rivendicare questo compito prima dell'inizio del periodo di scadenza.", + "custom_interval": "Numero di unità di tempo tra le ripetizioni (ad esempio, 3 per \"ogni 3 settimane\"). Utilizzato solo con la frequenza personalizzata.", + "custom_interval_unit": "Unità di tempo per intervalli personalizzati (giorni, settimane, mesi). Utilizzata solo con frequenze personalizzate." + } + }, + "section_advanced_configurations": { + "name": "Configurazioni avanzate", + "description": "Automazione del ciclo di vita, notifiche, visibilità e metadati.", + "data": { + "approval_reset_type": "➡️ Completamenti consentiti e tempi di ripristino dell'approvazione", + "approval_reset_pending_claim_action": "➡️ Gestione delle richieste in sospeso al momento del ripristino dell'approvazione", + "auto_approve": "✅ Approvazione automatica delle richieste di rimborso?", + "overdue_handling_type": "⏰ In ritardo: Gestione", + "chore_due_reminder_offset": "🔔 Promemoria scadenza: Compensazione prima della data di scadenza", + "chore_notifications": "🔔 Notifiche di eventi (facoltative)", + "show_on_calendar": "📅 Mostra sul calendario?", + "chore_labels": "📋 Etichette (facoltative)" + }, + "data_description": { + "approval_reset_type": "Controlla quando si attiva il limite del ciclo di approvazione dell'attività (mezzanotte, data di scadenza, al completamento o attivazione manuale).", + "approval_reset_pending_claim_action": "Controlla cosa succede alle richieste non approvate quando si attiva il ripristino del limite di approvazione.", + "auto_approve": "Quando questa opzione è abilitata, le richieste vengono approvate istantaneamente senza necessità di revisione da parte dell'approvatore.", + "overdue_handling_type": "Controlla cosa succede quando la data di scadenza è superata e cosa succede alle attività in ritardo al momento del ripristino dell'approvazione.", + "chore_due_reminder_offset": "Quando inviare la notifica di promemoria. Formato: '1d 6h 30m' o semplicemente '30' per i minuti. Predefinito: 30m (30 minuti prima della scadenza). Inserire '0' per disabilitare.", + "chore_notifications": "Quando inviare le notifiche: al momento della richiesta, all'approvazione, al rifiuto o in qualsiasi combinazione di questi momenti.", + "show_on_calendar": "Visualizza quest'attività nella vista calendario.", + "chore_labels": "Etichette per organizzare le attività (ad esempio, 'cucina', 'esterno'). Lasciare vuoto se non necessario." + } + } + }, + "data": { + "name": "📋 Nome dell'attività", + "chore_description": "📋 Descrizione (facoltativa)", + "icon": "📋 Icona (mdi:xxx)", + "chore_labels": "📋 Etichette (facoltative)", + "default_points": "💰 Punti assegnati", + "assigned_user_ids": "👥 Assegnato a", + "completion_criteria": "👥 Criteri di completamento", + "approval_reset_type": "➡️ Completamenti consentiti e tempi di ripristino dell'approvazione", + "approval_reset_pending_claim_action": "➡️ Gestione delle richieste in sospeso al momento del ripristino dell'approvazione", + "overdue_handling_type": "⏰ In ritardo: Gestione", + "chore_claim_lock_until_window": "🔒 Blocca la richiesta fino all'apertura della finestra di scadenza?", + "auto_approve": "✅ Approvazione automatica delle richieste di rimborso?", + "recurring_frequency": "🔄 Programma: Frequenza", + "custom_interval": "🔄 Programmazione: Intervallo personalizzato (per frequenza personalizzata)", + "custom_interval_unit": "🔄 Programma: Unità di intervallo personalizzata", + "applicable_days": "📅 Programma: Giorni applicabili (facoltativo)", + "due_date": "📅 Programma: Data di scadenza (facoltativa)", + "clear_due_date": "🗑️ Data di scadenza chiara", + "chore_due_window_offset": "⏱️ Periodo di scadenza: Compensazione prima della data di scadenza", + "chore_due_reminder_offset": "🔔 Promemoria scadenza: Compensazione prima della data di scadenza", + "show_on_calendar": "📅 Mostra sul calendario?", + "chore_notifications": "🔔 Notifiche di eventi (facoltative)" + }, + "data_description": { + "name": "Nome univoco visualizzato in tutto il sistema.", + "chore_description": "Istruzioni o dettagli facoltativi su come completare questa attività.", + "icon": "Icona Material Design (ad esempio, mdi:scopa, mdi:lavastoviglie).", + "chore_labels": "Etichette per organizzare le attività (ad esempio, 'cucina', 'esterno'). Lasciare vuoto se non necessario.", + "default_points": "Punti guadagnati al completamento.", + "assigned_user_ids": "Incaricati che possono visualizzare e richiedere questo incarico.", + "completion_criteria": "Controlla la modalità di completamento dell'attività quando sono assegnati più incaricati: monitoraggio individuale, completamento condiviso o rotazione a turni.", + "approval_reset_type": "Controlla quando si attiva il limite del ciclo di approvazione dell'attività (mezzanotte, data di scadenza, al completamento o attivazione manuale).", + "approval_reset_pending_claim_action": "Controlla cosa succede alle richieste non approvate quando si attiva il ripristino del limite di approvazione.", + "overdue_handling_type": "Controlla cosa succede quando la data di scadenza è superata e cosa succede alle attività in ritardo al momento del ripristino dell'approvazione.", + "chore_claim_lock_until_window": "Quando questa opzione è abilitata, gli incaricati non possono rivendicare questo compito prima dell'inizio del periodo di scadenza.", + "auto_approve": "Quando questa opzione è abilitata, le richieste vengono approvate istantaneamente senza necessità di revisione da parte dell'approvatore.", + "recurring_frequency": "Frequenza con cui si ripete l'attività: giornaliera, settimanale, mensile, annuale, personalizzata o nessuna. Se si seleziona \"Giornaliera - Più volte al giorno\", verrà visualizzata una schermata aggiuntiva per configurare gli orari specifici.", + "custom_interval": "Numero di unità di tempo tra le ripetizioni (ad esempio, 3 per \"ogni 3 settimane\"). Utilizzato solo con la frequenza personalizzata.", + "custom_interval_unit": "Unità di tempo per intervalli personalizzati (giorni, settimane, mesi). Utilizzata solo con frequenze personalizzate.", + "applicable_days": "Lascia vuoto per tutti i giorni. Seleziona SOLO i giorni specifici da limitare.", + "due_date": "Scadenza facoltativa. Può essere combinata con pianificazioni ricorrenti. Per le attività INDIPENDENTI, funge da modello: apparirà una schermata aggiuntiva che consentirà di inserire date individuali per ciascun utente.", + "clear_due_date": "Seleziona questa casella per rimuovere la data di scadenza da questa attività.", + "chore_due_window_offset": "Quando lo stato dell'attività cambia da In sospeso a Scaduto. Formato: '1d 6h 30m' o semplicemente '30' per i minuti. Inserisci '0' per disabilitare. Esempio: '1d' significa che l'attività viene visualizzata come 'Scaduto' 1 giorno prima della scadenza.", + "chore_due_reminder_offset": "Quando inviare la notifica di promemoria. Formato: '1d 6h 30m' o semplicemente '30' per i minuti. Predefinito: 30m (30 minuti prima della scadenza). Inserire '0' per disabilitare.", + "show_on_calendar": "Visualizza quest'attività nella vista calendario.", + "chore_notifications": "Quando inviare le notifiche: in caso di richiesta, di approvazione, di rifiuto o in qualsiasi combinazione di questi momenti." + } + }, + "add_badge": { + "title": "Aggiungi badge", + "description": "Specificare il tipo desiderato per il nuovo badge.", + "data": { + "badge_type": "Tipo di badge" + } + }, + "add_badge_cumulative": { + "title": "Aggiungi badge cumulativo", + "description": "Configura i dettagli per un badge cumulativo. Questi badge premiano gli assegnati al raggiungimento di soglie di punti totali e supportano i cicli di manutenzione per incoraggiare prestazioni continue.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "badge_name": "Nome del distintivo", + "badge_description": "Descrizione del badge (facoltativa)", + "badge_labels": "Etichette (facoltative)", + "icon": "Icona del badge (mdi:xxx)", + "target_type": "🎯 BERSAGLIO: Tipo di bersaglio", + "threshold_value": "🎯 TARGET: Valore di soglia", + "maintenance_rules": "🎯 OBIETTIVO: Punti di manutenzione (Opzionale)", + "occasion_type": "🎉 Tipo di occasione", + "associated_achievement": "🏆 Risultati associati", + "selected_chores": "🧹 Attività domestiche monitorate (Opzionale)", + "assigned_user_ids": "🧒 Assegnato a", + "award_items": "🎁 PREMI: Seleziona punti, premi, bonus, moltiplicatore (facoltativo)", + "award_points": "🎁 PREMI: Punti assegnati (facoltativo)", + "points_multiplier": "🎁 PREMI: Moltiplicatore punti (Predefinito 💎 1.0x)", + "recurring_frequency": "🔄 CICLO DI MANUTENZIONE: Frequenza", + "custom_interval": "🔄 CICLO DI MANUTENZIONE: Intervallo personalizzato (necessario per la frequenza personalizzata)", + "custom_interval_unit": "🔄 CICLO DI MANUTENZIONE: Unità di intervallo personalizzata (necessaria per la frequenza personalizzata)", + "start_date": "🔄 CICLO DI RIPRISTINO: Data di inizio (facoltativa)", + "end_date": "🔄 CICLO DI MANUTENZIONE: Data di fine (facoltativa)", + "grace_period_days": "🔄 CICLO DI MANUTENZIONE: Periodo di grazia in giorni (facoltativo)" + }, + "data_description": { + "badge_name": "Inserisci un nome univoco per il badge. Questo nome verrà visualizzato nel sistema.", + "badge_description": "Fornire una descrizione dello scopo o dei criteri per l'assegnazione del badge (facoltativo).", + "badge_labels": "Aggiungi etichette per categorizzare o taggare il badge (facoltativo).", + "icon": "Specifica un'icona per il badge utilizzando le icone di Material Design (ad esempio, mdi:star).", + "target_type": "Seleziona il tipo di obiettivo per questo badge (ad esempio, punti o conteggio delle attività).", + "threshold_value": "Imposta il punteggio totale necessario per ottenere questo badge.", + "maintenance_rules": "Specificare il punteggio minimo richiesto durante il ciclo di manutenzione per conservare il badge e il relativo moltiplicatore attivo (facoltativo).", + "occasion_type": "Scegli il tipo di occasione per questo badge (ad esempio, festività, compleanno).", + "associated_achievement": "Collega questo badge a un obiettivo per monitorarne il raggiungimento.", + "selected_chores": "Seleziona le attività che contribuiscono al raggiungimento di questo badge. Lascia vuoto per tenere traccia di tutte le attività assegnate (facoltativo).", + "assigned_user_ids": "Assegna questo badge a specifici destinatari per il monitoraggio.", + "award_items": "Seleziona uno o più elementi tra punti, premi, bonus o un moltiplicatore di punti. Tutti gli elementi selezionati verranno assegnati o applicati al conseguimento del badge. (facoltativo)", + "award_points": "Se i punti sono un premio selezionato, specificare il numero di punti da applicare al conseguimento di questo badge (facoltativo).", + "points_multiplier": "Se il moltiplicatore è un premio selezionato, imposta un moltiplicatore per i punti guadagnati mentre questo badge è attivo (ad esempio, 1,5x).", + "recurring_frequency": "Attiva il ciclo di manutenzione, che richiede il raggiungimento del punteggio minimo specificato entro la fine del periodo (ad esempio, settimanale, mensile).", + "custom_interval": "Specifica il NUMERO di giorni, settimane, mesi, ecc. per la Frequenza personalizzata (ad esempio, 3 se imposti 3 settimane). Si applica solo alla Frequenza personalizzata.", + "custom_interval_unit": "Seleziona l'unità per l'intervallo personalizzato (ad esempio, giorni, settimane). Si applica solo alla Frequenza personalizzata.", + "start_date": "Imposta la data di inizio (facoltativo).", + "end_date": "Selezionare la data di fine del ciclo di manutenzione (facoltativo).", + "grace_period_days": "Specificare il numero di giorni aggiuntivi dopo la fine del ciclo per i dipendenti incaricati di raggiungere i punti richiesti prima della retrocessione (facoltativo)." + } + }, + "add_badge_daily": { + "title": "Aggiungi il badge giornaliero", + "description": "Configura i dettagli per un badge giornaliero. Questi badge premiano gli assegnati per il completamento delle attività giornaliere o il raggiungimento delle soglie giornaliere.\n\n ℹ️ [Panoramica dei badge]({documentation_url})", + "data": { + "badge_name": "Nome del distintivo", + "badge_description": "Descrizione del badge (facoltativa)", + "badge_labels": "Etichette (facoltative)", + "icon": "Icona del badge (mdi:xxx)", + "target_type": "🎯 OBIETTIVO GIORNALIERO: Tipo di obiettivo", + "threshold_value": "🎯 OBIETTIVO GIORNALIERO: Valore di soglia", + "selected_chores": "🧹 Attività domestiche monitorate (Opzionale)", + "assigned_user_ids": "🧒 Assegnato a", + "award_items": "🎁 PREMI: Seleziona punti, premi, bonus, penalità (facoltativo)", + "award_points": "🎁 PREMI: Punti assegnati (facoltativo)" + }, + "data_description": { + "badge_name": "Inserisci un nome univoco per il badge. Questo nome verrà visualizzato nel sistema.", + "badge_description": "Fornire una descrizione dello scopo o dei criteri per l'assegnazione del badge (facoltativo).", + "badge_labels": "Aggiungi etichette per categorizzare o taggare il badge (facoltativo).", + "icon": "Specifica un'icona per il badge utilizzando le icone di Material Design (ad esempio, mdi:star).", + "target_type": "Seleziona il tipo di obiettivo giornaliero per questo badge (ad esempio, punti, numero di attività svolte o giorni).", + "threshold_value": "Imposta i punti giornalieri, il numero di attività o il numero di giorni necessari per ottenere questo badge. Per i tipi di obiettivo \"Giorni\", inserisci 1 poiché il badge viene valutato giornalmente (ad esempio, 1 per completare tutte le attività selezionate in un giorno).", + "selected_chores": "Seleziona le attività che contribuiscono al raggiungimento di questo badge. Lascia vuoto se desideri tenere traccia di tutte le attività assegnate (facoltativo).", + "assigned_user_ids": "Assegna questo badge a specifici destinatari per il monitoraggio.", + "award_items": "Seleziona uno o più elementi tra punti, premi, bonus o penalità. Tutti gli elementi selezionati verranno assegnati o applicati al conseguimento del badge. Le penalità verranno applicate solo se il badge non viene conseguito entro la data di scadenza o la data di reset. (facoltativo)", + "award_points": "Se i punti sono un premio selezionato, specificare il numero di punti da applicare al conseguimento di questo badge (facoltativo)." + } + }, + "add_badge_periodic": { + "title": "Aggiungi badge periodico", + "description": "Configura i dettagli per un badge periodico. Questi badge premiano gli assegnati che raggiungono determinate soglie entro un periodo di tempo definito e supportano cicli di reset per una valutazione continua delle prestazioni.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "badge_name": "Nome del distintivo", + "badge_description": "Descrizione del badge (facoltativa)", + "badge_labels": "Etichette (facoltative)", + "icon": "Icona del badge (mdi:xxx)", + "target_type": "🎯 BERSAGLIO: Tipo di bersaglio", + "threshold_value": "🎯 TARGET: Valore di soglia", + "maintenance_rules": "🎯 OBIETTIVO: Punti di manutenzione (Opzionale)", + "occasion_type": "🎉 Tipo di occasione", + "associated_achievement": "🏆 Risultati associati", + "selected_chores": "🧹 Attività domestiche monitorate (Opzionale)", + "assigned_user_ids": "🧒 Assegnato a", + "award_items": "🎁 PREMI: Seleziona punti, premi, bonus, penalità (facoltativo)", + "award_points": "🎁 PREMI: Punti assegnati (facoltativo)", + "recurring_frequency": "🔄 CICLO DI RESET: Frequenza", + "custom_interval": "🔄 CICLO DI RESET: Intervallo personalizzato (necessario per la frequenza personalizzata)", + "custom_interval_unit": "🔄 RIPRISTINO CICLO: Unità intervallo personalizzata (necessaria per frequenza personalizzata)", + "start_date": "🔄 CICLO DI RIPRISTINO: Data di inizio (facoltativa)", + "end_date": "🔄 RIPRISTINO CICLO: Data di fine (facoltativa)" + }, + "data_description": { + "badge_name": "Inserisci un nome univoco per il badge. Questo nome verrà visualizzato nel sistema.", + "badge_description": "Fornire una descrizione dello scopo o dei criteri per l'assegnazione del badge (facoltativo).", + "badge_labels": "Aggiungi etichette per categorizzare o taggare il badge (facoltativo).", + "icon": "Specifica un'icona per il badge utilizzando le icone di Material Design (ad esempio, mdi:star).", + "target_type": "Seleziona il tipo di obiettivo per questo badge (ad esempio, punti, numero di attività svolte, giorni o serie di attività consecutive).", + "threshold_value": "Imposta il punteggio totale, il numero di attività completate o il numero di giorni (ad esempio, per le serie di completamento di più attività) necessari per ottenere questo badge entro il periodo definito.", + "maintenance_rules": "Specificare il punteggio minimo richiesto durante il ciclo di reset per mantenere il badge e il relativo moltiplicatore attivo (facoltativo).", + "occasion_type": "Scegli il tipo di occasione per questo badge (ad esempio, festività, compleanno).", + "associated_achievement": "Collega questo badge a un obiettivo per monitorarne il raggiungimento.", + "selected_chores": "Seleziona le attività che contribuiscono al raggiungimento di questo badge. Lascia vuoto se desideri tenere traccia di tutte le attività assegnate (facoltativo).", + "assigned_user_ids": "Assegna questo badge a specifici destinatari per il monitoraggio.", + "award_items": "Seleziona uno o più elementi tra punti, premi, bonus o penalità. Tutti gli elementi selezionati verranno assegnati o applicati al conseguimento del badge. Le penalità verranno applicate solo se il badge non viene conseguito entro la data di scadenza o la data di reset. (facoltativo)", + "award_points": "Se i punti sono un premio selezionato, specificare il numero di punti da applicare al conseguimento di questo badge (facoltativo).", + "recurring_frequency": "Definisci la frequenza di ripristino di questo badge (ad esempio, settimanale, mensile).", + "custom_interval": "Specifica il NUMERO di giorni, settimane, mesi, ecc. per la Frequenza personalizzata (ad esempio, 3 se imposti 3 settimane).", + "custom_interval_unit": "Seleziona l'unità di misura per l'intervallo personalizzato (ad esempio, giorni, settimane).", + "start_date": "Imposta la data di inizio del ciclo di ripristino (facoltativo).", + "end_date": "Imposta la data di fine del ciclo di ripristino (facoltativo)." + } + }, + "add_badge_achievement": { + "title": "Aggiungi un badge collegato al raggiungimento degli obiettivi", + "description": "Configura i dettagli per un badge collegato a un obiettivo. Questi badge premiano gli assegnatari per il completamento di obiettivi specifici.\n\n ℹ️ [Panoramica dei badge]({documentation_url})", + "data": { + "badge_name": "Nome del distintivo", + "badge_description": "Descrizione del badge (facoltativa)", + "badge_labels": "Etichette (facoltative)", + "icon": "Icona del badge (mdi:xxx)", + "associated_achievement": "🏆 Risultati associati", + "assigned_user_ids": "🧒 Assegnato a", + "award_items": "🎁 PREMI: Seleziona punti, premi e bonus (facoltativo)", + "award_points": "🎁 PREMI: Punti assegnati (facoltativo)" + }, + "data_description": { + "badge_name": "Inserisci un nome univoco per il badge. Questo nome verrà visualizzato nel sistema.", + "badge_description": "Fornire una descrizione dello scopo o dei criteri per l'assegnazione del badge (facoltativo).", + "badge_labels": "Aggiungi etichette per categorizzare o taggare il badge (facoltativo).", + "icon": "Specifica un'icona per il badge utilizzando le icone di Material Design (ad esempio, mdi:star).", + "associated_achievement": "Collega questo badge a uno specifico risultato per poterlo monitorare.", + "assigned_user_ids": "Assegna questo badge a specifici destinatari per il monitoraggio.", + "award_items": "Seleziona uno o più elementi tra punti, premi o bonus. Tutti gli elementi selezionati verranno assegnati o applicati al conseguimento del badge. Le penalità verranno applicate solo se il badge non viene conseguito entro la data di scadenza o la data di reset. (facoltativo)", + "award_points": "Se i punti sono un premio selezionato, specificare il numero di punti da applicare al conseguimento di questo badge (facoltativo)." + } + }, + "add_badge_special": { + "title": "Aggiungi distintivo per occasioni speciali", + "description": "Configura i dettagli per un badge creato per occasioni speciali. Questi badge premiano gli assegnatari per eventi come compleanni o festività.\n\n ℹ️ [Panoramica dei badge]({documentation_url})", + "data": { + "badge_name": "Nome del distintivo", + "badge_description": "Descrizione del badge (facoltativa)", + "badge_labels": "Etichette (facoltative)", + "icon": "Icona del badge (mdi:xxx)", + "occasion_type": "🎉 Tipo di occasione", + "end_date": "🎉 Data dell'occasione", + "recurring_frequency": "🔄 RICORRENZA: Frequenza", + "custom_interval": "🔄 RICORRENZA: Intervallo personalizzato (obbligatorio per la frequenza personalizzata)", + "custom_interval_unit": "🔄 RICORRENZA: Unità di intervallo personalizzata (necessaria per la frequenza personalizzata)", + "start_date": "🔄 RICORRENZA: Data di inizio (facoltativa)", + "grace_period_days": "🔄 RICORRENZA: Periodo di grazia in giorni (facoltativo)", + "assigned_user_ids": "🧒 Assegnato a", + "award_items": "🎁 PREMI: Seleziona punti, premi e bonus (facoltativo)", + "award_points": "🎁 PREMI: Punti assegnati (facoltativo)" + }, + "data_description": { + "badge_name": "Inserisci un nome univoco per il badge. Questo nome verrà visualizzato nel sistema.", + "badge_description": "Fornire una descrizione dello scopo o dei criteri per l'assegnazione del badge (facoltativo).", + "badge_labels": "Aggiungi etichette per categorizzare o taggare il badge (facoltativo).", + "icon": "Specifica un'icona per il badge utilizzando le icone di Material Design (ad esempio, mdi:star).", + "occasion_type": "Seleziona il tipo di occasione per questo badge (ad esempio, festività, compleanno).", + "end_date": "Fissa la data per l'occasione.", + "recurring_frequency": "Definisci la frequenza di ripristino di questo badge (ad esempio, settimanale, mensile).", + "custom_interval": "Specifica il NUMERO di giorni, settimane, mesi, ecc. per la Frequenza personalizzata (ad esempio, 3 se imposti 3 settimane).", + "custom_interval_unit": "Seleziona l'unità di misura per l'intervallo personalizzato (ad esempio, giorni, settimane).", + "start_date": "Imposta la data di inizio del ciclo di ripristino (facoltativo).", + "grace_period_days": "Specificare il numero di giorni aggiuntivi dopo la fine del ciclo entro i quali gli assegnati devono raggiungere i punti richiesti prima della retrocessione (facoltativo).", + "assigned_user_ids": "Assegna questo badge a specifici destinatari per il monitoraggio.", + "award_items": "Seleziona uno o più elementi tra punti, premi o bonus. Tutti gli elementi selezionati verranno assegnati o applicati al conseguimento del badge. Le penalità verranno applicate solo se il badge non viene conseguito entro la data di scadenza o la data di reset. (facoltativo)", + "award_points": "Se i punti sono un premio selezionato, specificare il numero di punti da applicare al conseguimento di questo badge (facoltativo)." + } + }, + "add_reward": { + "title": "Aggiungi ricompensa", + "description": "Fornisci i dettagli per la nuova ricompensa.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "name": "Nome del premio", + "internal_id": "ID interno", + "cost": "Costo della ricompensa", + "description": "Descrizione (facoltativa)", + "reward_labels": "Etichette premio", + "icon": "Icona (mdi:xxx)", + "assigned_user_ids": "Assegnato a" + } + }, + "add_penalty": { + "title": "Aggiungi penalità", + "description": "Fornisci i dettagli per la nuova penalità.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "name": "Nome della sanzione", + "penalty_description": "Descrizione (facoltativa)", + "penalty_labels": "Etichette di penalità", + "internal_id": "ID interno", + "penalty_points": "Punti di penalità (negativi)", + "icon": "Icona (mdi:xxx)" + } + }, + "add_bonus": { + "title": "Aggiungi bonus", + "description": "Fornisci i dettagli per il nuovo bonus.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "name": "Nome bonus", + "bonus_description": "Descrizione (facoltativa)", + "bonus_labels": "Etichette bonus", + "internal_id": "ID interno", + "bonus_points": "Punti bonus", + "icon": "Icona (mdi:xxx)" + } + }, + "add_achievement": { + "title": "Definire il successo", + "description": "Inserisci i dettagli per ogni obiettivo.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "name": "Nome del risultato", + "description": "Descrizione (facoltativa)", + "achievement_labels": "Etichette di successo", + "icon": "Icona (mdi:xxx)", + "assigned_user_ids": "Assegnato a", + "type": "Tipo di risultato", + "selected_chore_id": "Seleziona l'attività associata", + "criteria": "Criteri (facoltativi)", + "target_value": "Obiettivo di raggiungimento", + "reward_points": "Punti extra per il completamento dell'obiettivo", + "internal_id": "ID interno" + } + }, + "add_challenge": { + "title": "Definire la sfida", + "description": "Inserisci i dettagli per ogni sfida.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "name": "Nome del contratto", + "description": "Descrizione (facoltativa)", + "challenge_labels": "Etichette di sfida", + "icon": "Icona (mdi:xxx)", + "assigned_user_ids": "Assegnato a", + "type": "Tipo di sfida", + "selected_chore_id": "Seleziona l'attività associata alla sfida (facoltativo)", + "criteria": "Criteri (facoltativi)", + "target_value": "Sfide Obiettivo", + "reward_points": "Punti extra per il completamento della sfida", + "start_date": "Data di lancio", + "end_date": "Data di fine", + "internal_id": "ID interno" + } + }, + "edit_user": { + "title": "Modifica utente", + "description": "Modifica i dettagli del profilo utente selezionato.\n\n{user_access_warning}\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "sections": { + "section_identity_profile": { + "name": "Identità e profilo", + "description": "Impostazioni principali relative a identità, collegamento degli account e personalizzazione.", + "data": { + "name": "Nome", + "ha_user_id": "Utente di Home Assistant", + "dashboard_language": "Lingua", + "mobile_notify_service": "Notifiche", + "notif_click_url": "URL del tocco di notifica" + }, + "data_description": { + "name": "Nome univoco per questo profilo utente.", + "ha_user_id": "Opzionale: collega questo profilo a un utente di Home Assistant. Se la modalità chiosco è disabilitata, le azioni di richiesta e riscatto dei dispositivi condivisi dipendono da questo collegamento.", + "dashboard_language": "Lingua utilizzata per i contenuti del pannello di controllo e le notifiche.", + "mobile_notify_service": "Seleziona il servizio di notifica oppure lascia vuoto per disattivare le notifiche.", + "notif_click_url": "URL facoltativo da aprire quando si tocca la notifica. Lasciare vuoto per il comportamento predefinito." + } + }, + "section_system_usage": { + "name": "Utilizzo del sistema", + "description": "Comandi per l'utilizzo normale nelle faccende domestiche e per la gamificazione.", + "data": { + "can_be_assigned": "Può essere assegnato", + "enable_chore_workflow": "Flusso di lavoro abilitato", + "enable_gamification": "Gamificazione abilitata" + }, + "data_description": { + "can_be_assigned": "Consente di assegnare incarichi a questo profilo.", + "enable_chore_workflow": "Consente di accettare/rifiutare le azioni del flusso di lavoro per le attività assegnate.", + "enable_gamification": "Consente di accumulare punti, ottenere badge e premi partecipando." + } + }, + "section_admin_approval": { + "name": "Opzioni di amministrazione e approvazione", + "description": "Controlli di approvazione e gestione con privilegi più elevati.", + "data": { + "can_approve": "Può approvare", + "can_manage": "Può gestire", + "associated_user_ids": "Utenti associati", + "notif_approve_click_url": "URL del tocco di notifica di approvazione", + "chores_paused": "Metti in pausa le faccende domestiche", + "chores_paused_until": "In pausa fino a" + }, + "data_description": { + "can_approve": "Consente azioni di approvazione e disapprovazione.", + "can_manage": "Consente azioni di gestione che richiedono autorizzazioni elevate.", + "associated_user_ids": "Utenti supervisionati da questo responsabile/amministratore per le azioni di approvazione.", + "notif_approve_click_url": "URL facoltativo per le notifiche di approvazione. Sovrascrive l'URL generale delle notifiche quando si approvano incarichi o premi.", + "chores_paused": "Mette in pausa l'elaborazione delle attività. Non si accumulano statistiche relative a lavori in ritardo o mancati.", + "chores_paused_until": "Data di rientro facoltativa. Se impostata, le pulizie riprenderanno automaticamente a mezzanotte successiva a tale data." + } + } + } + }, + "edit_chore": { + "title": "Modifica attività", + "description": "Modifica i dettagli dell'attività selezionata.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "sections": { + "section_root_form": { + "name": "Definizione", + "description": "Identità, assegnazione e impostazioni contrattuali principali.", + "data": { + "name": "📋 Nome dell'attività", + "chore_description": "📋 Descrizione (facoltativa)", + "icon": "📋 Icona (mdi:xxx)", + "default_points": "💰 Punti assegnati", + "assigned_user_ids": "👥 Assegnato a", + "completion_criteria": "👥 Criteri di completamento" + }, + "data_description": { + "name": "Nome univoco visualizzato in tutto il sistema.", + "chore_description": "Istruzioni o dettagli facoltativi su come completare questa attività.", + "icon": "Icona Material Design (ad esempio, mdi:scopa, mdi:lavastoviglie).", + "default_points": "Punti guadagnati al completamento.", + "assigned_user_ids": "Incaricati che possono visualizzare e richiedere questo incarico.", + "completion_criteria": "Controlla la modalità di completamento dell'attività quando sono assegnati più incaricati: monitoraggio individuale, completamento condiviso o rotazione a turni." + } + }, + "section_schedule": { + "name": "Programma", + "description": "Impostazioni relative a tempi, finestra di accesso e intervallo di ricorrenza.", + "data": { + "recurring_frequency": "🔄 Programma: Frequenza", + "due_date": "📅 Programma: Data di scadenza (facoltativa)", + "clear_due_date": "🗑️ Data di scadenza chiara", + "applicable_days": "📅 Programma: Giorni applicabili (facoltativo)", + "chore_due_window_offset": "⏱️ Periodo di scadenza: Compensazione prima della data di scadenza", + "chore_claim_lock_until_window": "🔒 Blocca la richiesta fino all'apertura della finestra di scadenza?", + "custom_interval": "🔄 Programmazione: Intervallo personalizzato (per frequenza personalizzata)", + "custom_interval_unit": "🔄 Programma: Unità di intervallo personalizzata" + }, + "data_description": { + "recurring_frequency": "Frequenza con cui si ripete l'attività: giornaliera, settimanale, mensile, annuale, personalizzata o nessuna. Se si seleziona \"Giornaliera - Più volte al giorno\", verrà visualizzata una schermata aggiuntiva per configurare gli orari specifici.", + "due_date": "Scadenza facoltativa. Può essere combinata con pianificazioni ricorrenti. Per le attività INDIPENDENTI, funge da modello: apparirà una schermata aggiuntiva che consentirà di inserire date individuali per ciascun utente.", + "clear_due_date": "Seleziona questa casella per rimuovere la data di scadenza da questa attività.", + "applicable_days": "Lascia vuoto per tutti i giorni. Seleziona SOLO i giorni specifici da limitare.", + "chore_due_window_offset": "Quando lo stato dell'attività cambia da In sospeso a Scaduto. Formato: '1d 6h 30m' o semplicemente '30' per i minuti. Inserisci '0' per disabilitare. Esempio: '1d' significa che l'attività viene visualizzata come 'Scaduto' 1 giorno prima della scadenza.", + "chore_claim_lock_until_window": "Quando questa opzione è abilitata, gli incaricati non possono rivendicare questo compito prima dell'inizio del periodo di scadenza.", + "custom_interval": "Numero di unità di tempo tra le ripetizioni (ad esempio, 3 per \"ogni 3 settimane\"). Utilizzato solo con la frequenza personalizzata.", + "custom_interval_unit": "Unità di tempo per intervalli personalizzati (giorni, settimane, mesi). Utilizzata solo con frequenze personalizzate." + } + }, + "section_advanced_configurations": { + "name": "Configurazioni avanzate", + "description": "Automazione del ciclo di vita, notifiche, visibilità e metadati.", + "data": { + "approval_reset_type": "➡️ Completamenti consentiti e tempi di ripristino dell'approvazione", + "approval_reset_pending_claim_action": "➡️ Gestione delle richieste in sospeso al momento del ripristino dell'approvazione", + "auto_approve": "✅ Approvazione automatica delle richieste di rimborso?", + "overdue_handling_type": "⏰ In ritardo: Gestione", + "chore_due_reminder_offset": "🔔 Promemoria scadenza: Compensazione prima della data di scadenza", + "chore_notifications": "🔔 Notifiche di eventi (facoltative)", + "show_on_calendar": "📅 Mostra sul calendario?", + "chore_labels": "📋 Etichette (facoltative)" + }, + "data_description": { + "approval_reset_type": "Controlla quando si attiva il limite del ciclo di approvazione dell'attività (mezzanotte, data di scadenza, al completamento o attivazione manuale).", + "approval_reset_pending_claim_action": "Controlla cosa succede alle richieste non approvate quando si attiva il ripristino del limite di approvazione.", + "auto_approve": "Quando questa opzione è abilitata, le richieste vengono approvate istantaneamente senza necessità di revisione da parte dell'approvatore.", + "overdue_handling_type": "Controlla cosa succede quando la data di scadenza è superata e cosa succede alle attività in ritardo al momento del ripristino dell'approvazione.", + "chore_due_reminder_offset": "Quando inviare la notifica di promemoria. Formato: '1d 6h 30m' o semplicemente '30' per i minuti. Predefinito: 30m (30 minuti prima della scadenza). Inserire '0' per disabilitare.", + "chore_notifications": "Quando inviare le notifiche: al momento della richiesta, all'approvazione, al rifiuto o in qualsiasi combinazione di questi momenti.", + "show_on_calendar": "Visualizza quest'attività nella vista calendario.", + "chore_labels": "Etichette per organizzare le attività (ad esempio, 'cucina', 'esterno'). Lasciare vuoto se non necessario." + } + } + }, + "data": { + "name": "📋 Nome del compito", + "chore_description": "📋 Descrizione (facoltativa)", + "icon": "📋 Icona (mdi:xxx)", + "chore_labels": "📋 Etichette (facoltative)", + "internal_id": "ID interno", + "default_points": "💰 Punti assegnati", + "assigned_user_ids": "👥 Assegnato a", + "completion_criteria": "👥 Criteri di completamento", + "approval_reset_type": "➡️ Completamenti consentiti e tempi di ripristino dell'approvazione", + "approval_reset_pending_claim_action": "➡️ Gestione delle richieste in sospeso al momento del ripristino dell'approvazione", + "overdue_handling_type": "⏰ In ritardo: Gestione", + "chore_claim_lock_until_window": "🔒 Blocca la richiesta fino all'apertura della finestra di scadenza?", + "auto_approve": "✅ Approvazione automatica delle richieste di rimborso?", + "recurring_frequency": "🔄 Programma: Frequenza", + "custom_interval": "🔄 Programmazione: Intervallo personalizzato (per frequenza personalizzata)", + "custom_interval_unit": "🔄 Programma: Unità di intervallo personalizzata", + "applicable_days": "📅 Programma: Giorni applicabili (facoltativo)", + "due_date": "📅 Programma: Data di scadenza (facoltativa)", + "clear_due_date": "🗑️ Data di scadenza chiara", + "chore_due_window_offset": "⏱️ Periodo di scadenza: Compensazione prima della data di scadenza", + "chore_due_reminder_offset": "🔔 Promemoria scadenza: Compensazione prima della data di scadenza", + "show_on_calendar": "📅 Mostra sul calendario?", + "chore_notifications": "🔔 Notifiche di eventi (facoltative)" + }, + "data_description": { + "name": "Nome univoco visualizzato in tutto il sistema.", + "chore_description": "Istruzioni o dettagli facoltativi su come completare questa attività.", + "icon": "Icona Material Design (ad esempio, mdi:scopa, mdi:lavastoviglie).", + "chore_labels": "Etichette per organizzare le attività (ad esempio, 'cucina', 'esterno'). Lasciare vuoto se non necessario.", + "default_points": "Punti guadagnati al completamento.", + "assigned_user_ids": "Incaricati che possono visualizzare e richiedere questo incarico.", + "completion_criteria": "Controlla la modalità di completamento dell'attività quando sono assegnati più incaricati: monitoraggio individuale, completamento condiviso o rotazione a turni.", + "approval_reset_type": "Controlla quando si attiva il limite del ciclo di approvazione dell'attività (mezzanotte, data di scadenza, al completamento o attivazione manuale).", + "approval_reset_pending_claim_action": "Controlla cosa succede alle richieste non approvate quando si attiva il ripristino del limite di approvazione.", + "overdue_handling_type": "Controlla cosa succede quando la data di scadenza è superata e cosa succede alle attività in ritardo al momento del ripristino dell'approvazione.", + "chore_claim_lock_until_window": "Quando questa opzione è abilitata, gli incaricati non possono rivendicare questo compito prima dell'inizio del periodo di scadenza.", + "auto_approve": "Quando questa opzione è abilitata, le richieste vengono approvate istantaneamente senza necessità di revisione da parte dell'approvatore.", + "recurring_frequency": "Frequenza con cui si ripete l'attività: giornaliera, settimanale, mensile, annuale, personalizzata o nessuna. Se si seleziona \"Giornaliera - Più volte al giorno\", verrà visualizzata una schermata aggiuntiva per configurare gli orari specifici.", + "custom_interval": "Numero di unità di tempo tra le ripetizioni (ad esempio, 3 per \"ogni 3 settimane\"). Utilizzato solo con la frequenza personalizzata.", + "custom_interval_unit": "Unità di tempo per intervalli personalizzati (giorni, settimane, mesi). Utilizzata solo con frequenze personalizzate.", + "applicable_days": "Lascia vuoto per tutti i giorni. Seleziona SOLO i giorni specifici da limitare.", + "due_date": "Scadenza facoltativa. Può essere combinata con pianificazioni ricorrenti. Per le attività INDIPENDENTI, funge da modello: apparirà una schermata aggiuntiva che consentirà di inserire date individuali per ciascun utente.", + "clear_due_date": "Seleziona questa casella per rimuovere la data di scadenza da questa attività.", + "chore_due_window_offset": "Quando lo stato dell'attività cambia da In sospeso a Scaduto. Formato: '1d 6h 30m' o semplicemente '30' per i minuti. Inserisci '0' per disabilitare. Esempio: '1d' significa che l'attività viene visualizzata come 'Scaduto' 1 giorno prima della scadenza.", + "chore_due_reminder_offset": "Quando inviare la notifica di promemoria. Formato: '1d 6h 30m' o semplicemente '30' per i minuti. Predefinito: 30m (30 minuti prima della scadenza). Inserire '0' per disabilitare.", + "show_on_calendar": "Visualizza quest'attività nella vista calendario.", + "chore_notifications": "Quando inviare le notifiche: in caso di richiesta, di approvazione, di rifiuto o in qualsiasi combinazione di questi momenti." + } + }, + "edit_chore_per_user_dates": { + "title": "Modifica le date di scadenza per utente: {chore_name}", + "description": "Imposta date di scadenza individuali per ogni utente assegnato. Il campo data nel modulo di modifica principale funge da **modello** per comodità: utilizzalo per applicare rapidamente la stessa data a tutti gli utenti tramite la casella di controllo sottostante, oppure lascialo vuoto e imposta le date individualmente qui.\n\nI campi sono mostrati per: {assignee_names}. Lascia vuoto per nessuna scadenza.{template_date}\n\n ℹ️ [Guida avanzata]({documentation_url})", + "data": { + "apply_template_to_all": "Applica la data del modello a tutti gli utenti" + }, + "data_description": { + "apply_template_to_all": "Seleziona questa casella per applicare la data impostata nella pagina principale di modifica dell'attività a tutti gli incaricati, sovrascrivendo le loro date individuali." + } + }, + "chores_daily_multi": { + "title": "Imposta gli orari giornalieri: {chore_name}", + "description": "Inserisci gli orari in cui questa attività dovrebbe essere disponibile ogni giorno. Usa il formato 24 ore (HH:MM) separato da | (barra verticale).\n\n**Esempio:** 07:00|12:00|18:00 per mattina, mezzogiorno e sera.\n\n**Requisiti:**\n- Minimo 2 volte, massimo 6 volte\n- Gli orari devono essere nel formato 24 ore (dalle 00:00 alle 23:59)\n- Separare più orari con | (barra verticale)\n\n**Nota:** Se imposti una data di scadenza nel modulo principale, viene utilizzata solo la parte relativa alla data. Gli orari che inserisci di seguito determineranno quando l'attività sarà disponibile ogni giorno.", + "data": { + "daily_multi_times": "Daily Times" + }, + "data_description": { + "daily_multi_times": "Inserisci da 2 a 6 orari nel formato 24 ore, separati da una barra verticale (|). Esempio: 08:00|17:00 per mattina e sera." + } + }, + "edit_chore_per_user_details": { + "title": "Programma per cessionario: {chore_name}", + "description": "Configura le impostazioni di pianificazione individuali per ogni assegnatario a questa attività. I valori del modulo principale fungono da **modelli**: usa le caselle di controllo per applicarli a tutti gli assegnatari oppure personalizza le impostazioni di ciascun assegnatario individualmente.\n\n**Nota:** Non tutti i campi seguenti si applicano a ogni attività. Il modulo mostra dinamicamente le opzioni pertinenti in base alla modalità di completamento, alla frequenza e all'eventuale impostazione di date di scadenza.\n\n**Formato orari giornalieri (multipli):** Se visualizzato, inserisci da 2 a 6 orari in formato 24 ore separati da | (barra verticale). Esempio: 08:00|17:00\n\nAssegnatari: {assignee_names}{template_info}\n\n ℹ️ [Guida avanzata]({documentation_url})", + "data": { + "apply_days_to_all": "Applica i giorni del modello a tutti gli incaricati", + "apply_times_to_all": "Applica i tempi del modello a tutti gli incaricati", + "apply_template_to_all": "Applica la data del modello a tutti gli assegnatari" + }, + "data_description": { + "apply_days_to_all": "Selezionare i giorni applicabili dal modulo principale per tutti gli incaricati.", + "apply_times_to_all": "Selezionare gli orari giornalieri dal modulo principale per tutti gli incaricati.", + "apply_template_to_all": "Selezionare questa opzione per applicare la data impostata nel modulo principale dell'incarico a tutti gli incaricati." + } + }, + "edit_badge_cumulative": { + "title": "Modifica badge cumulativo", + "description": "Configura i dettagli per un badge cumulativo. Questi badge premiano gli assegnati al raggiungimento di soglie di punti totali e supportano i cicli di manutenzione per incoraggiare prestazioni continue.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "badge_name": "Nome del distintivo", + "badge_description": "Descrizione del badge (facoltativa)", + "badge_labels": "Etichette (facoltative)", + "icon": "Icona del badge (mdi:xxx)", + "target_type": "🎯 BERSAGLIO: Tipo di bersaglio", + "threshold_value": "🎯 TARGET: Valore di soglia", + "maintenance_rules": "🎯 OBIETTIVO: Punti di manutenzione (Opzionale)", + "occasion_type": "🎉 Tipo di occasione", + "associated_achievement": "🏆 Risultati associati", + "selected_chores": "🧹 Attività domestiche monitorate (Opzionale)", + "assigned_user_ids": "🧒 Assegnato a", + "award_items": "🎁 PREMI: Seleziona punti, premi, bonus, moltiplicatore (facoltativo)", + "award_points": "🎁 PREMI: Punti assegnati (facoltativo)", + "points_multiplier": "🎁 PREMI: Moltiplicatore punti (Predefinito 💎 1.0x)", + "recurring_frequency": "🔄 CICLO DI MANUTENZIONE: Frequenza", + "custom_interval": "🔄 CICLO DI MANUTENZIONE: Intervallo personalizzato (necessario per la frequenza personalizzata)", + "custom_interval_unit": "🔄 CICLO DI MANUTENZIONE: Unità di intervallo personalizzata (necessaria per la frequenza personalizzata)", + "start_date": "🔄 CICLO DI RIPRISTINO: Data di inizio (facoltativa)", + "end_date": "🔄 CICLO DI MANUTENZIONE: Data di fine (facoltativa)", + "grace_period_days": "🔄 CICLO DI MANUTENZIONE: Periodo di grazia in giorni (facoltativo)" + }, + "data_description": { + "badge_name": "Inserisci un nome univoco per il badge. Questo nome verrà visualizzato nel sistema.", + "badge_description": "Fornire una descrizione dello scopo o dei criteri per l'assegnazione del badge (facoltativo).", + "badge_labels": "Aggiungi etichette per categorizzare o taggare il badge (facoltativo).", + "icon": "Specifica un'icona per il badge utilizzando le icone di Material Design (ad esempio, mdi:star).", + "target_type": "Seleziona il tipo di obiettivo per questo badge (ad esempio, punti o conteggio delle attività).", + "threshold_value": "Imposta il punteggio totale necessario per ottenere questo badge.", + "maintenance_rules": "Specificare il punteggio minimo richiesto durante il ciclo di manutenzione per conservare il badge e il relativo moltiplicatore attivo (facoltativo).", + "occasion_type": "Scegli il tipo di occasione per questo badge (ad esempio, festività, compleanno).", + "associated_achievement": "Collega questo badge a un obiettivo per monitorarne il raggiungimento.", + "selected_chores": "Seleziona le attività che contribuiscono al raggiungimento di questo badge. Lascia vuoto se desideri tenere traccia di tutte le attività assegnate (facoltativo).", + "assigned_user_ids": "Assegna questo badge a specifici destinatari per il monitoraggio.", + "award_items": "Seleziona uno o più elementi tra punti, premi, bonus o un moltiplicatore di punti. Tutti gli elementi selezionati verranno assegnati o applicati al conseguimento del badge. (facoltativo)", + "award_points": "Se i punti sono un premio selezionato, specificare il numero di punti da applicare al conseguimento di questo badge (facoltativo).", + "points_multiplier": "Se il moltiplicatore è un premio selezionato, imposta un moltiplicatore per i punti guadagnati mentre questo badge è attivo (ad esempio, 1,5x).", + "recurring_frequency": "Attiva il ciclo di manutenzione, che richiede il raggiungimento del punteggio minimo specificato entro la fine del periodo (ad esempio, settimanale, mensile).", + "custom_interval": "Specifica il NUMERO di giorni, settimane, mesi, ecc. per la Frequenza personalizzata (ad esempio, 3 se imposti 3 settimane). Si applica solo alla Frequenza personalizzata.", + "custom_interval_unit": "Seleziona l'unità per l'intervallo personalizzato (ad esempio, giorni, settimane). Si applica solo alla Frequenza personalizzata.", + "start_date": "Imposta la data di inizio (facoltativo).", + "end_date": "Selezionare la data di fine del ciclo di manutenzione (facoltativo).", + "grace_period_days": "Specificare il numero di giorni aggiuntivi dopo la fine del ciclo per i dipendenti incaricati di raggiungere i punti richiesti prima della retrocessione (facoltativo)." + } + }, + "edit_badge_daily": { + "title": "Modifica il badge giornaliero", + "description": "Configura i dettagli per un badge giornaliero. Questi badge premiano gli assegnati per il completamento delle attività giornaliere o il raggiungimento delle soglie giornaliere.\n\n ℹ️ [Panoramica dei badge]({documentation_url})", + "data": { + "badge_name": "Nome del distintivo", + "badge_description": "Descrizione del badge (facoltativa)", + "badge_labels": "Etichette (facoltative)", + "icon": "Icona del badge (mdi:xxx)", + "target_type": "🎯 OBIETTIVO GIORNALIERO: Tipo di obiettivo", + "threshold_value": "🎯 OBIETTIVO GIORNALIERO: Valore di soglia", + "selected_chores": "🧹 Attività domestiche monitorate (Opzionale)", + "assigned_user_ids": "🧒 Assegnato a", + "award_items": "🎁 PREMI: Seleziona punti, premi, bonus, penalità (facoltativo)", + "award_points": "🎁 PREMI: Punti assegnati (facoltativo)" + }, + "data_description": { + "badge_name": "Inserisci un nome univoco per il badge. Questo nome verrà visualizzato nel sistema.", + "badge_description": "Fornire una descrizione dello scopo o dei criteri per l'assegnazione del badge (facoltativo).", + "badge_labels": "Aggiungi etichette per categorizzare o contrassegnare il badge (facoltativo).", + "icon": "Specifica un'icona per il badge utilizzando le icone di Material Design (ad esempio, mdi:star).", + "target_type": "Seleziona il tipo di obiettivo giornaliero per questo badge (ad esempio, punti, numero di attività svolte o giorni).", + "threshold_value": "Imposta i punti giornalieri, il numero di attività o il numero di giorni necessari per ottenere questo badge. Per i tipi di obiettivo \"Giorni\", inserisci 1 poiché il badge viene valutato giornalmente (ad esempio, 1 per completare tutte le attività selezionate in un giorno).", + "selected_chores": "Seleziona le attività che contribuiscono al raggiungimento di questo badge. Lascia vuoto se desideri tenere traccia di tutte le attività assegnate (facoltativo).", + "assigned_user_ids": "Assegna questo badge a specifici destinatari per il monitoraggio.", + "award_items": "Seleziona uno o più elementi tra punti, premi, bonus o penalità. Tutti gli elementi selezionati verranno assegnati o applicati al conseguimento del badge. Le penalità verranno applicate solo se il badge non viene conseguito entro la data di scadenza o la data di reset. (facoltativo)", + "award_points": "Se i punti sono un premio selezionato, specificare il numero di punti da applicare al conseguimento di questo badge (facoltativo)." + } + }, + "edit_badge_periodic": { + "title": "Modifica badge periodico", + "description": "Configura i dettagli per un badge periodico. Questi badge premiano gli assegnati che raggiungono determinate soglie entro un periodo di tempo definito e supportano cicli di reset per una valutazione continua delle prestazioni.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "badge_name": "Nome del distintivo", + "badge_description": "Descrizione del badge (facoltativa)", + "badge_labels": "Etichette (facoltative)", + "icon": "Icona del badge (mdi:xxx)", + "target_type": "🎯 BERSAGLIO: Tipo di bersaglio", + "threshold_value": "🎯 TARGET: Valore di soglia", + "maintenance_rules": "🎯 OBIETTIVO: Punti di manutenzione (Opzionale)", + "occasion_type": "🎉 Tipo di occasione", + "associated_achievement": "🏆 Risultati associati", + "selected_chores": "🧹 Attività domestiche monitorate (Opzionale)", + "assigned_user_ids": "🧒 Assegnato a", + "award_items": "🎁 PREMI: Seleziona punti, premi, bonus, penalità (facoltativo)", + "award_points": "🎁 PREMI: Punti assegnati (facoltativo)", + "recurring_frequency": "🔄 CICLO DI RESET: Frequenza", + "custom_interval": "🔄 CICLO DI RESET: Intervallo personalizzato (necessario per la frequenza personalizzata)", + "custom_interval_unit": "🔄 RIPRISTINO CICLO: Unità intervallo personalizzata (necessaria per frequenza personalizzata)", + "start_date": "🔄 CICLO DI RIPRISTINO: Data di inizio (facoltativa)", + "end_date": "🔄 RIPRISTINO CICLO: Data di fine (facoltativa)" + }, + "data_description": { + "badge_name": "Inserisci un nome univoco per il badge. Questo nome verrà visualizzato nel sistema.", + "badge_description": "Fornire una descrizione dello scopo o dei criteri per l'assegnazione del badge (facoltativo).", + "badge_labels": "Aggiungi etichette per categorizzare o taggare il badge (facoltativo).", + "icon": "Specifica un'icona per il badge utilizzando le icone di Material Design (ad esempio, mdi:star).", + "target_type": "Seleziona il tipo di obiettivo per questo badge (ad esempio, punti, numero di attività svolte, giorni o serie di attività consecutive).", + "threshold_value": "Imposta il punteggio totale, il numero di attività completate o il numero di giorni (ad esempio, per le serie di completamento di più attività) necessari per ottenere questo badge entro il periodo definito.", + "maintenance_rules": "Specificare il punteggio minimo richiesto durante il ciclo di reset per mantenere il badge e il relativo moltiplicatore attivo (facoltativo).", + "occasion_type": "Scegli il tipo di occasione per questo badge (ad esempio, festività, compleanno).", + "associated_achievement": "Collega questo badge a un obiettivo per monitorarne il raggiungimento.", + "selected_chores": "Seleziona le attività che contribuiscono al raggiungimento di questo badge. Lascia vuoto se desideri tenere traccia di tutte le attività assegnate (facoltativo).", + "assigned_user_ids": "Assegna questo badge a specifici destinatari per il monitoraggio.", + "award_items": "Seleziona uno o più elementi tra punti, premi, bonus o penalità. Tutti gli elementi selezionati verranno assegnati o applicati al conseguimento del badge. Le penalità verranno applicate solo se il badge non viene conseguito entro la data di scadenza o la data di reset. (facoltativo)", + "award_points": "Se i punti sono un premio selezionato, specificare il numero di punti da applicare al conseguimento di questo badge (facoltativo).", + "recurring_frequency": "Definisci la frequenza di ripristino di questo badge (ad esempio, settimanale, mensile).", + "custom_interval": "Specifica il NUMERO di giorni, settimane, mesi, ecc. per la Frequenza personalizzata (ad esempio, 3 se imposti 3 settimane).", + "custom_interval_unit": "Seleziona l'unità di misura per l'intervallo personalizzato (ad esempio, giorni, settimane).", + "start_date": "Imposta la data di inizio del ciclo di ripristino (facoltativo).", + "end_date": "Imposta la data di fine del ciclo di ripristino (facoltativo)." + } + }, + "edit_badge_achievement": { + "title": "Modifica il badge collegato al risultato", + "description": "Configura i dettagli per un badge collegato a un obiettivo. Questi badge premiano gli assegnatari per il completamento di obiettivi specifici.\n\n ℹ️ [Panoramica dei badge]({documentation_url})", + "data": { + "badge_name": "Nome del distintivo", + "badge_description": "Descrizione del badge (facoltativa)", + "badge_labels": "Etichette (facoltative)", + "icon": "Icona del badge (mdi:xxx)", + "associated_achievement": "🏆 Risultati associati", + "assigned_user_ids": "🧒 Assegnato a", + "award_items": "🎁 PREMI: Seleziona punti, premi e bonus (facoltativo)", + "award_points": "🎁 PREMI: Punti assegnati (facoltativo)" + }, + "data_description": { + "badge_name": "Inserisci un nome univoco per il badge. Questo nome verrà visualizzato nel sistema.", + "badge_description": "Fornire una descrizione dello scopo o dei criteri per l'assegnazione del badge (facoltativo).", + "badge_labels": "Aggiungi etichette per categorizzare o contrassegnare il badge (facoltativo).", + "icon": "Specifica un'icona per il badge utilizzando le icone di Material Design (ad esempio, mdi:star).", + "associated_achievement": "Collega questo badge a uno specifico risultato per poterlo monitorare.", + "assigned_user_ids": "Assegna questo badge a specifici destinatari per il monitoraggio.", + "award_items": "Seleziona uno o più elementi tra punti, premi o bonus. Tutti gli elementi selezionati verranno assegnati o applicati al conseguimento del badge. Le penalità verranno applicate solo se il badge non viene conseguito entro la data di scadenza o la data di reset. (facoltativo)", + "award_points": "Se i punti sono un premio selezionato, specificare il numero di punti da applicare al conseguimento di questo badge (facoltativo)." + } + }, + "edit_badge_special": { + "title": "Modifica il badge Occasione Speciale", + "description": "Configura i dettagli per un badge creato per occasioni speciali. Questi badge premiano gli assegnatari per eventi come compleanni o festività.\n\n ℹ️ [Panoramica dei badge]({documentation_url})", + "data": { + "badge_name": "Nome del distintivo", + "badge_description": "Descrizione del badge (facoltativa)", + "badge_labels": "Etichette (facoltative)", + "icon": "Icona del badge (mdi:xxx)", + "occasion_type": "🎉 Tipo di occasione", + "end_date": "🎉 Data dell'occasione", + "recurring_frequency": "🔄 RICORRENZA: Frequenza", + "custom_interval": "🔄 RICORRENZA: Intervallo personalizzato (obbligatorio per la frequenza personalizzata)", + "custom_interval_unit": "🔄 RICORRENZA: Unità di intervallo personalizzata (necessaria per la frequenza personalizzata)", + "start_date": "🔄 RICORRENZA: Data di inizio (facoltativa)", + "grace_period_days": "🔄 RICORRENZA: Periodo di grazia in giorni (facoltativo)", + "assigned_user_ids": "🧒 Assegnato a", + "award_items": "🎁 PREMI: Seleziona punti, premi e bonus (facoltativo)", + "award_points": "🎁 PREMI: Punti assegnati (facoltativo)" + }, + "data_description": { + "badge_name": "Inserisci un nome univoco per il badge. Questo nome verrà visualizzato nel sistema.", + "badge_description": "Fornire una descrizione dello scopo o dei criteri per l'assegnazione del badge (facoltativo).", + "badge_labels": "Aggiungi etichette per categorizzare o taggare il badge (facoltativo).", + "icon": "Specifica un'icona per il badge utilizzando le icone di Material Design (ad esempio, mdi:star).", + "occasion_type": "Seleziona il tipo di occasione per questo badge (ad esempio, festività, compleanno).", + "end_date": "Fissa la data per l'occasione.", + "recurring_frequency": "Definisci la frequenza di ripristino di questo badge (ad esempio, settimanale, mensile).", + "custom_interval": "Specifica il NUMERO di giorni, settimane, mesi, ecc. per la Frequenza personalizzata (ad esempio, 3 se imposti 3 settimane).", + "custom_interval_unit": "Seleziona l'unità di misura per l'intervallo personalizzato (ad esempio, giorni, settimane).", + "start_date": "Imposta la data di inizio del ciclo di ripristino (facoltativo).", + "grace_period_days": "Specificare il numero di giorni aggiuntivi dopo la fine del ciclo entro i quali gli assegnati devono raggiungere i punti richiesti prima della retrocessione (facoltativo).", + "assigned_user_ids": "Assegna questo badge a specifici destinatari per il monitoraggio.", + "award_items": "Seleziona uno o più elementi tra punti, premi o bonus. Tutti gli elementi selezionati verranno assegnati o applicati al conseguimento del badge. Le penalità verranno applicate solo se il badge non viene conseguito entro la data di scadenza o la data di reset. (facoltativo)", + "award_points": "Se i punti sono un premio selezionato, specificare il numero di punti da applicare al conseguimento di questo badge (facoltativo)." + } + }, + "edit_reward": { + "title": "Modifica ricompensa", + "description": "Modifica i dettagli della ricompensa selezionata.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "name": "Nome del premio", + "internal_id": "ID interno", + "cost": "Costo della ricompensa", + "description": "Descrizione (facoltativa)", + "reward_labels": "Etichette premio", + "icon": "Icona (mdi:xxx)", + "assigned_user_ids": "Assegnato a" + } + }, + "edit_penalty": { + "title": "Penalità di modifica", + "description": "Modifica i dettagli della penalità selezionata.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "name": "Nome della sanzione", + "penalty_description": "Descrizione (facoltativa)", + "penalty_labels": "Etichette di penalità", + "internal_id": "ID interno", + "penalty_points": "Punti di penalità (negativi)", + "icon": "Icona (mdi:xxx)" + } + }, + "edit_bonus": { + "title": "Bonus di modifica", + "description": "Modifica i dettagli del bonus selezionato.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "name": "Nome bonus", + "bonus_description": "Descrizione (facoltativa)", + "bonus_labels": "Etichette bonus", + "internal_id": "ID interno", + "bonus_points": "Punti bonus", + "icon": "Icona (mdi:xxx)" + } + }, + "edit_achievement": { + "title": "Definire il successo", + "description": "Inserisci i dettagli per ogni obiettivo.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "name": "Nome del risultato", + "description": "Descrizione (facoltativa)", + "achievement_labels": "Etichette di successo", + "icon": "Icona (mdi:xxx)", + "assigned_user_ids": "Assegnato a", + "type": "Tipo di risultato", + "selected_chore_id": "Seleziona l'attività associata", + "criteria": "Criteri (facoltativi)", + "target_value": "Obiettivo di raggiungimento", + "reward_points": "Punti extra per il completamento dell'obiettivo", + "internal_id": "ID interno" + } + }, + "edit_challenge": { + "title": "Definire la sfida", + "description": "Inserisci i dettagli per ogni sfida.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "name": "Nome del contratto", + "description": "Descrizione (facoltativa)", + "challenge_labels": "Etichette di sfida", + "icon": "Icona (mdi:xxx)", + "assigned_user_ids": "Assegnato a", + "type": "Tipo di sfida", + "selected_chore_id": "Seleziona l'attività associata alla sfida (facoltativo)", + "criteria": "Criteri (facoltativi)", + "target_value": "Sfide Obiettivo", + "reward_points": "Punti extra per il completamento della sfida", + "start_date": "Data di lancio", + "end_date": "Data di fine", + "internal_id": "ID interno" + } + }, + "delete_user": { + "title": "Elimina utente", + "description": "Sei sicuro di voler eliminare l'utente {user_name}?", + "data": {} + }, + "delete_chore": { + "title": "Elimina attività", + "description": "Sei sicuro di voler eliminare il compito {chore_name}?", + "data": {} + }, + "delete_badge": { + "title": "Elimina badge", + "description": "Sei sicuro di voler eliminare il badge {badge_name}?", + "data": {} + }, + "delete_reward": { + "title": "Elimina la ricompensa", + "description": "Sei sicuro di voler eliminare la ricompensa {reward_name}?", + "data": {} + }, + "delete_penalty": { + "title": "Elimina la penalità", + "description": "Sei sicuro di voler eliminare la penalità {penalty_name}?", + "data": {} + }, + "delete_bonus": { + "title": "Elimina Bonus", + "description": "Sei sicuro di voler eliminare il bonus {bonus_name}?", + "data": {} + }, + "delete_achievement": { + "title": "Elimina obiettivo", + "description": "Sei sicuro di voler eliminare l'obiettivo {achievement_name}?", + "data": {} + }, + "delete_challenge": { + "title": "Elimina la sfida", + "description": "Sei sicuro di voler eliminare la sfida {challenge_name}?", + "data": {} + }, + "dashboard_generator": { + "title": "Azioni del pannello di controllo", + "description": "Crea, aggiorna o elimina le dashboard di ChoreOps Lovelace.\n\n ℹ️ [Guida alla configurazione della dashboard]({documentation_url})\n\n{dashboard_status_message}", + "data": { + "dashboard_action": "Azione", + "dashboard_release_selection": "Versione di rilascio del pannello di controllo" + }, + "data_description": { + "dashboard_action": "Scegli un'azione: crea una nuova dashboard, aggiorna le visualizzazioni di una dashboard esistente oppure elimina le dashboard.", + "dashboard_release_selection": "Scegli la versione attualmente installata, l'ultima versione stabile o un tag di versione compatibile esplicito." + } + }, + "dashboard_missing_dependencies": { + "title": "Esamina le modifiche al dashboard", + "description": "Prima di applicare le modifiche alla dashboard, verifica lo stato delle dipendenze e le preferenze del modello per i modelli selezionati.\n\n ℹ️ [Guida alla configurazione della dashboard]({documentation_url})\n\n**Personalizzazioni disponibili**\n{dashboard_template_preferences}\n\n**Dipendenze richieste mancanti**\n{dashboard_missing_required_dependencies}\n\n**Dipendenze consigliate mancanti**\n{dashboard_missing_recommended_dependencies}\n\n**Avviso di controllo degli accessi**\n{dashboard_access_warning}", + "data": { + "dashboard_dependency_bypass": "🚫 Continua comunque (mancano alcuni requisiti)", + "dashboard_access_warning_ack": "⚠️ Continua comunque (gli utenti selezionati non sono collegati)" + }, + "data_description": { + "dashboard_dependency_bypass": "Riconosci che mancano le dipendenze necessarie e continua comunque. La dashboard potrebbe non essere visualizzata correttamente o comportarsi in modo errato finché le dipendenze necessarie non saranno installate.", + "dashboard_access_warning_ack": "Tieni presente che alcuni utenti selezionati potrebbero non avere utenti Home Assistant collegati quando la modalità chiosco è disabilitata. I pulsanti di richiesta e riscatto potrebbero non funzionare come previsto sui dispositivi condivisi finché tali utenti non vengono collegati o la modalità chiosco non viene abilitata." + } + }, + "dashboard_create": { + "title": "Crea dashboard", + "description": "Inserisci un nome per la dashboard, quindi procedi con la configurazione.\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "data": { + "dashboard_name": "Nome del pannello di controllo" + }, + "data_description": { + "dashboard_name": "Nome per la dashboard (compare nella barra laterale). Suggerimento: Attività" + } + }, + "dashboard_update_select": { + "title": "Aggiorna la dashboard", + "description": "Seleziona una dashboard ChoreOps esistente da aggiornare e riconfigurare.", + "data": { + "dashboard_update_selection": "Dashboard da aggiornare" + }, + "data_description": { + "dashboard_update_selection": "Seleziona la dashboard esistente che desideri aggiornare." + } + }, + "dashboard_configure": { + "title": "Configura la dashboard", + "description": "Configura le sezioni del dashboard per **{dashboard}** (modalità: {mode}).\n\n ℹ️ [Guida alla configurazione]({documentation_url})", + "sections": { + "section_assignee_views": { + "name": "Visualizzazioni utente", + "description": "Scegli il modello di dashboard e gli utenti da includere.", + "data": { + "dashboard_template_profile": "Modello di dashboard utente", + "dashboard_assignee_selection": "Utenti" + }, + "data_description": { + "dashboard_template_profile": "Modello definito nel manifesto utilizzato per le viste utente selezionate.", + "dashboard_assignee_selection": "Seleziona gli utenti da includere in questa dashboard." + } + }, + "section_admin_views": { + "name": "Visualizzazioni amministrative", + "description": "Scegli quale layout di amministrazione generare e chi può visualizzarlo.", + "data": { + "dashboard_admin_mode": "Layout di amministrazione", + "dashboard_admin_template_global": "Modello di dashboard di amministrazione condivisa", + "dashboard_admin_template_per_assignee": "Modello di dashboard amministrativa per singolo utente", + "dashboard_admin_view_visibility": "Visibilità della vista amministratore" + }, + "data_description": { + "dashboard_admin_mode": "Scegli il layout di amministrazione: nessuno, condiviso, per utente o entrambi.", + "dashboard_admin_template_global": "Modello definito nel manifesto utilizzato quando il layout di amministrazione include Shared.", + "dashboard_admin_template_per_assignee": "Modello definito nel manifesto utilizzato quando il layout di amministrazione include \"Per utente\".", + "dashboard_admin_view_visibility": "Controlla chi può visualizzare le viste amministrative. La visibilità collegata all'approvatore utilizza gli utenti HA dell'approvatore collegati." + } + }, + "section_access_sidebar": { + "name": "Configurazione del pannello di controllo", + "description": "Icona di controllo, accesso riservato all'amministratore e visibilità della barra laterale.", + "data": { + "dashboard_icon": "Icona del pannello di controllo", + "dashboard_require_admin": "Solo per amministratori", + "dashboard_show_in_sidebar": "Aggiungi alla barra laterale" + }, + "data_description": { + "dashboard_icon": "Icona della barra laterale per questa dashboard.", + "dashboard_require_admin": "Limita l'accesso alla dashboard agli utenti amministratori.", + "dashboard_show_in_sidebar": "Mostra questa dashboard nella barra laterale di Home Assistant." + } + }, + "section_template_version": { + "name": "Modelli Versione", + "description": "Seleziona come la modalità di aggiornamento sceglie i modelli di dashboard compatibili.", + "data": { + "dashboard_release_selection": "Modello dashboard Versione" + }, + "data_description": { + "dashboard_release_selection": "Scegli la versione attualmente installata, l'ultima versione stabile o un tag di versione compatibile esplicito." + } + } + }, + "data": { + "dashboard_template_profile": "Modello di dashboard per l'assegnatario", + "dashboard_assignee_selection": "Assegnatari", + "dashboard_admin_mode": "Layout di amministrazione", + "dashboard_admin_template_global": "Modello di dashboard di amministrazione condivisa", + "dashboard_admin_template_per_assignee": "Modello di dashboard amministrativa per singolo assegnatario", + "dashboard_admin_view_visibility": "Visibilità della vista amministratore", + "dashboard_icon": "Icona del pannello di controllo", + "dashboard_require_admin": "Solo per amministratori", + "dashboard_show_in_sidebar": "Aggiungi alla barra laterale", + "dashboard_release_selection": "Modello dashboard Versione" + }, + "data_description": { + "dashboard_template_profile": "Modello definito nel manifesto utilizzato per le viste degli assegnatari selezionati.", + "dashboard_assignee_selection": "Seleziona gli incaricati da includere in questa dashboard.", + "dashboard_admin_mode": "Scegli il layout di amministrazione: nessuno, condiviso, per utente o entrambi.", + "dashboard_admin_template_global": "Modello definito nel manifesto utilizzato quando il layout di amministrazione include Shared.", + "dashboard_admin_template_per_assignee": "Modello definito nel manifesto utilizzato quando il layout di amministrazione include \"Per utente\".", + "dashboard_admin_view_visibility": "Controlla chi può visualizzare le viste amministrative. La visibilità collegata all'approvatore utilizza gli utenti HA dell'approvatore collegati.", + "dashboard_icon": "Icona della barra laterale per questa dashboard.", + "dashboard_require_admin": "Limita l'accesso alla dashboard agli utenti amministratori.", + "dashboard_show_in_sidebar": "Mostra questa dashboard nella barra laterale di Home Assistant.", + "dashboard_release_selection": "Scegli la versione attualmente installata, l'ultima versione stabile o un tag di versione compatibile esplicito." + } + }, + "dashboard_delete": { + "title": "Elimina dashboard", + "description": "Seleziona le dashboard di ChoreOps da eliminare.\n\n⚠️ Questa azione non può essere annullata.", + "data": { + "dashboard_update_selection": "Pannello di controllo" + }, + "data_description": { + "dashboard_update_selection": "Seleziona la dashboard da rimuovere definitivamente." + } + }, + "dashboard_delete_confirm": { + "title": "Conferma l'eliminazione", + "description": "⚠️ **Attenzione:** Le seguenti dashboard verranno eliminate definitivamente:\n\n**{dashboards}**\n\nQuesta operazione rimuoverà la dashboard dalla barra laterale ed eliminerà tutta la configurazione.\n\nFare clic su Invia per confermare l'eliminazione.", + "data": {} + }, + "manage_general_options": { + "title": "Opzioni generali", + "description": "Gestisci le impostazioni generali per l'integrazione con ChoreOps.\n\n ℹ️ [Scopri di più sulle opzioni generali]({documentation_url})", + "data": { + "dashboard_points_precision": "Precisione dei punti del cruscotto", + "default_chore_points": "Punti predefiniti per ogni compito", + "points_adjust_values": "Valori del pulsante di regolazione manuale dei punti", + "update_interval": "Intervallo di aggiornamento", + "calendar_show_period": "Numero di giorni da visualizzare nel calendario", + "retention_periods": "Periodi di conservazione dei dati (giornaliero|settimanale|mensile|annuale)", + "retention_daily": "Conservazione giornaliera dei dati (giorni)", + "retention_weekly": "Conservazione settimanale dei dati (settimane)", + "retention_monthly": "Conservazione mensile dei dati (mesi)", + "retention_yearly": "Conservazione annuale dei dati (anni)", + "show_legacy_entities": "Mostra entità aggiuntive", + "kiosk_mode": "Abilita la modalità chiosco per le richieste degli cessionari", + "admin_approval_bypass": "Consenti agli account amministratori di Home Assistant di approvare", + "backups_max_retained": "Numero massimo di backup da conservare", + "backup_action_selection": "Azioni di backup" + }, + "data_description": { + "dashboard_points_precision": "Scegli come visualizzare i punti nei dashboard supportati. Questa impostazione modifica solo la formattazione del dashboard e non i valori dei punti memorizzati o i calcoli.", + "default_chore_points": "Valore predefinito dei punti utilizzato per le nuove attività quando non vengono specificati punti personalizzati.", + "points_adjust_values": "Elenco dei valori per i pulsanti di regolazione manuale dei punti. Ogni valore è separato da '|'.", + "update_interval": "Intervallo in minuti per l'aggiornamento dello stato interno di ChoreOps.", + "calendar_show_period": "Numero di giorni futuri da visualizzare nel calendario per le attività e le sfide programmate.", + "retention_periods": "Periodi di conservazione dei dati nel formato Giornaliero|Settimanale|Mensile|Annuale (es. '7|4|12|3'). Ogni valore deve essere un numero intero positivo.", + "retention_daily": "Numero di giorni di dati storici giornalieri da conservare prima della pulizia. Minimo 1, massimo 90.", + "retention_weekly": "Numero di settimane di dati storici settimanali da conservare prima della pulizia. Minimo 1, massimo 52.", + "retention_monthly": "Numero di mesi di dati storici mensili da conservare prima della pulizia. Minimo 1, massimo 24.", + "retention_yearly": "Numero di anni di dati storici annuali da conservare prima della pulizia. Minimo 1, massimo 10.", + "show_legacy_entities": "Mostra entità aggiuntive come sensori e menu a tendina che ora sono consolidate nel sensore ausiliario del dashboard. Queste entità sono facoltative per garantire la compatibilità con le automazioni esistenti.", + "kiosk_mode": "Consente ai pulsanti di richiesta di incarichi/ricompense dell'assegnatario di funzionare sui tablet a parete condivisi senza che l'utente della dashboard debba corrispondere al collegamento utente di Home Assistant dell'assegnatario. Avviso di sicurezza: chiunque abbia accesso a quel dispositivo può inviare richieste dell'assegnatario.", + "admin_approval_bypass": "Quando questa opzione è abilitata, gli account amministratore di Home Assistant possono utilizzare le azioni di approvazione di incarichi e premi nell'ambito dell'integrazione. Quando è disabilitata, gli account amministratore non possono approvare incarichi o premi semplicemente perché sono amministratori di Home Assistant.", + "backups_max_retained": "Numero massimo di file di backup da conservare per tag (ad esempio, 5 backup manuali, 5 backup di ripristino dati). I backup più vecchi vengono eliminati automaticamente dopo la creazione di ogni nuovo backup. Impostare su 0 per disabilitare completamente i backup automatici.", + "backup_action_selection": "Scegli un'azione di gestione del backup: crea un backup manuale, elimina un backup o ripristina da un backup." + } + }, + "backup_actions": { + "title": "Gestione del backup", + "description": "Gestisci i backup dei dati di ChoreOps. Stato attuale: {backup_count} backup utilizzando {storage_size} MB.", + "data": { + "backup_action_selection": "Seleziona un'azione" + }, + "data_description": { + "backup_action_selection": "Selezionare un'azione di gestione del backup." + } + }, + "backup_actions_menu": { + "title": "Azioni di backup", + "description": "Gestisci i backup dei dati di ChoreOps.", + "data": { + "backup_action_selection": "Seleziona un'azione" + }, + "data_description": { + "backup_action_selection": "Scegli un'azione di gestione del backup: crea, elimina, ripristina o torna al menu." + } + }, + "create_manual_backup": { + "title": "Crea backup manuale", + "description": "Crea un nuovo backup dei tuoi dati ChoreOps.\n\nBackup correnti: {backup_count}\nImpostazione di conservazione: {retention} backup", + "data": { + "confirm": "Conferma la creazione del backup" + } + }, + "select_backup_to_delete": { + "title": "Seleziona Backup da eliminare", + "description": "Scegli un file di backup da eliminare.\n\nBackup disponibili: {backup_count}" + }, + "select_backup_to_restore": { + "title": "Seleziona Backup da ripristinare", + "description": "Scegli un file di backup da ripristinare.\n\nBackup disponibili: {backup_count}\n\n⚠️ Questa operazione sovrascriverà i dati correnti!", + "data": { + "backup_selection": "Seleziona un backup" + }, + "data_description": { + "backup_selection": "Seleziona il file di backup che desideri ripristinare." + } + }, + "restore_backup": { + "title": "Opzioni di recupero dati", + "description": "Dati ChoreOps esistenti trovati in:\n{storage_path}\n\nTrovati {backup_count} file di backup.\n\nCosa desideri fare?", + "data": { + "backup_selection": "Seleziona l'opzione" + } + }, + "paste_json_restore": { + "title": "Importa dati JSON", + "description": "Incolla il contenuto JSON completo da uno dei seguenti:\n\n• Un file di dati ChoreOps (choreops_data)\n• Un download di diagnostica\n\nIl sistema rileverà e convertirà automaticamente il formato secondo necessità. Sono supportati sia i dati di archiviazione grezzi che i formati di esportazione della diagnostica.", + "data": { + "json_data": "Dati JSON" + }, + "data_description": { + "json_data": "Incolla qui il contenuto JSON completo. Accetta dati dal file choreops_data o dall'esportazione diagnostica (estrae automaticamente la struttura aggiuntiva)." + } + }, + "create_backup_confirm": { + "title": "Crea backup manuale", + "description": "Creare un backup manuale dei dati di ChoreOps attualmente in uso?", + "data": { + "confirm": "Confermare" + } + }, + "create_backup_success": { + "title": "Backup creato", + "description": "Backup manuale creato con successo: {backup_filename}", + "data": { + "continue": "Continuare" + } + }, + "delete_backup_confirm": { + "title": "Conferma l'eliminazione del backup", + "description": "⚠️ Stai per eliminare definitivamente questo backup:\n\n{backup_filename}\n\nQuesta azione non può essere annullata.", + "data": { + "confirm": "Conferma la cancellazione" + } + }, + "restore_backup_confirm": { + "title": "Ripristina il backup", + "description": "Sei sicuro di voler ripristinare questo backup?\n\nFile: {backup_filename}\n\nI tuoi dati correnti verranno salvati prima del ripristino. L'integrazione verrà ricaricata dopo il ripristino.", + "data": { + "confirm": "Confermare il ripristino" + } + } + }, + "error": { + "a_chore_must_be_selected": "È necessario selezionare un compito", + "badge_requires_assignment": "A questo badge deve essere assegnato almeno un incaricato.", + "error_badge_achievement_required": "Per ottenere i badge collegati a un risultato, è necessario selezionarne uno.", + "error_badge_occasion_type_required": "Per i badge per occasioni speciali è necessario specificare un tipo di occasione.", + "target_threshold_required": "È richiesta la soglia obiettivo", + "invalid_maintenance_rules": "Il valore delle regole di manutenzione non è valido", + "error_badge_challenge_required": "Per ottenere i badge collegati a una sfida, è necessario selezionarne una.", + "error_award_points_minimum": "I punti premio devono essere maggiori di zero", + "error_award_invalid_multiplier": "Il moltiplicatore dei punti deve essere maggiore di zero", + "invalid_award_item_selected": "Uno o più elementi del premio selezionati non sono validi", + "start_date_required": "È richiesta la data di inizio", + "end_date_required": "È richiesta la data di fine", + "end_date_before_start_date": "La data di fine deve essere successiva alla data di inizio.", + "duplicate_achievement": "Esiste già un obiettivo con questo nome", + "duplicate_badge": "Esiste già un badge con questo nome", + "duplicate_challenge": "Esiste già una sfida con questo nome", + "duplicate_chore": "Esiste già un compito con questo nome", + "duplicate_assignee": "Esiste già un assegnatario con questo nome", + "duplicate_approver": "Esiste già un utente con questo nome", + "duplicate_penalty": "Esiste già una sanzione con questo nome", + "duplicate_reward": "Esiste già una ricompensa con questo nome", + "duplicate_bonus": "Esiste già un bonus con questo nome", + "usage_requires_assignment_or_approval": "Abilitare l'opzione \"Può essere assegnato\" oppure \"Può approvare\".", + "associated_users_require_approval": "L'opzione \"Utenti associati\" può essere impostata solo quando è abilitata l'opzione \"Può approvare\".", + "approval_requires_associated_users": "È necessario almeno un assegnatario/utente associato quando l'opzione \"Può approvare\" è abilitata.", + "due_date_in_past": "La data di scadenza deve essere futura.", + "end_date_in_past": "La data di fine deve essere futura.", + "end_date_not_after_start_date": "La data di fine deve essere successiva alla data di inizio.", + "err_end_before_start": "La data di fine deve essere successiva alla data di inizio.", + "err_name_duplicate": "Esiste già una sfida con questo nome", + "err_name_required": "Il nome della sfida è obbligatorio", + "err_dates_required": "Sono richieste le date di inizio e fine.", + "err_invalid_date": "Le date di contestazione non sono valide", + "err_target_invalid": "Il valore obiettivo della sfida deve essere maggiore di zero", + "err_points_negative": "I punti premio della sfida non possono essere negativi", + "err_points_invalid": "I punti premio della sfida non sono validi", + "invalid_badge": "Badge non valido", + "invalid_badge_count": "Conteggio badge non valido", + "invalid_chore": "compito non valido", + "invalid_chore_count": "Conteggio delle faccende domestiche non valido", + "invalid_chore_name": "Nome dell'attività non valido", + "invalid_points": "I punti devono essere zero o superiori", + "invalid_overdue_reset_combination": "La gestione dei pagamenti in ritardo \"Alla data di scadenza, quindi ripristina\" funziona solo con i tipi di ripristino a mezzanotte. Seleziona \"A mezzanotte (una sola volta)\" o \"A mezzanotte (ripetibile)\" come tipo di ripristino dell'approvazione.", + "invalid_due_date": "Data di scadenza non valida", + "date_required_for_frequency": "Per questa frequenza ricorrente è necessaria una data di scadenza. La cancellazione delle date funziona solo con le frequenze Nessuna o Giornaliera.", + "invalid_end_date": "Data di fine non valida.", + "invalid_assignee_count": "Numero di assegnatari non valido", + "invalid_assignee_name": "Nome dell'assegnatario non valido", + "no_assignees_assigned": "Almeno un incaricato deve essere assegnato al compito", + "achievement_no_assignees_assigned": "Almeno un responsabile deve essere assegnato al risultato", + "challenge_no_assignees_assigned": "Almeno un incaricato deve essere assegnato alla sfida", + "invalid_penalty": "Penalità non valida", + "invalid_penalty_count": "Conteggio delle penalità non valido", + "invalid_bonus": "Bonus non valido", + "invalid_bonus_count": "Conteggio bonus non valido", + "invalid_reward": "Ricompensa non valida", + "invalid_reward_count": "Conteggio ricompense non valido", + "invalid_start_date": "Data di inizio non valida.", + "start_date_in_past": "La data di inizio deve essere futura.", + "points_label_required": "È necessaria l'etichetta dei punti", + "corrupt_file": "Il file selezionato contiene JSON non valido e non può essere letto.", + "invalid_structure": "Il file selezionato non presenta la struttura dati richiesta.", + "file_not_found": "Impossibile trovare il file selezionato.", + "invalid_selection": "Seleziona un'opzione valida.", + "invalid_default_chore_points": "Punti di incombenza predefiniti non validi. Deve essere un numero intero positivo.", + "error_daily_multi_requires_compatible_reset": "La frequenza \"Più volte al giorno\" è incompatibile con i tipi di ripristino a mezzanotte perché questi ultimi ripristinano le approvazioni una sola volta a mezzanotte.", + "error_daily_multi_independent_multi_assignees": "La frequenza \"Più volte al giorno\" con completamento INDIPENDENTE richiede esattamente un assegnatario, a meno che non siano configurati orari per singolo assegnatario. Configura orari diversi per ciascun assegnatario nelle impostazioni per singolo assegnatario.", + "error_daily_multi_times_required": "L'elenco degli orari è necessario per la frequenza \"Più volte al giorno\".", + "error_daily_multi_times_invalid_format": "Formato orario non valido. Utilizzare il formato 24 ore (HH:MM) separato da | (es. 08:00|17:00).", + "error_daily_multi_times_too_few": "Per la frequenza \"Più volte al giorno\" sono necessarie almeno 2 sessioni. Per una singola sessione, utilizzare la frequenza \"Giornaliera\" standard.", + "error_daily_multi_times_too_many": "È consentito un massimo di 6 utilizzi al giorno per la frequenza \"Più volte al giorno\".", + "error_daily_multi_due_date_required": "La frequenza \"Più volte al giorno\" richiede l'impostazione di una data di scadenza. La data determina l'inizio della programmazione e gli orari definiscono le finestre di disponibilità giornaliere.", + "rotation_min_assignees": "Le mansioni a rotazione richiedono almeno 2 incaricati assegnati", + "error_allow_steal_incompatible": "La gestione dei compiti in ritardo di Steal è compatibile solo con le attività di rotazione (rotation_simple o rotation_smart), il tipo di ripristino \"Una volta al giorno\" e richiede una data di scadenza per definire quando si apre la finestra di Steal.", + "error_at_due_date_reset_requires_due_date": "I tipi di ripristino dell'approvazione \"Alla data di scadenza\" (Una sola volta o Multiplo) richiedono l'impostazione di una data di scadenza. Senza una data di scadenza, il ripristino dell'approvazione non verrà mai attivato e l'attività rimarrà approvata a tempo indeterminato.", + "error_per_assignee_applicable_days_invalid": "Formato dei giorni applicabili non valido per uno o più assegnatari. I giorni devono essere numeri interi da 0 a 6 (dal lunedì alla domenica) e non devono essere duplicati.", + "error_per_assignee_daily_multi_times_invalid": "Formato orario giornaliero non valido per uno o più incaricati. Utilizzare il formato 24 ore separato da | (es. 08:00|17:00).", + "dashboard_exists": "Esiste già una dashboard con questo percorso URL. Utilizza l'opzione Aggiorna dashboard.", + "dashboard_template_error": "Impossibile recuperare il modello della dashboard. Verificare la connessione di rete o riprovare più tardi.", + "dashboard_render_error": "Impossibile visualizzare il template della dashboard. Ciò potrebbe indicare un bug del template.", + "dashboard_save_error": "Impossibile salvare la dashboard in Home Assistant. Controlla i registri di sistema per i dettagli.", + "dashboard_release_incompatible": "La versione del dashboard selezionata non è compatibile con la versione di ChoreOps installata.", + "dashboard_no_name": "Inserisci un nome per la dashboard.", + "dashboard_no_assignees": "Seleziona almeno un responsabile o abilita l'opzione \"Includi scheda amministratore\".", + "dashboard_no_dashboards": "Seleziona almeno una dashboard da eliminare.", + "dashboard_no_assignees_no_admin": "Seleziona almeno un responsabile oppure scegli un layout di amministrazione diverso da \"nessuno\".", + "dashboard_admin_global_template_required": "Il modello di amministrazione condiviso è obbligatorio quando il layout di amministrazione include \"Condiviso\".", + "dashboard_admin_per_assignee_template_required": "Il modello di amministrazione per utente è obbligatorio quando il layout di amministrazione include la funzionalità \"Per utente\".", + "dashboard_admin_per_assignee_needs_assignees": "Il layout di amministrazione per utente richiede almeno un utente selezionato.", + "dashboard_dependency_ack_required": "Seleziona \"Continua comunque\" per procedere, oppure torna indietro e installa prima le dipendenze mancanti.", + "dashboard_access_warning_ack_required": "Conferma l'avviso di controllo degli accessi per continuare, oppure torna indietro e collega gli utenti interessati o abilita la modalità chiosco.", + "dashboard_nonselectable_templates": "Uno o più modelli selezionati non sono disponibili per la generazione.", + "dashboard_release_strict_pin_failed": "La versione del dashboard selezionata deve essere bloccata esattamente, ma al momento dell'esecuzione non era disponibile alcun riferimento di versione valido. Riselezionare la versione nel passaggio 1 e riprovare.", + "dashboard_release_asset_prep_failed": "Impossibile preparare le risorse selezionate per la dashboard online. Scegli una versione diversa oppure utilizza i modelli locali più recenti e compatibili e riprova." + }, + "abort": { + "invalid_action": "Azione non valida", + "invalid_achievement": "Risultato non valido", + "invalid_badge": "Badge non valido", + "invalid_badge_type": "Tipo di badge non valido", + "invalid_challenge": "Ricorso non valido", + "invalid_chore": "Compito non valido", + "invalid_entity": "Entità non valida", + "invalid_assignee": "Assegnatario non valido", + "invalid_approver": "Approvatore non valido", + "invalid_penalty": "Penalità non valida", + "invalid_reward": "Ricompensa non valida", + "invalid_bonus": "Bonus non valido", + "no_assignee": "Non sono stati impostati assegnatari per la modifica. Aggiungi prima una voce.", + "no_approver": "Non è stato impostato alcun responsabile delle approvazioni per la modifica. Aggiungi prima una voce.", + "no_chore": "Nessuna delle attività è configurata per la modifica. Aggiungi prima una voce.", + "no_badge": "Nessun badge è attualmente impostato per la modifica. Aggiungi prima una voce.", + "no_reward": "Nessun premio è impostato per la modifica. Aggiungi prima una voce.", + "no_penalty": "Non sono previste penalità modificabili. Aggiungi prima una voce.", + "no_bonus": "Nessun bonus è impostato per la modifica. Aggiungi prima una voce.", + "no_achievement": "Nessun obiettivo è attualmente configurata per la modifica. Aggiungi prima una voce.", + "no_challenge": "Nessuna sfida è configurata per la modifica. Aggiungi prima una voce.", + "setup_complete": "Configurazione completata", + "backup_restored": "Backup ripristinato correttamente. L'integrazione è stata ricaricata con i dati ripristinati.", + "no_dashboards_to_delete": "Nessuna dashboard di ChoreOps trovata. Creane una prima utilizzando Gestisci dashboard." + } + }, + "selector": { + "main_menu": { + "options": { + "manage_points": "Gestisci punti", + "manage_user": "Gestisci utente", + "manage_approver": "Gestisci utente", + "manage_chore": "Gestisci le faccende domestiche", + "manage_badge": "Gestione badge", + "manage_reward": "Gestisci i premi", + "manage_penalty": "Gestire le sanzioni", + "manage_bonus": "Gestione Bonus", + "manage_achievement": "Gestire i risultati", + "manage_challenge": "Gestire la sfida", + "dashboard_generator": "Gestione della dashboard", + "general_options": "Opzioni generali", + "done": "Completamento della configurazione" + } + }, + "dashboard_action": { + "options": { + "create": "Crea una nuova dashboard", + "update": "Aggiorna le visualizzazioni esistenti del dashboard", + "delete": "Elimina dashboard", + "exit": "Uscita" + } + }, + "dashboard_assignee_selection": { + "options": {} + }, + "dashboard_update_selection": { + "options": {} + }, + "dashboard_template_profile": { + "options": {} + }, + "dashboard_admin_mode": { + "options": { + "none": "Nessuno", + "global": "Condiviso", + "per_assignee": "Per utente", + "both": "Entrambi" + } + }, + "dashboard_admin_view_visibility": { + "options": { + "all_users": "Tutti gli utenti", + "linked_approvers": "Solo approvatori collegati" + } + }, + "dashboard_release_selection": { + "options": { + "current_installed": "Attualmente installato", + "latest_stable": "Ultima stabilità", + "latest_compatible": "Ultima versione compatibile (consigliata)" + } + }, + "manage_actions": { + "options": { + "add": "Aggiungere", + "edit": "Modificare", + "delete": "Eliminare", + "back": "Torna al menu principale" + } + }, + "backup_actions_menu": { + "options": { + "select_backup_action": "Seleziona l'azione di backup...", + "create_backup": "💾 Crea subito un backup", + "delete_backup": "🗑️ Elimina un backup", + "restore_backup": "🔄 Ripristina da backup", + "return_to_menu": "↩️ Torna al menu principale" + } + }, + "dashboard_points_precision": { + "options": { + "fixed_0": "Solo numeri interi", + "adaptive": "Adattivo (mostra i decimali solo quando necessario)", + "fixed_1": "Sempre con una cifra decimale", + "fixed_2": "Sempre con 2 cifre decimali" + } + }, + "select_backup_to_delete": { + "options": { + "cancel": "↩️ Annulla (torna al menu di backup)" + } + }, + "select_backup_to_restore": { + "options": { + "cancel": "↩️ Annulla (torna al menu di backup)" + } + }, + "badge_type": { + "options": { + "cumulative": "Cumulativo", + "daily": "Quotidiano", + "periodic": "Periodico", + "achievement_linked": "Collegamento al raggiungimento degli obiettivi", + "special_occasion": "Occasione speciale" + } + }, + "target_type": { + "options": { + "points": "Punti", + "points_all_time": "Punti (di tutti i tempi)", + "points_chores": "Punti ottenuti svolgendo le faccende domestiche", + "chore_count": "Conteggio delle faccende domestiche", + "days_all_chores": "Giorni in cui sono state completate le faccende domestiche selezionate.", + "days_80pct_chores": "Giorni in cui è stato completato l'80% delle attività selezionate.", + "days_all_chores_no_overdue": "Giorni di lavori domestici selezionati completati (nessun lavoro in ritardo)", + "days_all_due_chores": "Giorni selezionati Compiti completati", + "days_80pct_due_chores": "Giorni in cui è stato completato l'80% delle attività in scadenza selezionate.", + "days_all_due_chores_no_overdue": "Giorni selezionati Scadenza compiti completati (nessun ritardo)", + "days_min_3_chores": "Giorni con almeno 3 faccende domestiche completate", + "days_min_5_chores": "Giorni con almeno 5 faccende domestiche completate", + "days_min_7_chores": "Giorni con almeno 7 faccende domestiche completate", + "streak_all_chores": "Serie: Compiti selezionati completati", + "streak_80pct_chores": "Serie: 80% delle attività selezionate completate", + "streak_all_chores_no_overdue": "Serie: Compiti selezionati completati (nessun ritardo)", + "streak_80pct_due_chores": "Serie: 80% delle attività in scadenza selezionate completate", + "streak_all_due_chores_no_overdue": "Serie: Compiti selezionati completati (nessun ritardo)" + } + }, + "award_items": { + "options": { + "points": "Punti", + "multiplier": "Moltiplicatore di punti" + } + }, + "award_mode": { + "options": { + "award_none": "Nessuno", + "award_points": "Punti", + "award_reward": "Ricompensa", + "award_points_reward": "Punti e premi" + } + }, + "reset_type": { + "options": { + "year_end": "Fine anno", + "quarter": "Trimestrale", + "monthly": "Mensile", + "custom_1_year": "Personalizzato: periodo di 1 anno", + "custom_1_month": "Personalizzato: periodo di 1 mese" + } + }, + "completion_criteria": { + "options": { + "shared_all": "Condiviso da tutti (Tutti i partecipanti devono completare il compito insieme)", + "independent": "Lavoro autonomo (ogni incaricato completa il compito in modo indipendente)", + "shared_first": "Condivisione prioritaria (conta il primo completamento)", + "rotation_simple": "Rotazione semplice (solo per chi tiene il turno, ordine rigoroso)", + "rotation_smart": "Rotazione intelligente (solo per chi tiene il volante, ponderata in base all'equità)" + } + }, + "approval_reset_type": { + "options": { + "at_midnight_once": "Una volta al giorno - Si resetta a mezzanotte", + "at_midnight_multi": "Più volte al giorno - Si resetta a mezzanotte", + "at_due_date_once": "Una volta per periodo - Si azzera alla data di scadenza", + "at_due_date_multi": "Più volte per periodo - Si azzera alla data di scadenza", + "upon_completion": "Completamenti illimitati - Si resetta al completamento", + "manual": "Ripristino solo manuale - Nessun ripristino automatico" + } + }, + "overdue_handling_type": { + "options": { + "never_overdue": "Mai in ritardo", + "at_due_date": "In ritardo fino al completamento", + "at_due_date_clear_at_approval_reset": "In ritardo fino al ripristino dell'approvazione", + "at_due_date_clear_immediate_on_late": "In ritardo fino al completamento (sbloccare immediatamente le approvazioni in ritardo)", + "at_due_date_clear_and_mark_missed": "In ritardo fino al ripristino dell'approvazione (segna come mancato)", + "at_due_date_mark_missed_and_lock": "Blocca fino al ripristino dell'approvazione (impedisce reclami, segnala mancata consegna)", + "at_due_date_allow_steal": "Consenti il furto fino al ripristino dell'approvazione (solo rotazione)" + } + }, + "approval_reset_pending_claim_action": { + "options": { + "hold_pending": "Stato della richiesta in sospeso (in attesa di approvazione/rifiuto)", + "clear_pending": "Cancellazione dei reclami in sospeso", + "auto_approve_pending": "Approvazione automatica delle richieste in sospeso" + } + }, + "chore_notifications": { + "options": { + "notify_on_claim": "Notifica la richiesta", + "notify_on_approval": "Notifica di approvazione", + "notify_on_disapproval": "Notifica in caso di disapprovazione", + "notify_on_due_window": "Ricevi una notifica all'inizio del periodo di scadenza.", + "notify_due_reminder": "Inviare una notifica all'orario previsto per il promemoria.", + "notify_on_overdue": "Ricevi una notifica in caso di scadenza" + } + }, + "recurring_frequency": { + "options": { + "none": "Nessuno", + "daily": "Quotidiano", + "daily_multi": "Giornalieramente (più volte al giorno)", + "weekly": "Settimanale", + "biweekly": "Bisettimanale", + "monthly": "Mensile", + "quarterly": "Trimestrale", + "yearly": "Annuale", + "custom": "Costume", + "custom_from_complete": "Personalizzato (Ripianificazione dalla data di completamento)", + "custom_1_week": "Personalizzato: 1 settimana", + "custom_1_month": "Personalizzato: 1 mese", + "custom_1_quarter": "Personalizzato: 1 quarto", + "custom_1_year": "Personalizzazione: 1 anno", + "week_end": "Fine settimana", + "month_end": "Fine del mese", + "quarter_end": "Fine del trimestre", + "year_end": "Fine anno" + } + }, + "occasion_type": { + "options": { + "birthday": "Compleanno", + "holiday": "Vacanza", + "custom": "Costume" + } + }, + "custom_interval_unit": { + "options": { + "hours": "Ore", + "days": "Giorni", + "weeks": "Settimane", + "months": "Mesi" + } + }, + "applicable_days": { + "options": { + "mon": "Lunedi", + "tue": "Martedì", + "wed": "Mercoledì", + "thu": "Giovedì", + "fri": "Venerdì", + "sat": "Sabato", + "sun": "Domenica" + } + }, + "threshold_type": { + "options": { + "points": "Punti", + "chore_count": "Conteggio delle faccende domestiche" + } + }, + "daily_threshold_type": { + "options": { + "points": "Punti", + "chore_count": "Conteggio delle faccende domestiche" + } + }, + "data_recovery_selection": { + "options": { + "cancel": "↩️ Annulla (torna al menu di backup)", + "start_fresh": "🆕 Ricomincia da capo (crea un backup dei dati esistenti)", + "current_active": "📂 Utilizza il file di dati attivo corrente", + "migrate_from_kidschores": "🔄 Migra da KidsChores (copia non distruttiva)", + "paste_json": "📋 Incolla il JSON dal file di dati o dalla diagnostica" + } + } + }, + "services": { + "claim_chore": { + "name": "Richiedi compito", + "description": "Un incaricato rivendica un compito, contrassegnandolo come \"rivendicato\" per la revisione da parte dell'approvatore.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "user_name": { + "name": "Nome utente", + "description": "Il nome dell'utente che si assume l'incarico.", + "example": "Alice" + }, + "chore_name": { + "name": "Nome del compito", + "description": "Il nome del compito da svolgere.", + "example": "Lavare i piatti" + } + } + }, + "approve_chore": { + "name": "Approva il compito", + "description": "L'approvatore approva l'incarico, assegnando dei punti.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "approver_name": { + "name": "Nome dell'approvatore", + "description": "La persona che approva l'incarico.", + "example": "Mamma" + }, + "user_name": { + "name": "Nome utente", + "description": "Il nome dell'utente che ha eseguito l'attività.", + "example": "Alice" + }, + "chore_name": { + "name": "Nome del compito", + "description": "Il nome dell'attività da approvare.", + "example": "Lavare i piatti" + }, + "points_awarded": { + "name": "Punti assegnati", + "description": "Punti da assegnare (facoltativo; il valore predefinito è il punteggio dell'attività).", + "example": "3" + } + } + }, + "disapprove_chore": { + "name": "Disapprova il compito", + "description": "L'approvatore disapprova un compito assegnato a un incaricato, ripristinandone lo stato originale.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "approver_name": { + "name": "Nome dell'approvatore", + "description": "Chi approva disapprova il compito.", + "example": "Mamma" + }, + "user_name": { + "name": "Nome utente", + "description": "Il nome dell'utente la cui attività viene rifiutata.", + "example": "Alice" + }, + "chore_name": { + "name": "Nome del compito", + "description": "Il nome del compito che viene disapprovato.", + "example": "Camera bianca" + } + } + }, + "pause_user_chores": { + "name": "Metti in pausa le attività dell'utente", + "description": "Metti in pausa o riprendi l'elaborazione di un'attività per un utente.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "user_name": { + "name": "Nome utente", + "description": "Nome dell'utente di cui si desidera sospendere o riprendere le attività.", + "example": "Sara" + }, + "paused": { + "name": "In pausa", + "description": "Vero mettere in pausa le faccende, falso riprenderle.", + "example": "VERO" + }, + "paused_until": { + "name": "In pausa fino a", + "description": "Data di rientro facoltativa. Se impostata, le pulizie riprenderanno automaticamente a mezzanotte successiva a tale data.", + "example": "2026-06-10T00:00:00+00:00" + } + } + }, + "redeem_reward": { + "name": "Riscatta il premio", + "description": "Un responsabile approva un premio assegnato a un destinatario, detraendo dei punti.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "approver_name": { + "name": "Nome dell'approvatore", + "description": "La persona che autorizza il riscatto del premio.", + "example": "Mamma" + }, + "user_name": { + "name": "Nome utente", + "description": "L'utente riscatta il premio.", + "example": "Alice" + }, + "reward_name": { + "name": "Nome del premio", + "description": "Il nome del premio da riscattare.", + "example": "Tempo extra davanti allo schermo" + } + } + }, + "approve_reward": { + "name": "Approva la ricompensa", + "description": "L'approvatore approva un premio richiesto da un cessionario.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "approver_name": { + "name": "Nome dell'approvatore", + "description": "La persona che approva il premio.", + "example": "Mamma" + }, + "user_name": { + "name": "Nome utente", + "description": "L'utente che sta riscattando il premio.", + "example": "Alice" + }, + "reward_name": { + "name": "Nome del premio", + "description": "Il nome del premio che viene approvato.", + "example": "Tempo extra davanti allo schermo" + }, + "cost_override": { + "name": "Sovrascrittura dei costi", + "description": "Opzione per sovrascrivere il costo. Se omessa, viene utilizzato il costo memorizzato della ricompensa. Impostare a 0 per una ricompensa gratuita (come le ricompense con badge). Utile per la determinazione del prezzo in base al contesto (fine settimana, occasioni speciali, ecc.)." + } + } + }, + "disapprove_reward": { + "name": "Ricompensa disapprovare", + "description": "L'approvatore respinge la richiesta di riscatto di un premio per un cessionario.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "approver_name": { + "name": "Nome dell'approvatore", + "description": "Il responsabile dell'approvazione disapprova la ricompensa.", + "example": "Papà" + }, + "user_name": { + "name": "Nome utente", + "description": "L'utente la cui richiesta di riscatto del premio è stata respinta.", + "example": "Alice" + }, + "reward_name": { + "name": "Nome del premio", + "description": "Il nome della ricompensa che viene respinta.", + "example": "Tempo extra davanti allo schermo" + } + } + }, + "apply_penalty": { + "name": "Applicare la sanzione", + "description": "Un responsabile applica una penalità che comporta la detrazione di punti.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "approver_name": { + "name": "Nome dell'approvatore", + "description": "L'autorità competente che applica la sanzione.", + "example": "Papà" + }, + "user_name": { + "name": "Nome utente", + "description": "L'utente che riceve la penalità.", + "example": "Alice" + }, + "penalty_name": { + "name": "Nome della sanzione", + "description": "Il nome della sanzione da applicare.", + "example": "Urlando" + } + } + }, + "apply_bonus": { + "name": "Applica il bonus", + "description": "Un responsabile dell'approvazione applica un bonus a un assegnatario, assegnando dei punti.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "approver_name": { + "name": "Nome dell'approvatore", + "description": "La persona che approva applica il bonus.", + "example": "Mamma" + }, + "user_name": { + "name": "Nome utente", + "description": "L'utente riceve il bonus.", + "example": "Alice" + }, + "bonus_name": { + "name": "Nome bonus", + "description": "Il nome del bonus da applicare.", + "example": "Extra utile" + } + } + }, + "manual_adjust_points": { + "name": "Punti di regolazione manuale", + "description": "Regola manualmente i punti per un utente utilizzando un importo intero con segno e una motivazione richiesta registrata nel libro mastro.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "approver_name": { + "name": "Nome dell'approvatore (facoltativo)", + "description": "Nome facoltativo visualizzato dell'operatore che esegue la regolazione manuale.", + "example": "Papà" + }, + "user_id": { + "name": "ID utente (facoltativo)", + "description": "UUID interno dell'utente di destinazione. Fornire user_id o user_name.", + "example": "018f1c2a-1234-4f8a-9b6d-123456789abc" + }, + "user_name": { + "name": "Nome utente (facoltativo)", + "description": "Visualizza il nome dell'utente di destinazione. Fornisci user_id o user_name.", + "example": "Zoë" + }, + "amount": { + "name": "Quantità", + "description": "Importo in punti con segno intero da regolare (ad esempio 10 o -10; 0 non è ammesso).", + "example": "-10" + }, + "reason": { + "name": "Motivo", + "description": "Motivo richiesto registrato nel nome della voce del registro delle transazioni.", + "example": "Ho aiutato mio fratello/sorella con i compiti." + } + } + }, + "create_reward": { + "name": "Crea una ricompensa", + "description": "Crea un nuovo premio a livello di programmazione.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "name": { + "name": "Nome", + "description": "Il nome della ricompensa.", + "example": "Tempo extra davanti allo schermo" + }, + "cost": { + "name": "Costo", + "description": "Punti necessari per riscattare il premio.", + "example": "10" + }, + "description": { + "name": "Descrizione", + "description": "Descrizione facoltativa del premio.", + "example": "30 minuti di tempo extra per l'utilizzo del tablet" + }, + "icon": { + "name": "Icona", + "description": "Icona che rappresenta il premio.", + "example": "mdi:gift" + }, + "labels": { + "name": "Etichette", + "description": "Etichette per raggruppare i premi.", + "example": "['weekend', 'speciale']" + }, + "assigned_user_names": { + "name": "Assegnato a", + "description": "Nomi utente visualizzati assegnati a questo premio. Utilizzare [\"*\"] per tutti gli utenti. Inserire un elenco vuoto per non assegnare alcun premio a nessun utente.", + "example": "['Zoë', 'Max!']" + } + } + }, + "update_reward": { + "name": "Aggiornamento Ricompensa", + "description": "Aggiorna un premio esistente (sono supportati aggiornamenti parziali).", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "id": { + "name": "ID premio", + "description": "ID interno del premio da aggiornare. Utilizzare l'ID OPPURE il nome.", + "example": "abc123-def456-789..." + }, + "name": { + "name": "Nome", + "description": "Nome del premio da aggiornare, oppure nuovo nome per il premio.", + "example": "Tempo extra davanti allo schermo" + }, + "cost": { + "name": "Costo", + "description": "Valore di costo aggiornato.", + "example": "15" + }, + "description": { + "name": "Descrizione", + "description": "Descrizione aggiornata.", + "example": "45 minuti di tempo extra per l'utilizzo del tablet" + }, + "icon": { + "name": "Icona", + "description": "Icona aggiornata.", + "example": "mdi:star" + }, + "labels": { + "name": "Etichette", + "description": "Etichette aggiornate.", + "example": "['premium', 'speciale']" + }, + "assigned_user_names": { + "name": "Assegnato a", + "description": "Nomi utente visualizzati assegnati a questo premio. Utilizzare [\"*\"] per tutti gli utenti. Inserire un elenco vuoto per rimuovere tutti gli utenti assegnati. Omettere per lasciare invariate le assegnazioni correnti.", + "example": "['Zoë', 'Max!']" + } + } + }, + "delete_reward": { + "name": "Elimina la ricompensa", + "description": "Eliminare una ricompensa tramite ID o nome.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "id": { + "name": "ID premio", + "description": "ID interno del premio da eliminare. Utilizzare l'ID OPPURE il nome.", + "example": "abc123-def456-789..." + }, + "name": { + "name": "Nome", + "description": "Nome del premio da eliminare.", + "example": "Tempo extra davanti allo schermo" + } + } + }, + "create_chore": { + "name": "Crea un compito", + "description": "Crea una nuova attività che i destinatari possano completare per guadagnare punti.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "name": { + "name": "Nome del compito", + "description": "Il nome del compito da svolgere.", + "example": "Camera bianca" + }, + "assigned_user_names": { + "name": "Assegnato a", + "description": "Elenco dei nomi degli incaricati a cui assegnare questo compito. Utilizzare [\"*\"] per tutti gli utenti a cui è possibile assegnare il compito. Inserire un elenco vuoto per creare un elenco senza incaricati.", + "example": "['Emma', 'Jack']" + }, + "points": { + "name": "Punti", + "description": "Punti assegnati al completamento del compito.", + "example": "10" + }, + "description": { + "name": "Descrizione", + "description": "Descrizione facoltativa del compito.", + "example": "Rifare il letto, mettere via i giocattoli, passare l'aspirapolvere sul pavimento." + }, + "icon": { + "name": "Icona", + "description": "Icona Material Design per l'attività.", + "example": "mdi:scopa" + }, + "labels": { + "name": "Etichette", + "description": "Etichette opzionali per categorizzare l'attività.", + "example": "['quotidiano', 'camera da letto']" + }, + "frequency": { + "name": "Frequenza", + "description": "Con quale frequenza si ripete l'attività: nessuna, giornaliera, giornaliera multipla, settimanale, bisettimanale, mensile, trimestrale, annuale, personalizzata, personalizzata da completata o a fine periodo (fine settimana, fine mese, fine trimestre, fine anno).", + "example": "quotidiano" + }, + "applicable_days": { + "name": "Giorni applicabili", + "description": "Giorni della settimana in cui è possibile svolgere l'attività.", + "example": "[lun, mer, ven]" + }, + "completion_criteria": { + "name": "Criteri di completamento", + "description": "Controlla la modalità di completamento dell'attività quando sono assegnati più incaricati: monitoraggio individuale, completamento condiviso o rotazione a turni.", + "example": "indipendente" + }, + "approval_reset_type": { + "name": "Tipo di ripristino dell'approvazione", + "description": "Controlla quando si attiva il limite del ciclo di approvazione dell'attività (mezzanotte, data di scadenza, al completamento o attivazione manuale).", + "example": "a mezzanotte una volta" + }, + "pending_claims": { + "name": "Azioni di reclamo in sospeso", + "description": "Controlla cosa succede alle richieste non approvate quando si attiva il ripristino del limite di approvazione.", + "example": "in sospeso" + }, + "overdue_handling": { + "name": "Gestione dei ritardi", + "description": "Controlla cosa succede quando la data di scadenza è superata e cosa succede alle attività in ritardo al momento del ripristino dell'approvazione.", + "example": "alla data di scadenza" + }, + "chore_claim_lock_until_window": { + "name": "Blocca la richiesta fino all'apertura della finestra", + "description": "Se ciò fosse vero, i destinatari non potrebbero rivendicare questo incarico prima dell'inizio del periodo di tempo previsto.", + "example": "falso" + }, + "auto_approve": { + "name": "Approvazione automatica", + "description": "Se la condizione è vera, l'incarico viene automaticamente approvato al momento della richiesta.", + "example": "falso" + }, + "due_date": { + "name": "Scadenza", + "description": "Data di scadenza facoltativa per l'attività. Utilizza il selettore di data/ora per scegliere una data e un'ora valide.", + "example": "2025-03-01T23:59:00Z" + }, + "due_window_offset": { + "name": "Offset finestra dovuta", + "description": "Durata prima della data di scadenza quando l'attività entra nello stato 'in scadenza'. Formato: '30m', '1h', '1d 6h 30m', ecc. Utilizzare '0' per disabilitare la funzione di finestra di scadenza.", + "example": "30 metri" + }, + "due_reminder_offset": { + "name": "Compensazione del promemoria dovuto", + "description": "Durata prima della data di scadenza per l'invio della notifica di promemoria. Formato: '30m', '1h', '1d 6h 30m', ecc. Utilizzare '0' per disattivare i promemoria.", + "example": "30 metri" + } + } + }, + "update_chore": { + "name": "Aggiornamento dell'attività", + "description": "Aggiorna le proprietà di un'attività esistente. Fornisci l'ID OPPURE il nome per identificare l'attività. Verranno aggiornati solo i campi forniti.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "id": { + "name": "ID attività", + "description": "L'ID interno dell'attività da aggiornare (in alternativa al nome).", + "example": "abc-123-def-456" + }, + "name": { + "name": "Nome dell'attività (Identificativo)", + "description": "Il nome dell'attività da aggiornare (alternativa all'ID). Più intuitivo dell'ID.", + "example": "Camera bianca" + }, + "assigned_user_names": { + "name": "Assegnato a", + "description": "Nuovo elenco di nomi degli assegnatari a cui assegnare questo compito. Utilizzare [\"*\"] per tutti gli utenti assegnabili. Inserire un elenco vuoto per rimuovere tutti gli utenti assegnati. Omettere per lasciare invariate le assegnazioni correnti.", + "example": "['Emma', 'Jack']" + }, + "points": { + "name": "Punti", + "description": "Nuovo punteggio per l'attività.", + "example": "15" + }, + "description": { + "name": "Descrizione", + "description": "Nuova descrizione del compito.", + "example": "Rifare il letto, riordinare la scrivania, passare l'aspirapolvere sul pavimento." + }, + "icon": { + "name": "Icona", + "description": "Nuova icona Material Design per le attività.", + "example": "mdi:vuoto" + }, + "labels": { + "name": "Etichette", + "description": "Nuove etichette per il lavoro.", + "example": "['settimanale', 'pulizia']" + }, + "frequency": { + "name": "Frequenza", + "description": "Nuova frequenza ricorrente: nessuna, giornaliera, giornaliera multipla, settimanale, bisettimanale, mensile, trimestrale, annuale, personalizzata, personalizzata da completa, oppure a fine periodo (fine settimana, fine mese, fine trimestre, fine anno).", + "example": "settimanale" + }, + "applicable_days": { + "name": "Giorni applicabili", + "description": "Nuovi giorni della settimana in cui è possibile svolgere l'attività.", + "example": "[sab, dom]" + }, + "approval_reset_type": { + "name": "Tipo di ripristino dell'approvazione", + "description": "Nuovo tipo di ripristino per quando l'attività viene ripristinata.", + "example": "alla data di scadenza una volta" + }, + "pending_claims": { + "name": "Azioni di reclamo in sospeso", + "description": "Nuova azione per le richieste in sospeso al momento del ripristino dell'attività.", + "example": "clear_pending" + }, + "overdue_handling": { + "name": "Gestione dei ritardi", + "description": "Nuovo comportamento nella gestione dei ritardi.", + "example": "mai_in_ritardo" + }, + "chore_claim_lock_until_window": { + "name": "Blocca la richiesta fino all'apertura della finestra", + "description": "Se ciò fosse vero, i destinatari non potrebbero rivendicare questo incarico prima dell'inizio del periodo di tempo previsto.", + "example": "VERO" + }, + "auto_approve": { + "name": "Approvazione automatica", + "description": "Nuova impostazione di approvazione automatica.", + "example": "VERO" + }, + "due_date": { + "name": "Scadenza", + "description": "Nuova data di scadenza per l'attività. Utilizza il selettore di data/ora per scegliere una data e un'ora valide.", + "example": "2025-04-01T18:00:00Z" + }, + "due_window_offset": { + "name": "Offset finestra dovuta", + "description": "Nuovo offset della finestra di scadenza. Durata prima della data di scadenza quando l'attività entra nello stato 'in scadenza'. Formato: '30m', '1h', '1d 6h 30m', ecc. Utilizzare '0' per disabilitare.", + "example": "1 ora" + }, + "due_reminder_offset": { + "name": "Compensazione del promemoria dovuto", + "description": "Nuovo offset per il promemoria di scadenza. Durata prima della data di scadenza per l'invio della notifica di promemoria. Formato: '30m', '1h', '1d 6h 30m', ecc. Utilizzare '0' per disabilitare.", + "example": "30 metri" + }, + "assignment_action": { + "name": "Azione di assegnazione", + "description": "Come gestire l'elenco assigned_user_names. 'replace' imposta direttamente l'elenco (impostazione predefinita, retrocompatibile). 'add' aggiunge gli utenti elencati agli assegnatari esistenti. 'remove' rimuove gli utenti elencati dagli assegnatari esistenti.", + "example": "aggiungere" + } + } + }, + "delete_chore": { + "name": "Elimina attività", + "description": "Elimina un'attività tramite ID o nome. Tutti gli stati e la cronologia specifici dell'assegnatario verranno rimossi.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "id": { + "name": "ID attività", + "description": "ID interno dell'attività da eliminare. Utilizzare l'ID OPPURE il nome.", + "example": "abc123-def456-789..." + }, + "name": { + "name": "Nome", + "description": "Nome dell'attività da eliminare.", + "example": "Camera bianca" + } + } + }, + "set_rotation_turn": { + "name": "Imposta la rotazione", + "description": "Assegna manualmente il turno corrente a uno specifico responsabile in un'attività di rotazione. Funziona solo per le attività di rotazione (rotation_simple o rotation_smart). Utilizza l'ID o il nome per l'identificazione.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "chore_id": { + "name": "ID attività", + "description": "ID interno della rotazione delle mansioni. Facoltativo se viene specificato chore_name.", + "example": "abc123-def456-789..." + }, + "chore_name": { + "name": "Nome del compito", + "description": "Nome della mansione a rotazione. Facoltativo se viene fornito chore_id.", + "example": "Camera da letto pulita" + }, + "user_id": { + "name": "ID utente", + "description": "ID interno dell'utente a cui assegnare il turno. Deve essere assegnato a questa attività. Facoltativo se viene fornito il nome utente.", + "example": "xyz789-abc123-456..." + }, + "user_name": { + "name": "Nome utente", + "description": "Nome dell'utente a cui assegnare il turno. Deve essere assegnato a questa attività. Facoltativo se viene fornito l'ID utente.", + "example": "Alice" + } + } + }, + "reset_rotation": { + "name": "Reimposta rotazione", + "description": "Reimposta il turno di rotazione al primo assegnato. Funziona solo per le mansioni di rotazione (rotazione semplice o rotazione intelligente). Utilizzare ID o nome per l'identificazione.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "chore_id": { + "name": "ID attività", + "description": "ID interno dell'attività di rotazione da reimpostare. Facoltativo se viene fornito chore_name.", + "example": "abc123-def456-789..." + }, + "chore_name": { + "name": "Nome del compito", + "description": "Nome della rotazione delle attività da reimpostare. Facoltativo se viene fornito chore_id.", + "example": "Camera da letto pulita" + } + } + }, + "open_rotation_cycle": { + "name": "Ciclo a rotazione aperta", + "description": "Abilita la sovrascrittura del ciclo di rotazione per un ciclo, consentendo a qualsiasi assegnatario di rivendicare indipendentemente dal turno. La sovrascrittura viene annullata dopo la successiva approvazione. Utilizza ID o nome per l'identificazione.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "chore_id": { + "name": "ID attività", + "description": "ID interno dell'attività di rotazione da aprire. Facoltativo se viene fornito chore_name.", + "example": "abc123-def456-789..." + }, + "chore_name": { + "name": "Nome del compito", + "description": "Nome della mansione di rotazione da aprire. Facoltativo se viene fornito chore_id.", + "example": "Camera da letto pulita" + } + } + }, + "generate_activity_report": { + "name": "Genera report di attività", + "description": "Genera un report di attività settimanale a partire dalla cronologia del registro. Supporta il filtraggio utente opzionale, l'invio di notifiche opzionale e la conversione HTML opzionale, restituendo comunque un payload di risposta strutturato.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "user_name": { + "name": "Nome utente", + "description": "Filtro opzionale per generare il report solo per un singolo utente." + }, + "report_language": { + "name": "Lingua del rapporto", + "description": "Codice lingua opzionale per il testo del report. In caso di errore, viene utilizzata la lingua selezionata dall'utente (se è impostato user_name) e successivamente l'inglese." + }, + "report_title": { + "name": "Titolo del rapporto", + "description": "Opzione per sovrascrivere il titolo nell'output Markdown." + }, + "notify_service": { + "name": "Servizio di notifica", + "description": "È possibile specificare un destinatario facoltativo (ad esempio notify.family) a cui inviare il report." + }, + "output_format": { + "name": "Formato di output", + "description": "Restituisci solo markdown, solo html o entrambi nel payload della risposta." + } + } + }, + "manage_ui_control": { + "name": "Gestisci il controllo dell'interfaccia utente", + "description": "Crea, aggiorna o rimuovi un valore di controllo UI persistente. Per impostazione predefinita, questa operazione ha come destinazione il bucket ui_preferences di un singolo utente. Utilizza ui_control_target: shared_admin per scrivere nel bucket di controllo UI di amministrazione condivisa in data/meta. Utilizza una chiave vuota con l'azione remove per cancellare tutti i valori memorizzati per la destinazione selezionata.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "user_id": { + "name": "ID utente", + "description": "ID utente interno facoltativo. Solo per utenti avanzati. Se vengono forniti sia user_id che user_name, prevale user_id.", + "example": "abc123-def456" + }, + "user_name": { + "name": "Nome utente", + "description": "Nome utente di destinazione facoltativo. Obbligatorio quando non viene fornito l'ID utente.", + "example": "Alice" + }, + "ui_control_target": { + "name": "Target di controllo dell'interfaccia utente", + "description": "Scegliere se indirizzare la selezione a un singolo utente o al gruppo di controlli dell'interfaccia utente di amministrazione condivisa. Se si seleziona shared_admin, non specificare user_id o user_name.", + "example": "utente" + }, + "ui_control_action": { + "name": "Azione di controllo dell'interfaccia utente", + "description": "Scegliere se creare, aggiornare o rimuovere un valore di controllo dell'interfaccia utente memorizzato.", + "example": "aggiornamento" + }, + "key": { + "name": "Percorso chiave", + "description": "Percorso di controllo dell'interfaccia utente separato da barre, ad esempio gamification/rewards/header_collapse. Lasciare vuoto solo con l'azione remove per cancellare tutti i valori memorizzati per l'elemento selezionato.", + "example": "gamification/ricompense/header_collapse" + }, + "value": { + "name": "Valore", + "description": "Valore da memorizzare per la creazione o l'aggiornamento. Questo campo viene ignorato durante la rimozione." + } + } + }, + "reset_chores_to_pending_state": { + "name": "Reimposta le attività allo stato in sospeso", + "description": "Reimposta manualmente tutte le attività allo stato \"in sospeso\", rimuovendo reclami e approvazioni.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + } + } + }, + "reset_transactional_data": { + "name": "Reimposta i dati transazionali", + "description": "Reimposta i dati di runtime/transazionali preservando la configurazione (assegnatari, incarichi, premi, ecc.). Prima del ripristino viene creato un backup automatico denominato choreops_data_timestamp_reset nella directory .storage. Utilizzare scope per indirizzare assegnatari o domini specifici. Richiede che il parametro confirm_destructive sia impostato su true come meccanismo di sicurezza.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "confirm_destructive": { + "name": "Conferma distruttivo", + "description": "Deve essere impostato su \"true\" per confermare la volontà di procedere con il ripristino. Si tratta di un meccanismo di sicurezza." + }, + "scope": { + "name": "Ambito di applicazione", + "description": "Ambito di ripristino: 'globale' ripristina tutti i dati, 'utente' ripristina i dati solo per un utente specifico." + }, + "user_name": { + "name": "Nome utente", + "description": "Obbligatorio se l'ambito è 'utente'. Il nome dell'utente i cui dati devono essere reimpostati." + }, + "item_type": { + "name": "Tipo di articolo", + "description": "Filtro opzionale per reimpostare solo un dominio specifico (ad esempio, solo i punti o solo le faccende domestiche)." + }, + "item_name": { + "name": "Nome dell'articolo", + "description": "Filtro opzionale per reimpostare un elemento specifico all'interno del dominio item_type." + } + } + }, + "reset_overdue_chores": { + "name": "Reimposta le attività in sospeso", + "description": "Reimposta le attività scadute allo stato \"In sospeso\" e riprogrammale in base alla loro frequenza ricorrente e alla data di scadenza precedente. Puoi facoltativamente specificare un ID attività (o un nome attività) per reimpostare un'attività specifica e facoltativamente specificare un nome utente per reimpostare l'attività solo per quell'utente.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "chore_id": { + "name": "ID attività", + "description": "L'ID interno dell'attività da reimpostare (facoltativo se viene fornito chore_name).", + "example": "abc123" + }, + "chore_name": { + "name": "Nome del compito", + "description": "Il nome dell'attività da reimpostare (facoltativo se viene fornito chore_id).", + "example": "Lavare i piatti" + }, + "user_name": { + "name": "Nome utente", + "description": "L'utente a cui indirizzare il ripristino.", + "example": "Alice" + } + } + }, + "set_chore_due_date": { + "name": "Imposta/Reimposta la data di scadenza dell'attività", + "description": "Imposta (o cancella) la data di scadenza per un'attività. Specifica il nome dell'attività e, se lo desideri, una nuova data di scadenza. Se non viene specificata alcuna data di scadenza, quella esistente verrà cancellata. Il servizio rifiuterà le date di scadenza impostate in passato. Per le attività indipendenti, puoi facoltativamente specificare un nome utente per impostare la data di scadenza solo per quell'utente.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "chore_name": { + "name": "Nome del compito", + "description": "Il nome dell'attività da aggiornare", + "example": "Lavare i piatti" + }, + "due_date": { + "name": "Scadenza", + "description": "Nuova data di scadenza per l'attività. Utilizza il selettore di data/ora per scegliere una data e un'ora valide (nel tuo fuso orario locale). Lascia vuoto per cancellare la data di scadenza.", + "example": "2025-03-01T23:59:00Z" + }, + "user_name": { + "name": "Nome utente", + "description": "Per le attività indipendenti, specificare l'utente per cui impostare la data di scadenza. Se omesso, imposta la data di scadenza per tutti gli incaricati di questa attività.", + "example": "Alice" + }, + "user_id": { + "name": "ID utente", + "description": "L'ID interno dell'utente. Solo per utenti avanzati: utilizzare user_name al posto di user_name.", + "example": "abc123-def456" + } + } + }, + "reschedule_chores_after": { + "name": "Riprogrammare le faccende domestiche dopo", + "description": "Ripianifica una o più attività in modo che la loro prossima data di scadenza cada dopo la data e l'ora specificate. Le attività ricorrenti vengono spostate alla successiva occorrenza programmata dopo il limite. Le attività non ricorrenti con scadenza entro o prima del limite vengono spostate al limite stesso, a meno che non sia abilitata l'opzione skip_non_recurring. Le attività condivise vengono saltate a meno che non sia abilitata l'opzione reschedule_shared.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "after": { + "name": "Dopo", + "description": "Data e ora limite. Le attività con scadenza entro tale data saranno prese in considerazione per una riprogrammazione.", + "example": "2026-07-14T18:00:00Z" + }, + "chore_ids": { + "name": "ID delle attività", + "description": "Elenco facoltativo di ID delle attività da selezionare. Se forniti, questi ID hanno la precedenza sui nomi delle attività." + }, + "chore_names": { + "name": "Nomi delle faccende domestiche", + "description": "Elenco facoltativo di nomi di attività da selezionare quando non vengono forniti gli ID delle attività." + }, + "user_ids": { + "name": "ID utente", + "description": "Elenco facoltativo di ID assegnatari per limitare gli aggiornamenti indipendenti delle attività. Se forniti, questi ID hanno la precedenza sui nomi utente." + }, + "user_names": { + "name": "Nomi utente", + "description": "Elenco facoltativo di nomi degli assegnatari per limitare gli aggiornamenti indipendenti delle attività quando non vengono forniti gli ID utente." + }, + "reschedule_shared": { + "name": "Riprogrammare le faccende domestiche condivise", + "description": "Attivando questa opzione, sarà possibile riprogrammare le attività condivise e a rotazione. Questa modifica avrà effetto su tutti gli incaricati di tali attività.", + "example": "falso" + }, + "skip_non_recurring": { + "name": "Salta le attività non ricorrenti", + "description": "Attivando questa opzione, le attività non ricorrenti rimarranno invariate anziché spostare la loro data di scadenza al limite.", + "example": "falso" + }, + "allow_long_recurrences": { + "name": "Consenti ricorrenze lunghe", + "description": "Consente di riprogrammare le ricorrenze mensili, trimestrali, annuali e di altri intervalli lunghi. Il valore predefinito è false per evitare salti accidentali di grandi dimensioni.", + "example": "VERO" + } + } + }, + "skip_chore_due_date": { + "name": "Salta la data di scadenza del lavoro", + "description": "Salta la data di scadenza corrente di un'attività ricorrente. Questo servizio riprogramma immediatamente la data di scadenza dell'attività in base alla sua frequenza ricorrente e ne reimposta lo stato su \"in sospeso\". Eventuali richieste o approvazioni in sospeso verranno rimosse. Per le attività indipendenti, è possibile specificare un nome utente per cui saltare l'attività.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "chore_id": { + "name": "ID attività", + "description": "L'ID interno dell'attività da reimpostare (facoltativo se viene fornito chore_name).", + "example": "abc123" + }, + "chore_name": { + "name": "Nome del compito", + "description": "Il nome dell'attività da reimpostare (facoltativo se viene fornito chore_id).", + "example": "Lavare i piatti" + }, + "user_name": { + "name": "Nome utente", + "description": "Per le attività indipendenti, specificare l'utente per il quale si desidera saltare la data di scadenza. Se omesso, la data di scadenza verrà saltata per tutti gli incaricati di questa attività.", + "example": "Alice" + }, + "user_id": { + "name": "ID utente", + "description": "L'ID interno dell'utente. Solo per utenti avanzati: utilizzare user_name al posto di user_name.", + "example": "abc123-def456" + }, + "mark_as_missed": { + "name": "Segnala come mancato", + "description": "Se impostato su true, registra questa omissione come un'attività non completata nelle statistiche dell'incaricato. Utile per tenere traccia delle omissioni intenzionali separatamente dai ripristini automatici delle attività in scadenza." + } + } + }, + "remove_awarded_badges": { + "name": "Rimuovi i badge assegnati", + "description": "Rimuovi tutti i badge assegnati a tutti gli incaricati. Facoltativamente, specifica il nome del badge per reimpostare un badge specifico per tutti gli incaricati. Utilizza il campo user_name per reimpostare tutti i badge per un utente specifico. Combina entrambi i metodi per reimpostare un badge specifico per un utente specifico.", + "fields": { + "config_entry_id": { + "name": "ID voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più di una configurazione ChoreOps. È pensata per una configurazione specifica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome della voce di configurazione (facoltativo)", + "description": "Utilizza questa opzione se disponi di più configurazioni ChoreOps, ognuna con un nome univoco. Se i nomi si ripetono, utilizza l'ID voce di configurazione.", + "example": "faccende domestiche" + }, + "user_name": { + "name": "Nome utente", + "description": "I badge assegnati all'utente verranno rimossi.", + "example": "Bob" + }, + "badge_name": { + "name": "Nome del distintivo", + "description": "Il nome del badge da rimuovere.", + "example": "Capo delle faccende" + } + } + } + }, + "entity": { + "sensor": { + "assignee_chore_status_sensor": { + "name": "Stato attività - {chore_name}", + "state": { + "pending": "In attesa di", + "completed": "Completato", + "claimed": "Reclamato", + "due": "Dovuto", + "overdue": "In ritardo", + "completed_by_other": "Completato da Altri", + "waiting": "In attesa (sportello chiuso)", + "not_my_turn": "Non è il mio turno (rotazione)", + "missed": "Mancato (Bloccato)", + "paused": "In pausa" + }, + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_chore_status": "Stati del ciclo di vita delle attività specifici dell'utente, statistiche sulle prestazioni e metadati di configurazione" + } + }, + "user_name": { + "name": "Nome utente" + }, + "chore_name": { + "name": "Nome del compito" + }, + "chore_icon": { + "name": "Icona delle faccende domestiche" + }, + "description": { + "name": "Descrizione" + }, + "assigned_user_names": { + "name": "Assegnato a" + }, + "labels": { + "name": "Etichette" + }, + "default_points": { + "name": "Punti predefiniti" + }, + "completion_criteria": { + "name": "Criteri di completamento", + "state": { + "independent": "Indipendente", + "shared_first": "Condiviso (Primo)", + "shared_all": "Condiviso (Tutti)", + "rotation_simple": "Rotazione semplice", + "rotation_smart": "Rotazione intelligente" + } + }, + "approval_reset_type": { + "name": "Tipo di ripristino dell'approvazione", + "state": { + "at_midnight_once": "A mezzanotte (una volta)", + "at_midnight_multi": "A mezzanotte (Multi)", + "at_due_date_once": "Alla data di scadenza (una sola volta)", + "at_due_date_multi": "Alla data di scadenza (multiplo)", + "upon_completion": "Al completamento", + "manual": "Ripristino manuale soltanto" + } + }, + "approval_reset_pending_claim_action": { + "name": "Approvazione ripristinata in attesa dell'azione di reclamo", + "state": { + "hold_pending": "Stato della richiesta in sospeso (in attesa di approvazione/rifiuto)", + "clear_pending": "Cancellazione dei reclami in sospeso", + "auto_approve_pending": "Approvazione automatica delle richieste in sospeso" + } + }, + "overdue_handling_type": { + "name": "Tipo di gestione dei ritardi", + "state": { + "never_overdue": "Mai in ritardo", + "at_due_date": "In ritardo fino al completamento", + "at_due_date_clear_at_approval_reset": "In ritardo fino al ripristino dell'approvazione", + "at_due_date_clear_immediate_on_late": "In ritardo fino al completamento (sbloccare immediatamente le approvazioni in ritardo)", + "at_due_date_clear_and_mark_missed": "In ritardo fino al ripristino dell'approvazione (segna come mancato)", + "at_due_date_mark_missed_and_lock": "Blocca fino al ripristino dell'approvazione (impedisce reclami, segnala mancata consegna)", + "at_due_date_allow_steal": "Consenti il furto fino al ripristino dell'approvazione (solo rotazione)" + } + }, + "chore_claim_lock_until_window": { + "name": "Blocca la richiesta fino all'apertura della finestra di scadenza", + "state": { + "true": "SÌ", + "false": "NO" + } + }, + "chore_due_window_offset": { + "name": "Offset finestra dovuta" + }, + "auto_approve": { + "name": "Approvazione automatica delle richieste di rimborso", + "state": { + "true": "SÌ", + "false": "NO" + } + }, + "recurring_frequency": { + "name": "Frequenza di ricorrenza", + "state": { + "none": "Nessuno", + "daily": "Quotidiano", + "daily_multi": "Giornalieramente (più volte al giorno)", + "weekly": "Settimanale", + "biweekly": "Bisettimanale", + "monthly": "Mensile", + "quarterly": "Trimestrale", + "yearly": "Annuale", + "custom": "Costume", + "custom_from_complete": "Personalizzato (Ripianificazione dalla data di completamento)", + "custom_1_week": "Personalizzato: 1 settimana", + "custom_1_month": "Personalizzato: 1 mese", + "custom_1_quarter": "Personalizzato: 1 quarto", + "custom_1_year": "Personalizzazione: 1 anno" + } + }, + "applicable_days": { + "name": "Giorni applicabili", + "state": { + "mon": "Lunedi", + "tue": "Martedì", + "wed": "Mercoledì", + "thu": "Giovedì", + "fri": "Venerdì", + "sat": "Sabato", + "sun": "Domenica" + } + }, + "due_date": { + "name": "Scadenza" + }, + "custom_frequency_interval": { + "name": "Intervallo di frequenza personalizzato" + }, + "custom_frequency_unit": { + "name": "Unità di frequenza personalizzata", + "state": { + "days": "Giorni", + "weeks": "Settimane", + "months": "Mesi" + } + }, + "chore_points_earned": { + "name": "Punti guadagnati (di sempre)" + }, + "chore_approvals_count": { + "name": "Approvazioni (di tutti i tempi)" + }, + "chore_claims_count": { + "name": "Richieste di risarcimento (di tutti i tempi)" + }, + "chore_completed_count": { + "name": "Completato (in assoluto)" + }, + "chore_disapproved_count": { + "name": "Disapprovazioni (di tutti i tempi)" + }, + "chore_overdue_count": { + "name": "In ritardo (di tutti i tempi)" + }, + "chore_approvals_today": { + "name": "Approvazioni oggi" + }, + "chore_current_streak": { + "name": "Serie attuale" + }, + "chore_longest_streak": { + "name": "serie più lunga" + }, + "chore_last_longest_streak_date": { + "name": "Data della serie più lunga" + }, + "chore_current_missed_streak": { + "name": "Serie di errori mancati in corso" + }, + "chore_longest_missed_streak": { + "name": "Serie di partite mancate più lunga" + }, + "chore_missed_count": { + "name": "Mancato (di tutti i tempi)" + }, + "chore_last_missed": { + "name": "Ultimo mancato" + }, + "last_claimed": { + "name": "Ultimo reclamo" + }, + "last_approved": { + "name": "Ultimo aggiornamento approvato" + }, + "last_completed": { + "name": "Ultimo completato" + }, + "last_disapproved": { + "name": "Ultimo rifiuto" + }, + "last_overdue": { + "name": "Ultimo scaduto" + }, + "global_state": { + "name": "Stato globale", + "state": { + "pending": "In attesa di", + "completed": "Completato", + "claimed": "Reclamato", + "overdue": "In ritardo", + "completed_in_part": "Completato (in parte)", + "claimed_in_part": "Rivendicato (in parte)", + "independent": "Indipendente", + "due": "Dovuto", + "waiting": "In attesa", + "missed": "Mancato (Bloccato)" + } + }, + "can_claim": { + "name": "Può richiedere", + "state": { + "true": "SÌ", + "false": "NO" + } + }, + "can_approve": { + "name": "Può approvare", + "state": { + "true": "SÌ", + "false": "NO" + } + }, + "approve_button_eid": { + "name": "ID entità pulsante Approva" + }, + "disapprove_button_eid": { + "name": "ID entità pulsante Disapprova" + }, + "claim_button_eid": { + "name": "ID entità pulsante Richiedi" + }, + "due_window_start": { + "name": "Inizio finestra di scadenza" + }, + "time_until_due": { + "name": "Tempo rimanente alla scadenza" + }, + "time_until_overdue": { + "name": "Tempo rimanente fino alla scadenza" + }, + "claim_mode": { + "name": "Modalità di richiesta", + "state": { + "claimable": "Reclamabile", + "steal_available": "Offerta imperdibile", + "blocked_completed_by_other": "Completato da altri", + "blocked_already_approved": "Già approvato", + "blocked_pending_claim": "Richiesta in sospeso", + "blocked_waiting_window": "In attesa della finestra temporale prevista", + "blocked_not_my_turn": "Non è il tuo turno", + "blocked_missed_locked": "Mancato e bloccato", + "blocked_paused": "Le attività sono sospese per questo utente" + } + }, + "turn_user_name": { + "name": "Nome utente" + }, + "available_at": { + "name": "Disponibile presso" + } + } + }, + "assignee_points_sensor": { + "name": "{points}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_points": "Saldo punti attuale con statistiche dettagliate su guadagni e spese." + } + }, + "user_name": { + "name": "Nome utente" + }, + "points_multiplier": { + "name": "Moltiplicatore di punti" + }, + "point_stat_points_earned_today": { + "name": "Guadagnato oggi" + }, + "point_stat_points_earned_week": { + "name": "Guadagnati questa settimana" + }, + "point_stat_points_earned_month": { + "name": "Guadagnato questo mese" + }, + "point_stat_points_earned_year": { + "name": "Guadagnato quest'anno" + }, + "point_stat_points_earned_all_time": { + "name": "Guadagnato in assoluto" + }, + "point_stat_points_by_source_today": { + "name": "Fonte odierna" + }, + "point_stat_points_by_source_week": { + "name": "Fonte: This Week" + }, + "point_stat_points_by_source_month": { + "name": "Per fonte questo mese" + }, + "point_stat_points_by_source_year": { + "name": "Per fonte quest'anno" + }, + "point_stat_points_by_source_all_time": { + "name": "Per fonte, sempre" + }, + "point_stat_points_spent_today": { + "name": "Trascorso oggi" + }, + "point_stat_points_spent_week": { + "name": "Ho trascorso questa settimana" + }, + "point_stat_points_spent_month": { + "name": "Speso questo mese" + }, + "point_stat_points_spent_year": { + "name": "Trascorso quest'anno" + }, + "point_stat_points_spent_all_time": { + "name": "Ho trascorso tutto il tempo" + }, + "point_stat_points_net_today": { + "name": "Net Today" + }, + "point_stat_points_net_week": { + "name": "Net This Week" + }, + "point_stat_points_net_month": { + "name": "Netto questo mese" + }, + "point_stat_points_net_year": { + "name": "Netto quest'anno" + }, + "point_stat_points_net_all_time": { + "name": "Netto di tutti i tempi" + }, + "point_stat_points_earning_streak_current": { + "name": "Serie di guadagni in corso" + }, + "point_stat_points_earning_streak_longest": { + "name": "Serie di guadagni più lunga" + }, + "point_stat_avg_points_per_day_week": { + "name": "Media giornaliera (settimanale)" + }, + "point_stat_avg_points_per_day_month": { + "name": "Media giornaliera (mensile)" + }, + "point_stat_avg_points_per_chore": { + "name": "Media per compito" + }, + "point_stat_highest_balance_all_time": { + "name": "Il saldo più alto di sempre" + } + } + }, + "assignee_points_max_ever_sensor": { + "name": "Massimo {points} Mai", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_sensor_points_max_ever_extra": "Punteggio più alto mai raggiunto (extra)" + } + } + } + }, + "system_chore_approvals_sensor": { + "name": "Lavori completati - Totale", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_sensor_chore_approvals_all_time_extra": "Conteggio totale delle approvazioni delle faccende domestiche (extra)" + } + } + } + }, + "system_chore_approvals_daily_sensor": { + "name": "Lavori completati - Giornalieri", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_sensor_chore_approvals_today_extra": "Conteggio delle approvazioni delle faccende domestiche di oggi (extra)" + } + } + } + }, + "system_chore_approvals_weekly_sensor": { + "name": "Lavori completati - Settimanale", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_sensor_chore_approvals_week_extra": "Conteggio delle approvazioni delle faccende domestiche questa settimana (extra)" + } + } + } + }, + "system_chore_approvals_monthly_sensor": { + "name": "Lavori completati - Mensilmente", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_sensor_chore_approvals_month_extra": "Conteggio delle approvazioni delle faccende domestiche questo mese (extra)" + } + } + } + }, + "assignee_chores_sensor": { + "name": "Lavoretti", + "unit_of_measurement": "Lavoretti", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_chores": "Numero totale di faccende domestiche completate nel corso della storia, con statistiche dettagliate." + } + }, + "user_name": { + "name": "Nome utente" + }, + "chore_stat_approved_today": { + "name": "Approvato oggi" + }, + "chore_stat_approved_week": { + "name": "Approvato questa settimana" + }, + "chore_stat_approved_month": { + "name": "Approvato questo mese" + }, + "chore_stat_approved_year": { + "name": "Approvato quest'anno" + }, + "chore_stat_approved_all_time": { + "name": "Approvato in ogni momento" + }, + "chore_stat_most_completed_chore_all_time": { + "name": "Attività domestica più completata (in assoluto)" + }, + "chore_stat_most_completed_chore_week": { + "name": "Attività domestica più completata (settimanale)" + }, + "chore_stat_most_completed_chore_month": { + "name": "Attività domestica più completata (mese)" + }, + "chore_stat_most_completed_chore_year": { + "name": "Attività domestica più completata (anno)" + }, + "chore_stat_total_points_from_chores_today": { + "name": "Punti guadagnati con le faccende domestiche di oggi" + }, + "chore_stat_total_points_from_chores_week": { + "name": "Punti guadagnati con le faccende domestiche di questa settimana" + }, + "chore_stat_total_points_from_chores_month": { + "name": "Punti guadagnati con le faccende domestiche questo mese" + }, + "chore_stat_total_points_from_chores_year": { + "name": "Punti ottenuti con le faccende domestiche quest'anno" + }, + "chore_stat_total_points_from_chores_all_time": { + "name": "Punti totali ottenuti con le faccende domestiche" + }, + "chore_stat_overdue_today": { + "name": "In scadenza oggi" + }, + "chore_stat_missed_today": { + "name": "Mi sono perso oggi" + }, + "chore_stat_overdue_week": { + "name": "In ritardo questa settimana" + }, + "chore_stat_missed_week": { + "name": "Perso questa settimana" + }, + "chore_stat_overdue_month": { + "name": "In scadenza questo mese" + }, + "chore_stat_missed_month": { + "name": "Ho perso questo mese" + }, + "chore_stat_overdue_year": { + "name": "In scadenza quest'anno" + }, + "chore_stat_missed_year": { + "name": "Mancato quest'anno" + }, + "chore_stat_overdue_count_all_time": { + "name": "In ritardo da sempre" + }, + "chore_stat_missed_all_time": { + "name": "Perso in ogni momento" + }, + "chore_stat_claimed_today": { + "name": "Reclamato oggi" + }, + "chore_stat_claimed_week": { + "name": "Reclamati questa settimana" + }, + "chore_stat_claimed_month": { + "name": "Richiesti questo mese" + }, + "chore_stat_claimed_year": { + "name": "Richiesto quest'anno" + }, + "chore_stat_claimed_all_time": { + "name": "Reclamato in assoluto" + }, + "chore_stat_disapproved_today": { + "name": "Disapprovato oggi" + }, + "chore_stat_disapproved_week": { + "name": "Disapprovato questa settimana" + }, + "chore_stat_disapproved_month": { + "name": "Non approvato questo mese" + }, + "chore_stat_disapproved_year": { + "name": "Disapprovato quest'anno" + }, + "chore_stat_disapproved_all_time": { + "name": "Disapprovato in ogni momento" + }, + "chore_stat_completed_today": { + "name": "Completato oggi" + }, + "chore_stat_completed_week": { + "name": "Completato questa settimana" + }, + "chore_stat_completed_month": { + "name": "Completato questo mese" + }, + "chore_stat_completed_year": { + "name": "Completato quest'anno" + }, + "chore_stat_completed_all_time": { + "name": "Completato in assoluto" + }, + "chore_stat_points_today": { + "name": "Punti di oggi" + }, + "chore_stat_points_week": { + "name": "Punti questa settimana" + }, + "chore_stat_points_month": { + "name": "Punti questo mese" + }, + "chore_stat_points_year": { + "name": "Punti quest'anno" + }, + "chore_stat_points_all_time": { + "name": "Punti totali di sempre" + }, + "chore_stat_top_chores_week": { + "name": "Principale incombenza settimanale" + }, + "chore_stat_top_chores_month": { + "name": "Principale faccenda domestica (mese)" + }, + "chore_stat_top_chores_year": { + "name": "Principale incombenza (anno)" + }, + "chore_stat_chores_completed_today": { + "name": "Completato oggi" + }, + "chore_stat_chores_completed_week": { + "name": "Completato questa settimana" + }, + "chore_stat_chores_completed_month": { + "name": "Completato questo mese" + }, + "chore_stat_chores_completed_year": { + "name": "Completato quest'anno" + }, + "chore_stat_current_due_today": { + "name": "Scadenza corrente odierna" + }, + "chore_stat_current_overdue": { + "name": "Attualmente in ritardo" + }, + "chore_stat_current_claimed": { + "name": "Attualmente rivendicato" + }, + "chore_stat_current_approved": { + "name": "Approvato attualmente" + }, + "chore_stat_longest_streak_week": { + "name": "Serie più lunga (settimanale)" + }, + "chore_stat_longest_streak_month": { + "name": "Serie più lunga (in mesi)" + }, + "chore_stat_longest_streak_year": { + "name": "Serie più lunga (anno)" + }, + "chore_stat_longest_streak_all_time": { + "name": "Serie più lunga (di sempre)" + }, + "chore_stat_longest_streak": { + "name": "serie più lunga" + }, + "chore_stat_longest_missed_streak": { + "name": "Serie di partite mancate più lunga" + }, + "chore_stat_avg_per_day_week": { + "name": "Media giornaliera (settimanale)" + }, + "chore_stat_avg_per_day_month": { + "name": "Media giornaliera (mensile)" + }, + "chore_stat_avg_per_day_year": { + "name": "Media giornaliera (annua)" + } + } + }, + "assignee_badges_sensor": { + "name": "Distintivi", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_user_badges": "Punti più alti raggiunti e progressi cumulativi in tempo reale, inclusi i cicli attivi e la cronologia dei premi per tutti i tipi di badge." + } + }, + "user_name": { + "name": "Nome utente" + }, + "labels": { + "name": "Etichette" + }, + "all_earned_badges": { + "name": "Tutti i distintivi guadagnati" + }, + "highest_badge_threshold_value": { + "name": "Soglia massima per il conseguimento del badge" + }, + "points_to_next_badge": { + "name": "Punti per il prossimo badge" + }, + "current_badge_name": { + "name": "Nome attuale del badge" + }, + "current_badge_eid": { + "name": "ID entità badge corrente" + }, + "highest_earned_badge_name": { + "name": "Nome del distintivo più alto conseguito" + }, + "next_higher_badge_name": { + "name": "Nome del distintivo di livello superiore successivo" + }, + "next_higher_badge_eid": { + "name": "ID entità badge di livello superiore" + }, + "next_lower_badge_name": { + "name": "Nome del badge inferiore successivo" + }, + "next_lower_badge_eid": { + "name": "ID entità badge inferiore successivo" + }, + "badge_status": { + "name": "Stato del freno", + "state": { + "active": "Attivo", + "grace": "Periodo di grazia", + "demoted": "Declassato" + } + }, + "last_awarded_date": { + "name": "Data dell'ultima assegnazione" + }, + "award_count": { + "name": "Conteggio premi" + }, + "description": { + "name": "Descrizione" + }, + "baseline_points": { + "name": "Punti di riferimento" + }, + "cycle_points": { + "name": "Punti del ciclo" + }, + "maintenance_grace_end_date": { + "name": "Data di fine del periodo di grazia per la manutenzione" + }, + "maintenance_points_required": { + "name": "Punti di manutenzione richiesti" + }, + "maintenance_end_date": { + "name": "Data di fine manutenzione" + }, + "maintenance_points_remaining": { + "name": "Punti di manutenzione rimanenti" + }, + "reset_schedule": { + "name": "Programma di ripristino" + }, + "target": { + "name": "Bersaglio" + }, + "awards": { + "name": "Categorie" + } + } + }, + "system_badge_sensor": { + "name": "Distintivo - {badge_name}", + "unit_of_measurement": "Utenti", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_badge": "Conteggio degli utenti che hanno ottenuto questo badge, con la configurazione del badge che include tipo, destinazione, premi e utenti assegnati." + } + }, + "badge_name": { + "name": "Nome del distintivo" + }, + "description": { + "name": "Descrizione" + }, + "badge_type": { + "name": "Tipo di badge", + "state": { + "cumulative": "Cumulativo", + "achievement": "Risultato", + "challenge": "Sfida", + "daily": "Quotidiano", + "periodic": "Periodico", + "special": "Speciale" + } + }, + "labels": { + "name": "Etichette" + }, + "earned_user_names": { + "name": "Utenti guadagnati" + }, + "assigned_user_names": { + "name": "Assegnato a" + }, + "target": { + "name": "Bersaglio" + }, + "associated_achievement": { + "name": "Risultati associati" + }, + "associated_challenge": { + "name": "Sfida associata" + }, + "occasion_type": { + "name": "Tipo di occasione" + }, + "required_chores": { + "name": "Compiti richiesti" + }, + "badge_awards": { + "name": "Premi al distintivo" + }, + "reset_schedule": { + "name": "Programma di ripristino" + } + } + }, + "assignee_badge_progress_sensor": { + "name": "Progresso del badge - {badge_name}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_badge_progress": "Percentuale di avanzamento del badge (0-100) che tiene traccia del completamento verso l'ottenimento di questo badge, con stato dei criteri, date e cronologia dei premi." + } + }, + "user_name": { + "name": "Nome utente" + }, + "badge_name": { + "name": "Nome del distintivo" + }, + "badge_type": { + "name": "Tipo di badge", + "state": { + "cumulative": "Cumulativo", + "achievement": "Risultato", + "challenge": "Sfida", + "daily": "Quotidiano", + "periodic": "Periodico", + "special": "Speciale" + } + }, + "status": { + "name": "Stato", + "state": { + "inactive": "Inattivo", + "active": "Attivo", + "completed": "Completato" + } + }, + "target_type": { + "name": "Tipo di destinazione", + "state": { + "chores": "Lavoretti", + "points": "Punti", + "days": "Giorni", + "achievement": "Risultato", + "challenge": "Sfida" + } + }, + "threshold_value": { + "name": "Soglia obiettivo" + }, + "recurring_frequency": { + "name": "Frequenza di ricorrenza", + "state": { + "none": "Nessuno", + "daily": "Quotidiano", + "weekly": "Settimanale", + "biweekly": "Bisettimanale", + "monthly": "Mensile" + } + }, + "start_date": { + "name": "Data di lancio" + }, + "end_date": { + "name": "Data di fine" + }, + "last_update_day": { + "name": "Ultimo giorno di aggiornamento" + }, + "overall_progress": { + "name": "Progresso complessivo" + }, + "criteria_met": { + "name": "Criteri soddisfatti", + "state": { + "true": "SÌ", + "false": "NO" + } + }, + "last_awarded": { + "name": "Ultimo premio assegnato" + }, + "award_count": { + "name": "Conteggio premi" + }, + "description": { + "name": "Descrizione" + }, + "labels": { + "name": "Etichette" + }, + "target": { + "name": "Bersaglio" + }, + "required_chores": { + "name": "Compiti richiesti" + }, + "tracked_chores": { + "name": "Attività tracciate" + }, + "awards": { + "name": "Categorie" + }, + "reset_schedule": { + "name": "Programma di ripristino" + }, + "associated_achievement": { + "name": "Risultati associati" + }, + "associated_challenge": { + "name": "Sfida associata" + }, + "occasion_type": { + "name": "Tipo di occasione" + }, + "system_badge_eid": { + "name": "ID entità badge di sistema" + } + } + }, + "system_chores_pending_approval_sensor": { + "name": "Approvazioni delle mansioni in sospeso", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_sensor_chores_pending_approval_extra": "Numero di incarichi in attesa di approvazione per tutti gli utenti (extra)" + } + } + } + }, + "system_rewards_pending_approval_sensor": { + "name": "Approvazione dei premi in sospeso", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_sensor_rewards_pending_approval_extra": "Numero di premi in attesa di approvazione per tutti gli utenti (extra)" + } + } + } + }, + "system_chore_shared_state_sensor": { + "name": "{chore_name} - Stato globale", + "state": { + "pending": "In attesa di", + "completed": "Completato", + "claimed": "Reclamato", + "due": "Dovuto", + "overdue": "In ritardo", + "completed_in_part": "Completato (in parte)", + "claimed_in_part": "Rivendicato (in parte)", + "independent": "Indipendente", + "waiting": "In attesa", + "missed": "Mancato (Bloccato)" + }, + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_shared_chore": "Stato di completamento globale per le attività condivise con statistiche aggregate per tutti gli utenti assegnati" + } + }, + "chore_name": { + "name": "Nome del compito" + }, + "chore_icon": { + "name": "Icona delle faccende domestiche" + }, + "description": { + "name": "Descrizione" + }, + "assigned_user_names": { + "name": "Assegnato a" + }, + "labels": { + "name": "Etichette" + }, + "default_points": { + "name": "Punti predefiniti" + }, + "completion_criteria": { + "name": "Criteri di completamento", + "state": { + "independent": "Indipendente", + "shared_first": "Condiviso (solo la prima volta)", + "shared_all": "Condiviso (Tutti i campi obbligatori)", + "rotation_simple": "Rotazione semplice", + "rotation_smart": "Rotazione intelligente" + } + }, + "approval_reset_type": { + "name": "Tipo di ripristino dell'approvazione", + "state": { + "at_midnight_once": "A mezzanotte (una volta)", + "at_midnight_multi": "A mezzanotte (Multi)", + "at_due_date_once": "Alla data di scadenza (una sola volta)", + "at_due_date_multi": "Alla data di scadenza (multiplo)", + "upon_completion": "Al completamento", + "manual": "Ripristino manuale soltanto" + } + }, + "recurring_frequency": { + "name": "Frequenza di ricorrenza", + "state": { + "none": "Nessuno", + "daily": "Quotidiano", + "weekly": "Settimanale", + "biweekly": "Bisettimanale", + "monthly": "Mensile", + "custom": "Costume" + } + }, + "applicable_days": { + "name": "Giorni applicabili", + "state": { + "mon": "Lunedi", + "tue": "Martedì", + "wed": "Mercoledì", + "thu": "Giovedì", + "fri": "Venerdì", + "sat": "Sabato", + "sun": "Domenica" + } + }, + "due_date": { + "name": "Scadenza" + }, + "custom_frequency_interval": { + "name": "Intervallo di frequenza personalizzato" + }, + "custom_frequency_unit": { + "name": "Unità di frequenza personalizzata", + "state": { + "days": "Giorni", + "weeks": "Settimane", + "months": "Mesi" + } + }, + "chore_approvals_today": { + "name": "Approvazioni odierne (tutti gli utenti)" + }, + "last_claimed": { + "name": "Ultimo reclamo" + }, + "last_approved": { + "name": "Ultimo aggiornamento approvato" + }, + "last_completed": { + "name": "Ultimo completato" + }, + "chore_claimed_by": { + "name": "Rivendicato da" + }, + "chore_completed_by": { + "name": "Completato da" + }, + "due_window_start": { + "name": "Inizio finestra di scadenza" + }, + "time_until_due": { + "name": "Tempo rimanente alla scadenza" + }, + "time_until_overdue": { + "name": "Tempo rimanente fino alla scadenza" + } + } + }, + "assignee_reward_status_sensor": { + "name": "Stato della ricompensa - {reward_name}", + "state": { + "locked": "Chiuso", + "available": "Disponibile", + "requested": "richiesto", + "approved": "Approvato", + "unknown": "Sconosciuto", + "none": "Nessuno" + }, + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_reward_status": "Visualizza lo stato di riscatto dei premi con la cronologia delle richieste e i pulsanti di azione." + } + }, + "user_name": { + "name": "Nome utente" + }, + "reward_name": { + "name": "Nome del premio" + }, + "description": { + "name": "Descrizione" + }, + "cost": { + "name": "Costo" + }, + "pending_claims": { + "name": "Richieste in sospeso" + }, + "last_claimed": { + "name": "Ultimo reclamo" + }, + "last_approved": { + "name": "Ultimo aggiornamento approvato" + }, + "last_completed": { + "name": "Ultimo completato" + }, + "last_disapproved": { + "name": "Ultimo rifiuto" + }, + "claimed_today": { + "name": "Reclami oggi" + }, + "claimed_week": { + "name": "Richieste di risarcimento questa settimana" + }, + "claimed_month": { + "name": "Richieste di risarcimento questo mese" + }, + "claimed_year": { + "name": "Richieste di risarcimento quest'anno" + }, + "claimed_all_time": { + "name": "Reclami di tutti i tempi" + }, + "approved_today": { + "name": "Approvato oggi" + }, + "approved_week": { + "name": "Approvato questa settimana" + }, + "approved_month": { + "name": "Approvato questo mese" + }, + "approved_year": { + "name": "Approvato quest'anno" + }, + "approved_all_time": { + "name": "Approvato in ogni momento" + }, + "disapproved_today": { + "name": "Disapprovato oggi" + }, + "disapproved_week": { + "name": "Disapprovato questa settimana" + }, + "disapproved_month": { + "name": "Non approvato questo mese" + }, + "disapproved_year": { + "name": "Disapprovato quest'anno" + }, + "disapproved_all_time": { + "name": "Disapprovato in ogni momento" + }, + "points_spent_today": { + "name": "Punti spesi oggi" + }, + "points_spent_week": { + "name": "Punti spesi questa settimana" + }, + "points_spent_month": { + "name": "Punti spesi questo mese" + }, + "points_spent_year": { + "name": "Punti spesi quest'anno" + }, + "points_spent_all_time": { + "name": "Punti spesi in tutto il tempo" + }, + "approval_rate": { + "name": "Tasso di approvazione (%)" + }, + "claim_rate_week": { + "name": "Richieste medie al giorno (settimanali)" + }, + "claim_rate_month": { + "name": "Richieste medie giornaliere (mensili)" + }, + "claim_button_eid": { + "name": "ID entità pulsante Richiedi" + }, + "approve_button_eid": { + "name": "ID entità pulsante Approva" + }, + "disapprove_button_eid": { + "name": "ID entità pulsante Disapprova" + }, + "labels": { + "name": "Etichette" + } + } + }, + "assignee_penalty_applied_sensor": { + "name": "Penalità applicate - {penalty_name}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_sensor_penalty_applied": "Numero di volte in cui la penalità è stata applicata all'utente" + } + }, + "user_name": { + "name": "Nome utente" + }, + "penalty_name": { + "name": "Nome della sanzione" + }, + "description": { + "name": "Descrizione" + }, + "penalty_points": { + "name": "Punti di penalità" + }, + "labels": { + "name": "Etichette" + } + } + }, + "assignee_bonus_applied_sensor": { + "name": "Bonus applicabile - {bonus_name}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_sensor_bonus_applied": "Numero di volte in cui il bonus è stato applicato all'utente" + } + }, + "user_name": { + "name": "Nome utente" + }, + "bonus_name": { + "name": "Nome bonus" + }, + "description": { + "name": "Descrizione" + }, + "bonus_points": { + "name": "Punti bonus" + }, + "labels": { + "name": "Etichette" + } + } + }, + "assignee_points_earned_daily_sensor": { + "name": "Punti guadagnati - Giornalieri", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_sensor_points_earned_today_extra": "Punti guadagnati oggi dall'utente (extra)" + } + } + } + }, + "assignee_points_earned_weekly_sensor": { + "name": "Punti guadagnati - Settimanali", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_sensor_points_earned_week_extra": "Punti guadagnati questa settimana dall'utente (extra)" + } + } + } + }, + "assignee_points_earned_monthly_sensor": { + "name": "Punti guadagnati - Mensilmente", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_sensor_points_earned_month_extra": "Punti guadagnati questo mese dall'utente (extra)" + } + } + } + }, + "system_achievement_sensor": { + "name": "Risultato raggiunto - {achievement_name}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_achievement": "Percentuale di avanzamento del raggiungimento degli obiettivi (0-100) aggregata per tutti gli utenti assegnati, con configurazione degli obiettivi che include tipo, target, criteri e elenco degli utenti che l'hanno raggiunto." + } + }, + "achievement_name": { + "name": "Nome del risultato" + }, + "description": { + "name": "Descrizione" + }, + "assigned_user_names": { + "name": "Assegnato a" + }, + "type": { + "name": "Tipo", + "state": { + "chore_total": "Totale delle faccende", + "chore_streak": "Serie di faccende domestiche", + "daily_minimum": "Minimo giornaliero" + } + }, + "associated_chore": { + "name": "Compito associato" + }, + "criteria": { + "name": "criteri" + }, + "target_value": { + "name": "Bersaglio" + }, + "reward_points": { + "name": "Punti premio" + }, + "earned_user_names": { + "name": "Guadagnato da" + }, + "labels": { + "name": "Etichette" + } + } + }, + "system_challenge_sensor": { + "name": "Sfida - {challenge_name}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_challenge": "Percentuale di avanzamento della sfida (0-100) aggregata per tutti gli utenti assegnati all'interno dell'intervallo di date, con configurazione della sfida che include tipo, obiettivo, criteri, date ed elenco degli utenti che l'hanno completata." + } + }, + "challenge_name": { + "name": "Nome del contratto" + }, + "description": { + "name": "Descrizione" + }, + "assigned_user_names": { + "name": "Assegnato a" + }, + "type": { + "name": "Tipo", + "state": { + "total_within_window": "Totale entro la finestra", + "daily_minimum": "Minimo giornaliero" + } + }, + "associated_chore": { + "name": "Compito associato" + }, + "criteria": { + "name": "criteri" + }, + "target_value": { + "name": "Bersaglio" + }, + "reward_points": { + "name": "Punti premio" + }, + "start_date": { + "name": "Data di lancio" + }, + "end_date": { + "name": "Data di fine" + }, + "earned_user_names": { + "name": "Guadagnato da" + }, + "labels": { + "name": "Etichette" + } + } + }, + "assignee_achievement_progress_sensor": { + "name": "Progressi nell'ottenimento - {achievement_name}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_achievement_progress": "Percentuale di avanzamento del singolo utente (0-100) verso il conseguimento di questo obiettivo, con conteggio grezzo attuale dei progressi e stato del premio." + } + }, + "user_name": { + "name": "Nome utente" + }, + "achievement_name": { + "name": "Nome del risultato" + }, + "description": { + "name": "Descrizione" + }, + "assigned_user_names": { + "name": "Assegnato a" + }, + "type": { + "name": "Tipo", + "state": { + "chore_total": "Totale delle faccende", + "chore_streak": "Serie di faccende domestiche", + "daily_minimum": "Minimo giornaliero" + } + }, + "associated_chore": { + "name": "Compito associato" + }, + "criteria": { + "name": "criteri" + }, + "target_value": { + "name": "Bersaglio" + }, + "reward_points": { + "name": "Punti premio" + }, + "raw_progress": { + "name": "Progresso grezzo" + }, + "awarded": { + "name": "Premiato", + "state": { + "true": "SÌ", + "false": "NO" + } + }, + "labels": { + "name": "Etichette" + } + } + }, + "assignee_challenge_progress_sensor": { + "name": "Avanzamento - {challenge_name}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_challenge_progress": "Percentuale di avanzamento del singolo utente (0-100) verso il completamento della sfida entro il periodo di tempo indicato, con conteggio grezzo attuale dei progressi e stato del premio." + } + }, + "user_name": { + "name": "Nome utente" + }, + "challenge_name": { + "name": "Nome del contratto" + }, + "description": { + "name": "Descrizione" + }, + "assigned_user_names": { + "name": "Assegnato a" + }, + "type": { + "name": "Tipo", + "state": { + "total_within_window": "Totale entro la finestra", + "daily_minimum": "Minimo giornaliero" + } + }, + "associated_chore": { + "name": "Compito associato" + }, + "criteria": { + "name": "criteri" + }, + "target_value": { + "name": "Bersaglio" + }, + "reward_points": { + "name": "Punti premio" + }, + "start_date": { + "name": "Data di lancio" + }, + "end_date": { + "name": "Data di fine" + }, + "raw_progress": { + "name": "Progresso grezzo" + }, + "awarded": { + "name": "Premiato", + "state": { + "true": "SÌ", + "false": "NO" + } + }, + "labels": { + "name": "Etichette" + } + } + }, + "assignee_chore_streak_sensor": { + "name": "Più lunga serie di faccende domestiche svolte", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_sensor_chore_streak_extra": "Serie più lunga di completamento delle attività per l'utente (extra)" + } + }, + "streaks_by_achievement": { + "name": "Serie di successi" + } + } + }, + "system_dashboard_translation_sensor": { + "name": "Traduzioni della dashboard ({language})", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_dashboard_translation": "Fornisce traduzioni localizzate dell'interfaccia utente per la visualizzazione del dashboard" + } + }, + "ui_translations": { + "name": "Traduzioni dell'interfaccia utente" + }, + "language": { + "name": "Lingua" + } + } + }, + "system_dashboard_helper_sensor": { + "name": "Assistente dashboard", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_system_dashboard_helper": "Aggrega lo stato del pannello di controllo di amministrazione condivisa per le schede di amministrazione condivisa" + } + }, + "ui_control": { + "name": "Controllo dell'interfaccia utente" + }, + "integration_entry_id": { + "name": "ID voce integrazione" + }, + "dashboard_lookup_key": { + "name": "Chiave di ricerca del pannello di controllo" + }, + "user_dashboard_helpers": { + "name": "Strumenti di supporto per la dashboard utente" + }, + "language": { + "name": "Lingua" + }, + "translation_sensor_eid": { + "name": "ID entità sensore di traduzione" + } + } + }, + "assignee_dashboard_helper_sensor": { + "name": "Assistente per la dashboard dell'interfaccia utente", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_dashboard_helper": "Aggrega tutti i dati degli utenti per la visualizzazione nella dashboard." + } + }, + "chores": { + "name": "Lavoretti" + }, + "rewards": { + "name": "Premi" + }, + "ui_control": { + "name": "Controllo dell'interfaccia utente" + }, + "badges": { + "name": "Distintivi" + }, + "bonuses": { + "name": "Bonus" + }, + "penalties": { + "name": "Sanzioni" + }, + "achievements": { + "name": "Risultati conseguiti" + }, + "challenges": { + "name": "Sfide" + }, + "ui_translations": { + "name": "Traduzioni dell'interfaccia utente" + }, + "points_buttons": { + "name": "Punti Pulsanti" + }, + "pending_approvals": { + "name": "Approvazioni in sospeso" + }, + "core_sensors": { + "name": "Sensori principali" + }, + "dashboard_config": { + "name": "Configurazione del pannello di controllo" + }, + "dashboard_helpers": { + "name": "Strumenti di supporto del pannello di controllo" + }, + "shard_runtime": { + "name": "Elenco delle attività in esecuzione" + }, + "chores_by_label": { + "name": "Lavori domestici per etichetta" + }, + "user_name": { + "name": "Nome utente" + }, + "language": { + "name": "Lingua" + } + } + }, + "assignee_dashboard_chore_list_helper_sensor": { + "name": "Elenco delle attività della dashboard dell'interfaccia utente {shard_index}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_dashboard_chore_shard_helper": "Fornisce un elenco di attività per la visualizzazione nella dashboard quando l'elenco completo delle attività di un utente è troppo lungo per l'assistente principale" + } + }, + "chores": { + "name": "Lavoretti" + }, + "shard_index": { + "name": "Numero della lista delle faccende" + }, + "shard_count": { + "name": "Liste complete delle faccende domestiche" + }, + "helper_contract_version": { + "name": "Versione del contratto di assistenza" + } + } + } + }, + "select": { + "kc_select_base": { + "name": "Seleziona la base" + }, + "system_chores_select": { + "name": "Seleziona la faccenda domestica", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_select_chores": "Menu a tendina per selezionare l'attività tra tutte quelle disponibili." + } + } + } + }, + "system_rewards_select": { + "name": "Seleziona il premio", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_select_rewards": "Menu a tendina per selezionare il premio tra tutti quelli disponibili" + } + } + } + }, + "system_penalties_select": { + "name": "Seleziona la penalità", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_select_penalties": "Menu a tendina per selezionare la sanzione tra tutte quelle disponibili" + } + } + } + }, + "system_bonuses_select": { + "name": "Seleziona Bonus", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_select_bonuses": "Menu a tendina per selezionare il bonus tra tutti i bonus disponibili" + } + } + } + }, + "system_dashboard_admin_assignee_select": { + "name": "Selettore utente del pannello di amministrazione", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_system_dashboard_admin_user": "Selettore utente a livello di sistema per le schede del pannello di controllo amministrativo" + } + }, + "dashboard_helper_eid": { + "name": "ID entità di supporto della dashboard" + }, + "selected_user_slug": { + "name": "Slug utente selezionato" + }, + "selected_user_name": { + "name": "Nome utente selezionato" + } + } + }, + "assignee_dashboard_helper_chores_select": { + "name": "Assistente per la lista delle attività del pannello di controllo dell'interfaccia utente", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_select_user_chores": "Selezione delle attività utente per il filtraggio della dashboard" + } + }, + "user_name": { + "name": "Nome utente" + } + } + } + }, + "calendar": { + "assignee_schedule_calendar": { + "name": "Calendario", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_calendar_schedule": "Calendario che mostra il programma delle attività dell'utente e le relative scadenze." + } + }, + "user_name": { + "name": "Nome utente" + } + } + } + }, + "datetime": { + "assignee_dashboard_helper_datetime_picker": { + "name": "Dashboard dell'interfaccia utente - Strumento di supporto per le date", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_datetime_dashboard_helper": "Strumento di supporto per la selezione della data, utile per il filtraggio e la navigazione dell'interfaccia utente del dashboard." + } + }, + "user_name": { + "name": "Nome utente" + } + } + } + }, + "button": { + "assignee_chore_claim_button": { + "name": "Richiedi attività - {chore_name}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_button_chore_claim": "L'utente dichiara di aver completato l'attività assegnata" + } + }, + "user_name": { + "name": "Nome utente" + }, + "chore_name": { + "name": "Nome del compito" + }, + "labels": { + "name": "Etichette" + } + } + }, + "approver_chore_approve_button": { + "name": "Approva la commissione - {chore_name}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_button_chore_approve": "L'approvatore approva il compito richiesto" + } + }, + "user_name": { + "name": "Nome utente" + }, + "chore_name": { + "name": "Nome del compito" + }, + "labels": { + "name": "Etichette" + } + } + }, + "approver_chore_disapprove_button": { + "name": "Disapprova il compito - {chore_name}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_button_chore_disapprove": "L'approvatore disapprova il compito dichiarato" + } + }, + "user_name": { + "name": "Nome utente" + }, + "chore_name": { + "name": "Nome del compito" + }, + "labels": { + "name": "Etichette" + } + } + }, + "assignee_reward_redeem_button": { + "name": "Richiedi la ricompensa - {reward_name}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_button_reward_redeem": "L'utente riscatta il premio utilizzando i punti" + } + }, + "user_name": { + "name": "Nome utente" + }, + "reward_name": { + "name": "Nome del premio" + }, + "labels": { + "name": "Etichette" + } + } + }, + "approver_reward_approve_button": { + "name": "Approva la ricompensa - {reward_name}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_button_reward_approve": "L'approvatore approva il premio riscattato" + } + }, + "user_name": { + "name": "Nome utente" + }, + "reward_name": { + "name": "Nome del premio" + }, + "labels": { + "name": "Etichette" + } + } + }, + "approver_reward_disapprove_button": { + "name": "Rifiuta la ricompensa - {reward_name}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_button_reward_disapprove": "L'approvatore disapprova il premio riscattato" + } + }, + "user_name": { + "name": "Nome utente" + }, + "reward_name": { + "name": "Nome del premio" + }, + "labels": { + "name": "Etichette" + } + } + }, + "approver_penalty_apply_button": { + "name": "Applica la penalità - {penalty_name}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_button_penalty_apply": "L'approvatore applica una penalità (detrae punti)" + } + }, + "user_name": { + "name": "Nome utente" + }, + "penalty_name": { + "name": "Nome della sanzione" + }, + "labels": { + "name": "Etichette" + } + } + }, + "approver_bonus_apply_button": { + "name": "Applica il bonus - {bonus_name}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_button_bonus_apply": "L'approvatore applica il bonus (aggiunge punti)" + } + }, + "user_name": { + "name": "Nome utente" + }, + "bonus_name": { + "name": "Nome bonus" + }, + "labels": { + "name": "Etichette" + } + } + }, + "approver_points_adjust_button": { + "name": "Regola {delta} {points_label}", + "state_attributes": { + "purpose": { + "name": "Scopo", + "state": { + "purpose_button_points_adjust": "L'approvatore regola manualmente i punti dell'utente" + } + }, + "user_name": { + "name": "Nome utente" + }, + "delta": { + "name": "Importo della rettifica" + }, + "points_label": { + "name": "Tipo di punti" + } + } + }, + "approver_points_adjust_button_positive": { + "name": "Incremento {delta} {points_label}" + }, + "approver_points_adjust_button_negative": { + "name": "Decremento {delta} {points_label}" + } + } + }, + "exceptions": { + "assignee_not_found_by_name": { + "message": "Nessun assegnatario trovato con il nome {name}" + }, + "approver_not_found_by_name": { + "message": "Nessun approvatore trovato con il nome {name}" + }, + "error_msg_no_entry_found": { + "message": "Nessuna voce corrispondente trovata nella configurazione." + }, + "ui_control_target_required": { + "message": "Specificare user_id o user_name per selezionare un singolo utente." + }, + "ui_control_invalid_target": { + "message": "ui_control_target non valido {target}. Destinazioni consentite: user, shared_admin." + }, + "ui_control_shared_admin_context_invalid": { + "message": "Non specificare user_id o user_name quando ui_control_target è shared_admin." + }, + "ui_control_invalid_action": { + "message": "Azione di controllo dell'interfaccia utente non valida {action}. Azioni consentite: crea, aggiorna, rimuovi." + }, + "ui_control_invalid_key": { + "message": "Percorso del tasto di controllo dell'interfaccia utente non valido {key}. Utilizzare percorsi separati da barre come gamification/rewards/header_collapse. La chiave vuota è consentita solo con remove." + }, + "ui_control_value_required": { + "message": "Il campo valore è obbligatorio per l'azione {action}." + }, + "ui_control_key_already_exists": { + "message": "Il tasto di controllo dell'interfaccia utente {key} esiste già per l'utente {user_name}. Utilizzare invece l'aggiornamento." + }, + "ui_control_key_not_found": { + "message": "Il tasto di controllo dell'interfaccia utente {key} non è stato trovato per l'utente {user_name}." + }, + "service_target_ambiguous": { + "message": "Sono state caricate più voci ChoreOps. Fornire config_entry_id. Voci disponibili: {available_entries}" + }, + "service_target_title_not_found": { + "message": "Non è stata trovata alcuna voce ChoreOps univoca caricata per il titolo {title}. Utilizzare invece config_entry_id." + }, + "dashboard_status_preparing_release_assets": { + "message": "Preparazione di alcuni elementi del dashboard online" + }, + "dashboard_status_release_asset_prep_failed": { + "message": "La preparazione delle risorse online non è riuscita. Scegli una versione diversa o utilizza i modelli locali più recenti e compatibili." + }, + "dashboard_status_release_applied": { + "message": "Applicata la release {release_ref} localmente ({execution_source}). Ricarica l'integrazione o riavvia Home Assistant per aggiornare i sensori di traduzione del dashboard." + }, + "dashboard_status_updated": { + "message": "Aggiornato {url_path} (visualizzazioni={view_count}, selezione_rilascio={release_selection})" + }, + "dashboard_status_created": { + "message": "Creato {url_path} (assegnatari={assignee_count}, modalità_amministratore={admin_mode})" + }, + "dashboard_status_required_dependencies_still_missing": { + "message": "Mancano ancora le dipendenze necessarie per la dashboard; ritorno alla configurazione." + }, + "dashboard_status_required_dependencies_bypassed": { + "message": "Dipendenze richieste mancanti ignorate dall'utente" + }, + "dashboard_status_recommended_dependencies_missing": { + "message": "Dipendenze consigliate mancanti (la generazione continuerà): {dependency_list}" + }, + "dashboard_status_nonselectable_templates": { + "message": "I modelli selezionati non sono disponibili per la generazione:\n{template_list}" + }, + "dashboard_status_deleted": { + "message": "Eliminato {url_path}" + }, + "dashboard_status_delete_failed": { + "message": "Impossibile eliminare {url_path}: {error}" + }, + "dashboard_label_none": { + "message": "- Nessuno" + }, + "dashboard_label_preferences_guide": { + "message": "Guida alle preferenze" + }, + "dashboard_label_preferences_guide_not_provided": { + "message": "Guida alle preferenze non fornita" + }, + "user_non_kiosk_unlinked_warning": { + "message": "⚠️ **Avviso di accesso:** La modalità chiosco è disabilitata e questo utente non è collegato a un utente di Home Assistant. I pulsanti per richiedere e riscattare dispositivi condivisi potrebbero non funzionare per questo utente finché non colleghi un utente di Home Assistant o abiliti la modalità chiosco." + }, + "dashboard_unlinked_users_warning": { + "message": "⚠️ La modalità chiosco è disabilitata e questi utenti selezionati non hanno utenti Home Assistant collegati:\n{user_list}\n\nI pulsanti di richiesta e riscatto potrebbero non funzionare come previsto sui dispositivi condivisi finché questi utenti non vengono collegati o la modalità chiosco non viene abilitata." + }, + "not_authorized_action": { + "message": "Non sei autorizzato a {action} per questo assegnatario." + }, + "not_authorized_action_global": { + "message": "Non sei autorizzato a {action}." + }, + "calendar_create_not_supported": { + "message": "La creazione di eventi non è supportata per questo calendario." + }, + "calendar_delete_not_supported": { + "message": "Non è possibile eliminare eventi per questo calendario." + }, + "calendar_update_not_supported": { + "message": "L'aggiornamento degli eventi non è supportato per questo calendario." + }, + "not_found": { + "message": "{entity_type} {name} non trovato" + }, + "not_assigned": { + "message": "{entity} non assegnato a {assignee}" + }, + "rotation_no_turn_holder": { + "message": "Per le mansioni a rotazione deve essere assegnato un responsabile di turno." + }, + "rotation_invalid_order": { + "message": "L'ordine di rotazione deve essere un elenco non vuoto di ID assegnatari" + }, + "rotation_duplicate_in_order": { + "message": "L'ordine di rotazione non può contenere incaricati duplicati." + }, + "rotation_unassigned_in_order": { + "message": "Tutti gli incaricati, in ordine di rotazione, devono essere assegnati al compito" + }, + "rotation_min_assignees": { + "message": "Le mansioni a rotazione richiedono almeno 2 incaricati assegnati" + }, + "not_rotation": { + "message": "Questo compito non è in modalità di rotazione" + }, + "assignee_not_assigned": { + "message": "L'incaricato non è stato assegnato a questo compito." + }, + "no_assigned_assignees": { + "message": "A questo compito non è stato assegnato alcun incaricato." + }, + "insufficient_points": { + "message": "{assignee} ha {current} punti ma ha bisogno di {required} punti" + }, + "already_claimed": { + "message": "{entity} è già stato rivendicato" + }, + "chore_claimed_by_other": { + "message": "Questo compito è già stato assegnato da {claimed_by}" + }, + "chore_already_approved": { + "message": "Attività già approvata oggi. Riprova dopo il periodo di reapprovazione." + }, + "chore_pending_claim": { + "message": "Chore ha una richiesta in sospeso in attesa di approvazione o diniego." + }, + "chore_waiting": { + "message": "Non è ancora possibile richiedere questo incarico. Il periodo di scadenza non è ancora iniziato." + }, + "chore_not_my_turn": { + "message": "Questo compito è soggetto a rotazione. Al momento è il turno di un altro assegnato." + }, + "chore_missed_locked": { + "message": "Questo compito è stato contrassegnato come non svolto e bloccato per il ciclo corrente." + }, + "chore_completed_by_other": { + "message": "Questo incarico è già stato completato da un altro incaricato in questo periodo" + }, + "invalid_status": { + "message": "Lo stato di {entity} è {status}, previsto {expected}" + }, + "entity_mismatch": { + "message": "{provided} non corrisponde a {expected}" + }, + "invalid_frequency": { + "message": "La frequenza ricorrente {frequency} non è valida" + }, + "chore_overdue_for_assignee": { + "message": "Il compito {chore_name} è in ritardo per {assignee_name}" + }, + "assignee_not_assigned_to_chore": { + "message": "L'incaricato {assignee_name} non è assegnato al compito {chore_name}" + }, + "shared_chore_cannot_have_assignee": { + "message": "Impossibile specificare l'assegnatario per l'attività condivisa {chore_name}. Le attività condivise hanno un'unica data di scadenza per tutti gli assegnatari." + }, + "reward_not_found": { + "message": "Ricompensa con ID {reward_id} non trovata" + }, + "required_field": { + "message": "È necessario fornire {field}" + }, + "invalid_date_format": { + "message": "Formato data non valido. Si prega di inserire una stringa di data valida (ad esempio, YYYY-MM-DD o data e ora ISO 8601)." + }, + "date_in_past": { + "message": "La data di scadenza non può essere nel passato. Si prega di indicare una data futura." + }, + "missing_chore": { + "message": "È necessario fornire l'ID o il nome dell'attività." + }, + "missing_chore_identifier": { + "message": "È necessario fornire chore_id o chore_name per identificare l'attività." + }, + "chore_not_found": { + "message": "Attività con ID {chore_id} non trovata." + }, + "completion_criteria_immutable": { + "message": "I criteri di completamento non possono essere modificati dopo la creazione dell'attività. Elimina e ricrea l'attività se hai bisogno di criteri di completamento diversi." + }, + "missing_reward_identifier": { + "message": "È necessario fornire reward_id o reward_name per identificare il premio da aggiornare." + }, + "missing_field": { + "message": "Il campo obbligatorio {field} non è presente in {entity}" + }, + "invalid_date": { + "message": "Data {field} {date} non valida" + }, + "date_constraint": { + "message": "{constraint} violazione: {detail}" + }, + "operation_failed": { + "message": "{operation} non riuscito: {reason}" + }, + "configuration_error": { + "message": "Errore di configurazione: {detail}" + }, + "data_reset_confirmation_required": { + "message": "È necessario impostare confirm_destructive: true per procedere con il ripristino dei dati." + }, + "data_reset_assignee_not_found": { + "message": "Assegnatario {assignee_name} non trovato" + }, + "data_reset_item_not_found": { + "message": "{item_type} {item_name} non trovato" + }, + "data_reset_invalid_scope": { + "message": "Ambito non valido {scope}. Deve essere: globale, assegnatario, tipo_elemento o elemento" + }, + "data_reset_invalid_item_type": { + "message": "Tipo di elemento non valido {item_type}. Deve essere: assegnatari, compiti, ricompense, distintivi, obiettivi, sfide, penalità o bonus" + }, + "notif_title_data_reset": { + "message": "Reimpostazione dei dati transazionali" + }, + "notif_message_data_reset_global": { + "message": "Tutti i dati di runtime sono stati reimpostati. La configurazione è stata mantenuta." + }, + "notif_message_data_reset_assignee": { + "message": "Ripristino dei dati completato per {assignee_name}. Punti, statistiche e progressi cancellati." + }, + "notif_message_data_reset_item_type": { + "message": "Ripristino dei dati completato per tutti {item_type}. Dati di runtime cancellati." + }, + "notif_message_data_reset_item": { + "message": "Ripristino dei dati completato per {item_name}. Dati di runtime cancellati." + }, + "notif_title_chore_missed": { + "message": "Compito saltato" + }, + "notif_message_chore_missed": { + "message": "{assignee_name} ha saltato il compito: {chore_name}" + }, + "chore_paused": { + "message": "L'elaborazione delle attività è attualmente sospesa per questo utente." + } + } +} diff --git a/custom_components/choreops/translations/nb.json b/custom_components/choreops/translations/nb.json index 6bafd8e..a149da1 100644 --- a/custom_components/choreops/translations/nb.json +++ b/custom_components/choreops/translations/nb.json @@ -81,13 +81,15 @@ "name": "Navn", "ha_user_id": "Hjemmeassistentbruker", "dashboard_language": "Språk", - "mobile_notify_service": "Varsler" + "mobile_notify_service": "Varsler", + "notif_click_url": "URL for varseltrykk" }, "data_description": { "name": "Unikt navn for denne brukerprofilen.", "ha_user_id": "Valgfritt: Koble denne profilen til en Home Assistant-bruker. Hvis kioskmodus er deaktivert, er krav på og innløsning av delte enheter avhengig av denne lenken.", "dashboard_language": "Språk som brukes for innhold og varsler på dashbordet.", - "mobile_notify_service": "Velg varslingstjeneste eller la feltet stå tomt for å deaktivere varsler." + "mobile_notify_service": "Velg varslingstjeneste eller la feltet stå tomt for å deaktivere varsler.", + "notif_click_url": "Valgfri URL som skal åpnes når et varsel trykkes på. La stå tomt for standardvirkemåte." } }, "section_system_usage": { @@ -110,12 +112,18 @@ "data": { "can_approve": "Kan godkjenne", "can_manage": "Kan klare", - "associated_user_ids": "Tilknyttede brukere" + "associated_user_ids": "Tilknyttede brukere", + "notif_approve_click_url": "Trykk på URL-adressen for godkjenningsvarsel", + "chores_paused": "Sett husarbeid på pause", + "chores_paused_until": "Pauset til" }, "data_description": { "can_approve": "Tillater godkjennings- og avvisningshandlinger.", "can_manage": "Tillater administrasjonshandlinger som krever utvidede tillatelser.", - "associated_user_ids": "Brukere som denne godkjenneren/administratoren fører tilsyn med for godkjenningshandlinger." + "associated_user_ids": "Brukere som denne godkjenneren/administratoren fører tilsyn med for godkjenningshandlinger.", + "notif_approve_click_url": "Valgfri URL for godkjenningsvarsler. Overstyrer den generelle URL-en for trykk på varsler ved godkjenning av gjøremål eller belønninger.", + "chores_paused": "Setter oppgavebehandlingen på pause. Ingen forfalte eller tapte statistikker akkumuleres.", + "chores_paused_until": "Valgfri returdato. Hvis angitt, gjenopptas gjøremål automatisk ved midnatt etter denne datoen." } } } @@ -483,6 +491,8 @@ "invalid_reward_count": "Ugyldig belønningstall", "invalid_reward_name": "Ugyldig belønningsnavn", "invalid_reward_cost": "Belønningskostnaden må være null eller større med opptil to desimaler", + "invalid_reward_assigned_users": "Én eller flere tilordnede brukere er ikke gyldige", + "mixed_reward_assignment_sentinel": "Kan ikke blande «alle brukere» med bestemte brukere", "invalid_bonus": "Ugyldig bonus", "invalid_bonus_count": "Ugyldig bonusantall", "invalid_bonus_name": "Ugyldig bonusnavn", @@ -569,13 +579,15 @@ "name": "Navn", "ha_user_id": "Hjemmeassistentbruker", "dashboard_language": "Språk", - "mobile_notify_service": "Varsler" + "mobile_notify_service": "Varsler", + "notif_click_url": "URL for varseltrykk" }, "data_description": { "name": "Unikt navn for denne brukerprofilen.", "ha_user_id": "Valgfritt: Koble denne profilen til en Home Assistant-bruker. Hvis kioskmodus er deaktivert, er krav på og innløsning av delte enheter avhengig av denne lenken.", "dashboard_language": "Språk som brukes for innhold og varsler på dashbordet.", - "mobile_notify_service": "Velg varslingstjeneste eller la feltet stå tomt for å deaktivere varsler." + "mobile_notify_service": "Velg varslingstjeneste eller la feltet stå tomt for å deaktivere varsler.", + "notif_click_url": "Valgfri URL som skal åpnes når et varsel trykkes på. La stå tomt for standardvirkemåte." } }, "section_system_usage": { @@ -598,12 +610,18 @@ "data": { "can_approve": "Kan godkjenne", "can_manage": "Kan klare", - "associated_user_ids": "Tilknyttede brukere" + "associated_user_ids": "Tilknyttede brukere", + "notif_approve_click_url": "Trykk på URL-adressen for godkjenningsvarsel", + "chores_paused": "Sett husarbeid på pause", + "chores_paused_until": "Pauset til" }, "data_description": { "can_approve": "Tillater godkjennings- og avvisningshandlinger.", "can_manage": "Tillater administrasjonshandlinger som krever utvidede tillatelser.", - "associated_user_ids": "Brukere som denne godkjenneren/administratoren fører tilsyn med for godkjenningshandlinger." + "associated_user_ids": "Brukere som denne godkjenneren/administratoren fører tilsyn med for godkjenningshandlinger.", + "notif_approve_click_url": "Valgfri URL for godkjenningsvarsler. Overstyrer den generelle URL-en for trykk på varsler ved godkjenning av gjøremål eller belønninger.", + "chores_paused": "Setter oppgavebehandlingen på pause. Ingen forfalte eller tapte statistikker akkumuleres.", + "chores_paused_until": "Valgfri returdato. Hvis angitt, gjenopptas gjøremål automatisk ved midnatt etter denne datoen." } } } @@ -926,7 +944,8 @@ "cost": "Belønningskostnad", "description": "Beskrivelse (valgfritt)", "reward_labels": "Belønningsetiketter", - "icon": "Ikon (mdi:xxx)" + "icon": "Ikon (mdi:xxx)", + "assigned_user_ids": "Tildelt til" } }, "add_penalty": { @@ -1000,13 +1019,15 @@ "name": "Navn", "ha_user_id": "Hjemmeassistentbruker", "dashboard_language": "Språk", - "mobile_notify_service": "Varsler" + "mobile_notify_service": "Varsler", + "notif_click_url": "URL for varseltrykk" }, "data_description": { "name": "Unikt navn for denne brukerprofilen.", "ha_user_id": "Valgfritt: Koble denne profilen til en Home Assistant-bruker. Hvis kioskmodus er deaktivert, er krav på og innløsning av delte enheter avhengig av denne lenken.", "dashboard_language": "Språk som brukes for innhold og varsler på dashbordet.", - "mobile_notify_service": "Velg varslingstjeneste eller la feltet stå tomt for å deaktivere varsler." + "mobile_notify_service": "Velg varslingstjeneste eller la feltet stå tomt for å deaktivere varsler.", + "notif_click_url": "Valgfri URL som skal åpnes når et varsel trykkes på. La stå tomt for standardvirkemåte." } }, "section_system_usage": { @@ -1029,12 +1050,18 @@ "data": { "can_approve": "Kan godkjenne", "can_manage": "Kan klare", - "associated_user_ids": "Tilknyttede brukere" + "associated_user_ids": "Tilknyttede brukere", + "notif_approve_click_url": "Trykk på URL-adressen for godkjenningsvarsel", + "chores_paused": "Sett husarbeid på pause", + "chores_paused_until": "Pauset til" }, "data_description": { "can_approve": "Tillater godkjennings- og avvisningshandlinger.", "can_manage": "Tillater administrasjonshandlinger som krever utvidede tillatelser.", - "associated_user_ids": "Brukere som denne godkjenneren/administratoren fører tilsyn med for godkjenningshandlinger." + "associated_user_ids": "Brukere som denne godkjenneren/administratoren fører tilsyn med for godkjenningshandlinger.", + "notif_approve_click_url": "Valgfri URL for godkjenningsvarsler. Overstyrer den generelle URL-en for trykk på varsler ved godkjenning av gjøremål eller belønninger.", + "chores_paused": "Setter oppgavebehandlingen på pause. Ingen forfalte eller tapte statistikker akkumuleres.", + "chores_paused_until": "Valgfri returdato. Hvis angitt, gjenopptas gjøremål automatisk ved midnatt etter denne datoen." } } } @@ -1385,7 +1412,8 @@ "cost": "Belønningskostnad", "description": "Beskrivelse (valgfritt)", "reward_labels": "Belønningsetiketter", - "icon": "Ikon (mdi:xxx)" + "icon": "Ikon (mdi:xxx)", + "assigned_user_ids": "Tildelt til" } }, "edit_penalty": { @@ -1633,6 +1661,7 @@ "title": "Generelle alternativer", "description": "Administrer generelle innstillinger for ChoreOps-integrasjonen.\n\n ℹ️ [Finn ut mer om generelle alternativer]({documentation_url})", "data": { + "dashboard_points_precision": "Presisjon på dashbordpoeng", "default_chore_points": "Standardpoeng per gjøremål", "points_adjust_values": "Verdier for manuell punktjusteringsknapp", "update_interval": "Oppdateringsintervall", @@ -1649,6 +1678,7 @@ "backup_action_selection": "Sikkerhetskopieringshandlinger" }, "data_description": { + "dashboard_points_precision": "Velg hvordan poeng vises på tvers av støttede dashbord. Dette endrer bare formateringen av dashbordet og endrer ikke lagrede punktverdier eller beregninger.", "default_chore_points": "Standard poengverdi brukt for nye gjøremål når egendefinerte poeng ikke er spesifisert.", "points_adjust_values": "Liste over verdier for knappene for manuell punktjustering. Hver verdi atskilt med '|'.", "update_interval": "Intervall i minutter for oppdatering av den interne tilstanden til ChoreOps.", @@ -1948,6 +1978,14 @@ "return_to_menu": "↩️ Gå tilbake til hovedmenyen" } }, + "dashboard_points_precision": { + "options": { + "fixed_0": "Kun hele tall", + "adaptive": "Adaptiv (vis desimaler bare når det er nødvendig)", + "fixed_1": "Alltid 1 desimal", + "fixed_2": "Alltid 2 desimaler" + } + }, "select_backup_to_delete": { "options": { "cancel": "↩️ Avbryt (gå tilbake til sikkerhetskopieringsmenyen)" @@ -2223,6 +2261,37 @@ } } }, + "pause_user_chores": { + "name": "Sett brukerens gjøremål på pause", + "description": "Sette en bruker på pause eller gjenoppta gjøremålsbehandlingen.", + "fields": { + "config_entry_id": { + "name": "Konfigurasjonsoppførings-ID (valgfritt)", + "description": "Bruk dette hvis du har mer enn ett ChoreOps-oppsett. Det er rettet mot ett spesifikt oppsett.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Navn på konfigurasjonsoppføring (valgfritt)", + "description": "Bruk dette hvis du har mer enn ett ChoreOps-oppsett, og hvert av dem har unike navn. Hvis navnene gjentas, bruk Config Entry ID.", + "example": "Familiearbeid" + }, + "user_name": { + "name": "Brukernavn", + "description": "Navnet på brukeren hvis gjøremål skal settes på pause eller gjenopptas.", + "example": "Sara" + }, + "paused": { + "name": "Pauset", + "description": "Sant for å sette gjøremål på pause, Usant for å gjenoppta.", + "example": "ekte" + }, + "paused_until": { + "name": "Pause til", + "description": "Valgfri returdato. Hvis angitt, gjenopptas gjøremål automatisk ved midnatt etter denne datoen.", + "example": "2026-06-10T00:00:00+00:00" + } + } + }, "redeem_reward": { "name": "Løs inn belønning", "description": "En godkjenner løser inn en belønning for en tildelt person, og trekker fra poeng.", @@ -2461,6 +2530,11 @@ "name": "Etiketter", "description": "Etiketter for gruppering av belønninger.", "example": "['helg', 'spesiell']" + }, + "assigned_user_names": { + "name": "Tildelt til", + "description": "Brukervisningsnavn tilordnet denne belønningen. Bruk [\"*\"] for alle brukere. Send en tom liste for å ikke tilordne til noen brukere.", + "example": "['Zoë', 'Max!']" } } }, @@ -2507,6 +2581,11 @@ "name": "Etiketter", "description": "Oppdaterte etiketter.", "example": "['premium', 'spesial']" + }, + "assigned_user_names": { + "name": "Tildelt til", + "description": "Brukervisningsnavn tilordnet denne belønningen. Bruk [\"*\"] for alle brukere. Send en tom liste for å fjerne alle tilordnede brukere. Unnlat å la gjeldende tildelinger være uendret.", + "example": "['Zoë', 'Max!']" } } }, @@ -2557,7 +2636,7 @@ }, "assigned_user_names": { "name": "Tildelt til", - "description": "Liste over navn på tilordnede som denne oppgaven skal tilordnes til.", + "description": "Liste over navn på tildelere som denne oppgaven skal tildeles. Bruk [\"*\"] for alle tildelbare brukere. Send en tom liste for å opprette uten tildelere.", "example": "['Emma', 'Jack']" }, "points": { @@ -2663,7 +2742,7 @@ }, "assigned_user_names": { "name": "Tildelt til", - "description": "Ny liste over navn på tilordnede som skal tilordnes denne oppgaven.", + "description": "Ny liste over navn på tilordnede som denne oppgaven skal tilordnes til. Bruk [\"*\"] for alle tilordnede brukere. Send en tom liste for å fjerne alle tilordnede brukere. Unnlat å la gjeldende tilordninger være uendret.", "example": "['Emma', 'Jack']" }, "points": { @@ -2735,6 +2814,11 @@ "name": "Forskyvning av påminnelse", "description": "Ny forskyvning for forfallspåminnelse. Varighet før forfallsdato for å sende påminnelsesvarsel. Format: '30m', '1t', '1d 6t 30m' osv. Bruk '0' for å deaktivere.", "example": "30m" + }, + "assignment_action": { + "name": "Tildelingshandling", + "description": "Slik håndterer du listen over tildelte_brukernavn. 'erstatt' angir listen direkte (standard, bakoverkompatibel). 'legg til' legger til de oppførte brukerne i eksisterende tildelte. 'fjern' fjerner de oppførte brukerne fra eksisterende tildelte.", + "example": "legge til" } } }, @@ -3096,6 +3180,11 @@ "name": "Hopp over ikke-gjentakende gjøremål", "description": "Aktiver dette for å la engangsoppgaver være uendret i stedet for å flytte forfallsdatoen til grensen.", "example": "falsk" + }, + "allow_long_recurrences": { + "name": "Tillat lange gjentakelser", + "description": "Tillat omplanlegging av månedlige, kvartalsvise, årlige og andre gjentakelser med lang intervall. Standardinnstillingen er usann for å forhindre utilsiktede store hopp.", + "example": "ekte" } } }, @@ -3179,7 +3268,8 @@ "completed_by_other": "Fullført av Annen", "waiting": "Venter (fristvinduet er ikke åpent)", "not_my_turn": "Ikke min tur (rotasjon)", - "missed": "Mistet (Låst)" + "missed": "Mistet (Låst)", + "paused": "Pauset" }, "state_attributes": { "purpose": { @@ -3426,7 +3516,8 @@ "blocked_pending_claim": "Ventende krav", "blocked_waiting_window": "Venter på forfallsvinduet", "blocked_not_my_turn": "Ikke din tur", - "blocked_missed_locked": "Savnet og låst" + "blocked_missed_locked": "Savnet og låst", + "blocked_paused": "Gjøremål er satt på pause for denne brukeren" } }, "turn_user_name": { @@ -4740,9 +4831,15 @@ "core_sensors": { "name": "Kjernesensorer" }, + "dashboard_config": { + "name": "Dashbordkonfigurasjon" + }, "dashboard_helpers": { "name": "Dashbordhjelpere" }, + "shard_runtime": { + "name": "Kjøretid for gjøremålsliste" + }, "chores_by_label": { "name": "Gjøremål etter etikett" }, @@ -4753,6 +4850,29 @@ "name": "Språk" } } + }, + "assignee_dashboard_chore_list_helper_sensor": { + "name": "Liste over gjøremål i brukergrensesnitt-dashbordet {shard_index}", + "state_attributes": { + "purpose": { + "name": "Hensikt", + "state": { + "purpose_dashboard_chore_shard_helper": "Gir én gjøremålsliste for visning på dashbordet når en brukers fullstendige gjøremålsliste er for stor for hovedhjelperen." + } + }, + "chores": { + "name": "Gjøremål" + }, + "shard_index": { + "name": "Nummer på gjøremålsliste" + }, + "shard_count": { + "name": "Totalt antall gjøremålslister" + }, + "helper_contract_version": { + "name": "Hjelpekontraktversjon" + } + } } }, "select": { @@ -5314,6 +5434,9 @@ }, "notif_message_chore_missed": { "message": "{assignee_name} bommet på gjøremålet: {chore_name}" + }, + "chore_paused": { + "message": "Behandling av husarbeid er for øyeblikket satt på pause for denne brukeren." } } } diff --git a/custom_components/choreops/translations/nl.json b/custom_components/choreops/translations/nl.json index 8bc1622..889095e 100644 --- a/custom_components/choreops/translations/nl.json +++ b/custom_components/choreops/translations/nl.json @@ -81,13 +81,15 @@ "name": "Naam", "ha_user_id": "Home Assistant-gebruiker", "dashboard_language": "Taal", - "mobile_notify_service": "Meldingen" + "mobile_notify_service": "Meldingen", + "notif_click_url": "Meldingstabblad-URL" }, "data_description": { "name": "Unieke naam voor dit gebruikersprofiel.", "ha_user_id": "Optioneel: Koppel dit profiel aan een Home Assistant-gebruiker. Als de kioskmodus is uitgeschakeld, zijn het claimen en inwisselen van gedeelde apparaten afhankelijk van deze koppeling.", "dashboard_language": "De taal die wordt gebruikt voor de inhoud van het dashboard en meldingen.", - "mobile_notify_service": "Selecteer de notificatieservice of laat het veld leeg om notificaties uit te schakelen." + "mobile_notify_service": "Selecteer de notificatieservice of laat het veld leeg om notificaties uit te schakelen.", + "notif_click_url": "Optionele URL die wordt geopend wanneer op de melding wordt getikt. Laat dit veld leeg voor de standaardinstelling." } }, "section_system_usage": { @@ -110,12 +112,18 @@ "data": { "can_approve": "Kan goedkeuren", "can_manage": "Kan het aan", - "associated_user_ids": "Gerelateerde gebruikers" + "associated_user_ids": "Gerelateerde gebruikers", + "notif_approve_click_url": "Tik op de URL voor de goedkeuringsmelding.", + "chores_paused": "Pauzeer de klusjes", + "chores_paused_until": "Gepauzeerd tot" }, "data_description": { "can_approve": "Maakt goedkeurings- en afkeuringsacties mogelijk.", "can_manage": "Hiermee kunnen beheertaken worden uitgevoerd waarvoor verhoogde machtigingen vereist zijn.", - "associated_user_ids": "Gebruikers die onder toezicht staan van deze goedkeurder/beheerder voor goedkeuringsacties." + "associated_user_ids": "Gebruikers die onder toezicht staan van deze goedkeurder/beheerder voor goedkeuringsacties.", + "notif_approve_click_url": "Optionele URL voor goedkeuringsmeldingen. Deze overschrijft de algemene meldings-URL bij het goedkeuren van taken of beloningen.", + "chores_paused": "Pauzeert de verwerking van taken. Er worden geen achterstallige of gemiste statistieken bijgehouden.", + "chores_paused_until": "Optionele terugkeerdatum. Indien ingesteld, worden de klusjes na deze datum automatisch hervat om middernacht." } } } @@ -483,6 +491,8 @@ "invalid_reward_count": "Ongeldig aantal beloningen", "invalid_reward_name": "Ongeldige beloningsnaam", "invalid_reward_cost": "De beloningskosten moeten nul of groter zijn, tot maximaal twee decimalen nauwkeurig.", + "invalid_reward_assigned_users": "Een of meer toegewezen gebruikers zijn ongeldig.", + "mixed_reward_assignment_sentinel": "Het is niet mogelijk om 'alle gebruikers' te combineren met specifieke gebruikers.", "invalid_bonus": "Ongeldige bonus", "invalid_bonus_count": "Ongeldig bonusaantal", "invalid_bonus_name": "Ongeldige bonusnaam", @@ -569,13 +579,15 @@ "name": "Naam", "ha_user_id": "Home Assistant-gebruiker", "dashboard_language": "Taal", - "mobile_notify_service": "Meldingen" + "mobile_notify_service": "Meldingen", + "notif_click_url": "Meldingstabblad-URL" }, "data_description": { "name": "Unieke naam voor dit gebruikersprofiel.", "ha_user_id": "Optioneel: Koppel dit profiel aan een Home Assistant-gebruiker. Als de kioskmodus is uitgeschakeld, zijn het claimen en inwisselen van gedeelde apparaten afhankelijk van deze koppeling.", "dashboard_language": "De taal die wordt gebruikt voor de inhoud van het dashboard en meldingen.", - "mobile_notify_service": "Selecteer de notificatieservice of laat het veld leeg om notificaties uit te schakelen." + "mobile_notify_service": "Selecteer de notificatieservice of laat het veld leeg om notificaties uit te schakelen.", + "notif_click_url": "Optionele URL die wordt geopend wanneer op de melding wordt getikt. Laat dit veld leeg voor de standaardinstelling." } }, "section_system_usage": { @@ -598,12 +610,18 @@ "data": { "can_approve": "Kan goedkeuren", "can_manage": "Kan het aan", - "associated_user_ids": "Gerelateerde gebruikers" + "associated_user_ids": "Gerelateerde gebruikers", + "notif_approve_click_url": "Tik op de URL voor de goedkeuringsmelding.", + "chores_paused": "Pauzeer de klusjes", + "chores_paused_until": "Gepauzeerd tot" }, "data_description": { "can_approve": "Maakt goedkeurings- en afkeuringsacties mogelijk.", "can_manage": "Hiermee kunnen beheertaken worden uitgevoerd waarvoor verhoogde machtigingen vereist zijn.", - "associated_user_ids": "Gebruikers die onder toezicht staan van deze goedkeurder/beheerder voor goedkeuringsacties." + "associated_user_ids": "Gebruikers die onder toezicht staan van deze goedkeurder/beheerder voor goedkeuringsacties.", + "notif_approve_click_url": "Optionele URL voor goedkeuringsmeldingen. Deze overschrijft de algemene meldings-URL bij het goedkeuren van taken of beloningen.", + "chores_paused": "Pauzeert de verwerking van taken. Er worden geen achterstallige of gemiste statistieken bijgehouden.", + "chores_paused_until": "Optionele terugkeerdatum. Indien ingesteld, worden de klusjes na deze datum automatisch hervat om middernacht." } } } @@ -926,7 +944,8 @@ "cost": "Beloningskosten", "description": "Beschrijving (optioneel)", "reward_labels": "Beloningslabels", - "icon": "Pictogram (mdi:xxx)" + "icon": "Pictogram (mdi:xxx)", + "assigned_user_ids": "Toegewezen aan" } }, "add_penalty": { @@ -1000,13 +1019,15 @@ "name": "Naam", "ha_user_id": "Home Assistant-gebruiker", "dashboard_language": "Taal", - "mobile_notify_service": "Meldingen" + "mobile_notify_service": "Meldingen", + "notif_click_url": "Meldingstabblad-URL" }, "data_description": { "name": "Unieke naam voor dit gebruikersprofiel.", "ha_user_id": "Optioneel: Koppel dit profiel aan een Home Assistant-gebruiker. Als de kioskmodus is uitgeschakeld, zijn het claimen en inwisselen van gedeelde apparaten afhankelijk van deze koppeling.", "dashboard_language": "De taal die wordt gebruikt voor de inhoud van het dashboard en meldingen.", - "mobile_notify_service": "Selecteer de notificatieservice of laat het veld leeg om notificaties uit te schakelen." + "mobile_notify_service": "Selecteer de notificatieservice of laat het veld leeg om notificaties uit te schakelen.", + "notif_click_url": "Optionele URL die wordt geopend wanneer op de melding wordt getikt. Laat dit veld leeg voor de standaardinstelling." } }, "section_system_usage": { @@ -1029,12 +1050,18 @@ "data": { "can_approve": "Kan goedkeuren", "can_manage": "Kan het aan", - "associated_user_ids": "Gerelateerde gebruikers" + "associated_user_ids": "Gerelateerde gebruikers", + "notif_approve_click_url": "Tik op de URL voor de goedkeuringsmelding.", + "chores_paused": "Pauzeer de klusjes", + "chores_paused_until": "Gepauzeerd tot" }, "data_description": { "can_approve": "Maakt goedkeurings- en afkeuringsacties mogelijk.", "can_manage": "Hiermee kunnen beheertaken worden uitgevoerd waarvoor verhoogde machtigingen vereist zijn.", - "associated_user_ids": "Gebruikers die onder toezicht staan van deze goedkeurder/beheerder voor goedkeuringsacties." + "associated_user_ids": "Gebruikers die onder toezicht staan van deze goedkeurder/beheerder voor goedkeuringsacties.", + "notif_approve_click_url": "Optionele URL voor goedkeuringsmeldingen. Deze overschrijft de algemene meldings-URL bij het goedkeuren van taken of beloningen.", + "chores_paused": "Pauzeert de verwerking van taken. Er worden geen achterstallige of gemiste statistieken bijgehouden.", + "chores_paused_until": "Optionele terugkeerdatum. Indien ingesteld, worden de klusjes na deze datum automatisch hervat om middernacht." } } } @@ -1385,7 +1412,8 @@ "cost": "Beloningskosten", "description": "Beschrijving (optioneel)", "reward_labels": "Beloningslabels", - "icon": "Pictogram (mdi:xxx)" + "icon": "Pictogram (mdi:xxx)", + "assigned_user_ids": "Toegewezen aan" } }, "edit_penalty": { @@ -1633,6 +1661,7 @@ "title": "Algemene opties", "description": "Beheer de algemene instellingen voor de ChoreOps-integratie.\n\n ℹ️ [Meer informatie over algemene opties]({documentation_url})", "data": { + "dashboard_points_precision": "Dashboardpunten Precisie", "default_chore_points": "Standaardpunten per taak", "points_adjust_values": "Handmatige puntaanpassingsknopwaarden", "update_interval": "Update-interval", @@ -1649,6 +1678,7 @@ "backup_action_selection": "Back-upacties" }, "data_description": { + "dashboard_points_precision": "Kies hoe punten worden weergegeven op ondersteunde dashboards. Dit wijzigt alleen de dashboardopmaak en heeft geen invloed op opgeslagen puntwaarden of berekeningen.", "default_chore_points": "Standaardpuntenwaarde die wordt gebruikt voor nieuwe taken wanneer geen aangepaste punten zijn opgegeven.", "points_adjust_values": "Lijst met waarden voor de knoppen voor handmatige puntafstelling. Elke waarde wordt gescheiden door een '|'.", "update_interval": "Interval in minuten voor het bijwerken van de interne status van ChoreOps.", @@ -1948,6 +1978,14 @@ "return_to_menu": "↩️ Terug naar het hoofdmenu" } }, + "dashboard_points_precision": { + "options": { + "fixed_0": "Alleen hele getallen", + "adaptive": "Adaptief (toon decimalen alleen wanneer nodig)", + "fixed_1": "Altijd 1 decimaal", + "fixed_2": "Altijd 2 decimalen" + } + }, "select_backup_to_delete": { "options": { "cancel": "↩️ Annuleren (terug naar het back-upmenu)" @@ -2223,6 +2261,37 @@ } } }, + "pause_user_chores": { + "name": "Pauzeer de taken van de gebruiker", + "description": "De verwerking van taken voor een gebruiker pauzeren of hervatten.", + "fields": { + "config_entry_id": { + "name": "Configuratie-item-ID (optioneel)", + "description": "Gebruik dit als u meer dan één ChoreOps-configuratie hebt. Het is gericht op één specifieke configuratie.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Configuratie-itemnaam (optioneel)", + "description": "Gebruik dit als u meer dan één ChoreOps-configuratie hebt en deze elk een unieke naam hebben. Als de namen zich herhalen, gebruik dan de configuratie-item-ID.", + "example": "Huishoudelijke klusjes" + }, + "user_name": { + "name": "Gebruikersnaam", + "description": "Naam van de gebruiker wiens taken moeten worden gepauzeerd of hervat.", + "example": "Sarah" + }, + "paused": { + "name": "Gepauzeerd", + "description": "Het is waar om klusjes te pauzeren, onwaar om ze te hervatten.", + "example": "WAAR" + }, + "paused_until": { + "name": "Gepauzeerd tot", + "description": "Optionele terugkeerdatum. Indien ingesteld, worden de klusjes na deze datum automatisch hervat om middernacht.", + "example": "2026-06-10T00:00:00+00:00" + } + } + }, "redeem_reward": { "name": "Verzilver beloning", "description": "Een goedkeurder verzilvert een beloning voor een toegewezen persoon door punten af te trekken.", @@ -2461,6 +2530,11 @@ "name": "Labels", "description": "Labels voor het groeperen van beloningen.", "example": "['weekend', 'speciaal']" + }, + "assigned_user_names": { + "name": "Toegewezen aan", + "description": "Gebruikersnamen die aan deze beloning zijn toegewezen. Gebruik [\"*\"] voor alle gebruikers. Geef een lege lijst door om de beloning aan geen enkele gebruiker toe te wijzen.", + "example": "['Zoë', 'Max!']" } } }, @@ -2507,6 +2581,11 @@ "name": "Labels", "description": "Labels bijgewerkt.", "example": "['premium', 'speciaal']" + }, + "assigned_user_names": { + "name": "Toegewezen aan", + "description": "Gebruikersnamen die aan deze beloning zijn toegewezen. Gebruik [\"*\"] voor alle gebruikers. Geef een lege lijst door om alle toegewezen gebruikers te verwijderen. Laat dit weg om de huidige toewijzingen ongewijzigd te laten.", + "example": "['Zoë', 'Max!']" } } }, @@ -2557,7 +2636,7 @@ }, "assigned_user_names": { "name": "Toegewezen aan", - "description": "Lijst met namen van degenen aan wie deze taak moet worden toegewezen.", + "description": "Lijst met namen van personen aan wie deze taak moet worden toegewezen. Gebruik [\"*\"] voor alle gebruikers aan wie de taak kan worden toegewezen. Geef een lege lijst door om een lijst zonder toegewezen personen te maken.", "example": "['Emma', 'Jack']" }, "points": { @@ -2663,7 +2742,7 @@ }, "assigned_user_names": { "name": "Toegewezen aan", - "description": "Nieuwe lijst met namen van personen aan wie deze taak moet worden toegewezen.", + "description": "Nieuwe lijst met namen van personen aan wie deze taak moet worden toegewezen. Gebruik [\"*\"] voor alle gebruikers aan wie de taak kan worden toegewezen. Geef een lege lijst door om alle toegewezen gebruikers te verwijderen. Laat dit veld weg om de huidige toewijzingen ongewijzigd te laten.", "example": "['Emma', 'Jack']" }, "points": { @@ -2735,6 +2814,11 @@ "name": "Vervaldatum herinnering verrekening", "description": "Nieuwe herinneringsvertraging. De tijdsduur vóór de vervaldatum waarop de herinneringsmelding moet worden verzonden. Formaat: '30m', '1h', '1d 6h 30m', enz. Gebruik '0' om uit te schakelen.", "example": "30m" + }, + "assignment_action": { + "name": "Toewijzingsactie", + "description": "Hoe om te gaan met de lijst assigned_user_names. 'replace' stelt de lijst direct in (standaard, achterwaarts compatibel). 'add' voegt de vermelde gebruikers toe aan de bestaande lijst met toegewezen gebruikers. 'remove' verwijdert de vermelde gebruikers uit de bestaande lijst met toegewezen gebruikers.", + "example": "toevoegen" } } }, @@ -3096,6 +3180,11 @@ "name": "Sla eenmalige klusjes over", "description": "Schakel deze optie in om eenmalige taken ongewijzigd te laten in plaats van hun vervaldatum naar de uiterste datum te verplaatsen.", "example": "onjuist" + }, + "allow_long_recurrences": { + "name": "Sta lange herhalingen toe", + "description": "Sta het opnieuw inplannen van maandelijkse, driemaandelijkse, jaarlijkse en andere terugkerende gebeurtenissen met langere tussenpozen toe. Standaard is dit uitgeschakeld om onbedoelde grote sprongen te voorkomen.", + "example": "WAAR" } } }, @@ -3179,7 +3268,8 @@ "completed_by_other": "Voltooid door anderen", "waiting": "Wachten (venster niet geopend)", "not_my_turn": "Niet mijn beurt (Rotatie)", - "missed": "Gemist (Vergrendeld)" + "missed": "Gemist (Vergrendeld)", + "paused": "Gepauzeerd" }, "state_attributes": { "purpose": { @@ -3426,7 +3516,8 @@ "blocked_pending_claim": "Claim in behandeling", "blocked_waiting_window": "Wachten op de deadline", "blocked_not_my_turn": "Nu ben jij aan de beurt.", - "blocked_missed_locked": "Gemist en vergrendeld" + "blocked_missed_locked": "Gemist en vergrendeld", + "blocked_paused": "De taken voor deze gebruiker zijn gepauzeerd." } }, "turn_user_name": { @@ -4740,9 +4831,15 @@ "core_sensors": { "name": "Kernsensoren" }, + "dashboard_config": { + "name": "Dashboardconfiguratie" + }, "dashboard_helpers": { "name": "Dashboard Helpers" }, + "shard_runtime": { + "name": "Uitvoeringstijd van de takenlijst" + }, "chores_by_label": { "name": "Taken per label" }, @@ -4753,6 +4850,29 @@ "name": "Taal" } } + }, + "assignee_dashboard_chore_list_helper_sensor": { + "name": "UI Dashboard Takenlijst {shard_index}", + "state_attributes": { + "purpose": { + "name": "Doel", + "state": { + "purpose_dashboard_chore_shard_helper": "Biedt één takenlijst voor weergave op het dashboard wanneer de volledige takenlijst van een gebruiker te groot is voor de hoofdhelper." + } + }, + "chores": { + "name": "Klusjes" + }, + "shard_index": { + "name": "Takenlijstnummer" + }, + "shard_count": { + "name": "Complete takenlijst" + }, + "helper_contract_version": { + "name": "Hulpcontractversie" + } + } } }, "select": { @@ -5314,6 +5434,9 @@ }, "notif_message_chore_missed": { "message": "{assignee_name} heeft de klus gemist: {chore_name}" + }, + "chore_paused": { + "message": "De taakverwerking is momenteel gepauzeerd voor deze gebruiker." } } } diff --git a/custom_components/choreops/translations/pl.json b/custom_components/choreops/translations/pl.json index 5c37911..aba90dd 100644 --- a/custom_components/choreops/translations/pl.json +++ b/custom_components/choreops/translations/pl.json @@ -81,13 +81,15 @@ "name": "Nazwa", "ha_user_id": "Użytkownik Home Assistant", "dashboard_language": "Język", - "mobile_notify_service": "Powiadomienia" + "mobile_notify_service": "Powiadomienia", + "notif_click_url": "Powiadomienie, dotknij adresu URL" }, "data_description": { "name": "Unikalna nazwa tego profilu użytkownika.", "ha_user_id": "Opcjonalnie: przypisz ten profil do użytkownika Home Assistant. Gdy tryb kiosku jest wyłączony, akcje na urządzeniu współdzielonym będą korzystać z tego przypisania.", "dashboard_language": "Język używany w treści dashboardu i powiadomieniach.", - "mobile_notify_service": "Wybierz rodzaj powiadomień lub pozostaw puste, aby wyłączyć powiadomienia." + "mobile_notify_service": "Wybierz rodzaj powiadomień lub pozostaw puste, aby wyłączyć powiadomienia.", + "notif_click_url": "Opcjonalny adres URL otwierany po kliknięciu powiadomienia. Pozostaw puste, aby zachować domyślne zachowanie." } }, "section_system_usage": { @@ -110,12 +112,18 @@ "data": { "can_approve": "Może zatwierdzić", "can_manage": "Może zarządzać", - "associated_user_ids": "Powiązani użytkownicy" + "associated_user_ids": "Powiązani użytkownicy", + "notif_approve_click_url": "Powiadomienie o zatwierdzeniu, dotknij adresu URL", + "chores_paused": "Zatrzymaj obowiązki", + "chores_paused_until": "Wstrzymano do" }, "data_description": { "can_approve": "Umożliwia zatwierdzanie i odrzucanie wykonanych zadań.", "can_manage": "Umożliwia działania administracyjne wymagające podwyższonych uprawnień.", - "associated_user_ids": "Użytkownicy, których ten zatwierdzający / administrator nadzoruje w procesie zatwierdzania." + "associated_user_ids": "Użytkownicy, których ten zatwierdzający / administrator nadzoruje w procesie zatwierdzania.", + "notif_approve_click_url": "Opcjonalny adres URL powiadomień o zatwierdzeniu. Zastępuje ogólny adres URL powiadomienia o kliknięciu podczas zatwierdzania zadań lub nagród.", + "chores_paused": "Wstrzymuje przetwarzanie zadań. Żadne zaległe lub pominięte statystyki nie są naliczane.", + "chores_paused_until": "Opcjonalna data powrotu. Jeśli ustawiono, obowiązki domowe zostaną automatycznie wznowione o północy po tej dacie." } } } @@ -133,7 +141,7 @@ "sections": { "section_root_form": { "name": "Definicja", - "description": "Tożsamość, przypisanie i podstawowe ustawienia umowy.", + "description": "Informacje, przypisani użytkownicy i podstawowe ustawienia zadania.", "data": { "name": "📋 Nazwa zadania domowego", "chore_description": "📋 Opis (opcjonalnie)", @@ -153,26 +161,26 @@ }, "section_schedule": { "name": "Harmonogram", - "description": "Ustawienia czasu, okna dostępu i powtarzającego się interwału.", + "description": "Harmonogram, okno czasowe i ustawienia powtarzania.", "data": { "recurring_frequency": "🔄 Harmonogram: Częstotliwość", "due_date": "📅 Harmonogram: Termin (opcjonalnie)", - "clear_due_date": "🗑️ Wyczyść termin płatności", + "clear_due_date": "🗑️ Usuń termin wykonania", "applicable_days": "📅 Harmonogram: Dni obowiązujące (opcjonalnie)", - "chore_due_window_offset": "⏱️ Termin płatności: Przesunięcie przed terminem płatności", - "chore_claim_lock_until_window": "🔒 Zablokować roszczenie do czasu otwarcia okna płatności?", + "chore_due_window_offset": "⏱️ Termin wykonania: Przesunięcie przed terminem wykonania", + "chore_claim_lock_until_window": "🔒 Zablokować potwierdzanie, aż będzie dostępne?", "custom_interval": "🔄 Harmonogram: niestandardowy interwał (dla niestandardowej częstotliwości)", - "custom_interval_unit": "🔄 Harmonogram: Niestandardowa jednostka interwału" + "custom_interval_unit": "🔄 Harmonogram: jednostka własnego interwału" }, "data_description": { "recurring_frequency": "Jak często zadanie ma się powtarzać: Codziennie, Co tydzień, Co miesiąc, Co rok, Niestandardowo lub Brak.", - "due_date": "Opcjonalny termin. Można łączyć z harmonogramami cyklicznymi.", + "due_date": "Termin opcjonalny. Można go łączyć z powtarzającymi się harmonogramami.", "clear_due_date": "Zaznacz to pole, aby usunąć termin wykonania tego zadania.", "applicable_days": "Pozostaw puste pola dla wszystkich dni. Wybierz TYLKO konkretne dni, aby wprowadzić ograniczenie.", - "chore_due_window_offset": "Gdy status zadania zmieni się z „Oczekujące” na „Należy”. Format: „1d 6h 30m” lub po prostu „30” dla minut. Wprowadź „0”, aby wyłączyć. Przykład: „1d” oznacza, że zadanie wyświetla się jako „Należy” 1 dzień przed terminem.", - "chore_claim_lock_until_window": "Po włączeniu tej opcji osoby przypisane do zadania nie mogą go przejąć przed rozpoczęciem okresu jego realizacji.", - "custom_interval": "Liczba jednostek czasu między powtórzeniami (np. 3 dla „co 3 tygodnie”). Używane tylko z częstotliwością niestandardową.", - "custom_interval_unit": "Jednostka czasu dla niestandardowego interwału (dni, tygodnie, miesiące). Używana tylko z niestandardową częstotliwością." + "chore_due_window_offset": "Kiedy stan zadania zmienia się z \"Oczekujące\" na \"Do wykonania\". Format: \"1d 6h 30m\" lub tylko \"30\" (minuty). Wprowadź \"0\", aby wyłączyć. Przykład: \"1d\" oznacza, że zadanie będzie oznaczone jako \"Do wykonania\" 1 dzień przed terminem.", + "chore_claim_lock_until_window": "Po włączeniu osoby przydzielone do zadania nie mogą go przejąć przed terminem dostępności.", + "custom_interval": "Liczba jednostek czasu między powtórzeniami (np. 3 — dla „co 3 tygodnie”). Używane tylko przy niestandardowej częstotliwości.", + "custom_interval_unit": "Jednostka czasu dla niestandardowego okresu (dni, tygodnie, miesiące). Używane tylko przy niestandardowej częstotliwości." } }, "section_advanced_configurations": { @@ -180,21 +188,21 @@ "description": "Automatyzacja cyklu życia, powiadomienia, widoczność i metadane.", "data": { "approval_reset_type": "➡️ Dozwolone ukończenia i czas resetowania zatwierdzenia", - "approval_reset_pending_claim_action": "➡️ Oczekujące rozpatrzenie roszczeń w momencie resetowania zatwierdzenia", - "auto_approve": "✅ Automatyczne zatwierdzanie roszczeń?", - "overdue_handling_type": "⏰ Przeterminowane: Obsługa", - "chore_due_reminder_offset": "🔔 Przypomnienie o terminie płatności: Przesunięcie przed terminem płatności", - "chore_notifications": "🔔 Wydarzenia powiadomień (opcjonalnie)", + "approval_reset_pending_claim_action": "➡️ Oczekujące Zgłoszenia - Co Zrobić przy Resetowaniu", + "auto_approve": "✅ Automatycznie zatwierdzić zgłoszenia?", + "overdue_handling_type": "⏰ Zadanie Zaległe: Co Robić", + "chore_due_reminder_offset": "🔔 Przypomnienie: Kiedy Wysłać Powiadomienie", + "chore_notifications": "🔔 Kiedy Powiadamiać (opcjonalnie)", "show_on_calendar": "📅 Pokazać w kalendarzu?", "chore_labels": "📋 Etykiety (opcjonalnie)" }, "data_description": { - "approval_reset_type": "Kontroluje, kiedy uruchamiana jest granica cyklu zatwierdzania zadania (o północy, w dniu ukończenia, po zakończeniu lub ręcznie).", - "approval_reset_pending_claim_action": "Dzieje się tak w przypadku roszczeń, które wciąż czekają na zatwierdzenie, gdy nastąpi reset zatwierdzenia.", - "auto_approve": "Po włączeniu tej opcji roszczenia będą zatwierdzane natychmiast, bez konieczności przeglądu przez osobę zatwierdzającą.", - "overdue_handling_type": "Działanie po terminie: ukryj status przeterminowania, pozostaw przeterminowane do momentu odebrania lub zmień na oczekujące w następnym cyklu zatwierdzania.", - "chore_due_reminder_offset": "Kiedy wysłać przypomnienie o terminie. Format: „1d 6h 30m” lub po prostu „30” w przypadku minut. Domyślnie: 30m (30 minut przed terminem). Wprowadź „0”, aby wyłączyć.", - "chore_notifications": "Kiedy wysyłać powiadomienia: w przypadku roszczenia, zatwierdzenia, odrzucenia lub w dowolnej kombinacji tych zdarzeń.", + "approval_reset_type": "Określa, kiedy następuje reset cyklu zatwierdzania zadania (o północy, w terminie, po wykonaniu lub ręcznie).", + "approval_reset_pending_claim_action": "Określa, co dzieje się ze zgłoszeniami oczekującymi na zatwierdzenie w momencie resetu.", + "auto_approve": "Po włączeniu zgłoszenia są automatycznie zatwierdzane bez weryfikacji przez opiekuna.", + "overdue_handling_type": "Po terminie: ukryj, pozostaw do zgłoszenia lub zresetuj do oczekującego przy następnym cyklu.", + "chore_due_reminder_offset": "Kiedy wysłać przypomnienie o terminie. Format: „1d 6h 30m” lub „30” (minuty). Domyślnie: 30m (30 min przed). Wpisz „0”, aby wyłączyć.", + "chore_notifications": "Kiedy wysyłać powiadomienia: przy zgłoszeniu, zatwierdzeniu, odrzuceniu lub dowolnej kombinacji.", "show_on_calendar": "Wyświetl to zadanie w widoku kalendarza.", "chore_labels": "Tagi do organizowania obowiązków (np. „kuchnia”, „na zewnątrz”). Pozostaw puste, jeśli nie są potrzebne." } @@ -208,17 +216,17 @@ "default_points": "💰 Przyznane punkty", "assigned_user_ids": "👥 Przypisany do", "completion_criteria": "👥 Kryteria ukończenia", - "approval_reset_type": "➡️ Dozwolone ukończenia i czas resetowania zatwierdzenia", - "approval_reset_pending_claim_action": "➡️ Oczekujące rozpatrzenie roszczeń w momencie resetowania zatwierdzenia", - "overdue_handling_type": "⏰ Przeterminowane: Obsługa", - "chore_claim_lock_until_window": "🔒 Zablokować roszczenie do czasu otwarcia okna płatności?", - "auto_approve": "✅ Automatyczne zatwierdzanie roszczeń?", + "approval_reset_type": "➡️ Limit wykonań i moment resetu zatwierdzania", + "approval_reset_pending_claim_action": "➡️ Co zrobić z oczekującymi zgłoszeniami przy resecie zatwierdzania", + "overdue_handling_type": "⏰ Zaległe: Sposób obsługi", + "chore_claim_lock_until_window": "🔒 Blokować zgłoszenie do czasu, aż zadanie będzie dostępne?", + "auto_approve": "✅ Automatycznie zatwierdzać zgłoszenia?", "recurring_frequency": "🔄 Harmonogram: Częstotliwość", "custom_interval": "🔄 Harmonogram: niestandardowy interwał (dla niestandardowej częstotliwości)", "custom_interval_unit": "🔄 Harmonogram: Niestandardowa jednostka interwału", "applicable_days": "📅 Harmonogram: Dni obowiązujące (opcjonalnie)", - "due_date": "📅 Harmonogram: Termin (opcjonalnie)", - "chore_due_window_offset": "⏱️ Termin płatności: Przesunięcie przed terminem płatności", + "due_date": "📅 Harmonogram: termin wykonania (opcjonalnie)", + "chore_due_window_offset": "⏱️ Okno zgłoszeń: ile przed terminem ma się otworzyć", "chore_due_reminder_offset": "🔔 Przypomnienie o terminie płatności: Przesunięcie przed terminem płatności", "show_on_calendar": "📅 Pokazać w kalendarzu?", "chore_notifications": "🔔 Wydarzenia powiadomień (opcjonalnie)" @@ -483,6 +491,8 @@ "invalid_reward_count": "Nieprawidłowa liczba nagród", "invalid_reward_name": "Nieprawidłowa nazwa nagrody", "invalid_reward_cost": "Koszt nagrody musi wynosić zero lub więcej, z dokładnością do 2 miejsc po przecinku", + "invalid_reward_assigned_users": "Jeden lub więcej przypisanych użytkowników jest nieprawidłowych", + "mixed_reward_assignment_sentinel": "Nie można mieszać „wszystkich użytkowników” z określonymi użytkownikami", "invalid_bonus": "Nieprawidłowy bonus", "invalid_bonus_count": "Nieprawidłowa liczba bonusów", "invalid_bonus_name": "Nieprawidłowa nazwa bonusu", @@ -569,13 +579,15 @@ "name": "Nazwa", "ha_user_id": "Użytkownik Asystenta Domowego", "dashboard_language": "Język", - "mobile_notify_service": "Powiadomienia" + "mobile_notify_service": "Powiadomienia", + "notif_click_url": "Powiadomienie, dotknij adresu URL" }, "data_description": { "name": "Unikalna nazwa tego profilu użytkownika.", "ha_user_id": "Opcjonalnie: Połącz ten profil z użytkownikiem Home Assistant. Jeśli tryb kiosku jest wyłączony, zgłaszanie i realizacja roszczeń na urządzeniach współdzielonych zależą od tego łącza.", "dashboard_language": "Język używany w treściach pulpitu nawigacyjnego i powiadomieniach.", - "mobile_notify_service": "Wybierz usługę powiadomień lub pozostaw puste, aby wyłączyć powiadomienia." + "mobile_notify_service": "Wybierz usługę powiadomień lub pozostaw puste, aby wyłączyć powiadomienia.", + "notif_click_url": "Opcjonalny adres URL otwierany po kliknięciu powiadomienia. Pozostaw puste, aby zachować domyślne zachowanie." } }, "section_system_usage": { @@ -598,12 +610,18 @@ "data": { "can_approve": "Można zatwierdzić", "can_manage": "Może zarządzać", - "associated_user_ids": "Powiązani użytkownicy" + "associated_user_ids": "Powiązani użytkownicy", + "notif_approve_click_url": "Powiadomienie o zatwierdzeniu, dotknij adresu URL", + "chores_paused": "Zatrzymaj obowiązki", + "chores_paused_until": "Wstrzymano do" }, "data_description": { "can_approve": "Umożliwia akcje akceptacji i dezaprobaty.", "can_manage": "Umożliwia wykonywanie czynności zarządczych wymagających podwyższonych uprawnień.", - "associated_user_ids": "Użytkownicy, których ten zatwierdzający/administrator nadzoruje w zakresie działań zatwierdzających." + "associated_user_ids": "Użytkownicy, których ten zatwierdzający/administrator nadzoruje w zakresie działań zatwierdzających.", + "notif_approve_click_url": "Opcjonalny adres URL powiadomień o zatwierdzeniu. Zastępuje ogólny adres URL powiadomienia o kliknięciu podczas zatwierdzania zadań lub nagród.", + "chores_paused": "Wstrzymuje przetwarzanie zadań. Żadne zaległe lub pominięte statystyki nie są naliczane.", + "chores_paused_until": "Opcjonalna data powrotu. Jeśli ustawiono, obowiązki domowe zostaną automatycznie wznowione o północy po tej dacie." } } } @@ -926,7 +944,8 @@ "cost": "Koszt nagrody", "description": "Opis (opcjonalnie)", "reward_labels": "Etykiety nagród", - "icon": "Ikona (mdi:xxx)" + "icon": "Ikona (mdi:xxx)", + "assigned_user_ids": "Przypisany do" } }, "add_penalty": { @@ -1000,13 +1019,15 @@ "name": "Nazwa", "ha_user_id": "Użytkownik Asystenta Domowego", "dashboard_language": "Język", - "mobile_notify_service": "Powiadomienia" + "mobile_notify_service": "Powiadomienia", + "notif_click_url": "Powiadomienie, dotknij adresu URL" }, "data_description": { "name": "Unikalna nazwa tego profilu użytkownika.", "ha_user_id": "Opcjonalnie: Połącz ten profil z użytkownikiem Home Assistant. Jeśli tryb kiosku jest wyłączony, zgłaszanie i realizacja roszczeń na urządzeniach współdzielonych zależą od tego łącza.", "dashboard_language": "Język używany w treściach pulpitu nawigacyjnego i powiadomieniach.", - "mobile_notify_service": "Wybierz usługę powiadomień lub pozostaw puste, aby wyłączyć powiadomienia." + "mobile_notify_service": "Wybierz usługę powiadomień lub pozostaw puste, aby wyłączyć powiadomienia.", + "notif_click_url": "Opcjonalny adres URL otwierany po kliknięciu powiadomienia. Pozostaw puste, aby zachować domyślne zachowanie." } }, "section_system_usage": { @@ -1029,12 +1050,18 @@ "data": { "can_approve": "Można zatwierdzić", "can_manage": "Może zarządzać", - "associated_user_ids": "Powiązani użytkownicy" + "associated_user_ids": "Powiązani użytkownicy", + "notif_approve_click_url": "Powiadomienie o zatwierdzeniu, dotknij adresu URL", + "chores_paused": "Zatrzymaj obowiązki", + "chores_paused_until": "Wstrzymano do" }, "data_description": { "can_approve": "Umożliwia akcje akceptacji i dezaprobaty.", "can_manage": "Umożliwia wykonywanie czynności administracyjnych wymagających podwyższonych uprawnień.", - "associated_user_ids": "Użytkownicy, których ten zatwierdzający/administrator nadzoruje w zakresie działań zatwierdzających." + "associated_user_ids": "Użytkownicy, których ten zatwierdzający/administrator nadzoruje w zakresie działań zatwierdzających.", + "notif_approve_click_url": "Opcjonalny adres URL powiadomień o zatwierdzeniu. Zastępuje ogólny adres URL powiadomienia o kliknięciu podczas zatwierdzania zadań lub nagród.", + "chores_paused": "Wstrzymuje przetwarzanie zadań. Żadne zaległe lub pominięte statystyki nie są naliczane.", + "chores_paused_until": "Opcjonalna data powrotu. Jeśli ustawiono, obowiązki domowe zostaną automatycznie wznowione o północy po tej dacie." } } } @@ -1385,7 +1412,8 @@ "cost": "Koszt nagrody", "description": "Opis (opcjonalnie)", "reward_labels": "Etykiety nagród", - "icon": "Ikona (mdi:xxx)" + "icon": "Ikona (mdi:xxx)", + "assigned_user_ids": "Przypisany do" } }, "edit_penalty": { @@ -1633,6 +1661,7 @@ "title": "Opcje ogólne", "description": "Zarządzaj ogólnymi ustawieniami integracji ChoreOps.\n\n ℹ️ [Dowiedz się więcej o opcjach ogólnych]({documentation_url})", "data": { + "dashboard_points_precision": "Precyzja punktów na pulpicie nawigacyjnym", "default_chore_points": "Domyślne punkty za zadanie", "points_adjust_values": "Wartości przycisków ręcznej regulacji punktów", "update_interval": "Interwał aktualizacji", @@ -1649,6 +1678,7 @@ "backup_action_selection": "Akcje kopii zapasowej" }, "data_description": { + "dashboard_points_precision": "Wybierz sposób wyświetlania punktów na obsługiwanych pulpitach. Zmiana ta zmienia jedynie formatowanie pulpitu i nie zmienia zapisanych wartości punktów ani obliczeń.", "default_chore_points": "Domyślna wartość punktów używana w przypadku nowych zadań, gdy nie określono punktów niestandardowych.", "points_adjust_values": "Lista wartości dla przycisków ręcznej regulacji punktów. Każda wartość oddzielona znakiem „|”.", "update_interval": "Interwał w minutach aktualizacji wewnętrznego stanu ChoreOps.", @@ -1948,6 +1978,14 @@ "return_to_menu": "↩️ Powrót do menu głównego" } }, + "dashboard_points_precision": { + "options": { + "fixed_0": "Tylko liczby całkowite", + "adaptive": "Adaptacyjny (pokazuj miejsca dziesiętne tylko wtedy, gdy jest to potrzebne)", + "fixed_1": "Zawsze 1 miejsce po przecinku", + "fixed_2": "Zawsze 2 miejsca po przecinku" + } + }, "select_backup_to_delete": { "options": { "cancel": "↩️ Anuluj (powrót do menu kopii zapasowej)" @@ -2223,6 +2261,37 @@ } } }, + "pause_user_chores": { + "name": "Wstrzymaj obowiązki użytkownika", + "description": "Wstrzymaj lub wznów przetwarzanie zadań dla użytkownika.", + "fields": { + "config_entry_id": { + "name": "Identyfikator wpisu konfiguracji (opcjonalnie)", + "description": "Użyj tego, jeśli masz więcej niż jedną konfigurację ChoreOps. Dotyczy to jednej konkretnej konfiguracji.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nazwa wpisu konfiguracji (opcjonalnie)", + "description": "Użyj tego, jeśli masz więcej niż jedną konfigurację ChoreOps i każda z nich ma unikalną nazwę. Jeśli nazwy się powtarzają, użyj identyfikatora wpisu konfiguracji.", + "example": "Obowiązki rodzinne" + }, + "user_name": { + "name": "Nazwa użytkownika", + "description": "Nazwa użytkownika, którego zadania chcesz wstrzymać lub wznowić.", + "example": "Sara" + }, + "paused": { + "name": "Wstrzymano", + "description": "Prawda - wstrzymuje wykonywanie obowiązków, Fałsz - wznawia je.", + "example": "pRAWDA" + }, + "paused_until": { + "name": "Wstrzymano do", + "description": "Opcjonalna data powrotu. Jeśli ustawiono, obowiązki domowe zostaną automatycznie wznowione o północy po tej dacie.", + "example": "2026-06-10T00:00:00+00:00" + } + } + }, "redeem_reward": { "name": "Zrealizuj nagrodę", "description": "Osoba zatwierdzająca realizuje nagrodę dla cesjonariusza, odliczając mu punkty.", @@ -2461,6 +2530,11 @@ "name": "Etykiety", "description": "Etykiety do grupowania nagród.", "example": "['weekend', 'specjalny']" + }, + "assigned_user_names": { + "name": "Przypisany do", + "description": "Wyświetlane nazwy użytkowników przypisane do tej nagrody. Użyj [\"*\"] dla wszystkich użytkowników. Przekaż pustą listę, aby nie przypisywać żadnych użytkowników.", + "example": "['Zoë', 'Max!']" } } }, @@ -2507,6 +2581,11 @@ "name": "Etykiety", "description": "Zaktualizowane etykiety.", "example": "['premium', 'specjalny']" + }, + "assigned_user_names": { + "name": "Przypisany do", + "description": "Wyświetlane nazwy użytkowników przypisane do tej nagrody. Użyj [\"*\"] dla wszystkich użytkowników. Przekaż pustą listę, aby usunąć wszystkich przypisanych użytkowników. Pomiń, aby pozostawić bieżące przypisania bez zmian.", + "example": "['Zoë', 'Max!']" } } }, @@ -2557,7 +2636,7 @@ }, "assigned_user_names": { "name": "Przypisany do", - "description": "Lista nazw osób, którym można przypisać to zadanie.", + "description": "Lista nazw osób przypisanych do tego zadania. Użyj [\"*\"] dla wszystkich użytkowników, których można przypisać. Przekaż pustą listę, aby utworzyć ją bez osób przypisanych.", "example": "['Emma', 'Jack']" }, "points": { @@ -2663,7 +2742,7 @@ }, "assigned_user_names": { "name": "Przypisany do", - "description": "Nowa lista nazw osób, którym można przypisać to zadanie.", + "description": "Nowa lista nazw osób przypisanych do tego zadania. Użyj [\"*\"] dla wszystkich przypisywanych użytkowników. Przekaż pustą listę, aby usunąć wszystkich przypisanych użytkowników. Pomiń, aby pozostawić bieżące przypisania bez zmian.", "example": "['Emma', 'Jack']" }, "points": { @@ -2735,6 +2814,11 @@ "name": "Przesunięcie terminu przypomnienia", "description": "Nowe przesunięcie przypomnienia o terminie. Czas do upływu terminu, po którym ma zostać wysłane przypomnienie. Format: „30 min”, „1 godz.”, „1d 6 godz. 30 min” itd. Użyj „0”, aby wyłączyć.", "example": "30m" + }, + "assignment_action": { + "name": "Akcja zadania", + "description": "Jak obsługiwać listę assigned_user_names. Polecenie „replace” ustawia listę bezpośrednio (domyślne, zgodne z poprzednimi wersjami). Polecenie „add” dołącza użytkowników wymienionych do istniejących osób przypisanych. Polecenie „remove” usuwa użytkowników wymienionych z istniejących osób przypisanych.", + "example": "dodać" } } }, @@ -3096,6 +3180,11 @@ "name": "Pomiń obowiązki, które nie powtarzają się regularnie", "description": "Włącz tę opcję, aby zadania jednorazowe pozostały niezmienione, zamiast przesuwać termin ich wykonania do granicy.", "example": "fałsz" + }, + "allow_long_recurrences": { + "name": "Zezwalaj na długie powtarzanie", + "description": "Zezwalaj na zmianę harmonogramu cykli miesięcznych, kwartalnych, rocznych i innych cykli długoterminowych. Domyślnie ustaw fałsz, aby zapobiec przypadkowym dużym skokom.", + "example": "pRAWDA" } } }, @@ -3179,7 +3268,8 @@ "completed_by_other": "Ukończone przez Innego", "waiting": "Oczekiwanie (okno płatności nie jest otwarte)", "not_my_turn": "Nie moja kolej (rotacja)", - "missed": "Pominięto (zablokowano)" + "missed": "Pominięto (zablokowano)", + "paused": "Wstrzymano" }, "state_attributes": { "purpose": { @@ -3426,7 +3516,8 @@ "blocked_pending_claim": "Oczekujące roszczenie", "blocked_waiting_window": "Czekam na odpowiedni termin", "blocked_not_my_turn": "Nie twoja kolej", - "blocked_missed_locked": "Pominięte i zablokowane" + "blocked_missed_locked": "Pominięte i zablokowane", + "blocked_paused": "Obowiązki domowe tego użytkownika są wstrzymane" } }, "turn_user_name": { @@ -4740,9 +4831,15 @@ "core_sensors": { "name": "Czujniki rdzeniowe" }, + "dashboard_config": { + "name": "Konfiguracja pulpitu nawigacyjnego" + }, "dashboard_helpers": { "name": "Pomocnicy pulpitu nawigacyjnego" }, + "shard_runtime": { + "name": "Lista zadań do wykonania" + }, "chores_by_label": { "name": "Obowiązki według etykiety" }, @@ -4753,6 +4850,29 @@ "name": "Język" } } + }, + "assignee_dashboard_chore_list_helper_sensor": { + "name": "Lista zadań panelu interfejsu użytkownika {shard_index}", + "state_attributes": { + "purpose": { + "name": "Zamiar", + "state": { + "purpose_dashboard_chore_shard_helper": "Zapewnia jedną listę zadań do wyświetlenia na pulpicie, gdy pełna lista zadań użytkownika jest zbyt długa dla głównego pomocnika" + } + }, + "chores": { + "name": "Zadania" + }, + "shard_index": { + "name": "Numer listy obowiązków" + }, + "shard_count": { + "name": "Całkowita liczba list obowiązków" + }, + "helper_contract_version": { + "name": "Wersja kontraktu pomocniczego" + } + } } }, "select": { @@ -5314,6 +5434,9 @@ }, "notif_message_chore_missed": { "message": "{assignee_name} pominął obowiązek: {chore_name}" + }, + "chore_paused": { + "message": "Przetwarzanie zadań jest obecnie wstrzymane dla tego użytkownika." } } } diff --git a/custom_components/choreops/translations/pt.json b/custom_components/choreops/translations/pt.json index fd22277..db721c8 100644 --- a/custom_components/choreops/translations/pt.json +++ b/custom_components/choreops/translations/pt.json @@ -81,13 +81,15 @@ "name": "Nome", "ha_user_id": "Utilizador do Home Assistant", "dashboard_language": "Idioma", - "mobile_notify_service": "Notificações" + "mobile_notify_service": "Notificações", + "notif_click_url": "URL de notificação" }, "data_description": { "name": "Nome único para este perfil de utilizador.", "ha_user_id": "Opcional: ligue este perfil a um utilizador do Home Assistant. Se o modo quiosque estiver desativado, as ações de reclamação e resgate de dispositivos partilhados dependerão desta ligação.", "dashboard_language": "Idioma utilizado para o conteúdo do painel de controlo e notificações.", - "mobile_notify_service": "Selecione o serviço de notificação ou deixe em branco para desativar as notificações." + "mobile_notify_service": "Selecione o serviço de notificação ou deixe em branco para desativar as notificações.", + "notif_click_url": "URL opcional a abrir ao tocar na notificação. Deixe em branco para o comportamento padrão." } }, "section_system_usage": { @@ -110,12 +112,18 @@ "data": { "can_approve": "Pode aprovar", "can_manage": "Consigo lidar com isso", - "associated_user_ids": "Utilizadores associados" + "associated_user_ids": "Utilizadores associados", + "notif_approve_click_url": "URL de notificação de aprovação", + "chores_paused": "Pausar tarefas", + "chores_paused_until": "Em pausa até" }, "data_description": { "can_approve": "Permite ações de aprovação e reprovação.", "can_manage": "Permite ações de gestão que exigem permissões elevadas.", - "associated_user_ids": "Utilizadores que este aprovador/administrador supervisiona para ações de aprovação." + "associated_user_ids": "Utilizadores que este aprovador/administrador supervisiona para ações de aprovação.", + "notif_approve_click_url": "URL opcional para notificações de aprovação. Substitui o URL de notificação geral ao aprovar tarefas ou recompensas.", + "chores_paused": "Interrompe o processamento das tarefas. Não acumula estatísticas de tarefas atrasadas ou perdidas.", + "chores_paused_until": "Data de regresso opcional. Se estiver definida, as tarefas serão retomadas automaticamente à meia-noite após essa data." } } } @@ -483,6 +491,8 @@ "invalid_reward_count": "Contagem de recompensas inválida", "invalid_reward_name": "Nome de recompensa inválido", "invalid_reward_cost": "O custo da recompensa deve ser zero ou superior, com até duas casas decimais.", + "invalid_reward_assigned_users": "Um ou mais utilizadores atribuídos não são válidos.", + "mixed_reward_assignment_sentinel": "Não é possível misturar 'todos os utilizadores' com utilizadores específicos.", "invalid_bonus": "Bónus inválido", "invalid_bonus_count": "Contagem de bónus inválida", "invalid_bonus_name": "Nome de bónus inválido", @@ -569,13 +579,15 @@ "name": "Nome", "ha_user_id": "Utilizador do Home Assistant", "dashboard_language": "Idioma", - "mobile_notify_service": "Notificações" + "mobile_notify_service": "Notificações", + "notif_click_url": "URL de notificação" }, "data_description": { "name": "Nome único para este perfil de utilizador.", "ha_user_id": "Opcional: ligue este perfil a um utilizador do Home Assistant. Se o modo quiosque estiver desativado, as ações de reclamação e resgate de dispositivos partilhados dependerão desta ligação.", "dashboard_language": "Idioma utilizado para o conteúdo do painel de controlo e notificações.", - "mobile_notify_service": "Selecione o serviço de notificação ou deixe em branco para desativar as notificações." + "mobile_notify_service": "Selecione o serviço de notificação ou deixe em branco para desativar as notificações.", + "notif_click_url": "URL opcional a abrir ao tocar na notificação. Deixe em branco para o comportamento padrão." } }, "section_system_usage": { @@ -598,12 +610,18 @@ "data": { "can_approve": "Pode aprovar", "can_manage": "Consigo lidar com isso", - "associated_user_ids": "Utilizadores associados" + "associated_user_ids": "Utilizadores associados", + "notif_approve_click_url": "URL de notificação de aprovação", + "chores_paused": "Pausar tarefas", + "chores_paused_until": "Em pausa até" }, "data_description": { "can_approve": "Permite ações de aprovação e reprovação.", "can_manage": "Permite ações de gestão que exigem permissões elevadas.", - "associated_user_ids": "Utilizadores que este aprovador/administrador supervisiona para ações de aprovação." + "associated_user_ids": "Utilizadores que este aprovador/administrador supervisiona para ações de aprovação.", + "notif_approve_click_url": "URL opcional para notificações de aprovação. Substitui o URL de notificação geral ao aprovar tarefas ou recompensas.", + "chores_paused": "Interrompe o processamento das tarefas. Não acumula estatísticas de tarefas atrasadas ou perdidas.", + "chores_paused_until": "Data de regresso opcional. Se estiver definida, as tarefas serão retomadas automaticamente à meia-noite após essa data." } } } @@ -926,7 +944,8 @@ "cost": "Custo da recompensa", "description": "Descrição (opcional)", "reward_labels": "Etiquetas de recompensa", - "icon": "Ícone (mdi:xxx)" + "icon": "Ícone (mdi:xxx)", + "assigned_user_ids": "Designado para" } }, "add_penalty": { @@ -1000,13 +1019,15 @@ "name": "Nome", "ha_user_id": "Utilizador do Home Assistant", "dashboard_language": "Idioma", - "mobile_notify_service": "Notificações" + "mobile_notify_service": "Notificações", + "notif_click_url": "URL de notificação" }, "data_description": { "name": "Nome único para este perfil de utilizador.", "ha_user_id": "Opcional: ligue este perfil a um utilizador do Home Assistant. Se o modo quiosque estiver desativado, as ações de reclamação e resgate de dispositivos partilhados dependerão desta ligação.", "dashboard_language": "Idioma utilizado para o conteúdo do painel de controlo e notificações.", - "mobile_notify_service": "Selecione o serviço de notificação ou deixe em branco para desativar as notificações." + "mobile_notify_service": "Selecione o serviço de notificação ou deixe em branco para desativar as notificações.", + "notif_click_url": "URL opcional a abrir ao tocar na notificação. Deixe em branco para o comportamento padrão." } }, "section_system_usage": { @@ -1029,12 +1050,18 @@ "data": { "can_approve": "Pode aprovar", "can_manage": "Consigo lidar com isso", - "associated_user_ids": "Utilizadores associados" + "associated_user_ids": "Utilizadores associados", + "notif_approve_click_url": "URL de notificação de aprovação", + "chores_paused": "Pausar tarefas", + "chores_paused_until": "Em pausa até" }, "data_description": { "can_approve": "Permite ações de aprovação e reprovação.", "can_manage": "Permite ações de gestão que exigem permissões elevadas.", - "associated_user_ids": "Utilizadores que este aprovador/administrador supervisiona para ações de aprovação." + "associated_user_ids": "Utilizadores que este aprovador/administrador supervisiona para ações de aprovação.", + "notif_approve_click_url": "URL opcional para notificações de aprovação. Substitui o URL de notificação geral ao aprovar tarefas ou recompensas.", + "chores_paused": "Interrompe o processamento das tarefas. Não acumula estatísticas de tarefas atrasadas ou perdidas.", + "chores_paused_until": "Data de regresso opcional. Se estiver definida, as tarefas serão retomadas automaticamente à meia-noite após essa data." } } } @@ -1385,7 +1412,8 @@ "cost": "Custo da recompensa", "description": "Descrição (opcional)", "reward_labels": "Etiquetas de recompensa", - "icon": "Ícone (mdi:xxx)" + "icon": "Ícone (mdi:xxx)", + "assigned_user_ids": "Designado para" } }, "edit_penalty": { @@ -1633,6 +1661,7 @@ "title": "Opções gerais", "description": "Faça a gestão das configurações gerais da integração com o ChoreOps.\n\n ℹ️ [Saiba mais sobre as Opções Gerais]({documentation_url})", "data": { + "dashboard_points_precision": "Precisão dos pontos do painel de controlo", "default_chore_points": "Pontos padrão por tarefa", "points_adjust_values": "Valores do botão de regulação manual dos pontos", "update_interval": "Intervalo de atualização", @@ -1649,6 +1678,7 @@ "backup_action_selection": "Ações de backup" }, "data_description": { + "dashboard_points_precision": "Escolha como os pontos serão apresentados nos painéis compatíveis. Isto altera apenas a formatação do painel e não modifica os valores ou os cálculos dos pontos armazenados.", "default_chore_points": "Valor de pontos padrão utilizado para novas tarefas quando não são especificados pontos personalizados.", "points_adjust_values": "Lista de valores para os botões de ajuste manual dos pontos. Cada valor separado por '|'.", "update_interval": "Intervalo em minutos para atualização do estado interno do ChoreOps.", @@ -1948,6 +1978,14 @@ "return_to_menu": "↩️ Voltar ao menu principal" } }, + "dashboard_points_precision": { + "options": { + "fixed_0": "Apenas números inteiros", + "adaptive": "Adaptativo (apresenta decimais apenas quando necessário)", + "fixed_1": "Sempre com 1 casa decimal", + "fixed_2": "Sempre com 2 casas decimais." + } + }, "select_backup_to_delete": { "options": { "cancel": "↩️ Cancelar (voltar ao menu de cópia de segurança)" @@ -2223,6 +2261,37 @@ } } }, + "pause_user_chores": { + "name": "Pausar tarefas do utilizador", + "description": "Pausar ou retomar o processamento de tarefas para um utilizador.", + "fields": { + "config_entry_id": { + "name": "ID da entrada de configuração (opcional)", + "description": "Utilize esta opção se tiver mais do que uma configuração do ChoreOps. É direcionada para uma configuração específica.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nome da entrada de configuração (opcional)", + "description": "Utilize esta opção se tiver mais do que uma configuração do ChoreOps e cada uma delas tiver um nome único. Se os nomes se repetirem, utilize o ID da entrada de configuração.", + "example": "Tarefas familiares" + }, + "user_name": { + "name": "Nome de utilizador", + "description": "Nome do utilizador cujas tarefas devem ser colocadas em pausa ou retomadas.", + "example": "Sara" + }, + "paused": { + "name": "Em pausa", + "description": "Verdadeiro para pausar as tarefas, falso para as retomar.", + "example": "VERDADE" + }, + "paused_until": { + "name": "Em pausa até", + "description": "Data de regresso opcional. Se estiver definida, as tarefas serão retomadas automaticamente à meia-noite após essa data.", + "example": "2026-06-10T00:00:00+00:00" + } + } + }, "redeem_reward": { "name": "Resgatar recompensa", "description": "Um aprovador resgata uma recompensa para um colaborador, deduzindo pontos.", @@ -2461,6 +2530,11 @@ "name": "Etiquetas", "description": "Etiquetas para agrupar recompensas.", "example": "['fim de semana', 'especial']" + }, + "assigned_user_names": { + "name": "Designado para", + "description": "Nomes de visualização de utilizadores atribuídos a esta recompensa. Utilize [\"*\"] para todos os utilizadores. Passe uma lista vazia para não atribuir a nenhum utilizador.", + "example": "['Zoë', 'Max!']" } } }, @@ -2507,6 +2581,11 @@ "name": "Etiquetas", "description": "Etiquetas atualizadas.", "example": "['premium', 'especial']" + }, + "assigned_user_names": { + "name": "Designado para", + "description": "Nomes de visualização de utilizadores atribuídos a esta recompensa. Utilize [\"*\"] para todos os utilizadores. Passe uma lista vazia para remover todos os utilizadores atribuídos. Omita para manter as atribuições atuais inalteradas.", + "example": "['Zoë', 'Max!']" } } }, @@ -2557,7 +2636,7 @@ }, "assigned_user_names": { "name": "Designado para", - "description": "Lista de nomes dos responsáveis para atribuir esta tarefa.", + "description": "Lista de nomes dos responsáveis para atribuir esta tarefa. Utilize [\"*\"] para todos os utilizadores atribuíveis. Passe uma lista vazia para criar uma lista sem responsáveis.", "example": "['Emma', 'Jack']" }, "points": { @@ -2663,7 +2742,7 @@ }, "assigned_user_names": { "name": "Designado para", - "description": "Nova lista de responsáveis para atribuir esta tarefa.", + "description": "Nova lista de nomes de responsáveis para atribuir esta tarefa. Utilize [\"*\"] para todos os utilizadores atribuíveis. Passe uma lista vazia para remover todos os utilizadores atribuídos. Omita para manter as atribuições atuais inalteradas.", "example": "['Emma', 'Jack']" }, "points": { @@ -2735,6 +2814,11 @@ "name": "Compensação de lembrete de vencimento", "description": "Novo lembrete de vencimento. Duração antes do vencimento para enviar a notificação de lembrete. Formato: '30m', '1h', '1d 6h 30m', etc. Utilize '0' para desativar.", "example": "30m" + }, + "assignment_action": { + "name": "Ação de atribuição", + "description": "Como manipular a lista `assigned_user_names`. 'replace' define a lista directamente (padrão, compatível com versões anteriores). ‘add’ adiciona os utilizadores listados aos responsáveis existentes. ‘remove’ remove os utilizadores listados dos responsáveis existentes.", + "example": "adicionar" } } }, @@ -3096,6 +3180,11 @@ "name": "Ignorar tarefas não recorrentes", "description": "Ative esta opção para manter as tarefas não recorrentes inalteradas, em vez de mover a data de vencimento para o limite.", "example": "FALSO" + }, + "allow_long_recurrences": { + "name": "Permitir recorrências longas", + "description": "Permitir o reagendamento de recorrências mensais, trimestrais, anuais e outras recorrências de longo intervalo. O padrão é falso para evitar grandes saltos acidentais.", + "example": "VERDADE" } } }, @@ -3179,7 +3268,8 @@ "completed_by_other": "Concluído por Outro", "waiting": "Aguarda (Janela fechada)", "not_my_turn": "Não é a minha vez (Rotação)", - "missed": "Perdido (Bloqueado)" + "missed": "Perdido (Bloqueado)", + "paused": "Em pausa" }, "state_attributes": { "purpose": { @@ -3426,7 +3516,8 @@ "blocked_pending_claim": "Reclamação pendente", "blocked_waiting_window": "Aguarda o prazo final", "blocked_not_my_turn": "Não é a sua vez", - "blocked_missed_locked": "Perdido e trancado" + "blocked_missed_locked": "Perdido e trancado", + "blocked_paused": "As tarefas estão em pausa para este utilizador." } }, "turn_user_name": { @@ -4740,9 +4831,15 @@ "core_sensors": { "name": "Sensores principais" }, + "dashboard_config": { + "name": "Configuração do painel de controlo" + }, "dashboard_helpers": { "name": "Auxiliares do painel de controlo" }, + "shard_runtime": { + "name": "Tempo de execução da lista de tarefas" + }, "chores_by_label": { "name": "Tarefas por Etiqueta" }, @@ -4753,6 +4850,29 @@ "name": "Idioma" } } + }, + "assignee_dashboard_chore_list_helper_sensor": { + "name": "Lista de tarefas do painel de controlo da interface do utilizador {shard_index}", + "state_attributes": { + "purpose": { + "name": "Finalidade", + "state": { + "purpose_dashboard_chore_shard_helper": "Fornece uma lista de tarefas para apresentação no painel quando a lista completa de tarefas de um utilizador é demasiado grande para o auxiliar principal." + } + }, + "chores": { + "name": "Tarefas domésticas" + }, + "shard_index": { + "name": "Número da lista de tarefas" + }, + "shard_count": { + "name": "Lista completa de tarefas" + }, + "helper_contract_version": { + "name": "Versão do Contrato Auxiliar" + } + } } }, "select": { @@ -5314,6 +5434,9 @@ }, "notif_message_chore_missed": { "message": "{assignee_name} perdeu a tarefa: {chore_name}" + }, + "chore_paused": { + "message": "O processamento de tarefas está em pausa para este utilizador." } } } diff --git a/custom_components/choreops/translations/ro.json b/custom_components/choreops/translations/ro.json new file mode 100644 index 0000000..0ad165b --- /dev/null +++ b/custom_components/choreops/translations/ro.json @@ -0,0 +1,5442 @@ +{ + "title": "ChoreOps", + "config": { + "step": { + "intro": { + "title": "Bun venit la ChoreOps", + "description": "Acest asistent vă va ghida prin configurarea ChoreOps.\n\n ℹ️ [Ghid de pornire rapidă]({documentation_url})" + }, + "data_recovery": { + "title": "Opțiuni de recuperare a datelor", + "description": "Date ChoreOps existente găsite în:\n{storage_path}\n\nFișiere de rezervă {backup_count} găsite.\n\nCe doriți să faceți?\n\n ℹ️ [Aflați mai multe despre Backup și restaurare]({documentation_url})", + "data": { + "backup_selection": "Selectați opțiunea" + } + }, + "paste_json_input": { + "title": "Importați date JSON", + "description": "Lipiți conținutul JSON complet din:\n\n• Un fișier de date ChoreOps (choreops_data)\n• O descărcare de diagnosticare\n\nSistemul va detecta și despacheta automat formatul după cum este necesar. Sunt acceptate atât formatele de date brute de stocare, cât și formatele de export pentru diagnosticare.", + "data": { + "json_data": "Date JSON" + }, + "data_description": { + "json_data": "Lipește aici întregul conținut JSON. Acceptă date din fișierul choreops_data sau din exportul de diagnosticare (desface automat structura suplimentară)." + } + }, + "points_label": { + "title": "Etichetă puncte", + "description": "Alegeți o etichetă și o pictogramă pentru puncte.", + "data": { + "points_label": "Etichetă puncte", + "points_icon": "Pictogramă puncte", + "default_chore_points": "Puncte implicite per sarcină" + }, + "data_description": { + "default_chore_points": "Valoarea implicită a punctelor este utilizată la crearea unei sarcini, cu excepția cazului în care setați puncte personalizate pentru sarcina respectivă." + } + }, + "reconfigure": { + "title": "Reconfigurați setările de sistem", + "description": "Actualizați setările de sistem, cum ar fi eticheta punctelor și pictograma.", + "data": { + "points_label": "Etichetă puncte", + "points_icon": "Pictogramă puncte", + "default_chore_points": "Puncte implicite per sarcină", + "update_interval": "Interval de actualizare (minute)", + "calendar_show_period": "Perioada de afișare a calendarului (zile)", + "retention_daily": "Retenție zilnică (zile)", + "retention_weekly": "Retenție săptămânală (săptămâni)", + "retention_monthly": "Retenție lunară (luni)", + "retention_yearly": "Retenție anuală (ani)", + "points_adjust_values": "Valori de ajustare a punctelor (separate prin conducte)" + }, + "data_description": { + "points_label": "Etichetă afișată pentru puncte (de exemplu, „Puncte”, „Stele”, „Monede”)", + "points_icon": "Pictogramă MDI pentru puncte (de exemplu, „mdi:star”, „mdi:coin”, „mdi:trophy”)", + "default_chore_points": "Valoarea implicită a punctelor este utilizată la crearea unei sarcini, cu excepția cazului în care sunt setate puncte personalizate.", + "update_interval": "Cât de des se actualizează datele (minim: 1 minut)", + "calendar_show_period": "Zile din istoric de afișat în calendar (minim 1)", + "retention_daily": "Zile pentru păstrarea agregatelor zilnice", + "retention_weekly": "Săptămâni pentru păstrarea agregatelor săptămânale", + "retention_monthly": "Luni pentru păstrarea agregatelor lunare", + "retention_yearly": "Ani pentru păstrarea agregatelor anuale", + "points_adjust_values": "Valori ale punctelor separate prin viraje pentru butoanele de ajustare manuală (de exemplu, +1,0|-1,0|+10,0|-10,0)" + } + }, + "user_count": { + "title": "Număr de utilizatori", + "description": "Câți utilizatori doriți să definiți inițial?", + "data": { + "user_count": "Număr de utilizatori" + } + }, + "users": { + "title": "Definiți utilizatorul", + "description": "Introduceți detaliile pentru fiecare profil de utilizator.", + "sections": { + "section_identity_profile": { + "name": "Identitate și profil", + "description": "Identitate principală, conectare cont și setări de personalizare.", + "data": { + "name": "Nume", + "ha_user_id": "Utilizator Asistent Acasă", + "dashboard_language": "Limbă", + "mobile_notify_service": "Notificări", + "notif_click_url": "Adresa URL pentru atingerea notificării" + }, + "data_description": { + "name": "Nume unic pentru acest profil de utilizator.", + "ha_user_id": "Opțional: Conectați acest profil la un utilizator Home Assistant. Dacă modul chioșc este dezactivat, acțiunile de revendicare și valorificare a dispozitivelor partajate se bazează pe această legătură.", + "dashboard_language": "Limba utilizată pentru conținutul tabloului de bord și notificări.", + "mobile_notify_service": "Selectați serviciul de notificări sau lăsați câmpul gol pentru a dezactiva notificările.", + "notif_click_url": "Adresă URL opțională de deschis când se atinge notificarea. Se lasă necompletată pentru comportamentul implicit." + } + }, + "section_system_usage": { + "name": "Utilizarea sistemului", + "description": "Comenzi pentru utilizare normală în treburi casnice și gamificare.", + "data": { + "can_be_assigned": "Poate fi atribuit", + "enable_chore_workflow": "Flux de lucru activat", + "enable_gamification": "Gamificare activată" + }, + "data_description": { + "can_be_assigned": "Permite atribuirea de sarcini casnice acestui profil.", + "enable_chore_workflow": "Activează acțiuni de revendicare/respingere în fluxul de lucru pentru sarcinile atribuite.", + "enable_gamification": "Permite participarea la puncte, insigne și recompense." + } + }, + "section_admin_approval": { + "name": "Opțiuni de administrare și aprobare", + "description": "Aprobare cu privilegii superioare și controale de management.", + "data": { + "can_approve": "Poate aproba", + "can_manage": "Poate gestiona", + "associated_user_ids": "Utilizatori asociați", + "notif_approve_click_url": "Adresa URL pentru notificarea de aprobare", + "chores_paused": "Întrerupeți treburile casnice", + "chores_paused_until": "Întrerupt până la" + }, + "data_description": { + "can_approve": "Permite acțiuni de aprobare și dezaprobare.", + "can_manage": "Permite acțiuni de gestionare care necesită permisiuni privilegiate.", + "associated_user_ids": "Utilizatori pe care acest aprobator/administrator îi supervizează pentru acțiunile de aprobare.", + "notif_approve_click_url": "URL opțional pentru notificările de aprobare. Suprascrie URL-ul general pentru notificări la atingere atunci când se aprobă sarcini casnice sau recompense.", + "chores_paused": "Întrerupe procesarea sarcinilor. Nu se acumulează statistici restante sau ratate.", + "chores_paused_until": "Dată de revenire opțională. Dacă este setată, treburile casnice se reiau automat la miezul nopții după această dată." + } + } + } + }, + "chore_count": { + "title": "Numărul de treburi", + "description": "Câte treburi casnice vrei să definești?", + "data": { + "chore_count": "Numărul de treburi" + } + }, + "chores": { + "title": "Adăugați o sarcină", + "description": "Creează o sarcină nouă cu puncte, sarcini și un program recurent.", + "sections": { + "section_root_form": { + "name": "Definiţie", + "description": "Identitate, atribuire și setări contractuale de bază.", + "data": { + "name": "📋 Numele sarcinii", + "chore_description": "📋 Descriere (opțional)", + "icon": "📋 Pictogramă (mdi:xxx)", + "default_points": "💰 Puncte acordate", + "assigned_user_ids": "👥 Atribuit la", + "completion_criteria": "👥 Criterii de finalizare" + }, + "data_description": { + "name": "Nume unic afișat în tot sistemul.", + "chore_description": "Instrucțiuni sau detalii opționale despre cum se finalizează această sarcină.", + "icon": "Pictogramă Material Design (de exemplu, mdi:broom, mdi:dishwasher).", + "default_points": "Puncte câștigate la finalizare.", + "assigned_user_ids": "Persoane desemnate care pot vedea și revendica această sarcină.", + "completion_criteria": "Controlează modul în care se finalizează sarcina atunci când sunt atribuite mai multe persoane: urmărire individuală, finalizare partajată sau rotație pe ture." + } + }, + "section_schedule": { + "name": "Programa", + "description": "Setări pentru temporizare, fereastră de acces și interval recurent.", + "data": { + "recurring_frequency": "🔄 Program: Frecvență", + "due_date": "📅 Program: Data scadenței (opțional)", + "clear_due_date": "🗑️ Data scadenței clare", + "applicable_days": "📅 Program: Zile aplicabile (opțional)", + "chore_due_window_offset": "⏱️ Interval scadență: Compensare înainte de data scadenței", + "chore_claim_lock_until_window": "🔒 Se deschide fereastra pentru blocarea cererii până la scadență?", + "custom_interval": "🔄 Program: Interval personalizat (pentru Frecvență personalizată)", + "custom_interval_unit": "🔄 Program: Unitate de interval personalizată" + }, + "data_description": { + "recurring_frequency": "Cât de des se repetă sarcina: Zilnic, Săptămânal, Lunar, Anual, Personalizat sau Niciuna.", + "due_date": "Termen limită opțional. Poate fi combinat cu programe recurente.", + "clear_due_date": "Bifați această casetă pentru a elimina data scadentă pentru această sarcină.", + "applicable_days": "Lăsați necompletat pentru toate zilele. Selectați DOAR zile specifice pentru restricționare.", + "chore_due_window_offset": "Când starea sarcinii se schimbă din În așteptare în Scadentă. Format: „1z 6h 30m” sau doar „30” pentru minute. Introduceți „0” pentru dezactivare. Exemplu: „1z” înseamnă că sarcina apare ca „Scadentă” cu 1 zi înainte de termenul limită.", + "chore_claim_lock_until_window": "Când este activată, persoanele desemnate nu pot revendica această sarcină înainte de începerea ferestrei scadente.", + "custom_interval": "Numărul de unități de timp dintre repetiții (de exemplu, 3 pentru „la fiecare 3 săptămâni”). Se utilizează numai cu frecvență personalizată.", + "custom_interval_unit": "Unitate de timp pentru intervalul personalizat (zile, săptămâni, luni). Se utilizează numai cu Frecvență personalizată." + } + }, + "section_advanced_configurations": { + "name": "Configurații avansate", + "description": "Automatizare pe durata ciclului de viață, notificări, vizibilitate și metadate.", + "data": { + "approval_reset_type": "➡️ Finalizări permise și timp de resetare a aprobării", + "approval_reset_pending_claim_action": "➡️ Gestionarea cererilor în așteptare la resetare prin aprobare", + "auto_approve": "✅ Aprobare automată a cererilor?", + "overdue_handling_type": "⏰ Restanță: Manipulare", + "chore_due_reminder_offset": "🔔 Memento scadență: Compensare înainte de data scadenței", + "chore_notifications": "🔔 Evenimente de notificare (opțional)", + "show_on_calendar": "📅 Afișați în Calendar?", + "chore_labels": "📋 Etichete (opțional)" + }, + "data_description": { + "approval_reset_type": "Controlează momentul în care se declanșează limita ciclului de aprobare a sarcinii (miezul nopții, data scadenței, la finalizare sau declanșare manuală).", + "approval_reset_pending_claim_action": "Iată ce se întâmplă cu cererile care încă așteaptă aprobarea atunci când are loc resetarea aprobării.", + "auto_approve": "Când este activată, revendicările sunt aprobate instantaneu, fără a fi revizuite de către aprobator.", + "overdue_handling_type": "Acțiune după data scadenței: Ascundeți starea de depășire, mențineți depășirea până la revendicare sau resetați la în așteptare la următorul ciclu de aprobare.", + "chore_due_reminder_offset": "Când se trimite notificarea de reamintire a scadenței. Format: „1d 6h 30m” sau doar „30” pentru minute. Implicit: 30m (cu 30 de minute înainte de scadență). Introduceți „0” pentru a dezactiva.", + "chore_notifications": "Când se trimit notificări: La revendicare, la aprobare, la respingere sau orice combinație a acestora.", + "show_on_calendar": "Afișează această sarcină în vizualizarea calendarului.", + "chore_labels": "Etichete pentru organizarea treburilor casnice (de exemplu, „bucătărie”, „exterior”). Lăsați necompletat dacă nu este necesar." + } + } + }, + "data": { + "name": "📋 Numele sarcinii", + "chore_description": "📋 Descriere (opțional)", + "icon": "📋 Pictogramă (mdi:xxx)", + "chore_labels": "📋 Etichete (opțional)", + "default_points": "💰 Puncte acordate", + "assigned_user_ids": "👥 Atribuit la", + "completion_criteria": "👥 Criterii de finalizare", + "approval_reset_type": "➡️ Finalizări permise și timp de resetare a aprobării", + "approval_reset_pending_claim_action": "➡️ Gestionarea cererilor în așteptare la resetare prin aprobare", + "overdue_handling_type": "⏰ Restanță: Manipulare", + "chore_claim_lock_until_window": "🔒 Se deschide fereastra pentru blocarea cererii până la scadență?", + "auto_approve": "✅ Aprobare automată a cererilor?", + "recurring_frequency": "🔄 Program: Frecvență", + "custom_interval": "🔄 Program: Interval personalizat (pentru Frecvență personalizată)", + "custom_interval_unit": "🔄 Program: Unitate de interval personalizată", + "applicable_days": "📅 Program: Zile aplicabile (opțional)", + "due_date": "📅 Program: Data scadenței (opțional)", + "chore_due_window_offset": "⏱️ Interval scadență: Compensare înainte de data scadenței", + "chore_due_reminder_offset": "🔔 Memento scadență: Compensare înainte de data scadenței", + "show_on_calendar": "📅 Afișați în Calendar?", + "chore_notifications": "🔔 Evenimente de notificare (opțional)" + }, + "data_description": { + "name": "Nume unic afișat în tot sistemul.", + "chore_description": "Instrucțiuni sau detalii opționale despre cum se finalizează această sarcină.", + "icon": "Pictogramă Material Design (de exemplu, mdi:broom, mdi:dishwasher).", + "chore_labels": "Etichete pentru organizarea treburilor casnice (de exemplu, „bucătărie”, „exterior”). Lăsați necompletat dacă nu este necesar.", + "default_points": "Puncte câștigate la finalizare.", + "assigned_user_ids": "Persoane desemnate care pot vedea și revendica această sarcină.", + "completion_criteria": "Controlează modul în care se finalizează sarcina atunci când sunt atribuite mai multe persoane: urmărire individuală, finalizare partajată sau rotație pe ture.", + "approval_reset_type": "Controlează momentul în care se declanșează limita ciclului de aprobare al sarcinii (miezul nopții, data scadenței, la finalizare sau declanșare manuală).", + "approval_reset_pending_claim_action": "Iată ce se întâmplă cu cererile care încă așteaptă aprobarea atunci când are loc resetarea aprobării.", + "overdue_handling_type": "Acțiune după data scadenței: Ascundeți starea de depășire, mențineți depășirea până la revendicare sau resetați la în așteptare la următorul ciclu de aprobare.", + "chore_claim_lock_until_window": "Când este activată, persoanele desemnate nu pot revendica această sarcină înainte de începerea ferestrei de termen limită.", + "auto_approve": "Când este activată, revendicările sunt aprobate instantaneu, fără a fi revizuite de către aprobator.", + "recurring_frequency": "Cât de des se repetă sarcina: Zilnic, Săptămânal, Lunar, Anual, Personalizat sau Niciuna.", + "custom_interval": "Numărul de unități de timp dintre repetări (de exemplu, 3 pentru „la fiecare 3 săptămâni”). Se utilizează numai cu frecvență personalizată.", + "custom_interval_unit": "Unitate de timp pentru intervalul personalizat (zile, săptămâni, luni). Se utilizează numai cu Frecvență personalizată.", + "applicable_days": "Lăsați necompletat pentru toate zilele. Selectați DOAR zile specifice pentru restricționare.", + "due_date": "Termen limită opțional. Poate fi combinat cu programe recurente.", + "chore_due_window_offset": "Când starea sarcinii se schimbă din În așteptare în Scadentă. Format: „1z 6h 30m” sau doar „30” pentru minute. Introduceți „0” pentru dezactivare. Exemplu: „1z” înseamnă că sarcina apare ca „Scadentă” cu 1 zi înainte de termenul limită.", + "chore_due_reminder_offset": "Când se trimite notificarea de reamintire a scadenței. Format: „1d 6h 30m” sau doar „30” pentru minute. Implicit: 30m (cu 30 de minute înainte de scadență). Introduceți „0” pentru a dezactiva.", + "show_on_calendar": "Afișează această sarcină în vizualizarea calendarului.", + "chore_notifications": "Când se trimit notificări: La revendicare, la aprobare, la respingere sau orice combinație a acestora." + } + }, + "badge_count": { + "title": "Numărul de insigne", + "description": "Câte insigne vrei să definești?", + "data": { + "badge_count": "Număr de insigne" + } + }, + "badges": { + "title": "Adăugați insignă cumulativă", + "description": "Configurați detaliile pentru o insignă cumulativă. Aceste insigne recompensează persoanele care ating pragurile de puncte pe viață și susțin ciclurile de mentenanță pentru a încuraja performanța continuă.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "badge_name": "Numele insignei", + "badge_description": "Descrierea insignei (opțional)", + "badge_labels": "Etichete (opțional)", + "icon": "Pictogramă insignă (mdi:xxx)", + "target_type": "🎯 ȚINTĂ: Tip de țintă", + "threshold_value": "🎯 ȚINTĂ: Valoare prag", + "maintenance_rules": "🎯 ȚINTĂ: Puncte de întreținere (opțional)", + "occasion_type": "🎉 Tipul ocaziei", + "associated_achievement": "🏆 Realizare asociată", + "selected_chores": "🧹 Treburi casnice urmărite (opțional)", + "assigned_user_ids": "🧒 Atribuit la", + "award_items": "🎁 PREMII: Puncte selectate, Recompense, Bonusuri, Multiplicator (Opțional)", + "award_points": "🎁 PREMII: Puncte acordate (opțional)", + "points_multiplier": "🎁 PREMII: Multiplicator de puncte (Implicit 💎 1.0x)", + "recurring_frequency": "🔄 CICLU DE ÎNTREȚINERE: Frecvență", + "custom_interval": "🔄 CICLU DE ÎNTREȚINERE: Interval personalizat (obligatoriu pentru frecvența personalizată)", + "custom_interval_unit": "🔄 CICLU DE ÎNTREȚINERE: Unitate de interval personalizată (necesară pentru frecvența personalizată)", + "start_date": "🔄 RESETARE CICLU: Data începerii (opțional)", + "end_date": "🔄 CICLU DE ÎNTREȚINERE: Data de încheiere (opțional)", + "grace_period_days": "🔄 CICLU DE ÎNTREȚINERE: Perioadă de grație în zile (opțional)" + }, + "data_description": { + "badge_name": "Introduceți un nume unic pentru insignă. Acest nume va fi afișat în sistem.", + "badge_description": "Furnizați o descriere a scopului sau criteriilor insignei (opțional).", + "badge_labels": "Adăugați etichete pentru a clasifica sau a eticheta insigna (opțional).", + "icon": "Specificați o pictogramă pentru insignă folosind pictograme Material Design (de exemplu, mdi:star).", + "target_type": "Selectați tipul de țintă pentru această insignă (de exemplu, puncte sau număr de treburi).", + "threshold_value": "Setați numărul total de puncte pe viață necesar pentru a câștiga această insignă.", + "maintenance_rules": "Specificați punctele minime necesare în timpul ciclului de întreținere pentru a păstra insigna și multiplicatorul activ al acesteia (opțional).", + "occasion_type": "Alegeți tipul de ocazie pentru această insignă (de exemplu, sărbătoare, zi de naștere).", + "associated_achievement": "Conectează această insignă la o realizare pentru urmărire.", + "selected_chores": "Selectați treburile casnice care contribuie la obținerea punctelor pentru această insignă. Lăsați câmpul necompletat dacă doriți să urmăriți toate treburile atribuite (opțional).", + "assigned_user_ids": "Atribuiți această insignă anumitor persoane pentru urmărire.", + "award_items": "Selectați unul sau mai multe dintre puncte, recompense, bonusuri sau un multiplicator de puncte. Toate articolele selectate vor fi acordate sau aplicate la câștigarea insignei. (opțional)", + "award_points": "Dacă punctele sunt un premiu selectat, specificați numărul de puncte care vor fi aplicate la obținerea acestei insigne. (opțional).", + "points_multiplier": "Dacă multiplicatorul este un premiu selectat, setează un multiplicator pentru punctele câștigate cât timp această insignă este activă (de exemplu, 1,5x).", + "recurring_frequency": "Activează ciclul de întreținere, necesitând acumularea punctului minim specificat înainte de sfârșitul perioadei (de exemplu, săptămânal, lunar).", + "custom_interval": "Specificați NUMĂRUL de zile, săptămâni, luni etc. pentru Frecvență personalizată (de exemplu, 3 dacă setați 3 săptămâni). Se aplică numai pentru Frecvența personalizată.", + "custom_interval_unit": "Selectați unitatea pentru intervalul personalizat (de exemplu, zile, săptămâni). Se aplică numai pentru Frecvența personalizată.", + "start_date": "Setați data de începere (opțional).", + "end_date": "Selectați data de sfârșit a ciclului de întreținere. (opțional).", + "grace_period_days": "Specificați numărul de zile suplimentare după sfârșitul ciclului de desemnare pentru a îndeplini punctele necesare înainte de retrogradare. (opțional)." + } + }, + "reward_count": { + "title": "Numărul de recompense", + "description": "Câte recompense doriți să definiți?", + "data": { + "reward_count": "Număr de recompense" + } + }, + "rewards": { + "title": "Definiți recompensa", + "description": "Introduceți detaliile pentru fiecare recompensă.", + "data": { + "name": "Numele recompensei", + "internal_id": "ID intern", + "cost": "Costul recompensei", + "description": "Descriere (opțional)", + "reward_labels": "Etichete de recompensă", + "icon": "Pictogramă (mdi:xxx)" + } + }, + "penalty_count": { + "title": "Numărul de penalități", + "description": "Câte penalități vrei să definești?", + "data": { + "penalty_count": "Numărul de penalizări" + } + }, + "penalties": { + "title": "Definiți penalizarea", + "description": "Introduceți detalii pentru fiecare penalizare.", + "data": { + "name": "Numele penalizării", + "penalty_description": "Descriere (opțional)", + "penalty_labels": "Etichete de penalizare", + "internal_id": "ID intern", + "penalty_points": "Puncte de penalizare (negative)", + "icon": "Pictogramă (mdi:xxx)" + } + }, + "bonus_count": { + "title": "Numărul de bonusuri", + "description": "Câte bonusuri vrei să definești?", + "data": { + "bonus_count": "Numărul de bonusuri" + } + }, + "bonuses": { + "title": "Definiți bonusul", + "description": "Introduceți detaliile pentru fiecare bonus.", + "data": { + "name": "Nume bonus", + "bonus_description": "Descriere (opțional)", + "bonus_labels": "Etichete bonus", + "internal_id": "ID intern", + "bonus_points": "Puncte bonus", + "icon": "Pictogramă (mdi:xxx)" + } + }, + "achievement_count": { + "title": "Numărul de realizări", + "description": "Câte realizări vrei să definești?", + "data": { + "achievement_count": "Numărul de realizări" + } + }, + "achievements": { + "title": "Definiți realizările", + "description": "Introduceți detalii pentru fiecare realizare.", + "data": { + "name": "Numele realizării", + "description": "Descriere (opțional)", + "achievement_labels": "Etichete de realizare", + "icon": "Pictogramă (mdi:xxx)", + "assigned_user_ids": "Atribuit la", + "type": "Tipul de realizare", + "selected_chore_id": "Selectați sarcina asociată", + "criteria": "Criterii (opțional)", + "target_value": "Țintă de realizare", + "reward_points": "Puncte suplimentare pentru finalizarea realizării", + "internal_id": "ID intern" + } + }, + "challenge_count": { + "title": "Numărul de provocări", + "description": "Câte provocări vrei să definești?", + "data": { + "challenge_count": "Număr de provocări" + } + }, + "challenges": { + "title": "Definiți provocarea", + "description": "Introduceți detalii pentru fiecare provocare.", + "data": { + "name": "Numele provocării", + "description": "Descriere (opțional)", + "challenge_labels": "Etichete de provocare", + "icon": "Pictogramă (mdi:xxx)", + "assigned_user_ids": "Atribuit la", + "type": "Tipul de provocare", + "selected_chore_id": "Selectați sarcina asociată provocării (opțional)", + "criteria": "Criterii (opțional)", + "target_value": "Provocări țintă", + "reward_points": "Puncte suplimentare pentru finalizarea provocării", + "start_date": "Data de începere", + "end_date": "Data de încheiere", + "internal_id": "ID intern" + } + }, + "finish": { + "title": "Revizuire și finalizare", + "description": "Verificați configurarea:\n{summary}\nFaceți clic pe Trimite pentru a finaliza." + } + }, + "error": { + "a_chore_must_be_selected": "Trebuie selectată o sarcină", + "badge_requires_assignment": "Cel puțin o persoană trebuie să fie atribuită acestei insigne.", + "error_badge_achievement_required": "O realizare trebuie selectată pentru insignele legate de realizări", + "error_badge_occasion_type_required": "Este necesar un tip de ocazie pentru insignele pentru ocazii speciale.", + "target_threshold_required": "Pragul țintă este obligatoriu", + "invalid_maintenance_rules": "Valoarea regulilor de întreținere este nevalidă", + "error_badge_challenge_required": "Trebuie selectată o provocare pentru insignele legate de provocare", + "error_award_points_minimum": "Punctele de premiere trebuie să fie mai mari decât zero", + "error_award_invalid_multiplier": "Multiplicatorul de puncte trebuie să fie mai mare decât zero", + "invalid_award_item_selected": "Unul sau mai multe articole de premiu selectate sunt nevalide", + "start_date_required": "Data de începere este obligatorie", + "end_date_required": "Data de încheiere este obligatorie", + "end_date_before_start_date": "Data de încheiere trebuie să fie ulterioară datei de începere", + "duplicate_achievement": "Există deja o realizare cu acest nume", + "duplicate_badge": "Există deja o insignă cu acest nume", + "duplicate_challenge": "Există deja o provocare cu acest nume", + "duplicate_chore": "Există deja o sarcină cu acest nume", + "duplicate_assignee": "Există deja o persoană desemnată cu acest nume", + "duplicate_approver": "Există deja un utilizator cu acest nume", + "duplicate_penalty": "Există deja o penalizare cu acest nume", + "duplicate_reward": "Există deja o recompensă cu acest nume", + "duplicate_bonus": "Există deja un bonus cu acest nume", + "due_date_in_past": "Data scadenței trebuie să fie în viitor.", + "end_date_in_past": "Data de încheiere trebuie să fie în viitor.", + "end_date_not_after_start_date": "Data de încheiere trebuie să fie ulterioară datei de începere", + "err_end_before_start": "Data de încheiere trebuie să fie ulterioară datei de începere", + "err_name_duplicate": "Există deja o provocare cu acest nume", + "err_name_required": "Numele provocării este obligatoriu", + "err_dates_required": "Datele de început și de sfârșit sunt obligatorii", + "err_invalid_date": "Datele provocării sunt nevalide", + "err_target_invalid": "Valoarea țintă a provocării trebuie să fie mai mare decât zero", + "err_points_negative": "Punctele de recompensă pentru provocare nu pot fi negative", + "err_points_invalid": "Punctele de recompensă pentru provocare nu sunt valide", + "achievement_no_assignees_assigned": "Cel puțin o persoană trebuie să fie atribuită realizării.", + "challenge_no_assignees_assigned": "Cel puțin o persoană desemnată trebuie să fie atribuită provocării.", + "invalid_achievement_count": "Număr de realizări nevalid", + "invalid_achievement_name": "Nume de realizare nevalid", + "invalid_achievement_reward_points": "Punctele de recompensă pentru realizări trebuie să fie zero sau mai mari, cu maximum 2 zecimale.", + "invalid_badge": "Insignă nevalidă", + "invalid_badge_count": "Număr de insigne nevalid", + "invalid_badge_name": "Nume de insignă nevalid", + "invalid_challenge_count": "Număr de provocări nevalide", + "invalid_challenge_name": "Nume de provocare nevalid", + "invalid_chore": "Sarcină nevalidă", + "invalid_chore_count": "Număr de sarcini nevalid", + "rotation_min_assignees": "Treburile casnice prin rotație necesită cel puțin 2 persoane desemnate", + "invalid_chore_name": "Nume de sarcină nevalid", + "custom_interval_required": "Intervalul personalizat este obligatoriu pentru frecvențele personalizate", + "custom_interval_invalid": "Intervalul personalizat trebuie să fie un număr întreg mai mare decât zero", + "custom_interval_unit_required": "Unitatea de interval personalizată este necesară pentru frecvențele personalizate", + "custom_interval_unit_invalid": "Unitatea de interval personalizată trebuie să fie ore, zile, săptămâni sau luni", + "invalid_points": "Punctele trebuie să fie zero sau mai mari", + "invalid_overdue_reset_combination": "Gestionarea depășirilor „La data scadenței, apoi resetare” funcționează numai cu tipurile de resetare la miezul nopții. Selectați „La miezul nopții (o dată)” sau „La miezul nopții (repetată)” pentru tipul de resetare aprobat.", + "invalid_due_date": "Data scadenței este invalidă", + "date_required_for_frequency": "Este necesară o dată scadentă pentru această frecvență recurentă. Ștergerea datelor funcționează numai cu frecvența Niciuna sau Zilnică.", + "invalid_end_date": "Dată de încheiere nevalidă.", + "invalid_assignee_count": "Număr de persoane desemnate nevalid", + "invalid_assignee_name": "Nume de desemnat nevalid", + "invalid_user_count": "Număr de utilizatori nevalid", + "invalid_approver_name": "Nume de utilizator nevalid", + "no_assignees_assigned": "Cel puțin o persoană trebuie să fie desemnată sarcinii.", + "invalid_penalty": "Penalizare invalidă", + "invalid_penalty_count": "Număr de penalizări nevalid", + "invalid_penalty_name": "Nume de penalizare nevalid", + "invalid_reward": "Recompensă nevalidă", + "invalid_reward_count": "Număr de recompense nevalid", + "invalid_reward_name": "Nume de recompensă nevalid", + "invalid_reward_cost": "Costul recompensei trebuie să fie zero sau mai mare, cu maximum 2 zecimale.", + "invalid_reward_assigned_users": "Unul sau mai mulți utilizatori atribuiți nu sunt valizi", + "mixed_reward_assignment_sentinel": "Nu se pot combina „toți utilizatorii” cu utilizatori specifici", + "invalid_bonus": "Bonus nevalid", + "invalid_bonus_count": "Număr de bonusuri nevalid", + "invalid_bonus_name": "Nume bonus nevalid", + "invalid_start_date": "Dată de începere nevalidă.", + "start_date_in_past": "Data de începere trebuie să fie în viitor.", + "points_label_required": "Eticheta punctelor este obligatorie", + "corrupt_file": "Fișierul selectat conține JSON nevalid și nu poate fi citit.", + "invalid_structure": "Fișierului selectat îi lipsește structura de date necesară.", + "file_not_found": "Fișierul selectat nu a putut fi găsit.", + "invalid_selection": "Vă rugăm să selectați o opțiune validă.", + "invalid_input": "Datele introduse sunt nevalide. Vă rugăm să verificați intrările și să încercați din nou.", + "duplicate_name": "Există deja un element cu acest nume. Vă rugăm să alegeți un alt nume.", + "invalid_date_range": "Intervalul de date este nevalid. Data de încheiere trebuie să fie ulterioară datei de început.", + "missing_required": "Câmpul obligatoriu lipsește. Vă rugăm să furnizați toate informațiile necesare.", + "invalid_format": "Formatul este invalid. Verificați datele introduse și încercați din nou.", + "usage_requires_assignment_or_approval": "Activați fie „Poate fi atribuit”, fie „Poate fi aprobat”.", + "associated_users_require_approval": "„Utilizatori asociați” pot fi setați numai atunci când este activată opțiunea „Poate aproba”.", + "approval_requires_associated_users": "Este necesar cel puțin un desemnat/utilizator asociat atunci când este activată opțiunea „Poate aproba”.", + "chore_options_require_assignment": "Opțiunile de flux de lucru pentru treburi casnice și de gamificare necesită mai întâi activarea opțiunii „Permiteți atribuirea treburilor casnice”.", + "invalid_update_interval": "Interval de actualizare nevalid. Trebuie să fie un număr întreg pozitiv.", + "invalid_calendar_show_period": "Perioadă de afișare a calendarului nevalidă. Trebuie să fie un număr întreg pozitiv.", + "invalid_default_chore_points": "Puncte implicite pentru sarcini nevalide. Trebuie să fie un număr pozitiv mai mare decât 0, cu cel mult 2 zecimale.", + "invalid_retention_period": "Perioadă de păstrare nevalidă. Trebuie să fie un număr întreg pozitiv.", + "invalid_points_adjust_values": "Valori de ajustare a punctelor nevalide. Trebuie să fie o listă." + }, + "abort": { + "single_instance_allowed": "Poate fi configurată o singură instanță ChoreOps.", + "already_configured": "Datele ChoreOps au fost restaurate cu succes. Acum puteți reîncărca integrarea.", + "file_not_found": "Fișierul de rezervă selectat nu a putut fi găsit.", + "corrupt_file": "Fișierul selectat conține JSON nevalid și nu poate fi citit.", + "invalid_structure": "Fișierul selectat nu are structura de date ChoreOps obligatorie.", + "reconfigure_failed": "Reconfigurarea a eșuat. Vă rugăm să încercați din nou.", + "reconfigure_successful": "Setările de sistem au fost actualizate cu succes." + } + }, + "options": { + "step": { + "init": { + "title": "Opțiuni ChoreOps", + "description": "Gestionează-ți operațiunile casnice, motorul de gamificare și preferințele de sistem.\n\n ℹ️ [Vezi documentația]({documentation_url})            ❤️ _[Suport ChoreOps]({sponsor_url})_", + "data": { + "menu_selection": "Selectați o opțiune" + } + }, + "manage_entity": { + "title": "Selectați acțiunea", + "description": "Adăugați, editați sau ștergeți opțiuni.", + "data": { + "manage_action": "Selectați o acțiune" + } + }, + "challenge_coming_soon": { + "title": "Provocări în curând", + "description": "Provocările vor fi disponibile în actualizările viitoare.\n\nÎn timpul migrării, înregistrările existente ale provocărilor sunt convertite în sisteme echivalente de urmărire periodică a insignelor pentru a păstra intenția și comportamentul de progres acolo unde este posibil. Insignele legate de provocări sunt eliminate în această versiune.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": {} + }, + "select_entity": { + "title": "Selectați {entity_type}", + "description": "Selectați {entity_type} pe care doriți să îl {action}.", + "data": { + "entity_name": "Nume" + } + }, + "manage_points": { + "title": "Editați setările punctelor", + "description": "Schimbă eticheta, pictograma și punctele implicite pentru fiecare sarcină utilizate în ChoreOps.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "points_label": "Etichetă puncte", + "points_icon": "Pictogramă puncte", + "default_chore_points": "Puncte implicite per sarcină" + }, + "data_description": { + "default_chore_points": "Valoarea implicită a punctelor este utilizată pentru sarcinile noi atunci când nu sunt specificate puncte personalizate. Trebuie să fie un număr pozitiv mai mare decât 0, cu cel mult 2 zecimale." + } + }, + "add_user": { + "title": "Adăugați utilizator", + "description": "Furnizați detaliile pentru noul profil de utilizator.\n\n{user_access_warning}\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "sections": { + "section_identity_profile": { + "name": "Identitate și profil", + "description": "Identitate principală, conectare cont și setări de personalizare.", + "data": { + "name": "Nume", + "ha_user_id": "Utilizator Asistent Acasă", + "dashboard_language": "Limbă", + "mobile_notify_service": "Notificări", + "notif_click_url": "Adresa URL pentru atingerea notificării" + }, + "data_description": { + "name": "Nume unic pentru acest profil de utilizator.", + "ha_user_id": "Opțional: Conectați acest profil la un utilizator Home Assistant. Dacă modul chioșc este dezactivat, acțiunile de revendicare și valorificare a dispozitivelor partajate se bazează pe această legătură.", + "dashboard_language": "Limba utilizată pentru conținutul tabloului de bord și notificări.", + "mobile_notify_service": "Selectați serviciul de notificări sau lăsați câmpul gol pentru a dezactiva notificările.", + "notif_click_url": "Adresă URL opțională de deschis când se atinge notificarea. Se lasă necompletată pentru comportamentul implicit." + } + }, + "section_system_usage": { + "name": "Utilizarea sistemului", + "description": "Comenzi pentru utilizare normală în treburi casnice și gamificare.", + "data": { + "can_be_assigned": "Poate fi atribuit", + "enable_chore_workflow": "Flux de lucru activat", + "enable_gamification": "Gamificare activată" + }, + "data_description": { + "can_be_assigned": "Permite atribuirea de sarcini casnice acestui profil.", + "enable_chore_workflow": "Activează acțiuni de revendicare/respingere în fluxul de lucru pentru sarcinile atribuite.", + "enable_gamification": "Permite participarea la puncte, insigne și recompense." + } + }, + "section_admin_approval": { + "name": "Opțiuni de administrare și aprobare", + "description": "Aprobare cu privilegii superioare și controale de management.", + "data": { + "can_approve": "Poate aproba", + "can_manage": "Poate gestiona", + "associated_user_ids": "Utilizatori asociați", + "notif_approve_click_url": "Adresa URL pentru notificarea de aprobare", + "chores_paused": "Întrerupeți treburile casnice", + "chores_paused_until": "Întrerupt până la" + }, + "data_description": { + "can_approve": "Permite acțiuni de aprobare și dezaprobare.", + "can_manage": "Permite acțiuni de gestionare care necesită permisiuni privilegiate.", + "associated_user_ids": "Utilizatori pe care acest aprobator/administrator îi supervizează pentru acțiunile de aprobare.", + "notif_approve_click_url": "URL opțional pentru notificările de aprobare. Suprascrie URL-ul general pentru notificări la atingere atunci când se aprobă sarcini casnice sau recompense.", + "chores_paused": "Întrerupe procesarea sarcinilor. Nu se acumulează statistici restante sau ratate.", + "chores_paused_until": "Dată de revenire opțională. Dacă este setată, treburile casnice se reiau automat la miezul nopții după această dată." + } + } + } + }, + "add_chore": { + "title": "Adăugați o sarcină", + "description": "Creează o sarcină nouă cu puncte, sarcini și un program recurent.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "sections": { + "section_root_form": { + "name": "Definiţie", + "description": "Identitate, atribuire și setări contractuale de bază.", + "data": { + "name": "📋 Numele sarcinii", + "chore_description": "📋 Descriere (opțional)", + "icon": "📋 Pictogramă (mdi:xxx)", + "default_points": "💰 Puncte acordate", + "assigned_user_ids": "👥 Atribuit la", + "completion_criteria": "👥 Criterii de finalizare" + }, + "data_description": { + "name": "Nume unic afișat în tot sistemul.", + "chore_description": "Instrucțiuni sau detalii opționale despre cum se finalizează această sarcină.", + "icon": "Pictogramă Material Design (de exemplu, mdi:broom, mdi:dishwasher).", + "default_points": "Puncte câștigate la finalizare.", + "assigned_user_ids": "Persoane desemnate care pot vedea și revendica această sarcină.", + "completion_criteria": "Controlează modul în care se finalizează sarcina atunci când sunt atribuite mai multe persoane: urmărire individuală, finalizare partajată sau rotație pe ture." + } + }, + "section_schedule": { + "name": "Programa", + "description": "Setări pentru temporizare, fereastră de acces și interval recurent.", + "data": { + "recurring_frequency": "🔄 Program: Frecvență", + "due_date": "📅 Program: Data scadenței (opțional)", + "clear_due_date": "🗑️ Data scadenței clare", + "applicable_days": "📅 Program: Zile aplicabile (opțional)", + "chore_due_window_offset": "⏱️ Interval scadență: Compensare înainte de data scadenței", + "chore_claim_lock_until_window": "🔒 Se deschide fereastra pentru blocarea cererii până la scadență?", + "custom_interval": "🔄 Program: Interval personalizat (pentru Frecvență personalizată)", + "custom_interval_unit": "🔄 Program: Unitate de interval personalizată" + }, + "data_description": { + "recurring_frequency": "Cât de des se repetă sarcina: Zilnic, Săptămânal, Lunar, Anual, Personalizat sau Niciuna. Dacă selectați „Zilnic - De mai multe ori pe zi”, va apărea un ecran suplimentar pentru a configura orele specifice.", + "due_date": "Termen limită opțional. Poate fi combinat cu programe recurente. Pentru treburile INDEPENDENTE, acesta servește drept șablon - va apărea un ecran suplimentar care permite date individuale per utilizator.", + "clear_due_date": "Bifați această casetă pentru a elimina data scadentă pentru această sarcină.", + "applicable_days": "Lăsați necompletat pentru toate zilele. Selectați DOAR zile specifice pentru restricționare.", + "chore_due_window_offset": "Când starea sarcinii se schimbă din În așteptare în Scadentă. Format: „1z 6h 30m” sau doar „30” pentru minute. Introduceți „0” pentru dezactivare. Exemplu: „1z” înseamnă că sarcina apare ca „Scadentă” cu 1 zi înainte de termenul limită.", + "chore_claim_lock_until_window": "Când este activată, persoanele desemnate nu pot revendica această sarcină înainte de începerea ferestrei de termen limită.", + "custom_interval": "Numărul de unități de timp dintre repetări (de exemplu, 3 pentru „la fiecare 3 săptămâni”). Se utilizează numai cu frecvență personalizată.", + "custom_interval_unit": "Unitate de timp pentru intervalul personalizat (zile, săptămâni, luni). Se utilizează numai cu Frecvență personalizată." + } + }, + "section_advanced_configurations": { + "name": "Configurații avansate", + "description": "Automatizare pe durata ciclului de viață, notificări, vizibilitate și metadate.", + "data": { + "approval_reset_type": "➡️ Finalizări permise și timp de resetare a aprobării", + "approval_reset_pending_claim_action": "➡️ Gestionarea cererilor în așteptare la resetare prin aprobare", + "auto_approve": "✅ Aprobare automată a cererilor?", + "overdue_handling_type": "⏰ Restanță: Manipulare", + "chore_due_reminder_offset": "🔔 Memento scadență: Compensare înainte de data scadenței", + "chore_notifications": "🔔 Evenimente de notificare (opțional)", + "show_on_calendar": "📅 Afișați în Calendar?", + "chore_labels": "📋 Etichete (opțional)" + }, + "data_description": { + "approval_reset_type": "Controlează momentul în care se declanșează limita ciclului de aprobare a sarcinii (miezul nopții, data scadenței, la finalizare sau declanșare manuală).", + "approval_reset_pending_claim_action": "Controlează ce se întâmplă cu revendicările neaprobate atunci când se declanșează limita de resetare a aprobării.", + "auto_approve": "Când este activată, revendicările sunt aprobate instantaneu, fără a fi revizuite de către aprobator.", + "overdue_handling_type": "Controlează ce se întâmplă când trece data scadenței și ce se întâmplă cu sarcinile restante la limita de resetare a aprobării.", + "chore_due_reminder_offset": "Când se trimite notificarea de reamintire a scadenței. Format: „1d 6h 30m” sau doar „30” pentru minute. Implicit: 30m (cu 30 de minute înainte de scadență). Introduceți „0” pentru a dezactiva.", + "chore_notifications": "Când se trimit notificări: La revendicare, la aprobare, la respingere sau orice combinație a acestora.", + "show_on_calendar": "Afișează această sarcină în vizualizarea calendarului.", + "chore_labels": "Etichete pentru organizarea treburilor casnice (de exemplu, „bucătărie”, „exterior”). Lăsați necompletat dacă nu este necesar." + } + } + }, + "data": { + "name": "📋 Numele sarcinii", + "chore_description": "📋 Descriere (opțional)", + "icon": "📋 Pictogramă (mdi:xxx)", + "chore_labels": "📋 Etichete (opțional)", + "default_points": "💰 Puncte acordate", + "assigned_user_ids": "👥 Atribuit la", + "completion_criteria": "👥 Criterii de finalizare", + "approval_reset_type": "➡️ Finalizări permise și timp de resetare a aprobării", + "approval_reset_pending_claim_action": "➡️ Gestionarea cererilor în așteptare la resetare prin aprobare", + "overdue_handling_type": "⏰ Restanță: Manipulare", + "chore_claim_lock_until_window": "🔒 Se deschide fereastra pentru blocarea cererii până la scadență?", + "auto_approve": "✅ Aprobare automată a cererilor?", + "recurring_frequency": "🔄 Program: Frecvență", + "custom_interval": "🔄 Program: Interval personalizat (pentru Frecvență personalizată)", + "custom_interval_unit": "🔄 Program: Unitate de interval personalizată", + "applicable_days": "📅 Program: Zile aplicabile (opțional)", + "due_date": "📅 Program: Data scadenței (opțional)", + "clear_due_date": "🗑️ Data scadenței clare", + "chore_due_window_offset": "⏱️ Interval scadență: Compensare înainte de data scadenței", + "chore_due_reminder_offset": "🔔 Memento scadență: Compensare înainte de data scadenței", + "show_on_calendar": "📅 Afișați în Calendar?", + "chore_notifications": "🔔 Evenimente de notificare (opțional)" + }, + "data_description": { + "name": "Nume unic afișat în tot sistemul.", + "chore_description": "Instrucțiuni sau detalii opționale despre cum se finalizează această sarcină.", + "icon": "Pictogramă Material Design (de exemplu, mdi:broom, mdi:dishwasher).", + "chore_labels": "Etichete pentru organizarea treburilor casnice (de exemplu, „bucătărie”, „exterior”). Lăsați necompletat dacă nu este necesar.", + "default_points": "Puncte câștigate la finalizare.", + "assigned_user_ids": "Persoane desemnate care pot vedea și revendica această sarcină.", + "completion_criteria": "Controlează modul în care se finalizează sarcina atunci când sunt atribuite mai multe persoane: urmărire individuală, finalizare partajată sau rotație pe ture.", + "approval_reset_type": "Controlează momentul în care se declanșează limita ciclului de aprobare a sarcinii (miezul nopții, data scadenței, la finalizare sau declanșare manuală).", + "approval_reset_pending_claim_action": "Controlează ce se întâmplă cu revendicările neaprobate atunci când se declanșează limita de resetare a aprobării.", + "overdue_handling_type": "Controlează ce se întâmplă când trece data scadenței și ce se întâmplă cu sarcinile restante la limita de resetare a aprobării.", + "chore_claim_lock_until_window": "Când este activată, persoanele desemnate nu pot revendica această sarcină înainte de începerea ferestrei scadente.", + "auto_approve": "Când este activată, revendicările sunt aprobate instantaneu, fără a fi revizuite de către aprobator.", + "recurring_frequency": "Cât de des se repetă sarcina: Zilnic, Săptămânal, Lunar, Anual, Personalizat sau Niciuna. Dacă selectați „Zilnic - De mai multe ori pe zi”, va apărea un ecran suplimentar pentru a configura orele specifice.", + "custom_interval": "Numărul de unități de timp dintre repetiții (de exemplu, 3 pentru „la fiecare 3 săptămâni”). Se utilizează numai cu frecvență personalizată.", + "custom_interval_unit": "Unitate de timp pentru intervalul personalizat (zile, săptămâni, luni). Se utilizează numai cu Frecvență personalizată.", + "applicable_days": "Lăsați necompletat pentru toate zilele. Selectați DOAR zile specifice pentru restricționare.", + "due_date": "Termen limită opțional. Poate fi combinat cu programe recurente. Pentru treburile INDEPENDENTE, acesta servește drept șablon - va apărea un ecran suplimentar care permite date individuale per utilizator.", + "clear_due_date": "Bifați această casetă pentru a elimina data scadentă pentru această sarcină.", + "chore_due_window_offset": "Când starea sarcinii se schimbă din În așteptare în Scadentă. Format: „1z 6h 30m” sau doar „30” pentru minute. Introduceți „0” pentru dezactivare. Exemplu: „1z” înseamnă că sarcina apare ca „Scadentă” cu 1 zi înainte de termenul limită.", + "chore_due_reminder_offset": "Când se trimite notificarea de reamintire a scadenței. Format: „1d 6h 30m” sau doar „30” pentru minute. Implicit: 30m (cu 30 de minute înainte de scadență). Introduceți „0” pentru a dezactiva.", + "show_on_calendar": "Afișează această sarcină în vizualizarea calendarului.", + "chore_notifications": "Când se trimit notificări: La revendicare, la aprobare, la respingere sau orice combinație a acestora." + } + }, + "add_badge": { + "title": "Adăugați insignă", + "description": "Furnizați tipul dorit pentru noua insignă.", + "data": { + "badge_type": "Tipul insignei" + } + }, + "add_badge_cumulative": { + "title": "Adăugați insignă cumulativă", + "description": "Configurați detaliile pentru o insignă cumulativă. Aceste insigne recompensează persoanele care ating pragurile de puncte pe viață și susțin ciclurile de mentenanță pentru a încuraja performanța continuă.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "badge_name": "Numele insignei", + "badge_description": "Descrierea insignei (opțional)", + "badge_labels": "Etichete (opțional)", + "icon": "Pictogramă insignă (mdi:xxx)", + "target_type": "🎯 ȚINTĂ: Tip de țintă", + "threshold_value": "🎯 ȚINTĂ: Valoare prag", + "maintenance_rules": "🎯 ȚINTĂ: Puncte de întreținere (opțional)", + "occasion_type": "🎉 Tipul ocaziei", + "associated_achievement": "🏆 Realizare asociată", + "selected_chores": "🧹 Treburi casnice monitorizate (opțional)", + "assigned_user_ids": "🧒 Atribuit la", + "award_items": "🎁 PREMII: Puncte selectate, Recompense, Bonusuri, Multiplicator (Opțional)", + "award_points": "🎁 PREMII: Puncte acordate (opțional)", + "points_multiplier": "🎁 PREMII: Multiplicator de puncte (Implicit 💎 1.0x)", + "recurring_frequency": "🔄 CICLU DE ÎNTREȚINERE: Frecvență", + "custom_interval": "🔄 CICLU DE ÎNTREȚINERE: Interval personalizat (obligatoriu pentru frecvența personalizată)", + "custom_interval_unit": "🔄 CICLU DE ÎNTREȚINERE: Unitate de interval personalizată (necesară pentru frecvența personalizată)", + "start_date": "🔄 RESETARE CICLU: Data începerii (opțional)", + "end_date": "🔄 CICLU DE ÎNTREȚINERE: Data de încheiere (opțional)", + "grace_period_days": "🔄 CICLU DE ÎNTREȚINERE: Perioadă de grație în zile (opțional)" + }, + "data_description": { + "badge_name": "Introduceți un nume unic pentru insignă. Acest nume va fi afișat în sistem.", + "badge_description": "Furnizați o descriere a scopului sau criteriilor insignei (opțional).", + "badge_labels": "Adăugați etichete pentru a clasifica sau a eticheta insigna (opțional).", + "icon": "Specificați o pictogramă pentru insignă folosind pictograme Material Design (de exemplu, mdi:star).", + "target_type": "Selectați tipul de țintă pentru această insignă (de exemplu, puncte sau număr de treburi).", + "threshold_value": "Setați numărul total de puncte pe viață necesar pentru a câștiga această insignă.", + "maintenance_rules": "Specificați punctele minime necesare în timpul ciclului de întreținere pentru a păstra insigna și multiplicatorul activ al acesteia (opțional).", + "occasion_type": "Alegeți tipul de ocazie pentru această insignă (de exemplu, sărbătoare, zi de naștere).", + "associated_achievement": "Conectează această insignă la o realizare pentru urmărire.", + "selected_chores": "Selectați treburile casnice care contribuie la obținerea punctelor pentru această insignă. Lăsați câmpul necompletat pentru a urmări toate treburile atribuite (opțional).", + "assigned_user_ids": "Atribuiți această insignă anumitor persoane pentru urmărire.", + "award_items": "Selectați unul sau mai multe dintre puncte, recompense, bonusuri sau un multiplicator de puncte. Toate articolele selectate vor fi acordate sau aplicate la câștigarea insignei. (opțional)", + "award_points": "Dacă punctele sunt un premiu selectat, specificați numărul de puncte care vor fi aplicate la obținerea acestei insigne. (opțional).", + "points_multiplier": "Dacă multiplicatorul este un premiu selectat, setează un multiplicator pentru punctele câștigate cât timp această insignă este activă (de exemplu, 1,5x).", + "recurring_frequency": "Activează ciclul de întreținere, necesitând acumularea punctului minim specificat înainte de sfârșitul perioadei (de exemplu, săptămânal, lunar).", + "custom_interval": "Specificați NUMĂRUL de zile, săptămâni, luni etc. pentru Frecvență personalizată (de exemplu, 3 dacă setați 3 săptămâni). Se aplică numai pentru Frecvența personalizată.", + "custom_interval_unit": "Selectați unitatea pentru intervalul personalizat (de exemplu, zile, săptămâni). Se aplică numai pentru Frecvența personalizată.", + "start_date": "Setați data de începere (opțional).", + "end_date": "Selectați data de sfârșit a ciclului de întreținere. (opțional).", + "grace_period_days": "Specificați numărul de zile suplimentare după sfârșitul ciclului de desemnare pentru a îndeplini punctele necesare înainte de retrogradare. (opțional)." + } + }, + "add_badge_daily": { + "title": "Adăugați insigna zilnică", + "description": "Configurați detaliile pentru o insignă zilnică. Aceste insigne recompensează persoanele desemnate pentru finalizarea sarcinilor zilnice sau atingerea pragurilor zilnice.\n\n ℹ️ [Prezentare generală a insignelor]({documentation_url})", + "data": { + "badge_name": "Numele insignei", + "badge_description": "Descrierea insignei (opțional)", + "badge_labels": "Etichete (opțional)", + "icon": "Pictogramă insignă (mdi:xxx)", + "target_type": "🎯 ȚINTĂ ZILNICĂ: Tipul țintei", + "threshold_value": "🎯 ȚINTĂ ZILNICĂ: Valoare prag", + "selected_chores": "🧹 Treburi casnice urmărite (opțional)", + "assigned_user_ids": "🧒 Atribuit la", + "award_items": "🎁 PREMII: Puncte selectate, Recompense, Bonusuri, Penalizări (Opțional)", + "award_points": "🎁 PREMII: Puncte acordate (opțional)" + }, + "data_description": { + "badge_name": "Introduceți un nume unic pentru insignă. Acest nume va fi afișat în sistem.", + "badge_description": "Furnizați o descriere a scopului sau criteriilor insignei (opțional).", + "badge_labels": "Adăugați etichete pentru a clasifica sau a eticheta insigna (opțional).", + "icon": "Specificați o pictogramă pentru insignă folosind pictograme Material Design (de exemplu, mdi:star).", + "target_type": "Selectați tipul de obiectiv zilnic pentru această insignă (de exemplu, puncte, număr de treburi sau zile).", + "threshold_value": "Setați punctele zilnice, numărul de treburi casnice sau numărul de zile necesare pentru a câștiga această insignă. Pentru tipurile de țintă „Zile”, introduceți 1, deoarece insigna este evaluată zilnic (de exemplu, 1 pentru o zi în care se finalizează toate treburile selectate).", + "selected_chores": "Selectați treburile casnice care contribuie la obținerea punctelor pentru această insignă. Lăsați câmpul necompletat dacă doriți să urmăriți toate treburile atribuite (opțional).", + "assigned_user_ids": "Atribuiți această insignă anumitor persoane pentru urmărire.", + "award_items": "Selectați unul sau mai multe dintre puncte, recompense, bonusuri sau penalizări. Toate articolele selectate vor fi acordate sau aplicate la câștigarea insignei. Penalizările vor fi aplicate numai dacă insigna nu este câștigată până la data de încheiere sau la data de resetare. (opțional)", + "award_points": "Dacă punctele sunt un premiu selectat, specificați numărul de puncte care vor fi aplicate la obținerea acestei insigne. (opțional)." + } + }, + "add_badge_periodic": { + "title": "Adăugați o insignă periodică", + "description": "Configurați detaliile pentru o insignă periodică. Aceste insigne recompensează persoanele desemnate pentru atingerea pragurilor într-o perioadă de timp definită și acceptă cicluri de resetare pentru performanță continuă.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "badge_name": "Numele insignei", + "badge_description": "Descrierea insignei (opțional)", + "badge_labels": "Etichete (opțional)", + "icon": "Pictogramă insignă (mdi:xxx)", + "target_type": "🎯 ȚINTĂ: Tip de țintă", + "threshold_value": "🎯 ȚINTĂ: Valoare prag", + "maintenance_rules": "🎯 ȚINTĂ: Puncte de întreținere (opțional)", + "occasion_type": "🎉 Tipul ocaziei", + "associated_achievement": "🏆 Realizare asociată", + "selected_chores": "🧹 Treburi casnice urmărite (opțional)", + "assigned_user_ids": "🧒 Atribuit la", + "award_items": "🎁 PREMII: Puncte selectate, Recompense, Bonusuri, Penalizări (Opțional)", + "award_points": "🎁 PREMII: Puncte acordate (opțional)", + "recurring_frequency": "🔄 CICLU DE RESETARE: Frecvență", + "custom_interval": "🔄 CICLU DE RESETARE: Interval personalizat (obligatoriu pentru frecvența personalizată)", + "custom_interval_unit": "🔄 CICLU DE RESETARE: Unitate de interval personalizată (necesară pentru frecvența personalizată)", + "start_date": "🔄 RESETARE CICLU: Data începerii (opțional)", + "end_date": "🔄 RESETARE CICLU: Data de încheiere (opțional)" + }, + "data_description": { + "badge_name": "Introduceți un nume unic pentru insignă. Acest nume va fi afișat în sistem.", + "badge_description": "Furnizați o descriere a scopului sau criteriilor insignei (opțional).", + "badge_labels": "Adăugați etichete pentru a clasifica sau a eticheta insigna (opțional).", + "icon": "Specificați o pictogramă pentru insignă folosind pictograme Material Design (de exemplu, mdi:star).", + "target_type": "Selectați tipul de țintă pentru această insignă (de exemplu, puncte, număr de treburi, zile sau serie).", + "threshold_value": "Setați numărul total de puncte, numărul de sarcini casnice sau numărul de zile (cum ar fi pentru serii de finalizare a mai multor sarcini casnice) necesare pentru a câștiga această insignă în perioada definită.", + "maintenance_rules": "Specificați punctele minime necesare în timpul ciclului de resetare pentru a păstra insigna și multiplicatorul activ al acesteia (opțional).", + "occasion_type": "Alegeți tipul de ocazie pentru această insignă (de exemplu, sărbătoare, zi de naștere).", + "associated_achievement": "Conectează această insignă la o realizare pentru urmărire.", + "selected_chores": "Selectați treburile casnice care contribuie la obținerea punctelor pentru această insignă. Lăsați câmpul necompletat dacă doriți să urmăriți toate treburile atribuite (opțional).", + "assigned_user_ids": "Atribuiți această insignă anumitor persoane pentru urmărire.", + "award_items": "Selectați unul sau mai multe dintre puncte, recompense, bonusuri sau penalizări. Toate articolele selectate vor fi acordate sau aplicate la câștigarea insignei. Penalizările vor fi aplicate numai dacă insigna nu este câștigată până la data de încheiere sau la data de resetare. (opțional)", + "award_points": "Dacă punctele sunt un premiu selectat, specificați numărul de puncte care vor fi aplicate la obținerea acestei insigne. (opțional).", + "recurring_frequency": "Definiți programul de resetare pentru această insignă (de exemplu, săptămânal, lunar).", + "custom_interval": "Specificați NUMĂRUL de zile, săptămâni, luni etc. pentru Frecvență personalizată (de exemplu, 3 dacă setați 3 săptămâni).", + "custom_interval_unit": "Selectați unitatea pentru intervalul personalizat (de exemplu, zile, săptămâni).", + "start_date": "Setați data de începere pentru ciclul de resetare (opțional).", + "end_date": "Setați data de încheiere pentru ciclul de resetare (opțional)." + } + }, + "add_badge_achievement": { + "title": "Adăugați o insignă legată de realizări", + "description": "Configurați detaliile pentru o insignă legată de o realizare. Aceste insigne recompensează persoanele care o dețin pentru îndeplinirea anumitor realizări.\n\n ℹ️ [Prezentare generală a insignelor]({documentation_url})", + "data": { + "badge_name": "Numele insignei", + "badge_description": "Descrierea insignei (opțional)", + "badge_labels": "Etichete (opțional)", + "icon": "Pictogramă insignă (mdi:xxx)", + "associated_achievement": "🏆 Realizare asociată", + "assigned_user_ids": "🧒 Atribuit la", + "award_items": "🎁 PREMII: Puncte selectate, recompense, bonusuri (opțional)", + "award_points": "🎁 PREMII: Puncte acordate (opțional)" + }, + "data_description": { + "badge_name": "Introduceți un nume unic pentru insignă. Acest nume va fi afișat în sistem.", + "badge_description": "Furnizați o descriere a scopului sau criteriilor insignei (opțional).", + "badge_labels": "Adăugați etichete pentru a clasifica sau a eticheta insigna (opțional).", + "icon": "Specificați o pictogramă pentru insignă folosind pictograme Material Design (de exemplu, mdi:star).", + "associated_achievement": "Conectează această insignă la o anumită realizare pentru urmărire.", + "assigned_user_ids": "Atribuiți această insignă anumitor persoane pentru urmărire.", + "award_items": "Selectați unul sau mai multe dintre puncte, recompense sau bonusuri. Toate articolele selectate vor fi acordate sau aplicate la câștigarea insignei. Penalizările vor fi aplicate numai dacă insigna nu este câștigată până la data de încheiere sau la data de resetare. (opțional)", + "award_points": "Dacă punctele sunt un premiu selectat, specificați numărul de puncte care vor fi aplicate la obținerea acestei insigne. (opțional)." + } + }, + "add_badge_special": { + "title": "Adăugați o insignă pentru ocazii speciale", + "description": "Configurați detaliile pentru o insignă creată pentru ocazii speciale. Aceste insigne recompensează persoanele desemnate pentru evenimente precum zile de naștere sau sărbători.\n\n ℹ️ [Prezentare generală a insignelor]({documentation_url})", + "data": { + "badge_name": "Numele insignei", + "badge_description": "Descrierea insignei (opțional)", + "badge_labels": "Etichete (opțional)", + "icon": "Pictogramă insignă (mdi:xxx)", + "occasion_type": "🎉 Tipul ocaziei", + "end_date": "🎉 Data evenimentului", + "recurring_frequency": "🔄 RECURENȚĂ: Frecvență", + "custom_interval": "🔄 RECURENȚĂ: Interval personalizat (obligatoriu pentru frecvența personalizată)", + "custom_interval_unit": "🔄 RECURENȚĂ: Unitate de interval personalizată (obligatorie pentru frecvența personalizată)", + "start_date": "🔄 RECURENȚĂ: Data începerii (opțional)", + "grace_period_days": "🔄 RECURENȚĂ: Perioadă de grație în zile (opțional)", + "assigned_user_ids": "🧒 Atribuit la", + "award_items": "🎁 PREMII: Puncte selectate, recompense, bonusuri (opțional)", + "award_points": "🎁 PREMII: Puncte acordate (opțional)" + }, + "data_description": { + "badge_name": "Introduceți un nume unic pentru insignă. Acest nume va fi afișat în sistem.", + "badge_description": "Furnizați o descriere a scopului sau criteriilor insignei (opțional).", + "badge_labels": "Adăugați etichete pentru a clasifica sau a eticheta insigna (opțional).", + "icon": "Specificați o pictogramă pentru insignă folosind pictograme Material Design (de exemplu, mdi:star).", + "occasion_type": "Selectați tipul de ocazie pentru această insignă (de exemplu, sărbătoare, zi de naștere).", + "end_date": "Stabilește data pentru ocazie.", + "recurring_frequency": "Definiți programul de resetare pentru această insignă (de exemplu, săptămânal, lunar).", + "custom_interval": "Specificați NUMĂRUL de zile, săptămâni, luni etc. pentru Frecvență personalizată (de exemplu, 3 dacă setați 3 săptămâni).", + "custom_interval_unit": "Selectați unitatea pentru intervalul personalizat (de exemplu, zile, săptămâni).", + "start_date": "Setați data de începere pentru ciclul de resetare (opțional).", + "grace_period_days": "Specificați numărul de zile suplimentare după sfârșitul ciclului pentru ca persoanele desemnate să îndeplinească punctele necesare înainte de retrogradare (opțional).", + "assigned_user_ids": "Atribuiți această insignă anumitor persoane pentru urmărire.", + "award_items": "Selectați unul sau mai multe dintre puncte, recompense sau bonusuri. Toate articolele selectate vor fi acordate sau aplicate la câștigarea insignei. Penalizările vor fi aplicate numai dacă insigna nu este câștigată până la data de încheiere sau la data de resetare. (opțional)", + "award_points": "Dacă punctele sunt un premiu selectat, specificați numărul de puncte care vor fi aplicate la obținerea acestei insigne. (opțional)." + } + }, + "add_reward": { + "title": "Adaugă recompensă", + "description": "Furnizați detaliile pentru noua recompensă.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "name": "Numele recompensei", + "internal_id": "ID intern", + "cost": "Costul recompensei", + "description": "Descriere (opțional)", + "reward_labels": "Etichete de recompensă", + "icon": "Pictogramă (mdi:xxx)", + "assigned_user_ids": "Atribuit la" + } + }, + "add_penalty": { + "title": "Adăugați penalizare", + "description": "Furnizați detaliile pentru noua penalizare.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "name": "Numele penalizării", + "penalty_description": "Descriere (opțional)", + "penalty_labels": "Etichete de penalizare", + "internal_id": "ID intern", + "penalty_points": "Puncte de penalizare (negative)", + "icon": "Pictogramă (mdi:xxx)" + } + }, + "add_bonus": { + "title": "Adăugați bonus", + "description": "Furnizați detaliile pentru noul bonus.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "name": "Nume bonus", + "bonus_description": "Descriere (opțional)", + "bonus_labels": "Etichete bonus", + "internal_id": "ID intern", + "bonus_points": "Puncte bonus", + "icon": "Pictogramă (mdi:xxx)" + } + }, + "add_achievement": { + "title": "Definiți realizările", + "description": "Introdu detalii pentru fiecare realizare.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "name": "Numele realizării", + "description": "Descriere (opțional)", + "achievement_labels": "Etichete de realizare", + "icon": "Pictogramă (mdi:xxx)", + "assigned_user_ids": "Atribuit la", + "type": "Tipul de realizare", + "selected_chore_id": "Selectați sarcina asociată", + "criteria": "Criterii (opțional)", + "target_value": "Țintă de realizare", + "reward_points": "Puncte suplimentare pentru finalizarea realizării", + "internal_id": "ID intern" + } + }, + "add_challenge": { + "title": "Definiți provocarea", + "description": "Introdu detaliile pentru fiecare provocare.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "name": "Numele provocării", + "description": "Descriere (opțional)", + "challenge_labels": "Etichete de provocare", + "icon": "Pictogramă (mdi:xxx)", + "assigned_user_ids": "Atribuit la", + "type": "Tipul de provocare", + "selected_chore_id": "Selectați sarcina asociată provocării (opțional)", + "criteria": "Criterii (opțional)", + "target_value": "Provocări țintă", + "reward_points": "Puncte suplimentare pentru finalizarea provocării", + "start_date": "Data de începere", + "end_date": "Data de încheiere", + "internal_id": "ID intern" + } + }, + "edit_user": { + "title": "Editare utilizator", + "description": "Modificați detaliile profilului de utilizator selectat.\n\n{user_access_warning}\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "sections": { + "section_identity_profile": { + "name": "Identitate și profil", + "description": "Identitate principală, conectare cont și setări de personalizare.", + "data": { + "name": "Nume", + "ha_user_id": "Utilizator Asistent Acasă", + "dashboard_language": "Limbă", + "mobile_notify_service": "Notificări", + "notif_click_url": "Adresa URL pentru atingerea notificării" + }, + "data_description": { + "name": "Nume unic pentru acest profil de utilizator.", + "ha_user_id": "Opțional: Conectați acest profil la un utilizator Home Assistant. Dacă modul chioșc este dezactivat, acțiunile de revendicare și valorificare a dispozitivelor partajate se bazează pe această legătură.", + "dashboard_language": "Limba utilizată pentru conținutul tabloului de bord și notificări.", + "mobile_notify_service": "Selectați serviciul de notificări sau lăsați câmpul gol pentru a dezactiva notificările.", + "notif_click_url": "Adresă URL opțională de deschis când se atinge notificarea. Se lasă necompletată pentru comportamentul implicit." + } + }, + "section_system_usage": { + "name": "Utilizarea sistemului", + "description": "Comenzi pentru utilizare normală în treburi casnice și gamificare.", + "data": { + "can_be_assigned": "Poate fi atribuit", + "enable_chore_workflow": "Flux de lucru activat", + "enable_gamification": "Gamificare activată" + }, + "data_description": { + "can_be_assigned": "Permite atribuirea de sarcini casnice acestui profil.", + "enable_chore_workflow": "Activează acțiuni de revendicare/respingere în fluxul de lucru pentru sarcinile atribuite.", + "enable_gamification": "Permite participarea la puncte, insigne și recompense." + } + }, + "section_admin_approval": { + "name": "Opțiuni de administrare și aprobare", + "description": "Aprobare cu privilegii superioare și controale de management.", + "data": { + "can_approve": "Poate aproba", + "can_manage": "Poate gestiona", + "associated_user_ids": "Utilizatori asociați", + "notif_approve_click_url": "Adresa URL pentru notificarea de aprobare", + "chores_paused": "Întrerupeți treburile casnice", + "chores_paused_until": "Întrerupt până la" + }, + "data_description": { + "can_approve": "Permite acțiuni de aprobare și dezaprobare.", + "can_manage": "Permite acțiuni de gestionare care necesită permisiuni privilegiate.", + "associated_user_ids": "Utilizatori pe care acest aprobator/administrator îi supervizează pentru acțiunile de aprobare.", + "notif_approve_click_url": "URL opțional pentru notificările de aprobare. Suprascrie URL-ul general pentru notificări la atingere atunci când se aprobă sarcini casnice sau recompense.", + "chores_paused": "Întrerupe procesarea sarcinilor. Nu se acumulează statistici restante sau ratate.", + "chores_paused_until": "Dată de revenire opțională. Dacă este setată, treburile casnice se reiau automat la miezul nopții după această dată." + } + } + } + }, + "edit_chore": { + "title": "Editare sarcină", + "description": "Modificați detaliile sarcinii selectate.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "sections": { + "section_root_form": { + "name": "Definiţie", + "description": "Identitate, atribuire și setări contractuale de bază.", + "data": { + "name": "📋 Numele sarcinii", + "chore_description": "📋 Descriere (opțional)", + "icon": "📋 Pictogramă (mdi:xxx)", + "default_points": "💰 Puncte acordate", + "assigned_user_ids": "👥 Atribuit la", + "completion_criteria": "👥 Criterii de finalizare" + }, + "data_description": { + "name": "Nume unic afișat în tot sistemul.", + "chore_description": "Instrucțiuni sau detalii opționale despre cum se finalizează această sarcină.", + "icon": "Pictogramă Material Design (de exemplu, mdi:broom, mdi:dishwasher).", + "default_points": "Puncte câștigate la finalizare.", + "assigned_user_ids": "Persoane desemnate care pot vedea și revendica această sarcină.", + "completion_criteria": "Controlează modul în care se finalizează sarcina atunci când sunt atribuite mai multe persoane: urmărire individuală, finalizare partajată sau rotație pe ture." + } + }, + "section_schedule": { + "name": "Programa", + "description": "Setări pentru temporizare, fereastră de acces și interval recurent.", + "data": { + "recurring_frequency": "🔄 Program: Frecvență", + "due_date": "📅 Program: Data scadenței (opțional)", + "clear_due_date": "🗑️ Data scadenței clare", + "applicable_days": "📅 Program: Zile aplicabile (opțional)", + "chore_due_window_offset": "⏱️ Interval scadență: Compensare înainte de data scadenței", + "chore_claim_lock_until_window": "🔒 Se deschide fereastra pentru blocarea cererii până la scadență?", + "custom_interval": "🔄 Program: Interval personalizat (pentru Frecvență personalizată)", + "custom_interval_unit": "🔄 Program: Unitate de interval personalizată" + }, + "data_description": { + "recurring_frequency": "Cât de des se repetă sarcina: Zilnic, Săptămânal, Lunar, Anual, Personalizat sau Niciuna. Dacă selectați „Zilnic - De mai multe ori pe zi”, va apărea un ecran suplimentar pentru a configura orele specifice.", + "due_date": "Termen limită opțional. Poate fi combinat cu programe recurente. Pentru treburile INDEPENDENTE, acesta servește drept șablon - va apărea un ecran suplimentar care permite date individuale per utilizator.", + "clear_due_date": "Bifați această casetă pentru a elimina data scadentă pentru această sarcină.", + "applicable_days": "Lăsați necompletat pentru toate zilele. Selectați DOAR zile specifice pentru restricționare.", + "chore_due_window_offset": "Când starea sarcinii se schimbă din În așteptare în Scadentă. Format: „1z 6h 30m” sau doar „30” pentru minute. Introduceți „0” pentru dezactivare. Exemplu: „1z” înseamnă că sarcina apare ca „Scadentă” cu 1 zi înainte de termenul limită.", + "chore_claim_lock_until_window": "Când este activată, persoanele desemnate nu pot revendica această sarcină înainte de începerea ferestrei scadente.", + "custom_interval": "Numărul de unități de timp dintre repetiții (de exemplu, 3 pentru „la fiecare 3 săptămâni”). Se utilizează numai cu frecvență personalizată.", + "custom_interval_unit": "Unitate de timp pentru intervalul personalizat (zile, săptămâni, luni). Se utilizează numai cu Frecvență personalizată." + } + }, + "section_advanced_configurations": { + "name": "Configurații avansate", + "description": "Automatizare pe durata ciclului de viață, notificări, vizibilitate și metadate.", + "data": { + "approval_reset_type": "➡️ Finalizări permise și timp de resetare a aprobării", + "approval_reset_pending_claim_action": "➡️ Gestionarea cererilor în așteptare la resetare prin aprobare", + "auto_approve": "✅ Aprobare automată a cererilor?", + "overdue_handling_type": "⏰ Restanță: Manipulare", + "chore_due_reminder_offset": "🔔 Memento scadență: Compensare înainte de data scadenței", + "chore_notifications": "🔔 Evenimente de notificare (opțional)", + "show_on_calendar": "📅 Afișați în Calendar?", + "chore_labels": "📋 Etichete (opțional)" + }, + "data_description": { + "approval_reset_type": "Controlează momentul în care se declanșează limita ciclului de aprobare a sarcinii (miezul nopții, data scadenței, la finalizare sau declanșare manuală).", + "approval_reset_pending_claim_action": "Controlează ce se întâmplă cu revendicările neaprobate atunci când se declanșează limita de resetare a aprobării.", + "auto_approve": "Când este activată, revendicările sunt aprobate instantaneu, fără a fi revizuite de către aprobator.", + "overdue_handling_type": "Controlează ce se întâmplă când trece data scadenței și ce se întâmplă cu sarcinile restante la limita de resetare a aprobării.", + "chore_due_reminder_offset": "Când se trimite notificarea de reamintire a scadenței. Format: „1d 6h 30m” sau doar „30” pentru minute. Implicit: 30m (cu 30 de minute înainte de scadență). Introduceți „0” pentru a dezactiva.", + "chore_notifications": "Când se trimit notificări: La revendicare, la aprobare, la respingere sau orice combinație a acestora.", + "show_on_calendar": "Afișează această sarcină în vizualizarea calendarului.", + "chore_labels": "Etichete pentru organizarea treburilor casnice (de exemplu, „bucătărie”, „exterior”). Lăsați necompletat dacă nu este necesar." + } + } + }, + "data": { + "name": "📋 Numele sarcinii", + "chore_description": "📋 Descriere (opțional)", + "icon": "📋 Pictogramă (mdi:xxx)", + "chore_labels": "📋 Etichete (opțional)", + "internal_id": "ID intern", + "default_points": "💰 Puncte acordate", + "assigned_user_ids": "👥 Atribuit la", + "completion_criteria": "👥 Criterii de finalizare", + "approval_reset_type": "➡️ Finalizări permise și timp de resetare a aprobării", + "approval_reset_pending_claim_action": "➡️ Gestionarea cererilor în așteptare la resetare prin aprobare", + "overdue_handling_type": "⏰ Restanță: Manipulare", + "chore_claim_lock_until_window": "🔒 Se deschide fereastra pentru blocarea cererii până la scadență?", + "auto_approve": "✅ Aprobare automată a cererilor?", + "recurring_frequency": "🔄 Program: Frecvență", + "custom_interval": "🔄 Program: Interval personalizat (pentru Frecvență personalizată)", + "custom_interval_unit": "🔄 Program: Unitate de interval personalizată", + "applicable_days": "📅 Program: Zile aplicabile (opțional)", + "due_date": "📅 Program: Data scadenței (opțional)", + "clear_due_date": "🗑️ Data scadenței clare", + "chore_due_window_offset": "⏱️ Interval scadență: Compensare înainte de data scadenței", + "chore_due_reminder_offset": "🔔 Memento scadență: Compensare înainte de data scadenței", + "show_on_calendar": "📅 Afișați în Calendar?", + "chore_notifications": "🔔 Evenimente de notificare (opțional)" + }, + "data_description": { + "name": "Nume unic afișat în tot sistemul.", + "chore_description": "Instrucțiuni sau detalii opționale despre cum se finalizează această sarcină.", + "icon": "Pictogramă Material Design (de exemplu, mdi:broom, mdi:dishwasher).", + "chore_labels": "Etichete pentru organizarea treburilor casnice (de exemplu, „bucătărie”, „exterior”). Lăsați necompletat dacă nu este necesar.", + "default_points": "Puncte câștigate la finalizare.", + "assigned_user_ids": "Persoane desemnate care pot vedea și revendica această sarcină.", + "completion_criteria": "Controlează modul în care se finalizează sarcina atunci când sunt atribuite mai multe persoane: urmărire individuală, finalizare partajată sau rotație pe ture.", + "approval_reset_type": "Controlează momentul în care se declanșează limita ciclului de aprobare a sarcinii (miezul nopții, data scadenței, la finalizare sau declanșare manuală).", + "approval_reset_pending_claim_action": "Controlează ce se întâmplă cu revendicările neaprobate atunci când se declanșează limita de resetare a aprobării.", + "overdue_handling_type": "Controlează ce se întâmplă când trece data scadenței și ce se întâmplă cu sarcinile restante la limita de resetare a aprobării.", + "chore_claim_lock_until_window": "Când este activată, persoanele desemnate nu pot revendica această sarcină înainte de începerea ferestrei scadente.", + "auto_approve": "Când este activată, revendicările sunt aprobate instantaneu, fără a fi revizuite de către aprobator.", + "recurring_frequency": "Cât de des se repetă sarcina: Zilnic, Săptămânal, Lunar, Anual, Personalizat sau Niciuna. Dacă selectați „Zilnic - De mai multe ori pe zi”, va apărea un ecran suplimentar pentru a configura orele specifice.", + "custom_interval": "Numărul de unități de timp dintre repetiții (de exemplu, 3 pentru „la fiecare 3 săptămâni”). Se utilizează numai cu frecvență personalizată.", + "custom_interval_unit": "Unitate de timp pentru intervalul personalizat (zile, săptămâni, luni). Se utilizează numai cu Frecvență personalizată.", + "applicable_days": "Lăsați necompletat pentru toate zilele. Selectați DOAR zile specifice pentru restricționare.", + "due_date": "Termen limită opțional. Poate fi combinat cu programe recurente. Pentru treburile INDEPENDENTE, acesta servește drept șablon - va apărea un ecran suplimentar care permite date individuale per utilizator.", + "clear_due_date": "Bifați această casetă pentru a elimina data scadentă pentru această sarcină.", + "chore_due_window_offset": "Când starea sarcinii se schimbă din În așteptare în Scadentă. Format: „1z 6h 30m” sau doar „30” pentru minute. Introduceți „0” pentru dezactivare. Exemplu: „1z” înseamnă că sarcina apare ca „Scadentă” cu 1 zi înainte de termenul limită.", + "chore_due_reminder_offset": "Când se trimite notificarea de reamintire a scadenței. Format: „1d 6h 30m” sau doar „30” pentru minute. Implicit: 30m (cu 30 de minute înainte de scadență). Introduceți „0” pentru a dezactiva.", + "show_on_calendar": "Afișează această sarcină în vizualizarea calendarului.", + "chore_notifications": "Când se trimit notificări: La revendicare, la aprobare, la respingere sau orice combinație a acestora." + } + }, + "edit_chore_per_user_dates": { + "title": "Editați datele scadente per utilizator: {chore_name}", + "description": "Setați date scadente individuale pentru fiecare utilizator atribuit. Câmpul pentru dată din formularul principal de editare acționează ca un **șablon** pentru comoditate - utilizați-l pentru a aplica rapid aceeași dată tuturor utilizatorilor prin intermediul casetei de selectare de mai jos sau lăsați-l necompletat și setați datele individual aici.\n\nCâmpurile sunt afișate pentru: {assignee_names}. Lăsați necompletat dacă nu există termen limită.{template_date}\n\n ℹ️ [Ghid avansat]({documentation_url})", + "data": { + "apply_template_to_all": "Aplică data șablonului tuturor utilizatorilor" + }, + "data_description": { + "apply_template_to_all": "Bifați această casetă pentru a aplica data setată pe pagina principală de editare a sarcinilor tuturor persoanelor atribuite, suprascriind datele lor individuale." + } + }, + "chores_daily_multi": { + "title": "Setare ore zilnice: {chore_name}", + "description": "Introduceți orele la care această sarcină ar trebui să fie disponibilă în fiecare zi. Folosiți formatul de 24 de ore (HH:MM) separate prin | (bară verticală).\n\n**Exemplu:** 07:00|12:00|18:00 pentru dimineață, prânz și seară.\n\n**Cerințe:**\n- Minim 2 ori, maxim 6 ori\n- Orele trebuie să fie în format de 24 de ore (00:00 - 23:59)\n- Separați de mai multe ori prin | (bară verticală)\n\n**Notă:** Dacă setați o dată scadentă în formularul principal, se utilizează doar porțiunea de dată. Orele introduse mai jos vor determina când sarcina este disponibilă în fiecare zi.", + "data": { + "daily_multi_times": "Ore zilnice" + }, + "data_description": { + "daily_multi_times": "Introduceți de 2-6 ori în format de 24 de ore, separate prin | (bară verticală). Exemplu: 08:00|17:00 pentru dimineață și seară." + } + }, + "edit_chore_per_user_details": { + "title": "Program per persoană desemnată: {chore_name}", + "description": "Configurați setările individuale de program pentru fiecare persoană atribuită acestei sarcini. Valorile principale ale formularului acționează ca **șabloane** - utilizați casetele de selectare pentru a le aplica tuturor persoanelor atribuite sau personalizați setările fiecărei persoane atribuite individual.\n\n**Notă:** Nu toate câmpurile de mai jos se aplică fiecărei sarcini. Formularul afișează dinamic opțiunile relevante în funcție de modul de finalizare, frecvență și dacă sunt setate date scadente.\n\n**Format de ore zilnice (mai multe):** Dacă este afișat, introduceți de 2 până la 6 ori în format de 24 de ore, separate prin | (bară verticală). Exemplu: 08:00|17:00\n\nPersoane desemnate: {assignee_names}{template_info}\n\n ℹ️ [Ghid avansat]({documentation_url})", + "data": { + "apply_days_to_all": "Aplicați zilele șablon tuturor persoanelor desemnate", + "apply_times_to_all": "Aplicați orele șablon tuturor persoanelor desemnate", + "apply_template_to_all": "Aplicați data șablonului tuturor persoanelor desemnate" + }, + "data_description": { + "apply_days_to_all": "Bifați pentru a utiliza zilele aplicabile din formularul principal pentru toți cei desemnați.", + "apply_times_to_all": "Bifați pentru a utiliza orele zilnice din formularul principal pentru toți cei desemnați.", + "apply_template_to_all": "Bifați pentru a aplica data setată în formularul principal de sarcină tuturor persoanelor desemnate." + } + }, + "edit_badge_cumulative": { + "title": "Editați insigna cumulativă", + "description": "Configurați detaliile pentru o insignă cumulativă. Aceste insigne recompensează persoanele care ating pragurile de puncte pe viață și susțin ciclurile de mentenanță pentru a încuraja performanța continuă.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "badge_name": "Numele insignei", + "badge_description": "Descrierea insignei (opțional)", + "badge_labels": "Etichete (opțional)", + "icon": "Pictogramă insignă (mdi:xxx)", + "target_type": "🎯 ȚINTĂ: Tip de țintă", + "threshold_value": "🎯 ȚINTĂ: Valoare prag", + "maintenance_rules": "🎯 ȚINTĂ: Puncte de întreținere (opțional)", + "occasion_type": "🎉 Tipul ocaziei", + "associated_achievement": "🏆 Realizare asociată", + "selected_chores": "🧹 Treburi casnice monitorizate (opțional)", + "assigned_user_ids": "🧒 Atribuit la", + "award_items": "🎁 PREMII: Puncte selectate, Recompense, Bonusuri, Multiplicator (Opțional)", + "award_points": "🎁 PREMII: Puncte acordate (opțional)", + "points_multiplier": "🎁 PREMII: Multiplicator de puncte (Implicit 💎 1.0x)", + "recurring_frequency": "🔄 CICLU DE ÎNTREȚINERE: Frecvență", + "custom_interval": "🔄 CICLU DE ÎNTREȚINERE: Interval personalizat (obligatoriu pentru frecvența personalizată)", + "custom_interval_unit": "🔄 CICLU DE ÎNTREȚINERE: Unitate de interval personalizată (necesară pentru frecvența personalizată)", + "start_date": "🔄 RESETARE CICLU: Data începerii (opțional)", + "end_date": "🔄 CICLU DE ÎNTREȚINERE: Data de încheiere (opțional)", + "grace_period_days": "🔄 CICLU DE ÎNTREȚINERE: Perioadă de grație în zile (opțional)" + }, + "data_description": { + "badge_name": "Introduceți un nume unic pentru insignă. Acest nume va fi afișat în sistem.", + "badge_description": "Furnizați o descriere a scopului sau criteriilor insignei (opțional).", + "badge_labels": "Adăugați etichete pentru a clasifica sau a eticheta insigna (opțional).", + "icon": "Specificați o pictogramă pentru insignă folosind pictograme Material Design (de exemplu, mdi:star).", + "target_type": "Selectați tipul de țintă pentru această insignă (de exemplu, puncte sau număr de treburi).", + "threshold_value": "Setați numărul total de puncte pe viață necesar pentru a câștiga această insignă.", + "maintenance_rules": "Specificați punctele minime necesare în timpul ciclului de întreținere pentru a păstra insigna și multiplicatorul activ al acesteia (opțional).", + "occasion_type": "Alegeți tipul de ocazie pentru această insignă (de exemplu, sărbătoare, zi de naștere).", + "associated_achievement": "Conectează această insignă la o realizare pentru urmărire.", + "selected_chores": "Selectați treburile casnice care contribuie la obținerea punctelor pentru această insignă. Lăsați câmpul necompletat dacă doriți să urmăriți toate treburile atribuite (opțional).", + "assigned_user_ids": "Atribuiți această insignă anumitor persoane pentru urmărire.", + "award_items": "Selectați unul sau mai multe dintre puncte, recompense, bonusuri sau un multiplicator de puncte. Toate articolele selectate vor fi acordate sau aplicate la câștigarea insignei. (opțional)", + "award_points": "Dacă punctele sunt un premiu selectat, specificați numărul de puncte care vor fi aplicate la obținerea acestei insigne. (opțional).", + "points_multiplier": "Dacă multiplicatorul este un premiu selectat, setează un multiplicator pentru punctele câștigate cât timp această insignă este activă (de exemplu, 1,5x).", + "recurring_frequency": "Activează ciclul de întreținere, necesitând acumularea punctului minim specificat înainte de sfârșitul perioadei (de exemplu, săptămânal, lunar).", + "custom_interval": "Specificați NUMĂRUL de zile, săptămâni, luni etc. pentru Frecvență personalizată (de exemplu, 3 dacă setați 3 săptămâni). Se aplică numai pentru Frecvența personalizată.", + "custom_interval_unit": "Selectați unitatea pentru intervalul personalizat (de exemplu, zile, săptămâni). Se aplică numai pentru Frecvența personalizată.", + "start_date": "Setați data de începere (opțional).", + "end_date": "Selectați data de sfârșit a ciclului de întreținere. (opțional).", + "grace_period_days": "Specificați numărul de zile suplimentare după sfârșitul ciclului de desemnare pentru a îndeplini punctele necesare înainte de retrogradare. (opțional)." + } + }, + "edit_badge_daily": { + "title": "Editați insigna zilnică", + "description": "Configurați detaliile pentru o insignă zilnică. Aceste insigne recompensează persoanele desemnate pentru finalizarea sarcinilor zilnice sau atingerea pragurilor zilnice.\n\n ℹ️ [Prezentare generală a insignelor]({documentation_url})", + "data": { + "badge_name": "Numele insignei", + "badge_description": "Descrierea insignei (opțional)", + "badge_labels": "Etichete (opțional)", + "icon": "Pictogramă insignă (mdi:xxx)", + "target_type": "🎯 ȚINTĂ ZILNICĂ: Tipul țintei", + "threshold_value": "🎯 ȚINTĂ ZILNICĂ: Valoare prag", + "selected_chores": "🧹 Treburi casnice monitorizate (opțional)", + "assigned_user_ids": "🧒 Atribuit la", + "award_items": "🎁 PREMII: Puncte selectate, Recompense, Bonusuri, Penalizări (Opțional)", + "award_points": "🎁 PREMII: Puncte acordate (opțional)" + }, + "data_description": { + "badge_name": "Introduceți un nume unic pentru insignă. Acest nume va fi afișat în sistem.", + "badge_description": "Furnizați o descriere a scopului sau criteriilor insignei (opțional).", + "badge_labels": "Adăugați etichete pentru a clasifica sau a eticheta insigna (opțional).", + "icon": "Specificați o pictogramă pentru insignă folosind pictograme Material Design (de exemplu, mdi:star).", + "target_type": "Selectați tipul de obiectiv zilnic pentru această insignă (de exemplu, puncte, număr de treburi sau zile).", + "threshold_value": "Setați punctele zilnice, numărul de treburi casnice sau numărul de zile necesare pentru a câștiga această insignă. Pentru tipurile de țintă „Zile”, introduceți 1, deoarece insigna este evaluată zilnic (de exemplu, 1 pentru o zi în care se finalizează toate treburile selectate).", + "selected_chores": "Selectați treburile casnice care contribuie la obținerea punctelor pentru această insignă. Lăsați câmpul necompletat dacă doriți să urmăriți toate treburile atribuite (opțional).", + "assigned_user_ids": "Atribuiți această insignă anumitor persoane pentru urmărire.", + "award_items": "Selectați unul sau mai multe dintre puncte, recompense, bonusuri sau penalizări. Toate articolele selectate vor fi acordate sau aplicate la câștigarea insignei. Penalizările vor fi aplicate numai dacă insigna nu este câștigată până la data de încheiere sau la data de resetare. (opțional)", + "award_points": "Dacă punctele sunt un premiu selectat, specificați numărul de puncte care vor fi aplicate la obținerea acestei insigne. (opțional)." + } + }, + "edit_badge_periodic": { + "title": "Editați insigna periodică", + "description": "Configurați detaliile pentru o insignă periodică. Aceste insigne recompensează persoanele desemnate pentru atingerea pragurilor într-o perioadă de timp definită și acceptă cicluri de resetare pentru performanță continuă.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "badge_name": "Numele insignei", + "badge_description": "Descrierea insignei (opțional)", + "badge_labels": "Etichete (opțional)", + "icon": "Pictogramă insignă (mdi:xxx)", + "target_type": "🎯 ȚINTĂ: Tip de țintă", + "threshold_value": "🎯 ȚINTĂ: Valoare prag", + "maintenance_rules": "🎯 ȚINTĂ: Puncte de întreținere (opțional)", + "occasion_type": "🎉 Tipul ocaziei", + "associated_achievement": "🏆 Realizare asociată", + "selected_chores": "🧹 Treburi casnice monitorizate (opțional)", + "assigned_user_ids": "🧒 Atribuit la", + "award_items": "🎁 PREMII: Puncte selectate, Recompense, Bonusuri, Penalizări (Opțional)", + "award_points": "🎁 PREMII: Puncte acordate (opțional)", + "recurring_frequency": "🔄 CICLU DE RESETARE: Frecvență", + "custom_interval": "🔄 CICLU DE RESETARE: Interval personalizat (obligatoriu pentru frecvența personalizată)", + "custom_interval_unit": "🔄 CICLU DE RESETARE: Unitate de interval personalizată (necesară pentru frecvența personalizată)", + "start_date": "🔄 RESETARE CICLU: Data începerii (opțional)", + "end_date": "🔄 RESETARE CICLU: Data de încheiere (opțional)" + }, + "data_description": { + "badge_name": "Introduceți un nume unic pentru insignă. Acest nume va fi afișat în sistem.", + "badge_description": "Furnizați o descriere a scopului sau criteriilor insignei (opțional).", + "badge_labels": "Adăugați etichete pentru a clasifica sau a eticheta insigna (opțional).", + "icon": "Specificați o pictogramă pentru insignă folosind pictograme Material Design (de exemplu, mdi:star).", + "target_type": "Selectați tipul de țintă pentru această insignă (de exemplu, puncte, număr de treburi, zile sau serie).", + "threshold_value": "Setați numărul total de puncte, numărul de sarcini casnice sau numărul de zile (cum ar fi pentru serii de finalizare a mai multor sarcini casnice) necesare pentru a câștiga această insignă în perioada definită.", + "maintenance_rules": "Specificați punctele minime necesare în timpul ciclului de resetare pentru a păstra insigna și multiplicatorul activ al acesteia (opțional).", + "occasion_type": "Alegeți tipul de ocazie pentru această insignă (de exemplu, sărbătoare, zi de naștere).", + "associated_achievement": "Conectează această insignă la o realizare pentru urmărire.", + "selected_chores": "Selectați treburile casnice care contribuie la obținerea punctelor pentru această insignă. Lăsați câmpul necompletat dacă doriți să urmăriți toate treburile atribuite (opțional).", + "assigned_user_ids": "Atribuiți această insignă anumitor persoane pentru urmărire.", + "award_items": "Selectați unul sau mai multe dintre puncte, recompense, bonusuri sau penalizări. Toate articolele selectate vor fi acordate sau aplicate la câștigarea insignei. Penalizările vor fi aplicate numai dacă insigna nu este câștigată până la data de încheiere sau la data de resetare. (opțional)", + "award_points": "Dacă punctele sunt un premiu selectat, specificați numărul de puncte care vor fi aplicate la obținerea acestei insigne. (opțional).", + "recurring_frequency": "Definiți programul de resetare pentru această insignă (de exemplu, săptămânal, lunar).", + "custom_interval": "Specificați NUMĂRUL de zile, săptămâni, luni etc. pentru Frecvență personalizată (de exemplu, 3 dacă setați 3 săptămâni).", + "custom_interval_unit": "Selectați unitatea pentru intervalul personalizat (de exemplu, zile, săptămâni).", + "start_date": "Setați data de începere pentru ciclul de resetare (opțional).", + "end_date": "Setați data de încheiere pentru ciclul de resetare (opțional)." + } + }, + "edit_badge_achievement": { + "title": "Editați insigna legată de realizare", + "description": "Configurați detaliile pentru o insignă legată de o realizare. Aceste insigne recompensează persoanele care o dețin pentru îndeplinirea anumitor realizări.\n\n ℹ️ [Prezentare generală a insignelor]({documentation_url})", + "data": { + "badge_name": "Numele insignei", + "badge_description": "Descrierea insignei (opțional)", + "badge_labels": "Etichete (opțional)", + "icon": "Pictogramă insignă (mdi:xxx)", + "associated_achievement": "🏆 Realizare asociată", + "assigned_user_ids": "🧒 Atribuit la", + "award_items": "🎁 PREMII: Puncte selectate, recompense, bonusuri (opțional)", + "award_points": "🎁 PREMII: Puncte acordate (opțional)" + }, + "data_description": { + "badge_name": "Introduceți un nume unic pentru insignă. Acest nume va fi afișat în sistem.", + "badge_description": "Furnizați o descriere a scopului sau criteriilor insignei (opțional).", + "badge_labels": "Adăugați etichete pentru a clasifica sau a eticheta insigna (opțional).", + "icon": "Specificați o pictogramă pentru insignă folosind pictograme Material Design (de exemplu, mdi:star).", + "associated_achievement": "Conectează această insignă la o anumită realizare pentru urmărire.", + "assigned_user_ids": "Atribuiți această insignă anumitor persoane pentru urmărire.", + "award_items": "Selectați unul sau mai multe dintre puncte, recompense sau bonusuri. Toate articolele selectate vor fi acordate sau aplicate la câștigarea insignei. Penalizările vor fi aplicate numai dacă insigna nu este câștigată până la data de încheiere sau la data de resetare. (opțional)", + "award_points": "Dacă punctele sunt un premiu selectat, specificați numărul de puncte care vor fi aplicate la obținerea acestei insigne. (opțional)." + } + }, + "edit_badge_special": { + "title": "Editați insigna pentru ocazii speciale", + "description": "Configurați detaliile pentru o insignă creată pentru ocazii speciale. Aceste insigne recompensează persoanele desemnate pentru evenimente precum zile de naștere sau sărbători.\n\n ℹ️ [Prezentare generală a insignelor]({documentation_url})", + "data": { + "badge_name": "Numele insignei", + "badge_description": "Descrierea insignei (opțional)", + "badge_labels": "Etichete (opțional)", + "icon": "Pictogramă insignă (mdi:xxx)", + "occasion_type": "🎉 Tipul ocaziei", + "end_date": "🎉 Data evenimentului", + "recurring_frequency": "🔄 RECURENȚĂ: Frecvență", + "custom_interval": "🔄 RECURENȚĂ: Interval personalizat (obligatoriu pentru frecvența personalizată)", + "custom_interval_unit": "🔄 RECURENȚĂ: Unitate de interval personalizată (obligatorie pentru frecvența personalizată)", + "start_date": "🔄 RECURENȚĂ: Data începerii (opțional)", + "grace_period_days": "🔄 RECURENȚĂ: Perioadă de grație în zile (opțional)", + "assigned_user_ids": "🧒 Atribuit la", + "award_items": "🎁 PREMII: Puncte selectate, recompense, bonusuri (opțional)", + "award_points": "🎁 PREMII: Puncte acordate (opțional)" + }, + "data_description": { + "badge_name": "Introduceți un nume unic pentru insignă. Acest nume va fi afișat în sistem.", + "badge_description": "Furnizați o descriere a scopului sau criteriilor insignei (opțional).", + "badge_labels": "Adăugați etichete pentru a clasifica sau a eticheta insigna (opțional).", + "icon": "Specificați o pictogramă pentru insignă folosind pictograme Material Design (de exemplu, mdi:star).", + "occasion_type": "Selectați tipul de ocazie pentru această insignă (de exemplu, sărbătoare, zi de naștere).", + "end_date": "Stabiliți data pentru ocazie.", + "recurring_frequency": "Definiți programul de resetare pentru această insignă (de exemplu, săptămânal, lunar).", + "custom_interval": "Specificați NUMĂRUL de zile, săptămâni, luni etc. pentru Frecvență personalizată (de exemplu, 3 dacă setați 3 săptămâni).", + "custom_interval_unit": "Selectați unitatea pentru intervalul personalizat (de exemplu, zile, săptămâni).", + "start_date": "Setați data de începere pentru ciclul de resetare (opțional).", + "grace_period_days": "Specificați numărul de zile suplimentare după sfârșitul ciclului pentru ca persoanele desemnate să îndeplinească punctele necesare înainte de retrogradare (opțional).", + "assigned_user_ids": "Atribuiți această insignă anumitor persoane pentru urmărire.", + "award_items": "Selectați unul sau mai multe dintre puncte, recompense sau bonusuri. Toate articolele selectate vor fi acordate sau aplicate la câștigarea insignei. Penalizările vor fi aplicate numai dacă insigna nu este câștigată până la data de încheiere sau la data de resetare. (opțional)", + "award_points": "Dacă punctele sunt un premiu selectat, specificați numărul de puncte care vor fi aplicate la obținerea acestei insigne. (opțional)." + } + }, + "edit_reward": { + "title": "Editează recompensa", + "description": "Modificați detaliile recompensei selectate.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "name": "Numele recompensei", + "internal_id": "ID intern", + "cost": "Costul recompensei", + "description": "Descriere (opțional)", + "reward_labels": "Etichete de recompensă", + "icon": "Pictogramă (mdi:xxx)", + "assigned_user_ids": "Atribuit la" + } + }, + "edit_penalty": { + "title": "Editare penalizare", + "description": "Modificați detaliile penalizării selectate.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "name": "Numele penalizării", + "penalty_description": "Descriere (opțional)", + "penalty_labels": "Etichete de penalizare", + "internal_id": "ID intern", + "penalty_points": "Puncte de penalizare (negative)", + "icon": "Pictogramă (mdi:xxx)" + } + }, + "edit_bonus": { + "title": "Editare bonus", + "description": "Modificați detaliile bonusului selectat.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "name": "Nume bonus", + "bonus_description": "Descriere (opțional)", + "bonus_labels": "Etichete bonus", + "internal_id": "ID intern", + "bonus_points": "Puncte bonus", + "icon": "Pictogramă (mdi:xxx)" + } + }, + "edit_achievement": { + "title": "Definiți realizările", + "description": "Introdu detalii pentru fiecare realizare.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "name": "Numele realizării", + "description": "Descriere (opțional)", + "achievement_labels": "Etichete de realizare", + "icon": "Pictogramă (mdi:xxx)", + "assigned_user_ids": "Atribuit la", + "type": "Tipul de realizare", + "selected_chore_id": "Selectați sarcina asociată", + "criteria": "Criterii (opțional)", + "target_value": "Țintă de realizare", + "reward_points": "Puncte suplimentare pentru finalizarea realizării", + "internal_id": "ID intern" + } + }, + "edit_challenge": { + "title": "Definiți provocarea", + "description": "Introdu detaliile pentru fiecare provocare.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "name": "Numele provocării", + "description": "Descriere (opțional)", + "challenge_labels": "Etichete de provocare", + "icon": "Pictogramă (mdi:xxx)", + "assigned_user_ids": "Atribuit la", + "type": "Tipul de provocare", + "selected_chore_id": "Selectați sarcina asociată provocării (opțional)", + "criteria": "Criterii (opțional)", + "target_value": "Provocări țintă", + "reward_points": "Puncte suplimentare pentru finalizarea provocării", + "start_date": "Data de începere", + "end_date": "Data de încheiere", + "internal_id": "ID intern" + } + }, + "delete_user": { + "title": "Șterge utilizator", + "description": "Sigur vrei să ștergi utilizatorul {user_name}?", + "data": {} + }, + "delete_chore": { + "title": "Ștergeți corvoada", + "description": "Sigur vrei să ștergi sarcina {chore_name}?", + "data": {} + }, + "delete_badge": { + "title": "Ștergeți insigna", + "description": "Sigur vrei să ștergi insigna {badge_name}?", + "data": {} + }, + "delete_reward": { + "title": "Ștergeți recompensa", + "description": "Sigur vrei să ștergi recompensa {reward_name}?", + "data": {} + }, + "delete_penalty": { + "title": "Penalizare pentru ștergere", + "description": "Sigur vrei să ștergi penalizarea {penalty_name}?", + "data": {} + }, + "delete_bonus": { + "title": "Șterge bonusul", + "description": "Sigur vrei să ștergi bonusul {bonus_name}?", + "data": {} + }, + "delete_achievement": { + "title": "Ștergeți realizarea", + "description": "Sigur vrei să ștergi realizarea {achievement_name}?", + "data": {} + }, + "delete_challenge": { + "title": "Șterge provocarea", + "description": "Sigur vrei să ștergi provocarea {challenge_name}?", + "data": {} + }, + "dashboard_generator": { + "title": "Acțiuni în tabloul de bord", + "description": "Creați, actualizați sau ștergeți tablouri de bord ChoreOps Lovelace.\n\n ℹ️ [Ghid de configurare a tabloului de bord]({documentation_url})\n\n{dashboard_status_message}", + "data": { + "dashboard_action": "Acţiune", + "dashboard_release_selection": "Versiunea de lansare a tabloului de bord" + }, + "data_description": { + "dashboard_action": "Alegeți o acțiune: creați un tablou de bord nou, actualizați vizualizările dintr-un tablou de bord existent sau ștergeți tablourile de bord.", + "dashboard_release_selection": "Alegeți versiunea instalată în prezent, cea mai recentă versiune stabilă sau o etichetă de versiune compatibilă explicită." + } + }, + "dashboard_missing_dependencies": { + "title": "Revizuirea modificărilor tabloului de bord", + "description": "Verificați starea dependențelor și preferințele pentru șabloanele selectate înainte de a aplica modificările tabloului de bord.\n\n ℹ️ [Ghid de configurare a tabloului de bord]({documentation_url})\n\n**Personalizări disponibile**\n{dashboard_template_preferences}\n\n**Lipsesc dependențele necesare**\n{dashboard_missing_required_dependencies}\n\n**Lipsesc dependențele recomandate**\n{dashboard_missing_recommended_dependencies}\n\n**Avertisment privind controlul accesului**\n{dashboard_access_warning}", + "data": { + "dashboard_dependency_bypass": "🚫 Continuă oricum (lipsesc cerințele)", + "dashboard_access_warning_ack": "⚠️ Continuă oricum (utilizatorii selectați nu sunt conectați)" + }, + "data_description": { + "dashboard_dependency_bypass": "Recunoașteți că lipsesc dependențele necesare și continuați oricum. Este posibil ca tabloul de bord să nu se afișeze sau să se comporte incorect până când nu sunt instalate dependențele necesare.", + "dashboard_access_warning_ack": "Rețineți că unii utilizatori selectați nu au utilizatori Home Assistant conectați în timp ce modul chioșc este dezactivat. Butoanele de revendicare și valorificare pot să nu funcționeze conform așteptărilor pe dispozitivele partajate până când acești utilizatori nu sunt conectați sau modul chioșc este activat." + } + }, + "dashboard_create": { + "title": "Creați tabloul de bord", + "description": "Introduceți un nume pentru tabloul de bord, apoi continuați la configurare.\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "data": { + "dashboard_name": "Numele tabloului de bord" + }, + "data_description": { + "dashboard_name": "Nume pentru tabloul de bord (apare în bara laterală). Sugerat: Treburi" + } + }, + "dashboard_update_select": { + "title": "Actualizați tabloul de bord", + "description": "Selectați un tablou de bord ChoreOps existent pentru actualizare și reconfigurare.", + "data": { + "dashboard_update_selection": "Tablou de bord de actualizat" + }, + "data_description": { + "dashboard_update_selection": "Alegeți tabloul de bord existent pe care doriți să îl actualizați." + } + }, + "dashboard_configure": { + "title": "Configurați tabloul de bord", + "description": "Configurați secțiunile tabloului de bord pentru **{dashboard}** (mod: {mode}).\n\n ℹ️ [Ghid de configurare]({documentation_url})", + "sections": { + "section_assignee_views": { + "name": "Vizualizările utilizatorilor", + "description": "Alegeți șablonul de tablou de bord și utilizatorii pe care îi includeți.", + "data": { + "dashboard_template_profile": "Șablon de tablou de bord pentru utilizatori", + "dashboard_assignee_selection": "Utilizatori" + }, + "data_description": { + "dashboard_template_profile": "Șablon definit prin manifest utilizat pentru vizualizările utilizatorului selectate.", + "dashboard_assignee_selection": "Selectați utilizatorii pe care să îi includeți în acest tablou de bord." + } + }, + "section_admin_views": { + "name": "Vizualizări ale administratorului", + "description": "Alegeți ce layout de administrare să generați și cine îl poate vedea.", + "data": { + "dashboard_admin_mode": "Aspect administrativ", + "dashboard_admin_template_global": "Șablon de tablou de bord partajat pentru administratori", + "dashboard_admin_template_per_assignee": "Șablon de tablou de bord pentru administrator per utilizator", + "dashboard_admin_view_visibility": "Vizibilitatea vizualizării administratorului" + }, + "data_description": { + "dashboard_admin_mode": "Alegeți aspectul de administrare: niciunul, partajat, per utilizator sau ambele.", + "dashboard_admin_template_global": "Șablon definit prin manifest utilizat atunci când Admin Layout include Shared.", + "dashboard_admin_template_per_assignee": "Șablon definit prin manifest utilizat atunci când Admin Layout include Per utilizator.", + "dashboard_admin_view_visibility": "Controlează cine poate vedea vizualizările administratorului. Vizibilitatea legată de aprobator utilizează utilizatorii HA legați de aprobare." + } + }, + "section_access_sidebar": { + "name": "Configurarea tabloului de bord", + "description": "Pictogramă de control, acces exclusiv pentru administratori și vizibilitate în bara laterală.", + "data": { + "dashboard_icon": "Pictogramă tablou de bord", + "dashboard_require_admin": "Numai pentru administratori", + "dashboard_show_in_sidebar": "Adăugați în bara laterală" + }, + "data_description": { + "dashboard_icon": "Pictogramă bară laterală pentru acest tablou de bord.", + "dashboard_require_admin": "Restricționați accesul la tabloul de bord pentru utilizatorii administratori.", + "dashboard_show_in_sidebar": "Afișează acest tablou de bord în bara laterală a Asistentului Acasă." + } + }, + "section_template_version": { + "name": "Versiunea șablonului", + "description": "Selectați modul în care modul de actualizare alege șabloanele de tablou de bord compatibile.", + "data": { + "dashboard_release_selection": "Versiunea șablonului de tablou de bord" + }, + "data_description": { + "dashboard_release_selection": "Alegeți versiunea instalată în prezent, cea mai recentă versiune stabilă sau o etichetă de versiune compatibilă explicită." + } + } + }, + "data": { + "dashboard_template_profile": "Șablon de tablou de bord pentru persoane desemnate", + "dashboard_assignee_selection": "Cesionari", + "dashboard_admin_mode": "Aspect administrativ", + "dashboard_admin_template_global": "Șablon de tablou de bord partajat pentru administratori", + "dashboard_admin_template_per_assignee": "Șablon de tablou de bord pentru administratori per persoană desemnată", + "dashboard_admin_view_visibility": "Vizibilitatea vizualizării administratorului", + "dashboard_icon": "Pictogramă tablou de bord", + "dashboard_require_admin": "Numai pentru administratori", + "dashboard_show_in_sidebar": "Adăugați în bara laterală", + "dashboard_release_selection": "Versiunea șablonului de tablou de bord" + }, + "data_description": { + "dashboard_template_profile": "Șablon definit prin manifest utilizat pentru vizualizările desemnate de către persoane selectate.", + "dashboard_assignee_selection": "Selectați persoanele desemnate pentru a le include în acest tablou de bord.", + "dashboard_admin_mode": "Alegeți aspectul de administrare: niciunul, partajat, per utilizator sau ambele.", + "dashboard_admin_template_global": "Șablon definit prin manifest utilizat atunci când Admin Layout include Shared.", + "dashboard_admin_template_per_assignee": "Șablon definit prin manifest utilizat atunci când Admin Layout include Per utilizator.", + "dashboard_admin_view_visibility": "Controlează cine poate vedea vizualizările administratorului. Vizibilitatea legată de aprobator utilizează utilizatorii HA legați de aprobare.", + "dashboard_icon": "Pictogramă bară laterală pentru acest tablou de bord.", + "dashboard_require_admin": "Restricționați accesul la tabloul de bord pentru utilizatorii administratori.", + "dashboard_show_in_sidebar": "Afișează acest tablou de bord în bara laterală a Asistentului Acasă.", + "dashboard_release_selection": "Alegeți versiunea instalată în prezent, cea mai recentă versiune stabilă sau o etichetă de versiune compatibilă explicită." + } + }, + "dashboard_delete": { + "title": "Ștergeți tabloul de bord", + "description": "Selectați tablourile de bord ChoreOps pentru a le șterge.\n\n⚠️ Această acțiune nu poate fi anulată.", + "data": { + "dashboard_update_selection": "Bord" + }, + "data_description": { + "dashboard_update_selection": "Selectați tabloul de bord pe care doriți să îl eliminați definitiv." + } + }, + "dashboard_delete_confirm": { + "title": "Confirmați ștergerea", + "description": "⚠️ **Atenție:** Următoarele tablouri de bord vor fi șterse definitiv:\n\n**{dashboards}**\n\nAceastă acțiune va elimina tabloul de bord din bara laterală și va șterge toate configurațiile.\n\nFaceți clic pe Trimite pentru a confirma ștergerea.", + "data": {} + }, + "manage_general_options": { + "title": "Opțiuni generale", + "description": "Gestionează setările generale pentru integrarea ChoreOps.\n\n ℹ️ [Află mai multe despre Opțiunile generale]({documentation_url})", + "data": { + "dashboard_points_precision": "Precizia punctelor de bord", + "default_chore_points": "Puncte implicite per sarcină", + "points_adjust_values": "Valorile butonului de ajustare manuală a punctelor", + "update_interval": "Interval de actualizare", + "calendar_show_period": "Numărul de zile de afișat în calendar", + "retention_periods": "Perioade de păstrare a datelor (zilnic | săptămânal | lunar | anual)", + "retention_daily": "Păstrarea zilnică a datelor (zile)", + "retention_weekly": "Păstrarea săptămânală a datelor (săptămâni)", + "retention_monthly": "Păstrarea lunară a datelor (luni)", + "retention_yearly": "Păstrarea anuală a datelor (ani)", + "show_legacy_entities": "Afișați entități suplimentare", + "kiosk_mode": "Activați modul chioșc pentru revendicările de la cesionari", + "admin_approval_bypass": "Permiteți aprobarea conturilor de administrator Home Assistant", + "backups_max_retained": "Număr maxim de copii de rezervă de păstrat", + "backup_action_selection": "Acțiuni de rezervă" + }, + "data_description": { + "dashboard_points_precision": "Alegeți modul în care sunt afișate punctele în tablourile de bord acceptate. Această acțiune modifică doar formatarea tabloului de bord și nu modifică valorile punctelor stocate sau calculele.", + "default_chore_points": "Valoarea implicită a punctelor este utilizată pentru sarcinile noi atunci când nu sunt specificate puncte personalizate.", + "points_adjust_values": "Listă de valori pentru butoanele de ajustare manuală a punctelor. Fiecare valoare este separată prin „|”.", + "update_interval": "Intervalul în minute pentru actualizarea stării interne a ChoreOps.", + "calendar_show_period": "Numărul de zile din viitor pentru afișarea treburilor programate și a provocărilor în calendar.", + "retention_periods": "Perioadele de păstrare a datelor în format Zilnic|Săptămânal|Lunar|Anual (de exemplu, „7|4|12|3”). Fiecare valoare trebuie să fie un număr întreg pozitiv.", + "retention_daily": "Numărul de zile de date istorice zilnice care trebuie păstrate înainte de curățare. Minim 1, maxim 90.", + "retention_weekly": "Numărul de săptămâni de date istorice săptămânale de păstrat înainte de curățare. Minim 1, maxim 52.", + "retention_monthly": "Numărul de luni de date istorice lunare care trebuie păstrate înainte de curățare. Minim 1, maxim 24.", + "retention_yearly": "Numărul de ani de date istorice anuale care trebuie păstrate înainte de curățare. Minim 1, maxim 10.", + "show_legacy_entities": "Afișează entități suplimentare precum senzor și selecții care sunt acum consolidate în senzorul auxiliar al tabloului de bord. Aceste entități sunt opționale pentru compatibilitate inversă cu automatizările existente.", + "kiosk_mode": "Permite ca butoanele de revendicare a sarcinilor/recompenselor persoanei însărcinate să funcționeze pe tabletele de perete partajate fără a fi nevoie ca utilizatorul tabloului de bord să coincidă cu linkul de utilizator Home Assistant al persoanei însărcinate. Avertisment de securitate: oricine are acces la dispozitivul respectiv poate trimite revendicări pentru persoane însărcinate.", + "admin_approval_bypass": "Când este activată, conturile de administrator Home Assistant pot folosi acțiuni de aprobare a sarcinilor și recompenselor în cadrul integrării. Când este dezactivată, conturile de administrator nu pot aproba sarcini sau recompense doar pentru că sunt administratori Home Assistant.", + "backups_max_retained": "Numărul maxim de fișiere de rezervă care pot fi păstrate per etichetă (de exemplu, 5 copii de rezervă manuale, 5 copii de rezervă cu resetare_datelor). Copiile de rezervă mai vechi sunt șterse automat după crearea fiecărui copil de rezervă nou. Setați la 0 pentru a dezactiva complet copiile de rezervă automate.", + "backup_action_selection": "Alegeți o acțiune de gestionare a copiilor de rezervă: creați o copie de rezervă manuală, ștergeți o copie de rezervă sau restaurați dintr-o copie de rezervă." + } + }, + "backup_actions": { + "title": "Gestionarea copiilor de rezervă", + "description": "Gestionați copiile de rezervă ale datelor ChoreOps. Starea actuală: {backup_count} copii de rezervă folosind {storage_size} MB.", + "data": { + "backup_action_selection": "Selectați o acțiune" + }, + "data_description": { + "backup_action_selection": "Alegeți o acțiune de gestionare a copiilor de rezervă." + } + }, + "backup_actions_menu": { + "title": "Acțiuni de rezervă", + "description": "Gestionează-ți copiile de rezervă ale datelor ChoreOps.", + "data": { + "backup_action_selection": "Selectați o acțiune" + }, + "data_description": { + "backup_action_selection": "Alegeți o acțiune de gestionare a copiilor de rezervă: creare, ștergere, restaurare sau revenire la meniu." + } + }, + "create_manual_backup": { + "title": "Creați o copie de rezervă manuală", + "description": "Creați o nouă copie de rezervă a datelor ChoreOps.\n\nCopii de rezervă actuale: {backup_count}\nSetare de păstrare: {retention} copii de rezervă", + "data": { + "confirm": "Confirmați crearea copiei de rezervă" + } + }, + "select_backup_to_delete": { + "title": "Selectați Copie de rezervă pentru ștergere", + "description": "Alegeți un fișier de rezervă pentru ștergere.\n\nCopii de rezervă disponibile: {backup_count}" + }, + "select_backup_to_restore": { + "title": "Selectați Copiere de rezervă pentru restaurare", + "description": "Alegeți un fișier de rezervă pentru restaurare.\n\nCopii de rezervă disponibile: {backup_count}\n\n⚠️ Aceasta va înlocui datele dvs. actuale!", + "data": { + "backup_selection": "Selectați o copie de rezervă" + }, + "data_description": { + "backup_selection": "Selectați fișierul de rezervă pe care doriți să îl restaurați." + } + }, + "restore_backup": { + "title": "Opțiuni de recuperare a datelor", + "description": "Date ChoreOps existente găsite în:\n{storage_path}\n\nFișiere de rezervă {backup_count} găsite.\n\nCe doriți să faceți?", + "data": { + "backup_selection": "Selectați opțiunea" + } + }, + "paste_json_restore": { + "title": "Importați date JSON", + "description": "Lipiți conținutul JSON complet din:\n\n• Un fișier de date ChoreOps (choreops_data)\n• O descărcare de diagnosticare\n\nSistemul va detecta și despacheta automat formatul după cum este necesar. Sunt acceptate atât formatele de date brute de stocare, cât și formatele de export pentru diagnosticare.", + "data": { + "json_data": "Date JSON" + }, + "data_description": { + "json_data": "Lipește aici întregul conținut JSON. Acceptă date din fișierul choreops_data sau din exportul de diagnosticare (desface automat structura suplimentară)." + } + }, + "create_backup_confirm": { + "title": "Creați o copie de rezervă manuală", + "description": "Creați o copie de rezervă manuală a datelor ChoreOps actuale?", + "data": { + "confirm": "Confirma" + } + }, + "create_backup_success": { + "title": "Copie de rezervă creată", + "description": "Copie de rezervă manuală creată cu succes: {backup_filename}", + "data": { + "continue": "Continua" + } + }, + "delete_backup_confirm": { + "title": "Confirmați ștergerea copiei de rezervă", + "description": "⚠️ Ești pe cale să ștergi definitiv această copie de rezervă:\n\n{backup_filename}\n\nAceastă acțiune nu poate fi anulată.", + "data": { + "confirm": "Confirmați ștergerea" + } + }, + "restore_backup_confirm": { + "title": "Restaurare copie de rezervă", + "description": "Sigur doriți să restaurați această copie de rezervă?\n\nFișier: {backup_filename}\n\nDatele dvs. actuale vor fi copiate în copie de rezervă înainte de restaurare. Integrarea se va reîncărca după restaurare.", + "data": { + "confirm": "Confirmați restaurarea" + } + } + }, + "error": { + "a_chore_must_be_selected": "Trebuie selectată o sarcină", + "badge_requires_assignment": "Cel puțin o persoană trebuie să fie atribuită acestei insigne.", + "error_badge_achievement_required": "O realizare trebuie selectată pentru insignele legate de realizări", + "error_badge_occasion_type_required": "Este necesar un tip de ocazie pentru insignele pentru ocazii speciale.", + "target_threshold_required": "Pragul țintă este obligatoriu", + "invalid_maintenance_rules": "Valoarea regulilor de întreținere este nevalidă", + "error_badge_challenge_required": "Trebuie selectată o provocare pentru insignele legate de provocare", + "error_award_points_minimum": "Punctele de premiere trebuie să fie mai mari decât zero", + "error_award_invalid_multiplier": "Multiplicatorul de puncte trebuie să fie mai mare decât zero", + "invalid_award_item_selected": "Unul sau mai multe articole de premiu selectate sunt nevalide", + "start_date_required": "Data de începere este obligatorie", + "end_date_required": "Data de încheiere este obligatorie", + "end_date_before_start_date": "Data de încheiere trebuie să fie ulterioară datei de începere", + "duplicate_achievement": "Există deja o realizare cu acest nume", + "duplicate_badge": "Există deja o insignă cu acest nume", + "duplicate_challenge": "Există deja o provocare cu acest nume", + "duplicate_chore": "Există deja o sarcină cu acest nume", + "duplicate_assignee": "Există deja o persoană desemnată cu acest nume", + "duplicate_approver": "Există deja un utilizator cu acest nume", + "duplicate_penalty": "Există deja o penalizare cu acest nume", + "duplicate_reward": "Există deja o recompensă cu acest nume", + "duplicate_bonus": "Există deja un bonus cu acest nume", + "usage_requires_assignment_or_approval": "Activați fie „Poate fi atribuit”, fie „Poate fi aprobat”.", + "associated_users_require_approval": "„Utilizatori asociați” pot fi setați numai atunci când este activată opțiunea „Poate aproba”.", + "approval_requires_associated_users": "Este necesar cel puțin un desemnat/utilizator asociat atunci când este activată opțiunea „Poate aproba”.", + "due_date_in_past": "Data scadenței trebuie să fie în viitor.", + "end_date_in_past": "Data de încheiere trebuie să fie în viitor.", + "end_date_not_after_start_date": "Data de încheiere trebuie să fie ulterioară datei de începere", + "err_end_before_start": "Data de încheiere trebuie să fie ulterioară datei de începere", + "err_name_duplicate": "Există deja o provocare cu acest nume", + "err_name_required": "Numele provocării este obligatoriu", + "err_dates_required": "Datele de început și de sfârșit sunt obligatorii", + "err_invalid_date": "Datele provocării sunt nevalide", + "err_target_invalid": "Valoarea țintă a provocării trebuie să fie mai mare decât zero", + "err_points_negative": "Punctele de recompensă pentru provocare nu pot fi negative", + "err_points_invalid": "Punctele de recompensă pentru provocare nu sunt valide", + "invalid_badge": "Insignă nevalidă", + "invalid_badge_count": "Număr de insigne nevalid", + "invalid_chore": "Sarcină nevalidă", + "invalid_chore_count": "Număr de sarcini nevalid", + "invalid_chore_name": "Nume de sarcină nevalid", + "invalid_points": "Punctele trebuie să fie zero sau mai mari", + "invalid_overdue_reset_combination": "Gestionarea depășirilor „La data scadenței, apoi resetare” funcționează numai cu tipurile de resetare la miezul nopții. Selectați „La miezul nopții (o dată)” sau „La miezul nopții (repetată)” pentru tipul de resetare aprobat.", + "invalid_due_date": "Data scadenței este invalidă", + "date_required_for_frequency": "Este necesară o dată scadentă pentru această frecvență recurentă. Ștergerea datelor funcționează numai cu frecvența Niciuna sau Zilnică.", + "invalid_end_date": "Dată de încheiere nevalidă.", + "invalid_assignee_count": "Număr de persoane desemnate nevalid", + "invalid_assignee_name": "Nume de desemnat nevalid", + "no_assignees_assigned": "Cel puțin o persoană trebuie să fie desemnată sarcinii.", + "achievement_no_assignees_assigned": "Cel puțin o persoană trebuie să fie atribuită realizării.", + "challenge_no_assignees_assigned": "Cel puțin o persoană desemnată trebuie să fie atribuită provocării.", + "invalid_penalty": "Penalizare invalidă", + "invalid_penalty_count": "Număr de penalizări nevalid", + "invalid_bonus": "Bonus nevalid", + "invalid_bonus_count": "Număr de bonusuri nevalid", + "invalid_reward": "Recompensă nevalidă", + "invalid_reward_count": "Număr de recompense nevalid", + "invalid_start_date": "Dată de începere nevalidă.", + "start_date_in_past": "Data de începere trebuie să fie în viitor.", + "points_label_required": "Eticheta punctelor este obligatorie", + "corrupt_file": "Fișierul selectat conține JSON nevalid și nu poate fi citit.", + "invalid_structure": "Fișierului selectat îi lipsește structura de date necesară.", + "file_not_found": "Fișierul selectat nu a putut fi găsit.", + "invalid_selection": "Vă rugăm să selectați o opțiune validă.", + "invalid_default_chore_points": "Puncte implicite pentru sarcini nevalide. Trebuie să fie un număr întreg pozitiv.", + "error_daily_multi_requires_compatible_reset": "Frecvența „de mai multe ori pe zi” este incompatibilă cu tipurile de resetare la miezul nopții, deoarece acestea resetează aprobările o singură dată la miezul nopții.", + "error_daily_multi_independent_multi_assignees": "Frecvența „De mai multe ori pe zi” cu finalizare INDEPENDENTĂ necesită exact o persoană desemnată, cu excepția cazului în care sunt configurate ore per persoană desemnată. Configurați ore diferite pentru fiecare persoană desemnată în setările per persoană desemnată.", + "error_daily_multi_times_required": "Lista de ore este obligatorie pentru frecvența „De mai multe ori pe zi”.", + "error_daily_multi_times_invalid_format": "Format de oră nevalid. Folosiți formatul de 24 de ore (HH:MM) separat prin | (de exemplu, 08:00|17:00).", + "error_daily_multi_times_too_few": "Pentru frecvența „De mai multe ori pe zi” sunt necesare cel puțin 2 sesiuni. Pentru o singură sesiune, utilizați frecvența obișnuită „Zilnică”.", + "error_daily_multi_times_too_many": "Maxim de 6 ori pe zi pentru frecvența „De mai multe ori pe zi”.", + "error_daily_multi_due_date_required": "Frecvența „De mai multe ori pe zi” necesită setarea unei date scadente. Data determină momentul în care începe programarea, iar orele determină ferestrele de disponibilitate în fiecare zi.", + "rotation_min_assignees": "Treburile casnice prin rotație necesită cel puțin 2 persoane desemnate", + "error_allow_steal_incompatible": "Gestionarea restantelor pentru furt este compatibilă doar cu sarcinile de rotație (rotation_simple sau rotation_smart), tipul de resetare „O dată pe zi” și necesită o dată scadentă pentru a defini momentul în care se deschide fereastra de furt.", + "error_at_due_date_reset_requires_due_date": "Tipurile de resetare a aprobării „La data scadenței” (O dată sau Mai multe) necesită setarea unei date scadente. Fără o dată scadentă, resetarea aprobării nu se va declanșa niciodată, iar sarcina va rămâne aprobată pe termen nelimitat.", + "error_per_assignee_applicable_days_invalid": "Formatul de zile aplicabil este invalid pentru una sau mai multe persoane desemnate. Zilele trebuie să fie numere întregi de la 0 la 6 (luni-duminică), fără duplicate.", + "error_per_assignee_daily_multi_times_invalid": "Format de oră zilnică nevalid pentru una sau mai multe persoane desemnate. Folosiți formatul de 24 de ore separat prin | (de exemplu, 08:00|17:00).", + "dashboard_exists": "Există deja un tablou de bord cu această cale URL. Folosește opțiunea Actualizare tablou de bord.", + "dashboard_template_error": "Nu s-a putut prelua șablonul tabloului de bord. Verificați conexiunea la rețea sau încercați din nou mai târziu.", + "dashboard_render_error": "Șablonul de tablou de bord nu a putut fi redat. Acest lucru poate indica o eroare legată de șablon.", + "dashboard_save_error": "Nu s-a putut salva tabloul de bord în Home Assistant. Verificați jurnalele de sistem pentru detalii.", + "dashboard_release_incompatible": "Versiunea selectată a tabloului de bord nu este compatibilă cu versiunea ChoreOps instalată.", + "dashboard_no_name": "Vă rugăm să introduceți un nume pentru tabloul de bord.", + "dashboard_no_assignees": "Selectați cel puțin o persoană desemnată sau activați „Includeți fila Admin”.", + "dashboard_no_dashboards": "Selectați cel puțin un tablou de bord pentru ștergere.", + "dashboard_no_assignees_no_admin": "Selectați cel puțin o persoană desemnată sau alegeți un aspect de administrare diferit de „niciunul”.", + "dashboard_admin_global_template_required": "Șablonul de administrator partajat este obligatoriu atunci când Admin Layout include Shared.", + "dashboard_admin_per_assignee_template_required": "Șablonul de administrare per utilizator este obligatoriu atunci când Admin Layout include Per utilizator.", + "dashboard_admin_per_assignee_needs_assignees": "Aspectul de administrare per utilizator necesită cel puțin un utilizator selectat.", + "dashboard_dependency_ack_required": "Activați „Continuați oricum” pentru a continua sau reveniți și instalați mai întâi dependențele necesare lipsă.", + "dashboard_access_warning_ack_required": "Confirmați avertismentul privind controlul accesului pentru a continua sau reveniți și conectați utilizatorii afectați sau activați modul chioșc.", + "dashboard_nonselectable_templates": "Unul sau mai multe șabloane selectate nu sunt disponibile pentru generare.", + "dashboard_release_strict_pin_failed": "Versiunea selectată a tabloului de bord trebuie fixată exact, dar nu era disponibilă nicio referință efectivă la versiune în momentul execuției. Selectați din nou versiunea în Pasul 1 și încercați din nou.", + "dashboard_release_asset_prep_failed": "Nu se pot pregăti elementele selectate ale tabloului de bord online. Alegeți o altă versiune sau utilizați cele mai recente șabloane locale compatibile/actuale și încercați din nou." + }, + "abort": { + "invalid_action": "Acțiune nevalidă", + "invalid_achievement": "Realizare nevalidă", + "invalid_badge": "Insignă nevalidă", + "invalid_badge_type": "Tip de insignă nevalid", + "invalid_challenge": "Provocare nevalidă", + "invalid_chore": "Sarcină invalidă", + "invalid_entity": "Entitate nevalidă", + "invalid_assignee": "Cesionar nevalid", + "invalid_approver": "Aprobator nevalid", + "invalid_penalty": "Penalizare invalidă", + "invalid_reward": "Recompensă nevalidă", + "invalid_bonus": "Bonus nevalid", + "no_assignee": "Nicio persoană desemnată nu este configurată pentru editare. Adăugați mai întâi o intrare.", + "no_approver": "Nu sunt configurați aprobatori pentru editare. Adăugați mai întâi o intrare.", + "no_chore": "Nu sunt configurate treburi casnice pentru editare. Adăugați mai întâi o intrare.", + "no_badge": "Nu sunt configurate insigne pentru editare. Adăugați mai întâi o intrare.", + "no_reward": "Nu sunt configurate recompense pentru editare. Adăugați mai întâi o intrare.", + "no_penalty": "Nu sunt setate penalizări pentru editare. Adăugați mai întâi o intrare.", + "no_bonus": "Nu sunt configurate bonusuri pentru editare. Adăugați mai întâi o intrare.", + "no_achievement": "Nu sunt configurate realizări pentru editare. Adăugați mai întâi o intrare.", + "no_challenge": "Nu sunt configurate provocări pentru editare. Adăugați mai întâi o intrare.", + "setup_complete": "Configurare finalizată", + "backup_restored": "Copia de rezervă a fost restaurată cu succes. Integrarea a fost reîncărcată cu datele restaurate.", + "no_dashboards_to_delete": "Nu s-au găsit tablouri de bord ChoreOps. Creați mai întâi unul folosind Gestionare tablou de bord." + } + }, + "selector": { + "main_menu": { + "options": { + "manage_points": "Gestionați punctele", + "manage_user": "Gestionare utilizator", + "manage_approver": "Gestionare utilizator", + "manage_chore": "Gestionează treburile", + "manage_badge": "Gestionează insigna", + "manage_reward": "Gestionează recompensa", + "manage_penalty": "Gestionează penalizarea", + "manage_bonus": "Gestionează bonusul", + "manage_achievement": "Gestionează realizările", + "manage_challenge": "Gestionează provocarea", + "dashboard_generator": "Gestionare tablou de bord", + "general_options": "Opțiuni generale", + "done": "Finalizați configurarea" + } + }, + "dashboard_action": { + "options": { + "create": "Creați un tablou de bord nou", + "update": "Actualizați vizualizările existente ale tabloului de bord", + "delete": "Ștergeți tabloul de bord", + "exit": "Ieșire" + } + }, + "dashboard_assignee_selection": { + "options": {} + }, + "dashboard_update_selection": { + "options": {} + }, + "dashboard_template_profile": { + "options": {} + }, + "dashboard_admin_mode": { + "options": { + "none": "Nici unul", + "global": "Partajat", + "per_assignee": "Per utilizator", + "both": "Ambele" + } + }, + "dashboard_admin_view_visibility": { + "options": { + "all_users": "Toți utilizatorii", + "linked_approvers": "Numai pentru aprobarea conectați" + } + }, + "dashboard_release_selection": { + "options": { + "current_installed": "Instalat în prezent", + "latest_stable": "Cel mai recent stabil", + "latest_compatible": "Cea mai recentă versiune compatibilă (recomandată)" + } + }, + "manage_actions": { + "options": { + "add": "Adăuga", + "edit": "Edita", + "delete": "Şterge", + "back": "Înapoi la meniul principal" + } + }, + "backup_actions_menu": { + "options": { + "select_backup_action": "Selectați acțiunea de rezervă...", + "create_backup": "💾 Creează o copie de rezervă acum", + "delete_backup": "🗑️ Ștergeți o copie de rezervă", + "restore_backup": "🔄 Restaurare din backup", + "return_to_menu": "↩️ Reveniți la meniul principal" + } + }, + "dashboard_points_precision": { + "options": { + "fixed_0": "Numai numere întregi", + "adaptive": "Adaptiv (afișează zecimale doar atunci când este necesar)", + "fixed_1": "Întotdeauna cu o zecimală", + "fixed_2": "Întotdeauna cu 2 zecimale" + } + }, + "select_backup_to_delete": { + "options": { + "cancel": "↩️ Anulare (revenire la meniul de rezervă)" + } + }, + "select_backup_to_restore": { + "options": { + "cancel": "↩️ Anulare (revenire la meniul de rezervă)" + } + }, + "badge_type": { + "options": { + "cumulative": "Cumulativ", + "daily": "Zilnic", + "periodic": "Periodic", + "achievement_linked": "Realizare legată", + "special_occasion": "Ocazie specială" + } + }, + "target_type": { + "options": { + "points": "Puncte", + "points_all_time": "Puncte (toate timpurile)", + "points_chores": "Puncte din treburi", + "chore_count": "Numărul de treburi", + "days_all_chores": "Zile de treburi selectate finalizate", + "days_80pct_chores": "Zile în care 80% din treburile selectate au fost finalizate", + "days_all_chores_no_overdue": "Zile de finalizare a sarcinilor selectate (fără întârzieri)", + "days_all_due_chores": "Zile selectate, scadente, treburi finalizate", + "days_80pct_due_chores": "Zile în care 80% din treburile casnice selectate scadente au fost finalizate", + "days_all_due_chores_no_overdue": "Zile selectate, scadente, sarcini finalizate (fără întârzieri)", + "days_min_3_chores": "Minim 3 zile de treburi casnice finalizate", + "days_min_5_chores": "Minim 5 zile de treburi casnice finalizate", + "days_min_7_chores": "Minim 7 zile de treburi casnice finalizate", + "streak_all_chores": "Seria: Treburi selectate finalizate", + "streak_80pct_chores": "Seria: 80% din treburile selectate finalizate", + "streak_all_chores_no_overdue": "Serie: Treburi selectate finalizate (fără întârzieri)", + "streak_80pct_due_chores": "Serie: 80% din treburile selectate scadente finalizate", + "streak_all_due_chores_no_overdue": "Serie: Treburi selectate scadente finalizate (fără restanțe)" + } + }, + "award_items": { + "options": { + "points": "Puncte", + "multiplier": "Multiplicator de puncte" + } + }, + "award_mode": { + "options": { + "award_none": "Nici unul", + "award_points": "Puncte", + "award_reward": "Răsplată", + "award_points_reward": "Puncte și recompensă" + } + }, + "reset_type": { + "options": { + "year_end": "Sfârșit de an", + "quarter": "Trimestrial", + "monthly": "Lunar", + "custom_1_year": "Personalizat: Perioadă de 1 an", + "custom_1_month": "Personalizat: Perioadă de 1 lună" + } + }, + "completion_criteria": { + "options": { + "shared_all": "Partajat pe toți (Toți participanții trebuie să completeze împreună)", + "independent": "Independent (Fiecare participant completează singur)", + "shared_first": "Partajat Mai întâi (Primele finalizări numără)", + "rotation_simple": "Rotație simplă (doar titular de tură, ordine strictă)", + "rotation_smart": "Rotație inteligentă (doar pentru titularul de tură, ponderat în funcție de corectitudine)" + } + }, + "approval_reset_type": { + "options": { + "at_midnight_once": "O dată pe zi - Se resetează la miezul nopții", + "at_midnight_multi": "De mai multe ori pe zi - Se resetează la miezul nopții", + "at_due_date_once": "O dată pe perioadă - Se resetează la data scadenței", + "at_due_date_multi": "De mai multe ori pe perioadă - Se resetează la data scadenței", + "upon_completion": "Finalizări nelimitate - Se resetează la finalizare", + "manual": "Doar resetare manuală - Fără resetări automate" + } + }, + "overdue_handling_type": { + "options": { + "never_overdue": "Niciodată întârziat", + "at_due_date": "Restanțat până la finalizare", + "at_due_date_clear_at_approval_reset": "Restanțat până la resetarea aprobării", + "at_due_date_clear_immediate_on_late": "Restanțat până la finalizare (Ștergeți imediat aprobările întârziate)", + "at_due_date_clear_and_mark_missed": "Resetare până la aprobare (Marcare ca ratată)", + "at_due_date_mark_missed_and_lock": "Blocare până la aprobare Resetare (Prevenirea revendicărilor, marcarea ca ratate)", + "at_due_date_allow_steal": "Permiteți furtul până la resetare prin aprobare (doar prin rotație)" + } + }, + "approval_reset_pending_claim_action": { + "options": { + "hold_pending": "Rețineți starea cererii (așteptați aprobarea/respingerea)", + "clear_pending": "Ștergeți revendicările în așteptare", + "auto_approve_pending": "Aprobare automată a revendicărilor în așteptare" + } + }, + "chore_notifications": { + "options": { + "notify_on_claim": "Notificare privind reclamația", + "notify_on_approval": "Notificare la aprobare", + "notify_on_disapproval": "Notificare privind respingerea", + "notify_on_due_window": "Notificare când începe fereastra scadenței", + "notify_due_reminder": "Notificați la ora de reamintire prevăzută", + "notify_on_overdue": "Notificare când scadența scadenței este depășită" + } + }, + "recurring_frequency": { + "options": { + "none": "Nici unul", + "daily": "Zilnic", + "daily_multi": "Zilnic (de mai multe ori pe zi)", + "weekly": "Săptămânal", + "biweekly": "La două săptămâni", + "monthly": "Lunar", + "quarterly": "Trimestrial", + "yearly": "Anual", + "custom": "Personalizat", + "custom_from_complete": "Personalizat (Reprogramare de la data finalizării)", + "custom_1_week": "Personalizat: 1 săptămână", + "custom_1_month": "Personalizat: 1 lună", + "custom_1_quarter": "Personalizat: 1 sfert", + "custom_1_year": "Personalizat: 1 an", + "week_end": "Weekend", + "month_end": "Sfârșit de lună", + "quarter_end": "Sfârșit de sfert", + "year_end": "Sfârșit de an" + } + }, + "occasion_type": { + "options": { + "birthday": "Ziua de naștere", + "holiday": "Vacanţă", + "custom": "Personalizat" + } + }, + "custom_interval_unit": { + "options": { + "hours": "Ore", + "days": "Zile", + "weeks": "Săptămâni", + "months": "Luni" + } + }, + "applicable_days": { + "options": { + "mon": "luni", + "tue": "marţi", + "wed": "miercuri", + "thu": "joi", + "fri": "vineri", + "sat": "sâmbătă", + "sun": "duminică" + } + }, + "threshold_type": { + "options": { + "points": "Puncte", + "chore_count": "Numărul de treburi" + } + }, + "daily_threshold_type": { + "options": { + "points": "Puncte", + "chore_count": "Numărul de treburi" + } + }, + "data_recovery_selection": { + "options": { + "cancel": "↩️ Anulare (revenire la meniul de rezervă)", + "start_fresh": "🆕 Începeți de la zero (creează o copie de rezervă a datelor existente)", + "current_active": "📂 Folosește fișierul de date activ curent", + "migrate_from_kidschores": "🔄 Migrare din KidsChores (copie nedistructivă)", + "paste_json": "📋 Lipiți JSON din fișierul de date sau din diagnosticare" + } + } + }, + "services": { + "claim_chore": { + "name": "Revendicați treaba", + "description": "O persoană desemnată revendică o sarcină, marcând-o ca „revendicată” pentru revizuire de către aprobare.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "user_name": { + "name": "Nume utilizator", + "description": "Numele utilizatorului care revendică sarcina.", + "example": "Alice" + }, + "chore_name": { + "name": "Numele sarcinii", + "description": "Numele sarcinii de revendicat.", + "example": "Spălați vasele" + } + } + }, + "approve_chore": { + "name": "Aprobați treaba", + "description": "Aprobatorul aprobă sarcina și acordă puncte.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "approver_name": { + "name": "Numele aprobatorului", + "description": "Aprobatorul aprobă sarcina.", + "example": "Mamă" + }, + "user_name": { + "name": "Nume utilizator", + "description": "Numele utilizatorului care a efectuat sarcina.", + "example": "Alice" + }, + "chore_name": { + "name": "Numele sarcinii", + "description": "Numele sarcinii care este aprobată.", + "example": "Spălați vasele" + }, + "points_awarded": { + "name": "Puncte acordate", + "description": "Puncte de acordat (opțional; implicit punctele pentru sarcină).", + "example": "3" + } + } + }, + "disapprove_chore": { + "name": "Respingeți treaba", + "description": "Aprobatorul dezaprobă o sarcină pentru o persoană desemnată, revenind la starea acesteia.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "approver_name": { + "name": "Numele aprobatorului", + "description": "Persoana care aprobă sarcina dezaprobă.", + "example": "Mamă" + }, + "user_name": { + "name": "Nume utilizator", + "description": "Numele utilizatorului a cărui sarcină este respinsă.", + "example": "Alice" + }, + "chore_name": { + "name": "Numele sarcinii", + "description": "Numele sarcinii de lucru respinse.", + "example": "Cameră curată" + } + } + }, + "pause_user_chores": { + "name": "Întrerupeți sarcinile utilizatorului", + "description": "Întrerupeți sau reluați procesarea sarcinilor pentru un utilizator.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "user_name": { + "name": "Nume utilizator", + "description": "Numele utilizatorului ale cărui sarcini vor fi întrerupte sau reluate.", + "example": "Sara" + }, + "paused": { + "name": "Întrerupt", + "description": "Adevărat pentru a întrerupe treburile, Fals pentru a le relua.", + "example": "adevărat" + }, + "paused_until": { + "name": "Întrerupt până la", + "description": "Dată de revenire opțională. Dacă este setată, treburile casnice se reiau automat la miezul nopții după această dată.", + "example": "2026-06-10T00:00:00+00:00" + } + } + }, + "redeem_reward": { + "name": "Răscumpărați recompensa", + "description": "Un aprobator valorifică o recompensă pentru o persoană desemnată, scăzând puncte.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "approver_name": { + "name": "Numele aprobatorului", + "description": "Persoana care aprobă valorificarea recompensei.", + "example": "Mamă" + }, + "user_name": { + "name": "Nume utilizator", + "description": "Utilizatorul care valorifică recompensa.", + "example": "Alice" + }, + "reward_name": { + "name": "Numele recompensei", + "description": "Numele recompensei de valorificat.", + "example": "Timp suplimentar pe ecran" + } + } + }, + "approve_reward": { + "name": "Aprobați recompensa", + "description": "Aprobatorul aprobă o recompensă solicitată de un cesionar.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "approver_name": { + "name": "Numele aprobatorului", + "description": "Aprobatorul care aprobă recompensa.", + "example": "Mamă" + }, + "user_name": { + "name": "Nume utilizator", + "description": "Utilizatorul care valorifică recompensa.", + "example": "Alice" + }, + "reward_name": { + "name": "Numele recompensei", + "description": "Numele recompensei care este aprobată.", + "example": "Timp suplimentar pe ecran" + }, + "cost_override": { + "name": "Suprascrierea costurilor", + "description": "Suprascriere opțională a costului. Dacă este omisă, folosește costul stocat al recompensei. Setați la 0 pentru o subvenție gratuită (cum ar fi recompensele pentru insigne). Util pentru stabilirea prețurilor în funcție de context (weekend-uri, ocazii speciale etc.)." + } + } + }, + "disapprove_reward": { + "name": "Respingeți recompensa", + "description": "Aprobatorul respinge o valorificare a recompensei pentru un cesionar.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "approver_name": { + "name": "Numele aprobatorului", + "description": "Persoana care aprobă recompensa nu este de acord.", + "example": "Tată" + }, + "user_name": { + "name": "Nume utilizator", + "description": "Utilizatorul a cărui valorificare a recompensei este respinsă.", + "example": "Alice" + }, + "reward_name": { + "name": "Numele recompensei", + "description": "Numele recompensei respinse.", + "example": "Timp suplimentar pe ecran" + } + } + }, + "apply_penalty": { + "name": "Aplicați penalizarea", + "description": "Un aprobator aplică o penalizare pentru a deduce puncte.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "approver_name": { + "name": "Numele aprobatorului", + "description": "Aprobatorul care aplică penalizarea.", + "example": "Tată" + }, + "user_name": { + "name": "Nume utilizator", + "description": "Utilizatorul care primește penalizarea.", + "example": "Alice" + }, + "penalty_name": { + "name": "Numele penalizării", + "description": "Denumirea penalității care va fi aplicată.", + "example": "Țipete" + } + } + }, + "apply_bonus": { + "name": "Aplică bonusul", + "description": "Un aprobator aplică un bonus unei persoane desemnate, acordând puncte.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "approver_name": { + "name": "Numele aprobatorului", + "description": "Aprobatorul care aplică bonusul.", + "example": "Mamă" + }, + "user_name": { + "name": "Nume utilizator", + "description": "Utilizatorul care primește bonusul.", + "example": "Alice" + }, + "bonus_name": { + "name": "Nume bonus", + "description": "Numele bonusului care va fi aplicat.", + "example": "Extra util" + } + } + }, + "manual_adjust_points": { + "name": "Puncte de ajustare manuală", + "description": "Ajustați manual punctele pentru un utilizator folosind o sumă întreagă cu semn și un motiv necesar înregistrat în registru.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "approver_name": { + "name": "Numele aprobatorului (opțional)", + "description": "Numele de afișare opțional al actorului care efectuează ajustarea manuală.", + "example": "Tată" + }, + "user_id": { + "name": "ID utilizator (opțional)", + "description": "UUID-ul intern al utilizatorului țintă. Furnizați user_id sau user_name.", + "example": "018f1c2a-1234-4f8a-9b6d-123456789abc" + }, + "user_name": { + "name": "Nume utilizator (opțional)", + "description": "Numele afișat al utilizatorului țintă. Furnizați user_id sau user_name.", + "example": "Zoe" + }, + "amount": { + "name": "Cantitate", + "description": "Numărul întreg cu semn este numărul de puncte care trebuie ajustat (de exemplu, 10 sau -10; 0 nu este permis).", + "example": "-10" + }, + "reason": { + "name": "Motiv", + "description": "Motivul obligatoriu este înregistrat în numele articolului din registrul de tranzacții.", + "example": "A ajutat un frate cu temele" + } + } + }, + "create_reward": { + "name": "Creați o recompensă", + "description": "Creați o nouă recompensă programatic.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "name": { + "name": "Nume", + "description": "Numele recompensei.", + "example": "Timp suplimentar pe ecran" + }, + "cost": { + "name": "Cost", + "description": "Puncte necesare pentru a revendica recompensa.", + "example": "10" + }, + "description": { + "name": "Descriere", + "description": "Descrierea opțională a recompensei.", + "example": "30 de minute suplimentare de administrare a tabletelor" + }, + "icon": { + "name": "Pictogramă", + "description": "Pictogramă care reprezintă recompensa.", + "example": "mdi:cadou" + }, + "labels": { + "name": "Etichete", + "description": "Etichete pentru gruparea recompenselor.", + "example": "['weekend', 'special']" + }, + "assigned_user_names": { + "name": "Atribuit la", + "description": "Numele afișate ale utilizatorilor au fost atribuite acestei recompense. Folosiți [\"*\"] pentru toți utilizatorii. Transmiteți o listă goală pentru a nu atribui nicio recompensă.", + "example": "[„Zoë”, „Max!”]" + } + } + }, + "update_reward": { + "name": "Actualizați recompensa", + "description": "Actualizați o recompensă existentă (actualizările parțiale sunt acceptate).", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "id": { + "name": "ID-ul recompensei", + "description": "ID-ul intern al recompensei de actualizat. Folosiți fie ID-ul, fie numele.", + "example": "abc123-def456-789..." + }, + "name": { + "name": "Nume", + "description": "Numele recompensei de actualizat sau un nume nou pentru recompensă.", + "example": "Timp suplimentar pe ecran" + }, + "cost": { + "name": "Cost", + "description": "Valoare de cost actualizată.", + "example": "15" + }, + "description": { + "name": "Descriere", + "description": "Descriere actualizată.", + "example": "45 de minute suplimentare de administrare a tabletelor" + }, + "icon": { + "name": "Pictogramă", + "description": "Pictogramă actualizată.", + "example": "mdi:star" + }, + "labels": { + "name": "Etichete", + "description": "Etichete actualizate.", + "example": "['premium', 'special']" + }, + "assigned_user_names": { + "name": "Atribuit la", + "description": "Numele afișate ale utilizatorilor atribuite acestei recompense. Folosiți [\"*\"] pentru toți utilizatorii. Transmiteți o listă goală pentru a elimina toți utilizatorii atribuiți. Omiteți pentru a lăsa atribuțiile curente neschimbate.", + "example": "[„Zoë”, „Max!”]" + } + } + }, + "delete_reward": { + "name": "Șterge recompensa", + "description": "Șterge o recompensă după ID sau nume.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "id": { + "name": "ID-ul recompensei", + "description": "ID-ul intern al recompensei de șters. Folosiți fie ID-ul, fie numele.", + "example": "abc123-def456-789..." + }, + "name": { + "name": "Nume", + "description": "Numele recompensei de șters.", + "example": "Timp suplimentar pe ecran" + } + } + }, + "create_chore": { + "name": "Creați o sarcină", + "description": "Creează o sarcină nouă pe care persoanele însărcinate o pot îndeplini pentru a câștiga puncte.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "name": { + "name": "Numele sarcinii", + "description": "Numele sarcinii de creat.", + "example": "Cameră curată" + }, + "assigned_user_names": { + "name": "Atribuit la", + "description": "Listă de nume de persoane cărora le este atribuită această sarcină. Folosiți [\"*\"] pentru toți utilizatorii care pot fi atribuiți. Transmiteți o listă goală pentru a crea fără persoane atribuite.", + "example": "[„Emma”, „Jack”]" + }, + "points": { + "name": "Puncte", + "description": "Puncte acordate la finalizarea sarcinii.", + "example": "10" + }, + "description": { + "name": "Descriere", + "description": "Descrierea opțională a sarcinii.", + "example": "Fă patul, pune jucăriile deoparte, aspiră podeaua" + }, + "icon": { + "name": "Pictogramă", + "description": "Pictogramă Material Design pentru treabă.", + "example": "mdi:mătură" + }, + "labels": { + "name": "Etichete", + "description": "Etichete opționale pentru clasificarea sarcinii.", + "example": "['zilnic', 'dormitor']" + }, + "frequency": { + "name": "Frecvenţă", + "description": "Cât de des se repetă sarcina: niciuna, zilnic, zilnic_mai_multiplu, săptămânal, la două săptămâni, lunar, trimestrial, anual, personalizat, personalizat_de_la_finalizare sau sfârșit_de_perioadă (sfârșit_de_weekend, sfârșit_lună, sfârșit_trimestru, sfârșit_an).", + "example": "zilnic" + }, + "applicable_days": { + "name": "Zile aplicabile", + "description": "Zilele săptămânii în care este aplicabilă sarcina.", + "example": "['luni', 'miercuri', 'vineri']" + }, + "completion_criteria": { + "name": "Criterii de finalizare", + "description": "Controlează modul în care se finalizează sarcina atunci când sunt atribuite mai multe persoane: urmărire individuală, finalizare partajată sau rotație pe ture.", + "example": "independent" + }, + "approval_reset_type": { + "name": "Tipul de resetare a aprobării", + "description": "Controlează momentul în care se declanșează limita ciclului de aprobare a sarcinii (miezul nopții, data scadenței, la finalizare sau declanșare manuală).", + "example": "la_miezul_nopții_odată" + }, + "pending_claims": { + "name": "Acțiune privind reclamațiile în așteptare", + "description": "Controlează ce se întâmplă cu revendicările neaprobate atunci când se declanșează limita de resetare a aprobării.", + "example": "așteptare" + }, + "overdue_handling": { + "name": "Gestionarea restanțelor", + "description": "Controlează ce se întâmplă când trece data scadenței și ce se întâmplă cu sarcinile restante la limita de resetare a aprobării.", + "example": "la_data_scadentă" + }, + "chore_claim_lock_until_window": { + "name": "Reclamație de blocare până la deschiderea ferestrei", + "description": "Dacă este adevărat, persoanele desemnate nu pot revendica această sarcină înainte de începerea ferestrei de termen.", + "example": "fals" + }, + "auto_approve": { + "name": "Aprobare automată", + "description": "Dacă este adevărat, sarcina este aprobată automat atunci când este revendicată.", + "example": "fals" + }, + "due_date": { + "name": "Data scadenței", + "description": "Dată scadentă opțională pentru sarcină. Folosește selectorul de dată/oră pentru a alege o dată și o oră valide.", + "example": "2025-03-01T23:59:00Z" + }, + "due_window_offset": { + "name": "Decalajul ferestrei scadente", + "description": "Durata înainte de data scadenței când sarcina intră în starea „scadent”. Format: „30 min”, „1 oră”, „1 zi 6 ore 30 minute” etc. Folosiți „0” pentru a dezactiva funcția ferestrei scadenței.", + "example": "30 de metri" + }, + "due_reminder_offset": { + "name": "Compensare memento scadent", + "description": "Durata înainte de data scadentă pentru trimiterea notificării de memento. Format: „30 min”, „1 oră”, „1 zi 6 ore 30 minute” etc. Folosiți „0” pentru a dezactiva mementourile.", + "example": "30 de metri" + } + } + }, + "update_chore": { + "name": "Actualizare sarcină", + "description": "Actualizați proprietățile unei sarcini existente. Furnizați fie ID, fie name pentru a identifica sarcina. Doar câmpurile furnizate vor fi actualizate.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "id": { + "name": "ID sarcină", + "description": "ID-ul intern al sarcinii de actualizat (alternativă la nume).", + "example": "abc-123-def-456" + }, + "name": { + "name": "Numele sarcinii (Identificator)", + "description": "Numele sarcinii de actualizat (alternativă la id). Mai ușor de utilizat decât id.", + "example": "Cameră curată" + }, + "assigned_user_names": { + "name": "Atribuit la", + "description": "Listă nouă de nume de persoane cărora să le atribuiți această sarcină. Folosiți [\"*\"] pentru toți utilizatorii care pot fi atribuiți. Transmiteți o listă goală pentru a elimina toți utilizatorii atribuiți. Omiteți pentru a lăsa atribuțiile curente neschimbate.", + "example": "[„Emma”, „Jack”]" + }, + "points": { + "name": "Puncte", + "description": "Valoare nouă în puncte pentru sarcină.", + "example": "15" + }, + "description": { + "name": "Descriere", + "description": "Noua descriere a sarcinii.", + "example": "Fă patul, organizează biroul, aspiră podeaua" + }, + "icon": { + "name": "Pictogramă", + "description": "Nouă pictogramă Material Design pentru sarcină.", + "example": "mdi:vid" + }, + "labels": { + "name": "Etichete", + "description": "Noi etichete pentru treabă.", + "example": "['săptămânal', 'curățenie']" + }, + "frequency": { + "name": "Frecvenţă", + "description": "Frecvență recurentă nouă: nicio, zilnic, zilnic_multiplu, săptămânal, la două săptămâni, lunar, trimestrial, anual, personalizat, personalizat_de_la_finalizare_sau sfârșit_de_perioadă (sfârșit_de_weekend, sfârșit_lună, sfârșit_trimestru, sfârșit_an).", + "example": "săptămânal" + }, + "applicable_days": { + "name": "Zile aplicabile", + "description": "Noi zile ale săptămânii în care se aplică sarcina.", + "example": "['sâmbătă', 'soare']" + }, + "approval_reset_type": { + "name": "Tipul de resetare a aprobării", + "description": "Nou tip de resetare pentru momentul resetării sarcinii.", + "example": "la_data_scadentă_once" + }, + "pending_claims": { + "name": "Acțiune privind reclamațiile în așteptare", + "description": "Acțiune nouă pentru revendicările în așteptare la resetarea sarcinii.", + "example": "ștergere_în_așteptare" + }, + "overdue_handling": { + "name": "Gestionarea Restanțelor", + "description": "Nou comportament de gestionare a întârzierilor.", + "example": "niciodată_întârziat" + }, + "chore_claim_lock_until_window": { + "name": "Reclamație de blocare până la deschiderea ferestrei", + "description": "Dacă este adevărat, persoanele desemnate nu pot revendica această sarcină înainte de începerea ferestrei de termen.", + "example": "adevărat" + }, + "auto_approve": { + "name": "Aprobare automată", + "description": "Nouă setare de aprobare automată.", + "example": "adevărat" + }, + "due_date": { + "name": "Data scadenței", + "description": "Noua dată scadentă pentru sarcină. Folosește selectorul de dată/oră pentru a alege o dată și o oră valide.", + "example": "2025-04-01T18:00:00Z" + }, + "due_window_offset": { + "name": "Decalajul ferestrei scadente", + "description": "Decalaj pentru noua fereastră scadentă. Durata dinaintea datei scadente când sarcina intră în starea „scadent”. Format: „30 min”, „1 oră”, „1 zi 6 ore 30 minute” etc. Folosiți „0” pentru a dezactiva.", + "example": "1 oră" + }, + "due_reminder_offset": { + "name": "Compensare pentru memento scadent", + "description": "Decalaj pentru noua notificare de reamintire scadentă. Durata înainte de data scadenței pentru trimiterea notificării de reamintire. Format: „30 min”, „1 oră”, „1 zi 6 ore 30 minute” etc. Folosiți „0” pentru a dezactiva.", + "example": "30 de metri" + }, + "assignment_action": { + "name": "Acțiune de atribuire", + "description": "Cum se gestionează lista assigned_user_names. „replace” setează lista direct (implicit, compatibil cu versiunile anterioare). „add” adaugă utilizatorii listați la utilizatorii desemnați existenți. „remove” elimină utilizatorii listați dintre utilizatorii desemnați existenți.", + "example": "adăuga" + } + } + }, + "delete_chore": { + "name": "Ștergeți corvoada", + "description": "Ștergeți o sarcină după ID sau nume. Toate stările și istoricul specifice persoanei desemnate vor fi eliminate.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "id": { + "name": "ID sarcină", + "description": "ID-ul intern al sarcinii de șters. Folosiți fie id, fie name.", + "example": "abc123-def456-789..." + }, + "name": { + "name": "Nume", + "description": "Numele sarcinii de șters.", + "example": "Cameră curată" + } + } + }, + "set_rotation_turn": { + "name": "Setați rotația", + "description": "Atribuiți manual tura curentă unei anumite persoane într-o sarcină de rotație. Funcționează numai pentru sarcinile de rotație (rotation_simple sau rotation_smart). Folosiți fie ID-ul, fie numele pentru identificare.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "chore_id": { + "name": "ID sarcină", + "description": "ID-ul intern al sarcinii de rotație. Opțional dacă este furnizat chore_name.", + "example": "abc123-def456-789..." + }, + "chore_name": { + "name": "Numele sarcinii", + "description": "Numele sarcinii de rotație. Opțional dacă este furnizat chore_id.", + "example": "Dormitor curat" + }, + "user_id": { + "name": "ID-ul de utilizator", + "description": "ID-ul intern al utilizatorului căruia i se atribuie rândul. Trebuie atribuit acestei sarcini. Opțional dacă este furnizat user_name.", + "example": "xyz789-abc123-456..." + }, + "user_name": { + "name": "Nume utilizator", + "description": "Numele utilizatorului căruia i se atribuie rândul. Trebuie atribuit acestei sarcini. Opțional dacă se furnizează user_id.", + "example": "Alice" + } + } + }, + "reset_rotation": { + "name": "Resetare rotație", + "description": "Resetează tura de rotație la prima persoană atribuită. Funcționează doar pentru sarcinile de rotație (rotation_simple sau rotation_smart). Folosește fie ID-ul, fie numele pentru identificare.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "chore_id": { + "name": "ID sarcină", + "description": "ID-ul intern al sarcinii de rotație care urmează să fie resetată. Opțional dacă este furnizat chore_name.", + "example": "abc123-def456-789..." + }, + "chore_name": { + "name": "Numele sarcinii", + "description": "Numele sarcinii de rotație care va fi resetată. Opțional dacă este furnizat chore_id.", + "example": "Dormitor curat" + } + } + }, + "open_rotation_cycle": { + "name": "Ciclul de rotație deschisă", + "description": "Activează suprascrierea ciclului de rotație pentru un ciclu, permițând oricărei persoane desemnate să revendice dreptul indiferent de tură. Suprascrierea se anulează după următoarea aprobare. Folosește fie ID-ul, fie numele pentru identificare.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "chore_id": { + "name": "ID sarcină", + "description": "ID-ul intern al sarcinii de rotație care va fi deschisă. Opțional dacă este furnizat chore_name.", + "example": "abc123-def456-789..." + }, + "chore_name": { + "name": "Numele sarcinii", + "description": "Numele sarcinii de rotație care va fi deschisă. Opțional dacă este furnizat chore_id.", + "example": "Dormitor curat" + } + } + }, + "generate_activity_report": { + "name": "Generați raportul de activitate", + "description": "Generează un raport de activitate pe 7 zile din istoricul registrului. Acceptă filtrarea opțională a utilizatorilor, livrarea opțională de notificări și conversia HTML opțională, returnând în același timp o sarcină utilă de răspuns structurată.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "user_name": { + "name": "Nume utilizator", + "description": "Filtru opțional pentru a genera raportul doar pentru un singur utilizator." + }, + "report_language": { + "name": "Limba raportului", + "description": "Cod opțional de limbă pentru textul raportului. Se folosește limba selectată de utilizator (când este setat user_name) și apoi engleza." + }, + "report_title": { + "name": "Titlul raportului", + "description": "Suprascriere opțională a titlului pentru ieșirea markdown." + }, + "notify_service": { + "name": "Notificați serviciul", + "description": "Țintă de notificare opțională (de exemplu, notify.family) pentru livrarea raportului." + }, + "output_format": { + "name": "Format de ieșire", + "description": "Returnează doar markdown, doar html sau ambele, markdown și html, în sarcina utilă a răspunsului." + } + } + }, + "manage_ui_control": { + "name": "Gestionați controlul interfeței utilizator", + "description": "Creați, actualizați sau eliminați o valoare de control UI persistentă. În mod implicit, aceasta vizează bucket-ul ui_preferences al unui utilizator. Folosiți ui_control_target: shared_admin pentru a scrie în bucket-ul de control UI de administrare partajat din data/meta. Folosiți o cheie goală cu acțiunea de eliminare pentru a șterge toate valorile stocate pentru ținta selectată.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "user_id": { + "name": "ID-ul de utilizator", + "description": "Țintă opțională pentru ID-ul utilizatorului intern. Doar pentru utilizatori avansați. Dacă sunt furnizate atât user_id, cât și user_name, user_id are prioritate.", + "example": "abc123-def456" + }, + "user_name": { + "name": "Nume utilizator", + "description": "Nume de utilizator opțional. Obligatoriu când nu este furnizat user_id.", + "example": "Alice" + }, + "ui_control_target": { + "name": "Țintă de control al interfeței utilizator", + "description": "Alegeți dacă doriți să vizați un singur utilizator sau grupul de control al interfeței de administrare partajate. Când este selectat shared_admin, nu furnizați user_id sau user_name.", + "example": "utilizator" + }, + "ui_control_action": { + "name": "Acțiune de control al interfeței utilizator", + "description": "Alegeți dacă doriți să creați, să actualizați sau să eliminați o valoare de control al interfeței utilizator stocată.", + "example": "actualizare" + }, + "key": { + "name": "Calea cheie", + "description": "Calea de control a interfeței utilizator delimitată prin bare oblice, cum ar fi gamification/rewards/header_collapse. Lăsați câmpul gol doar la acțiunea de eliminare pentru a șterge toate valorile stocate pentru ținta selectată.", + "example": "gamificare/recompense/restrângere_antet" + }, + "value": { + "name": "Valoare", + "description": "Valoare de stocat pentru creare sau actualizare. Acest câmp este ignorat pentru eliminare." + } + } + }, + "reset_chores_to_pending_state": { + "name": "Resetare sarcini la starea în așteptare", + "description": "Resetează manual toate sarcinile la starea în așteptare, eliminând revendicările și aprobările.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + } + } + }, + "reset_transactional_data": { + "name": "Resetare date tranzacționale", + "description": "Resetează datele de execuție/tranzacționale păstrând configurația (persoane desemnate, sarcini, recompense etc.). O copie de rezervă automată este creată înainte de resetare ca choreops_data_timestamp_reset în directorul .storage. Folosește domeniul de aplicare pentru a viza anumite persoane desemnate sau domenii. Necesită parametrul confirm_destructive setat la true ca mecanism de siguranță.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "confirm_destructive": { + "name": "Confirmați distructiv", + "description": "Trebuie setat la true pentru a confirma că doriți să continuați cu resetarea. Acesta este un mecanism de siguranță." + }, + "scope": { + "name": "Domeniu de aplicare", + "description": "Resetare domeniu: „global” resetează toate datele, „utilizator” resetează datele doar pentru un anumit utilizator." + }, + "user_name": { + "name": "Nume utilizator", + "description": "Obligatoriu dacă domeniul de aplicare este „utilizator”. Numele utilizatorului ale cărui date ar trebui resetate." + }, + "item_type": { + "name": "Tipul articolului", + "description": "Filtru opțional pentru a reseta doar un anumit domeniu (de exemplu, doar puncte sau doar treburi casnice)." + }, + "item_name": { + "name": "Nume articol", + "description": "Filtru opțional pentru resetarea unui anumit element din domeniul item_type." + } + } + }, + "reset_overdue_chores": { + "name": "Resetare sarcini restante", + "description": "Resetați sarcinile restante la starea În așteptare și reprogramați-le în funcție de frecvența lor recurentă și de data scadenței anterioare. Opțional, puteți furniza un chore_id (sau chore_name) pentru a reseta o anumită sarcină și, opțional, un user_name pentru a reseta sarcina doar pentru utilizatorul respectiv.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "chore_id": { + "name": "ID sarcină", + "description": "ID-ul intern al sarcinii de resetat (opțional dacă este furnizat chore_name).", + "example": "abc123" + }, + "chore_name": { + "name": "Numele sarcinii", + "description": "Numele sarcinii de resetat (opțional dacă este furnizat chore_id).", + "example": "Spălați vasele" + }, + "user_name": { + "name": "Nume utilizator", + "description": "Utilizatorul care va fi vizat pentru resetare.", + "example": "Alice" + } + } + }, + "set_chore_due_date": { + "name": "Setați/Resetați data scadenței sarcinii", + "description": "Setați (sau ștergeți) data scadenței pentru o sarcină. Furnizați numele sarcinii și, dacă doriți, o nouă dată scadentă. Dacă nu este furnizată nicio dată scadentă, data scadentă existentă va fi ștearsă. Serviciul va respinge datele scadente setate în trecut. Pentru sarcini independente, furnizați opțional un nume_utilizator pentru a seta data scadentă doar pentru utilizatorul respectiv.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "chore_name": { + "name": "Numele sarcinii", + "description": "Numele sarcinii de actualizat", + "example": "Spălați vasele" + }, + "due_date": { + "name": "Data scadenței", + "description": "Noua dată scadentă pentru sarcină. Folosește selectorul de dată/oră pentru a alege o dată și o oră valide (în fusul orar local). Lasă câmpul gol pentru a șterge data scadentă.", + "example": "2025-03-01T23:59:00Z" + }, + "user_name": { + "name": "Nume utilizator", + "description": "Pentru sarcini independente, specificați utilizatorul pentru care se va seta data scadentă. Dacă este omisă, setează data scadentă pentru toate persoanele atribuite acestei sarcini.", + "example": "Alice" + }, + "user_id": { + "name": "ID-ul de utilizator", + "description": "ID-ul intern al utilizatorului. Doar pentru utilizatorii avansați - folosiți în schimb user_name.", + "example": "abc123-def456" + } + } + }, + "reschedule_chores_after": { + "name": "Reprogramarea treburilor după", + "description": "Reprogramați una sau mai multe sarcini astfel încât următoarea lor dată scadentă să cadă după data și ora specificate. Sarcinile recurente avansează la următoarea apariție programată după limită. Sarcinile nerecurente scadente la sau înainte de limită se mută la limită, cu excepția cazului în care este activat skip_non_recurring. Sarcinile partajate sunt omise, cu excepția cazului în care este activat reschedule_shared.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "after": { + "name": "După", + "description": "Data și ora limită. Treburile scadente la sau înainte de această valoare sunt luate în considerare pentru reprogramare.", + "example": "2026-07-14T18:00:00Z" + }, + "chore_ids": { + "name": "ID-uri de sarcini", + "description": "Listă opțională de ID-uri de sarcini care să fie vizate. Dacă sunt furnizate, aceste ID-uri au prioritate față de chore_names." + }, + "chore_names": { + "name": "Numele treburilor", + "description": "Listă opțională de nume de sarcini de vizat atunci când nu sunt furnizate chore_id-uri." + }, + "user_ids": { + "name": "ID-uri de utilizator", + "description": "Listă opțională de ID-uri ale persoanelor desemnate pentru a limita actualizările independente ale sarcinilor. Dacă sunt furnizate, aceste ID-uri au prioritate față de numele_de_utilizator." + }, + "user_names": { + "name": "Nume de utilizator", + "description": "Listă opțională de nume de persoane desemnate pentru a limita actualizările independente ale sarcinilor atunci când nu sunt furnizate user_id-uri." + }, + "reschedule_shared": { + "name": "Reprogramarea sarcinilor partajate", + "description": "Activați această opțiune pentru a permite reprogramarea sarcinilor partajate și a celor prin rotație. Aceasta afectează toate persoanele responsabile cu aceste sarcini.", + "example": "fals" + }, + "skip_non_recurring": { + "name": "Omiteți sarcinile nerecurente", + "description": "Activați această opțiune pentru a lăsa sarcinile nerecurente neschimbate în loc să mutați data scadenței acestora la limită.", + "example": "fals" + }, + "allow_long_recurrences": { + "name": "Permiteți recurențe lungi", + "description": "Permite reprogramarea recurențelor lunare, trimestriale, anuale și a altor recurențe la intervale lungi. Valoarea implicită este falsă pentru a preveni salturile mari accidentale.", + "example": "adevărat" + } + } + }, + "skip_chore_due_date": { + "name": "Omiteți data scadenței pentru treburi", + "description": "Omiteți data scadenței curente a unei sarcini recurente. Acest serviciu reprogramează imediat data scadenței sarcinii în funcție de frecvența sa recurentă și îi resetează starea la în așteptare. Orice revendicări sau aprobări în așteptare vor fi eliminate. Pentru sarcini independente, puteți furniza opțional un nume_utilizator pentru a-l omite doar pentru utilizatorul respectiv.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "chore_id": { + "name": "ID sarcină", + "description": "ID-ul intern al sarcinii de resetat (opțional dacă este furnizat chore_name).", + "example": "abc123" + }, + "chore_name": { + "name": "Numele sarcinii", + "description": "Numele sarcinii de resetat (opțional dacă este furnizat chore_id).", + "example": "Spălați vasele" + }, + "user_name": { + "name": "Nume utilizator", + "description": "Pentru sarcini independente, specificați utilizatorul pentru care se va omite data scadentă. Dacă este omisă, se omite data scadentă pentru toate persoanele atribuite acestei sarcini.", + "example": "Alice" + }, + "user_id": { + "name": "ID-ul de utilizator", + "description": "ID-ul intern al utilizatorului. Doar pentru utilizatorii avansați - folosiți în schimb user_name.", + "example": "abc123-def456" + }, + "mark_as_missed": { + "name": "Marchează ca ratat", + "description": "Când este setat la „adevărat”, înregistrează această omitere ca o sarcină ratată în statisticile persoanei însărcinate. Util pentru urmărirea omiterilor intenționate separat de resetarea automată restantă." + } + } + }, + "remove_awarded_badges": { + "name": "Eliminați insignele acordate", + "description": "Eliminați toate insignele acordate pentru toți cei desemnați. Opțional, furnizați numele insignei pentru a reseta o anumită insignă pentru toți cei desemnați. Folosiți user_name pentru a reseta toate insignele pentru un anumit utilizator. Combinați ambele pentru a reseta o anumită insignă pentru un anumit utilizator.", + "fields": { + "config_entry_id": { + "name": "ID intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps. Vizează o configurație specifică.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Nume intrare configurație (opțional)", + "description": "Folosește această opțiune dacă ai mai multe configurații ChoreOps și fiecare are nume unice. Dacă numele se repetă, folosește ID-ul intrării de configurare.", + "example": "Treburi familiale" + }, + "user_name": { + "name": "Nume utilizator", + "description": "Insignele acordate utilizatorilor vor fi eliminate din.", + "example": "Bob" + }, + "badge_name": { + "name": "Numele insignei", + "description": "Numele insignei de eliminat.", + "example": "Maestru de treburi" + } + } + } + }, + "entity": { + "sensor": { + "assignee_chore_status_sensor": { + "name": "Starea sarcinilor - {chore_name}", + "state": { + "pending": "În așteptare", + "completed": "Finalizat", + "claimed": "Revendicat", + "due": "Scadent", + "overdue": "Restanțat", + "completed_by_other": "Completat de Altul", + "waiting": "În așteptare (fereastra scadenței nu este deschisă)", + "not_my_turn": "Nu e rândul meu (rotație)", + "missed": "Pierdut (Blocat)", + "paused": "Întrerupt" + }, + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_chore_status": "Stări ale ciclului de viață al sarcinilor specifice utilizatorului, statistici de performanță și metadate de configurare" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "chore_name": { + "name": "Numele sarcinii" + }, + "chore_icon": { + "name": "Pictogramă treabă" + }, + "description": { + "name": "Descriere" + }, + "assigned_user_names": { + "name": "Atribuit la" + }, + "labels": { + "name": "Etichete" + }, + "default_points": { + "name": "Puncte implicite" + }, + "completion_criteria": { + "name": "Criterii de finalizare", + "state": { + "independent": "Independent", + "shared_first": "Partajat (Primul)", + "shared_all": "Partajat (Toate)", + "rotation_simple": "Rotație simplă", + "rotation_smart": "Rotație inteligentă" + } + }, + "approval_reset_type": { + "name": "Tipul de resetare a aprobării", + "state": { + "at_midnight_once": "La miezul nopții (O dată)", + "at_midnight_multi": "La miezul nopții (Multi)", + "at_due_date_once": "La data scadenței (o dată)", + "at_due_date_multi": "La data scadenței (mai multe)", + "upon_completion": "La finalizare", + "manual": "Numai resetare manuală" + } + }, + "approval_reset_pending_claim_action": { + "name": "Resetare aprobare Acțiune revendicare în așteptare", + "state": { + "hold_pending": "Rețineți starea cererii (așteptați aprobarea/respingerea)", + "clear_pending": "Ștergeți revendicările în așteptare", + "auto_approve_pending": "Aprobare automată a revendicărilor în așteptare" + } + }, + "overdue_handling_type": { + "name": "Tip de gestionare a restanțelor", + "state": { + "never_overdue": "Niciodată întârziat", + "at_due_date": "Restanțat până la finalizare", + "at_due_date_clear_at_approval_reset": "Restanțat până la resetarea aprobării", + "at_due_date_clear_immediate_on_late": "Restanțat până la finalizare (Ștergeți imediat aprobările întârziate)", + "at_due_date_clear_and_mark_missed": "Resetare până la aprobare (Marcare ca ratată)", + "at_due_date_mark_missed_and_lock": "Blocare până la aprobare Resetare (Prevenirea revendicărilor, marcarea ca ratate)", + "at_due_date_allow_steal": "Permiteți furtul până la resetare prin aprobare (doar prin rotație)" + } + }, + "chore_claim_lock_until_window": { + "name": "Se deschide fereastra de blocare a revendicării până la scadență", + "state": { + "true": "Da", + "false": "Nu" + } + }, + "chore_due_window_offset": { + "name": "Decalajul ferestrei scadente" + }, + "auto_approve": { + "name": "Aprobare automată a revendicărilor", + "state": { + "true": "Da", + "false": "Nu" + } + }, + "recurring_frequency": { + "name": "Frecvență recurentă", + "state": { + "none": "Nici unul", + "daily": "Zilnic", + "daily_multi": "Zilnic (de mai multe ori pe zi)", + "weekly": "Săptămânal", + "biweekly": "La două săptămâni", + "monthly": "Lunar", + "quarterly": "Trimestrial", + "yearly": "Anual", + "custom": "Personalizat", + "custom_from_complete": "Personalizat (Reprogramare de la data finalizării)", + "custom_1_week": "Personalizat: 1 săptămână", + "custom_1_month": "Personalizat: 1 lună", + "custom_1_quarter": "Personalizat: 1 sfert", + "custom_1_year": "Personalizat: 1 an" + } + }, + "applicable_days": { + "name": "Zile aplicabile", + "state": { + "mon": "luni", + "tue": "marţi", + "wed": "miercuri", + "thu": "joi", + "fri": "vineri", + "sat": "sâmbătă", + "sun": "duminică" + } + }, + "due_date": { + "name": "Data scadenței" + }, + "custom_frequency_interval": { + "name": "Interval de frecvență personalizat" + }, + "custom_frequency_unit": { + "name": "Unitate de frecvență personalizată", + "state": { + "days": "Zile", + "weeks": "Săptămâni", + "months": "Luni" + } + }, + "chore_points_earned": { + "name": "Puncte câștigate (toate timpurile)" + }, + "chore_approvals_count": { + "name": "Aprobări (din toate timpurile)" + }, + "chore_claims_count": { + "name": "Revendicări (din toate timpurile)" + }, + "chore_completed_count": { + "name": "Finalizat (din toate timpurile)" + }, + "chore_disapproved_count": { + "name": "Respingeri (din toate timpurile)" + }, + "chore_overdue_count": { + "name": "Restanțat (dintotdeauna)" + }, + "chore_approvals_today": { + "name": "Aprobări astăzi" + }, + "chore_current_streak": { + "name": "Curent de cursă" + }, + "chore_longest_streak": { + "name": "Cea mai lungă serie" + }, + "chore_last_longest_streak_date": { + "name": "Ultima întâlnire cu cea mai lungă serie" + }, + "chore_current_missed_streak": { + "name": "Seria actuală ratată" + }, + "chore_longest_missed_streak": { + "name": "Cea mai lungă serie ratată" + }, + "chore_missed_count": { + "name": "Ratat (din toate timpurile)" + }, + "chore_last_missed": { + "name": "Ultima ratare" + }, + "last_claimed": { + "name": "Ultima revendicare" + }, + "last_approved": { + "name": "Ultima aprobare" + }, + "last_completed": { + "name": "Ultima finalizare" + }, + "last_disapproved": { + "name": "Ultima respingere" + }, + "last_overdue": { + "name": "Ultima întârziere" + }, + "global_state": { + "name": "Statul global", + "state": { + "pending": "În așteptare", + "completed": "Finalizat", + "claimed": "Revendicat", + "overdue": "Restanțat", + "completed_in_part": "Finalizat (parțial)", + "claimed_in_part": "Revendicat (în parte)", + "independent": "Independent", + "due": "Scadent", + "waiting": "Aşteptare", + "missed": "Pierdut (Blocat)" + } + }, + "can_claim": { + "name": "Poate revendica", + "state": { + "true": "Da", + "false": "Nu" + } + }, + "can_approve": { + "name": "Poate aproba", + "state": { + "true": "Da", + "false": "Nu" + } + }, + "approve_button_eid": { + "name": "ID-ul entității butonului de aprobare" + }, + "disapprove_button_eid": { + "name": "ID-ul entității butonului de respingere" + }, + "claim_button_eid": { + "name": "ID-ul entității butonului de revendicare" + }, + "due_window_start": { + "name": "Începere fereastră scadentă" + }, + "time_until_due": { + "name": "Timp până la scadență" + }, + "time_until_overdue": { + "name": "Timp până la întârziere" + }, + "claim_mode": { + "name": "Mod revendicare", + "state": { + "claimable": "Revendicabil", + "steal_available": "Fură disponibilă", + "blocked_completed_by_other": "Completat de alții", + "blocked_already_approved": "Deja aprobat", + "blocked_pending_claim": "Reclamație în așteptare", + "blocked_waiting_window": "Așteptând fereastra scadentă", + "blocked_not_my_turn": "Nu-ți vine rândul", + "blocked_missed_locked": "Pierdut și blocat", + "blocked_paused": "Treburile sunt puse în pauză pentru acest utilizator" + } + }, + "turn_user_name": { + "name": "Nume utilizator" + }, + "available_at": { + "name": "Disponibil la" + } + } + }, + "assignee_points_sensor": { + "name": "{points}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_points": "Sold actual de puncte cu statistici detaliate despre câștiguri și cheltuieli" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "points_multiplier": { + "name": "Multiplicator de puncte" + }, + "point_stat_points_earned_today": { + "name": "Câștigat astăzi" + }, + "point_stat_points_earned_week": { + "name": "Câștigat săptămâna aceasta" + }, + "point_stat_points_earned_month": { + "name": "Câștigat luna aceasta" + }, + "point_stat_points_earned_year": { + "name": "Câștigat anul acesta" + }, + "point_stat_points_earned_all_time": { + "name": "Câștigat dintotdeauna" + }, + "point_stat_points_by_source_today": { + "name": "De Source Today" + }, + "point_stat_points_by_source_week": { + "name": "De către sursa acestei săptămâni" + }, + "point_stat_points_by_source_month": { + "name": "De sursă luna aceasta" + }, + "point_stat_points_by_source_year": { + "name": "De sursă anul acesta" + }, + "point_stat_points_by_source_all_time": { + "name": "De la sursa All Time" + }, + "point_stat_points_spent_today": { + "name": "Cheltuit astăzi" + }, + "point_stat_points_spent_week": { + "name": "Cheltuit săptămâna aceasta" + }, + "point_stat_points_spent_month": { + "name": "Cheltuit luna aceasta" + }, + "point_stat_points_spent_year": { + "name": "Cheltuit anul acesta" + }, + "point_stat_points_spent_all_time": { + "name": "Petrecut tot timpul" + }, + "point_stat_points_net_today": { + "name": "Net Today" + }, + "point_stat_points_net_week": { + "name": "Net săptămâna aceasta" + }, + "point_stat_points_net_month": { + "name": "Net luna aceasta" + }, + "point_stat_points_net_year": { + "name": "Net anul acesta" + }, + "point_stat_points_net_all_time": { + "name": "Net din toate timpurile" + }, + "point_stat_points_earning_streak_current": { + "name": "Seria actuală de câștiguri" + }, + "point_stat_points_earning_streak_longest": { + "name": "Cea mai lungă serie de câștiguri" + }, + "point_stat_avg_points_per_day_week": { + "name": "Medie pe zi (săptămână)" + }, + "point_stat_avg_points_per_day_month": { + "name": "Medie pe zi (lună)" + }, + "point_stat_avg_points_per_chore": { + "name": "Medie per sarcină" + }, + "point_stat_highest_balance_all_time": { + "name": "Cel mai mare sold vreodată" + } + } + }, + "assignee_points_max_ever_sensor": { + "name": "Maxim {points} Vreodată", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_sensor_points_max_ever_extra": "Cel mai mare sold de puncte atins vreodată (extra)" + } + } + } + }, + "system_chore_approvals_sensor": { + "name": "Treburi finalizate - Total", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_sensor_chore_approvals_all_time_extra": "Numărul de aprobări de sarcini din toate timpurile (extra)" + } + } + } + }, + "system_chore_approvals_daily_sensor": { + "name": "Treburi finalizate - Zilnic", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_sensor_chore_approvals_today_extra": "Numărul de aprobări pentru sarcini astăzi (suplimentar)" + } + } + } + }, + "system_chore_approvals_weekly_sensor": { + "name": "Treburi finalizate - Săptămânal", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_sensor_chore_approvals_week_extra": "Numărul de aprobări pentru sarcini săptămâna aceasta (suplimentar)" + } + } + } + }, + "system_chore_approvals_monthly_sensor": { + "name": "Treburi finalizate - lunar", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_sensor_chore_approvals_month_extra": "Numărul de aprobări pentru sarcini în această lună (suplimentar)" + } + } + } + }, + "assignee_chores_sensor": { + "name": "Treburi casnice", + "unit_of_measurement": "Treburi casnice", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_chores": "Total sarcini finalizate din toate timpurile, cu statistici detaliate" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "chore_stat_approved_today": { + "name": "Aprobat astăzi" + }, + "chore_stat_approved_week": { + "name": "Aprobat săptămâna aceasta" + }, + "chore_stat_approved_month": { + "name": "Aprobat luna aceasta" + }, + "chore_stat_approved_year": { + "name": "Aprobat anul acesta" + }, + "chore_stat_approved_all_time": { + "name": "Aprobat dintotdeauna" + }, + "chore_stat_most_completed_chore_all_time": { + "name": "Cea mai finalizată sarcină (din toate timpurile)" + }, + "chore_stat_most_completed_chore_week": { + "name": "Cea mai finalizată treabă (săptămână)" + }, + "chore_stat_most_completed_chore_month": { + "name": "Cea mai finalizată treabă (lună)" + }, + "chore_stat_most_completed_chore_year": { + "name": "Cea mai finalizată treabă (an)" + }, + "chore_stat_total_points_from_chores_today": { + "name": "Puncte de la treburile de astăzi" + }, + "chore_stat_total_points_from_chores_week": { + "name": "Puncte de la treburile casnice din această săptămână" + }, + "chore_stat_total_points_from_chores_month": { + "name": "Puncte de la treburile casnice din această lună" + }, + "chore_stat_total_points_from_chores_year": { + "name": "Puncte de la treburile casnice din acest an" + }, + "chore_stat_total_points_from_chores_all_time": { + "name": "Puncte din treburi din toate timpurile" + }, + "chore_stat_overdue_today": { + "name": "Restanțat astăzi" + }, + "chore_stat_missed_today": { + "name": "Ratat astăzi" + }, + "chore_stat_overdue_week": { + "name": "Restanțat săptămâna aceasta" + }, + "chore_stat_missed_week": { + "name": "Ratat săptămâna aceasta" + }, + "chore_stat_overdue_month": { + "name": "Restanțat luna aceasta" + }, + "chore_stat_missed_month": { + "name": "Ratat luna aceasta" + }, + "chore_stat_overdue_year": { + "name": "Restanțat anul acesta" + }, + "chore_stat_missed_year": { + "name": "Ratat anul acesta" + }, + "chore_stat_overdue_count_all_time": { + "name": "Restanțat dintotdeauna" + }, + "chore_stat_missed_all_time": { + "name": "Ratat dintotdeauna" + }, + "chore_stat_claimed_today": { + "name": "Revendicat astăzi" + }, + "chore_stat_claimed_week": { + "name": "Revendicat săptămâna aceasta" + }, + "chore_stat_claimed_month": { + "name": "Revendicat luna aceasta" + }, + "chore_stat_claimed_year": { + "name": "Revendicat anul acesta" + }, + "chore_stat_claimed_all_time": { + "name": "Revendicat din toate timpurile" + }, + "chore_stat_disapproved_today": { + "name": "Respins astăzi" + }, + "chore_stat_disapproved_week": { + "name": "Respins săptămâna aceasta" + }, + "chore_stat_disapproved_month": { + "name": "Respins luna aceasta" + }, + "chore_stat_disapproved_year": { + "name": "Respins anul acesta" + }, + "chore_stat_disapproved_all_time": { + "name": "Respins dintotdeauna" + }, + "chore_stat_completed_today": { + "name": "Finalizat astăzi" + }, + "chore_stat_completed_week": { + "name": "Finalizat săptămâna aceasta" + }, + "chore_stat_completed_month": { + "name": "Finalizat luna aceasta" + }, + "chore_stat_completed_year": { + "name": "Finalizat anul acesta" + }, + "chore_stat_completed_all_time": { + "name": "Completat din toate timpurile" + }, + "chore_stat_points_today": { + "name": "Puncte astăzi" + }, + "chore_stat_points_week": { + "name": "Puncte săptămâna aceasta" + }, + "chore_stat_points_month": { + "name": "Puncte luna aceasta" + }, + "chore_stat_points_year": { + "name": "Puncte anul acesta" + }, + "chore_stat_points_all_time": { + "name": "Puncte din toate timpurile" + }, + "chore_stat_top_chores_week": { + "name": "Treabă principală (săptămână)" + }, + "chore_stat_top_chores_month": { + "name": "Cea mai importantă treabă (lună)" + }, + "chore_stat_top_chores_year": { + "name": "Cea mai mare sarcină (an)" + }, + "chore_stat_chores_completed_today": { + "name": "Finalizat astăzi" + }, + "chore_stat_chores_completed_week": { + "name": "Finalizat săptămâna aceasta" + }, + "chore_stat_chores_completed_month": { + "name": "Finalizat luna aceasta" + }, + "chore_stat_chores_completed_year": { + "name": "Finalizat anul acesta" + }, + "chore_stat_current_due_today": { + "name": "Scadent astăzi" + }, + "chore_stat_current_overdue": { + "name": "Restanță curentă" + }, + "chore_stat_current_claimed": { + "name": "Sold actual revendicat" + }, + "chore_stat_current_approved": { + "name": "Aprobat în prezent" + }, + "chore_stat_longest_streak_week": { + "name": "Cea mai lungă serie (săptămână)" + }, + "chore_stat_longest_streak_month": { + "name": "Cea mai lungă serie (lună)" + }, + "chore_stat_longest_streak_year": { + "name": "Cea mai lungă serie (an)" + }, + "chore_stat_longest_streak_all_time": { + "name": "Cea mai lungă serie (din toate timpurile)" + }, + "chore_stat_longest_streak": { + "name": "Cea mai lungă serie" + }, + "chore_stat_longest_missed_streak": { + "name": "Cea mai lungă serie ratată" + }, + "chore_stat_avg_per_day_week": { + "name": "Medie pe zi (săptămână)" + }, + "chore_stat_avg_per_day_month": { + "name": "Medie pe zi (lună)" + }, + "chore_stat_avg_per_day_year": { + "name": "Medie pe zi (an)" + } + } + }, + "assignee_badges_sensor": { + "name": "Insigne", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_user_badges": "Cea mai mare insignă obținută și progres cumulativ în timp real, inclusiv ciclurile active și istoricul premiilor pentru toate tipurile de insigne" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "labels": { + "name": "Etichete" + }, + "all_earned_badges": { + "name": "Toate insignele câștigate" + }, + "highest_badge_threshold_value": { + "name": "Cel mai înalt prag pentru insignă" + }, + "points_to_next_badge": { + "name": "Puncte către următoarea insignă" + }, + "current_badge_name": { + "name": "Numele actual al insignei" + }, + "current_badge_eid": { + "name": "ID-ul entității actuale pentru insignă" + }, + "highest_earned_badge_name": { + "name": "Numele insignei cu cea mai mare dobândă" + }, + "next_higher_badge_name": { + "name": "Numele insignei următoare superioare" + }, + "next_higher_badge_eid": { + "name": "ID-ul entității cu insignă de nivel superior următor" + }, + "next_lower_badge_name": { + "name": "Următorul nume de insignă inferior" + }, + "next_lower_badge_eid": { + "name": "Următorul ID al entității insignă inferioară" + }, + "badge_status": { + "name": "Starea insignei", + "state": { + "active": "Activ", + "grace": "Perioada de grație", + "demoted": "Retrogradat" + } + }, + "last_awarded_date": { + "name": "Ultima dată de acordare" + }, + "award_count": { + "name": "Număr de premii" + }, + "description": { + "name": "Descriere" + }, + "baseline_points": { + "name": "Puncte de referință" + }, + "cycle_points": { + "name": "Puncte de ciclism" + }, + "maintenance_grace_end_date": { + "name": "Data de încheiere a perioadei de grație pentru întreținere" + }, + "maintenance_points_required": { + "name": "Puncte de întreținere necesare" + }, + "maintenance_end_date": { + "name": "Data de încheiere a întreținerii" + }, + "maintenance_points_remaining": { + "name": "Puncte de întreținere rămase" + }, + "reset_schedule": { + "name": "Resetare program" + }, + "target": { + "name": "Ţintă" + }, + "awards": { + "name": "Premii" + } + } + }, + "system_badge_sensor": { + "name": "Insignă - {badge_name}", + "unit_of_measurement": "Utilizatori", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_badge": "Numărul de utilizatori care au obținut această insignă, cu configurația insignei, inclusiv tipul, ținta, premiile și utilizatorii alocați" + } + }, + "badge_name": { + "name": "Numele insignei" + }, + "description": { + "name": "Descriere" + }, + "badge_type": { + "name": "Tipul insignei", + "state": { + "cumulative": "Cumulativ", + "achievement": "Realizare", + "challenge": "Provocare", + "daily": "Zilnic", + "periodic": "Periodic", + "special": "Special" + } + }, + "labels": { + "name": "Etichete" + }, + "earned_user_names": { + "name": "Utilizatori câștigați" + }, + "assigned_user_names": { + "name": "Atribuit la" + }, + "target": { + "name": "Ţintă" + }, + "associated_achievement": { + "name": "Realizare asociată" + }, + "associated_challenge": { + "name": "Provocare asociată" + }, + "occasion_type": { + "name": "Tipul ocaziei" + }, + "required_chores": { + "name": "Treburi obligatorii" + }, + "badge_awards": { + "name": "Premii pentru insigne" + }, + "reset_schedule": { + "name": "Resetare program" + } + } + }, + "assignee_badge_progress_sensor": { + "name": "Progresul insignei - {badge_name}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_badge_progress": "Procentul de progres al insignei (0-100) care urmărește finalizarea pentru obținerea acestei insigne, cu starea criteriilor, datele și istoricul premiilor" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "badge_name": { + "name": "Numele insignei" + }, + "badge_type": { + "name": "Tipul insignei", + "state": { + "cumulative": "Cumulativ", + "achievement": "Realizare", + "challenge": "Provocare", + "daily": "Zilnic", + "periodic": "Periodic", + "special": "Special" + } + }, + "status": { + "name": "Stare", + "state": { + "inactive": "Inactiv", + "active": "Activ", + "completed": "Finalizat" + } + }, + "target_type": { + "name": "Tipul țintă", + "state": { + "chores": "Treburi casnice", + "points": "Puncte", + "days": "Zile", + "achievement": "Realizare", + "challenge": "Provocare" + } + }, + "threshold_value": { + "name": "Pragul țintă" + }, + "recurring_frequency": { + "name": "Frecvență recurentă", + "state": { + "none": "Nici unul", + "daily": "Zilnic", + "weekly": "Săptămânal", + "biweekly": "La două săptămâni", + "monthly": "Lunar" + } + }, + "start_date": { + "name": "Data de începere" + }, + "end_date": { + "name": "Data de încheiere" + }, + "last_update_day": { + "name": "Ultima zi de actualizare" + }, + "overall_progress": { + "name": "Progres general" + }, + "criteria_met": { + "name": "Criterii îndeplinite", + "state": { + "true": "Da", + "false": "Nu" + } + }, + "last_awarded": { + "name": "Ultima atribuire" + }, + "award_count": { + "name": "Număr de premii" + }, + "description": { + "name": "Descriere" + }, + "labels": { + "name": "Etichete" + }, + "target": { + "name": "Ţintă" + }, + "required_chores": { + "name": "Treburi obligatorii" + }, + "tracked_chores": { + "name": "Treburi urmărite" + }, + "awards": { + "name": "Premii" + }, + "reset_schedule": { + "name": "Resetare program" + }, + "associated_achievement": { + "name": "Realizare asociată" + }, + "associated_challenge": { + "name": "Provocare asociată" + }, + "occasion_type": { + "name": "Tipul ocaziei" + }, + "system_badge_eid": { + "name": "ID-ul entității insignă sistem" + } + } + }, + "system_chores_pending_approval_sensor": { + "name": "Aprobări de sarcini în așteptare", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_sensor_chores_pending_approval_extra": "Numărul de sarcini care așteaptă aprobare pentru toți utilizatorii (extra)" + } + } + } + }, + "system_rewards_pending_approval_sensor": { + "name": "Aprobări de recompense în așteptare", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_sensor_rewards_pending_approval_extra": "Numărul de recompense aflate în așteptarea aprobării pentru toți utilizatorii (extra)" + } + } + } + }, + "system_chore_shared_state_sensor": { + "name": "{chore_name} - Stare globală", + "state": { + "pending": "În așteptare", + "completed": "Finalizat", + "claimed": "Revendicat", + "due": "Scadent", + "overdue": "Restanțat", + "completed_in_part": "Finalizat (parțial)", + "claimed_in_part": "Revendicat (în parte)", + "independent": "Independent", + "waiting": "Aşteptare", + "missed": "Pierdut (Blocat)" + }, + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_shared_chore": "Stare globală de finalizare pentru sarcinile partajate cu statistici agregate pentru toți utilizatorii atribuiți" + } + }, + "chore_name": { + "name": "Numele sarcinii" + }, + "chore_icon": { + "name": "Pictogramă treabă" + }, + "description": { + "name": "Descriere" + }, + "assigned_user_names": { + "name": "Atribuit la" + }, + "labels": { + "name": "Etichete" + }, + "default_points": { + "name": "Puncte implicite" + }, + "completion_criteria": { + "name": "Criterii de finalizare", + "state": { + "independent": "Independent", + "shared_first": "Partajat (Primul singur)", + "shared_all": "Partajat (Toate obligatorii)", + "rotation_simple": "Rotație simplă", + "rotation_smart": "Rotație inteligentă" + } + }, + "approval_reset_type": { + "name": "Tipul de resetare a aprobării", + "state": { + "at_midnight_once": "La miezul nopții (O dată)", + "at_midnight_multi": "La miezul nopții (Multi)", + "at_due_date_once": "La data scadenței (o dată)", + "at_due_date_multi": "La data scadenței (mai multe)", + "upon_completion": "La finalizare", + "manual": "Numai resetare manuală" + } + }, + "recurring_frequency": { + "name": "Frecvență recurentă", + "state": { + "none": "Nici unul", + "daily": "Zilnic", + "weekly": "Săptămânal", + "biweekly": "La două săptămâni", + "monthly": "Lunar", + "custom": "Personalizat" + } + }, + "applicable_days": { + "name": "Zile aplicabile", + "state": { + "mon": "luni", + "tue": "marţi", + "wed": "miercuri", + "thu": "joi", + "fri": "vineri", + "sat": "sâmbătă", + "sun": "duminică" + } + }, + "due_date": { + "name": "Data scadenței" + }, + "custom_frequency_interval": { + "name": "Interval de frecvență personalizat" + }, + "custom_frequency_unit": { + "name": "Unitate de frecvență personalizată", + "state": { + "days": "Zile", + "weeks": "Săptămâni", + "months": "Luni" + } + }, + "chore_approvals_today": { + "name": "Aprobări astăzi (toți utilizatorii)" + }, + "last_claimed": { + "name": "Ultima revendicare" + }, + "last_approved": { + "name": "Ultima aprobare" + }, + "last_completed": { + "name": "Ultima finalizare" + }, + "chore_claimed_by": { + "name": "Revendicat de" + }, + "chore_completed_by": { + "name": "Finalizat de" + }, + "due_window_start": { + "name": "Începere fereastră scadentă" + }, + "time_until_due": { + "name": "Timp până la scadență" + }, + "time_until_overdue": { + "name": "Timp până la întârziere" + } + } + }, + "assignee_reward_status_sensor": { + "name": "Statusul recompensei - {reward_name}", + "state": { + "locked": "Blocat", + "available": "Disponibil", + "requested": "Solicitat", + "approved": "Aprobat", + "unknown": "Necunoscut", + "none": "Nici unul" + }, + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_reward_status": "Starea revendicărilor cu istoricul revendicărilor și butoane de acțiune" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "reward_name": { + "name": "Numele recompensei" + }, + "description": { + "name": "Descriere" + }, + "cost": { + "name": "Cost" + }, + "pending_claims": { + "name": "Revendicări în așteptare" + }, + "last_claimed": { + "name": "Ultima revendicare" + }, + "last_approved": { + "name": "Ultima aprobare" + }, + "last_completed": { + "name": "Ultima finalizare" + }, + "last_disapproved": { + "name": "Ultima respingere" + }, + "claimed_today": { + "name": "Revendicări astăzi" + }, + "claimed_week": { + "name": "Revendicări din această săptămână" + }, + "claimed_month": { + "name": "Revendicări luna aceasta" + }, + "claimed_year": { + "name": "Revendicări din acest an" + }, + "claimed_all_time": { + "name": "Revendicări dintotdeauna" + }, + "approved_today": { + "name": "Aprobat astăzi" + }, + "approved_week": { + "name": "Aprobat săptămâna aceasta" + }, + "approved_month": { + "name": "Aprobat luna aceasta" + }, + "approved_year": { + "name": "Aprobat anul acesta" + }, + "approved_all_time": { + "name": "Aprobat dintotdeauna" + }, + "disapproved_today": { + "name": "Respins astăzi" + }, + "disapproved_week": { + "name": "Respins săptămâna aceasta" + }, + "disapproved_month": { + "name": "Respins luna aceasta" + }, + "disapproved_year": { + "name": "Respins anul acesta" + }, + "disapproved_all_time": { + "name": "Respins dintotdeauna" + }, + "points_spent_today": { + "name": "Puncte cheltuite astăzi" + }, + "points_spent_week": { + "name": "Puncte cheltuite săptămâna aceasta" + }, + "points_spent_month": { + "name": "Puncte cheltuite luna aceasta" + }, + "points_spent_year": { + "name": "Puncte cheltuite anul acesta" + }, + "points_spent_all_time": { + "name": "Puncte cheltuite tot timpul" + }, + "approval_rate": { + "name": "Rata de aprobare (%)" + }, + "claim_rate_week": { + "name": "Număr mediu de cereri pe zi (săptămână)" + }, + "claim_rate_month": { + "name": "Număr mediu de cereri pe zi (lună)" + }, + "claim_button_eid": { + "name": "ID-ul entității butonului de revendicare" + }, + "approve_button_eid": { + "name": "ID-ul entității butonului de aprobare" + }, + "disapprove_button_eid": { + "name": "ID-ul entității butonului de respingere" + }, + "labels": { + "name": "Etichete" + } + } + }, + "assignee_penalty_applied_sensor": { + "name": "Penalizări aplicate - {penalty_name}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_sensor_penalty_applied": "Numărul de ori de câte ori s-a aplicat penalizarea utilizatorului" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "penalty_name": { + "name": "Numele penalizării" + }, + "description": { + "name": "Descriere" + }, + "penalty_points": { + "name": "Puncte de penalizare" + }, + "labels": { + "name": "Etichete" + } + } + }, + "assignee_bonus_applied_sensor": { + "name": "Se aplică bonusul - {bonus_name}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_sensor_bonus_applied": "Numărul de ocazii cu care s-a aplicat bonusul utilizatorului" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "bonus_name": { + "name": "Nume bonus" + }, + "description": { + "name": "Descriere" + }, + "bonus_points": { + "name": "Puncte bonus" + }, + "labels": { + "name": "Etichete" + } + } + }, + "assignee_points_earned_daily_sensor": { + "name": "Puncte câștigate - Zilnic", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_sensor_points_earned_today_extra": "Puncte câștigate astăzi de utilizator (extra)" + } + } + } + }, + "assignee_points_earned_weekly_sensor": { + "name": "Puncte câștigate - Săptămânal", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_sensor_points_earned_week_extra": "Puncte câștigate săptămâna aceasta de către utilizator (extra)" + } + } + } + }, + "assignee_points_earned_monthly_sensor": { + "name": "Puncte câștigate - lunar", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_sensor_points_earned_month_extra": "Puncte câștigate luna aceasta de către utilizator (extra)" + } + } + } + }, + "system_achievement_sensor": { + "name": "Realizare - {achievement_name}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_achievement": "Procentul de progres al realizărilor (0-100) agregat pentru toți utilizatorii alocați, cu configurarea realizării care include tipul, obiectivul, criteriile și lista utilizatorilor care au obținut-o" + } + }, + "achievement_name": { + "name": "Numele realizării" + }, + "description": { + "name": "Descriere" + }, + "assigned_user_names": { + "name": "Atribuit la" + }, + "type": { + "name": "Tip", + "state": { + "chore_total": "Total treburi", + "chore_streak": "Seria de treburi", + "daily_minimum": "Minim zilnic" + } + }, + "associated_chore": { + "name": "Treabă asociată" + }, + "criteria": { + "name": "Criterii" + }, + "target_value": { + "name": "Ţintă" + }, + "reward_points": { + "name": "Puncte de recompensă" + }, + "earned_user_names": { + "name": "Câștigat de" + }, + "labels": { + "name": "Etichete" + } + } + }, + "system_challenge_sensor": { + "name": "Provocare - {challenge_name}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_challenge": "Procentul de progres al provocării (0-100) agregat pentru toți utilizatorii atribuiți în cadrul ferestrei de date, cu configurarea provocării care include tipul, ținta, criteriile, datele și lista utilizatorilor care au câștigat-o" + } + }, + "challenge_name": { + "name": "Numele provocării" + }, + "description": { + "name": "Descriere" + }, + "assigned_user_names": { + "name": "Atribuit la" + }, + "type": { + "name": "Tip", + "state": { + "total_within_window": "Total în cadrul ferestrei", + "daily_minimum": "Minim zilnic" + } + }, + "associated_chore": { + "name": "Treabă asociată" + }, + "criteria": { + "name": "Criterii" + }, + "target_value": { + "name": "Ţintă" + }, + "reward_points": { + "name": "Puncte de recompensă" + }, + "start_date": { + "name": "Data de începere" + }, + "end_date": { + "name": "Data de încheiere" + }, + "earned_user_names": { + "name": "Câștigat de" + }, + "labels": { + "name": "Etichete" + } + } + }, + "assignee_achievement_progress_sensor": { + "name": "Progresul realizărilor - {achievement_name}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_achievement_progress": "Procentul de progres al fiecărui utilizator (0-100) către obținerea acestei realizări, cu numărul de progrese brute actuale și starea premiului" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "achievement_name": { + "name": "Numele realizării" + }, + "description": { + "name": "Descriere" + }, + "assigned_user_names": { + "name": "Atribuit la" + }, + "type": { + "name": "Tip", + "state": { + "chore_total": "Total treburi", + "chore_streak": "Seria de treburi", + "daily_minimum": "Minim zilnic" + } + }, + "associated_chore": { + "name": "Treabă asociată" + }, + "criteria": { + "name": "Criterii" + }, + "target_value": { + "name": "Ţintă" + }, + "reward_points": { + "name": "Puncte de recompensă" + }, + "raw_progress": { + "name": "Progres brut" + }, + "awarded": { + "name": "Premiat", + "state": { + "true": "Da", + "false": "Nu" + } + }, + "labels": { + "name": "Etichete" + } + } + }, + "assignee_challenge_progress_sensor": { + "name": "Progres - {challenge_name}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_challenge_progress": "Procentul de progres al fiecărui utilizator (0-100) către finalizarea acestei provocări în intervalul de timp, cu numărul de progres brut actual și starea premiului" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "challenge_name": { + "name": "Numele provocării" + }, + "description": { + "name": "Descriere" + }, + "assigned_user_names": { + "name": "Atribuit la" + }, + "type": { + "name": "Tip", + "state": { + "total_within_window": "Total în cadrul ferestrei", + "daily_minimum": "Minim zilnic" + } + }, + "associated_chore": { + "name": "Treabă asociată" + }, + "criteria": { + "name": "Criterii" + }, + "target_value": { + "name": "Ţintă" + }, + "reward_points": { + "name": "Puncte de recompensă" + }, + "start_date": { + "name": "Data de începere" + }, + "end_date": { + "name": "Data de încheiere" + }, + "raw_progress": { + "name": "Progres brut" + }, + "awarded": { + "name": "Premiat", + "state": { + "true": "Da", + "false": "Nu" + } + }, + "labels": { + "name": "Etichete" + } + } + }, + "assignee_chore_streak_sensor": { + "name": "Cea mai mare serie de treburi", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_sensor_chore_streak_extra": "Cea mai mare serie de finalizări ale sarcinilor pentru utilizator (extra)" + } + }, + "streaks_by_achievement": { + "name": "Serii de realizări" + } + } + }, + "system_dashboard_translation_sensor": { + "name": "Traduceri pentru tabloul de bord ({language})", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_dashboard_translation": "Oferă traduceri localizate ale interfeței utilizator pentru afișarea tabloului de bord" + } + }, + "ui_translations": { + "name": "Traduceri UI" + }, + "language": { + "name": "Limbă" + } + } + }, + "system_dashboard_helper_sensor": { + "name": "Ajutor pentru tabloul de bord", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_system_dashboard_helper": "Agregă starea tabloului de bord al administratorului partajat pentru cardurile de administrator partajate" + } + }, + "ui_control": { + "name": "Controlul interfeței utilizator" + }, + "integration_entry_id": { + "name": "ID intrare integrare" + }, + "dashboard_lookup_key": { + "name": "Cheie de căutare a tabloului de bord" + }, + "user_dashboard_helpers": { + "name": "Ajutoare pentru tabloul de bord al utilizatorilor" + }, + "language": { + "name": "Limbă" + }, + "translation_sensor_eid": { + "name": "ID-ul entității senzorului de traducere" + } + } + }, + "assignee_dashboard_helper_sensor": { + "name": "Ajutor pentru tabloul de bord UI", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_dashboard_helper": "Agregă toate datele utilizatorilor pentru consumul tabloului de bord" + } + }, + "chores": { + "name": "Treburi casnice" + }, + "rewards": { + "name": "Recompense" + }, + "ui_control": { + "name": "Controlul interfeței utilizator" + }, + "badges": { + "name": "Insigne" + }, + "bonuses": { + "name": "Bonusuri" + }, + "penalties": { + "name": "Penalizări" + }, + "achievements": { + "name": "Realizări" + }, + "challenges": { + "name": "Provocări" + }, + "ui_translations": { + "name": "Traduceri UI" + }, + "points_buttons": { + "name": "Butoane de puncte" + }, + "pending_approvals": { + "name": "Aprobări în așteptare" + }, + "core_sensors": { + "name": "Senzori centrali" + }, + "dashboard_config": { + "name": "Configurarea tabloului de bord" + }, + "dashboard_helpers": { + "name": "Ajutoare pentru tablouri de bord" + }, + "shard_runtime": { + "name": "Runtime Listă de treburi" + }, + "chores_by_label": { + "name": "Treburi după etichetă" + }, + "user_name": { + "name": "Nume utilizator" + }, + "language": { + "name": "Limbă" + } + } + }, + "assignee_dashboard_chore_list_helper_sensor": { + "name": "Listă de sarcini pentru tabloul de bord al interfeței utilizator {shard_index}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_dashboard_chore_shard_helper": "Oferă o listă de sarcini pentru afișarea în tabloul de bord atunci când lista completă de sarcini a unui utilizator este prea mare pentru ajutorul principal" + } + }, + "chores": { + "name": "Treburi casnice" + }, + "shard_index": { + "name": "Numărul listei de treburi" + }, + "shard_count": { + "name": "Liste totale de treburi" + }, + "helper_contract_version": { + "name": "Versiunea contractului de asistență" + } + } + } + }, + "select": { + "kc_select_base": { + "name": "Selectați baza" + }, + "system_chores_select": { + "name": "Selectați o sarcină", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_select_chores": "Meniu derulant pentru a selecta o sarcină din toate sarcinile disponibile" + } + } + } + }, + "system_rewards_select": { + "name": "Selectați recompensa", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_select_rewards": "Meniu derulant pentru a selecta recompensa dintre toate recompensele disponibile" + } + } + } + }, + "system_penalties_select": { + "name": "Selectați penalizarea", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_select_penalties": "Meniu derulant pentru a selecta penalizarea dintre toate penalizările disponibile" + } + } + } + }, + "system_bonuses_select": { + "name": "Selectați Bonusul", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_select_bonuses": "Meniu derulant pentru a selecta bonusul dintre toate bonusurile disponibile" + } + } + } + }, + "system_dashboard_admin_assignee_select": { + "name": "Selector de utilizatori din tabloul de bord al administratorului", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_system_dashboard_admin_user": "Selector de utilizatori la nivel de sistem pentru cardurile tabloului de bord de administrare" + } + }, + "dashboard_helper_eid": { + "name": "ID-ul entității de ajutor pentru tabloul de bord" + }, + "selected_user_slug": { + "name": "Slug-ul utilizatorului selectat" + }, + "selected_user_name": { + "name": "Nume utilizator selectat" + } + } + }, + "assignee_dashboard_helper_chores_select": { + "name": "Ajutor pentru lista de sarcini din tabloul de bord UI", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_select_user_chores": "Selecția sarcinilor utilizatorului pentru filtrarea tabloului de bord" + } + }, + "user_name": { + "name": "Nume utilizator" + } + } + } + }, + "calendar": { + "assignee_schedule_calendar": { + "name": "Calendaristic", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_calendar_schedule": "Calendar care arată programul de sarcini al utilizatorului și datele scadente" + } + }, + "user_name": { + "name": "Nume utilizator" + } + } + } + }, + "datetime": { + "assignee_dashboard_helper_datetime_picker": { + "name": "Ajutor pentru date în tabloul de bord UI", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_datetime_dashboard_helper": "Instrument auxiliar de selectare a datelor pentru filtrarea și navigarea în interfața tabloului de bord" + } + }, + "user_name": { + "name": "Nume utilizator" + } + } + } + }, + "button": { + "assignee_chore_claim_button": { + "name": "Treabă de revendicare - {chore_name}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_button_chore_claim": "Utilizatorul susține că a finalizat sarcina atribuită" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "chore_name": { + "name": "Numele sarcinii" + }, + "labels": { + "name": "Etichete" + } + } + }, + "approver_chore_approve_button": { + "name": "Aprobare sarcină - {chore_name}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_button_chore_approve": "Aprobatorul aprobă sarcina revendicată" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "chore_name": { + "name": "Numele sarcinii" + }, + "labels": { + "name": "Etichete" + } + } + }, + "approver_chore_disapprove_button": { + "name": "Dezaprobă treabă - {chore_name}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_button_chore_disapprove": "Aprobatorul respinge sarcina revendicată" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "chore_name": { + "name": "Numele sarcinii" + }, + "labels": { + "name": "Etichete" + } + } + }, + "assignee_reward_redeem_button": { + "name": "Revendică recompensa - {reward_name}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_button_reward_redeem": "Utilizatorul valorifică recompensa folosind puncte" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "reward_name": { + "name": "Numele recompensei" + }, + "labels": { + "name": "Etichete" + } + } + }, + "approver_reward_approve_button": { + "name": "Aprobă recompensa - {reward_name}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_button_reward_approve": "Aprobatorul aprobă recompensa valorificată" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "reward_name": { + "name": "Numele recompensei" + }, + "labels": { + "name": "Etichete" + } + } + }, + "approver_reward_disapprove_button": { + "name": "Respingeți recompensa - {reward_name}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_button_reward_disapprove": "Aprobatorul respinge recompensa valorificată" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "reward_name": { + "name": "Numele recompensei" + }, + "labels": { + "name": "Etichete" + } + } + }, + "approver_penalty_apply_button": { + "name": "Aplică penalizare - {penalty_name}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_button_penalty_apply": "Aprobatorul aplică penalizare (deduce puncte)" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "penalty_name": { + "name": "Numele penalizării" + }, + "labels": { + "name": "Etichete" + } + } + }, + "approver_bonus_apply_button": { + "name": "Aplică bonusul - {bonus_name}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_button_bonus_apply": "Aprobatorul aplică bonusul (adăugă puncte)" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "bonus_name": { + "name": "Nume bonus" + }, + "labels": { + "name": "Etichete" + } + } + }, + "approver_points_adjust_button": { + "name": "Ajustați {delta} {points_label}", + "state_attributes": { + "purpose": { + "name": "Scop", + "state": { + "purpose_button_points_adjust": "Aprobatorul ajustează manual punctele utilizatorului" + } + }, + "user_name": { + "name": "Nume utilizator" + }, + "delta": { + "name": "Suma ajustării" + }, + "points_label": { + "name": "Tipul de puncte" + } + } + }, + "approver_points_adjust_button_positive": { + "name": "Increment {delta} {points_label}" + }, + "approver_points_adjust_button_negative": { + "name": "Decrementare {delta} {points_label}" + } + } + }, + "exceptions": { + "assignee_not_found_by_name": { + "message": "Nu a fost găsită nicio persoană desemnată cu numele {name}" + }, + "approver_not_found_by_name": { + "message": "Nu a fost găsit niciun aprobator cu numele {name}" + }, + "error_msg_no_entry_found": { + "message": "Nu a fost găsită nicio intrare corespunzătoare în configurare." + }, + "ui_control_target_required": { + "message": "Furnizați user_id sau user_name pentru a viza un singur utilizator." + }, + "ui_control_invalid_target": { + "message": "Ținte permise: utilizator, shared_admin. `ui_control_target {target}` nevalid." + }, + "ui_control_shared_admin_context_invalid": { + "message": "Nu furnizați user_id sau user_name când ui_control_target este shared_admin." + }, + "ui_control_invalid_action": { + "message": "Acțiune de control al interfeței utilizator nevalidă {action}. Acțiuni permise: creare, actualizare, eliminare." + }, + "ui_control_invalid_key": { + "message": "Calea cheii de control a interfeței utilizator {key}este invalidă. Folosiți căi delimitate prin bare oblice, cum ar fi gamification/rewards/header_collapse. Cheia goală este permisă numai cu opțiunea de eliminare." + }, + "ui_control_value_required": { + "message": "Câmpul „valoare” este obligatoriu pentru acțiunea {action}." + }, + "ui_control_key_already_exists": { + "message": "Tasta de control UI {key} există deja pentru utilizatorul {user_name}. Folosiți actualizarea în schimb." + }, + "ui_control_key_not_found": { + "message": "Tasta de control UI {key} nu a fost găsită pentru utilizatorul {user_name}." + }, + "service_target_ambiguous": { + "message": "Sunt încărcate mai multe intrări ChoreOps. Furnizați config_entry_id. Intrări disponibile: {available_entries}" + }, + "service_target_title_not_found": { + "message": "Nu a fost găsită nicio intrare ChoreOps încărcată unică pentru titlul {title}. Folosiți config_entry_id în schimb." + }, + "dashboard_status_preparing_release_assets": { + "message": "Pregătirea activelor selectate ale tabloului de bord online" + }, + "dashboard_status_release_asset_prep_failed": { + "message": "Pregătirea online a resurselor a eșuat. Alegeți o altă versiune sau utilizați cele mai recente șabloane locale compatibile/actuale." + }, + "dashboard_status_release_applied": { + "message": "Versiunea {release_ref} a fost aplicată local ({execution_source}). Reîncărcați integrarea sau reporniți Home Assistant pentru a actualiza senzorii de traducere a tabloului de bord." + }, + "dashboard_status_updated": { + "message": "Actualizat {url_path} (views={view_count}, release_selection={release_selection})" + }, + "dashboard_status_created": { + "message": "Creat {url_path} (assignees={assignee_count}, admin_mode={admin_mode})" + }, + "dashboard_status_required_dependencies_still_missing": { + "message": "Dependențele necesare ale tabloului de bord lipsesc încă; se revine la configurare" + }, + "dashboard_status_required_dependencies_bypassed": { + "message": "Dependențele necesare lipsă au fost ocolite de utilizator" + }, + "dashboard_status_recommended_dependencies_missing": { + "message": "Lipsesc dependențe recomandate (generarea va continua): {dependency_list}" + }, + "dashboard_status_nonselectable_templates": { + "message": "Șabloanele selectate nu sunt disponibile pentru generare:\n{template_list}" + }, + "dashboard_status_deleted": { + "message": "Șters {url_path}" + }, + "dashboard_status_delete_failed": { + "message": "Ștergerea {url_path}a eșuat: {error}" + }, + "dashboard_label_none": { + "message": "- Niciunul" + }, + "dashboard_label_preferences_guide": { + "message": "Ghid de preferințe" + }, + "dashboard_label_preferences_guide_not_provided": { + "message": "Ghidul de preferințe nu a fost furnizat" + }, + "user_non_kiosk_unlinked_warning": { + "message": "⚠️ **Avertisment privind accesul:** Modul chioșc este dezactivat și acest utilizator nu este conectat la un utilizator Home Assistant. Butoanele de revendicare și valorificare a dispozitivelor partajate pot să nu funcționeze pentru acest utilizator până când nu conectați un utilizator Home Assistant sau nu activați modul chioșc." + }, + "dashboard_unlinked_users_warning": { + "message": "⚠️ Modul chioșc este dezactivat, iar acești utilizatori selectați nu au utilizatori Home Assistant conectați:\n{user_list}\n\nEste posibil ca butoanele de revendicare și valorificare să nu funcționeze conform așteptărilor pe dispozitivele partajate până când acești utilizatori nu sunt conectați sau modul chioșc este activat." + }, + "not_authorized_action": { + "message": "Nu aveți autorizație să {action} pentru această persoană desemnată." + }, + "not_authorized_action_global": { + "message": "Nu aveți autorizație să {action}." + }, + "calendar_create_not_supported": { + "message": "Crearea de evenimente nu este acceptată pentru acest calendar." + }, + "calendar_delete_not_supported": { + "message": "Ștergerea evenimentelor nu este acceptată pentru acest calendar" + }, + "calendar_update_not_supported": { + "message": "Actualizarea evenimentelor nu este acceptată pentru acest calendar" + }, + "not_found": { + "message": "{entity_type} {name} nu a fost găsit" + }, + "not_assigned": { + "message": "{entity} neatribuit lui {assignee}" + }, + "rotation_no_turn_holder": { + "message": "Sarcinile de rotație trebuie să aibă un titular de rând atribuit" + }, + "rotation_invalid_order": { + "message": "Ordinea de rotație trebuie să fie o listă nevidă de ID-uri de desemnați." + }, + "rotation_duplicate_in_order": { + "message": "Ordinea de rotație nu poate conține persoane desemnate duplicate" + }, + "rotation_unassigned_in_order": { + "message": "Toate persoanele desemnate, în ordinea rotației, trebuie să fie repartizate la sarcină." + }, + "rotation_min_assignees": { + "message": "Treburile casnice prin rotație necesită cel puțin 2 persoane desemnate" + }, + "not_rotation": { + "message": "Această sarcină nu este în modul de rotație" + }, + "assignee_not_assigned": { + "message": "Persoana însărcinată nu este însărcinată cu această sarcină." + }, + "no_assigned_assignees": { + "message": "Nicio persoană nu este desemnată pentru această sarcină" + }, + "insufficient_points": { + "message": "{assignee} are {current} puncte, dar are nevoie de {required} puncte" + }, + "already_claimed": { + "message": "{entity} a fost deja revendicat" + }, + "chore_claimed_by_other": { + "message": "Această sarcină a fost deja revendicată de {claimed_by}" + }, + "chore_already_approved": { + "message": "Treaba a fost deja aprobată astăzi. Încercați din nou după perioada de resetare a aprobărilor." + }, + "chore_pending_claim": { + "message": "Sarcina are o revendicare în așteptarea aprobării sau respingerii" + }, + "chore_waiting": { + "message": "Această sarcină nu poate fi revendicată încă. Fereastra scadenței nu s-a deschis." + }, + "chore_not_my_turn": { + "message": "Această sarcină este blocată prin rotație. În prezent, este rândul unei alte persoane desemnate." + }, + "chore_missed_locked": { + "message": "Această sarcină este marcată ca ratată și blocată pentru ciclul curent." + }, + "chore_completed_by_other": { + "message": "Această sarcină a fost deja finalizată de o altă persoană însărcinată în această perioadă." + }, + "invalid_status": { + "message": "Starea {entity} este {status}, se așteaptă {expected}" + }, + "entity_mismatch": { + "message": "{provided} nu se potrivește cu {expected}" + }, + "invalid_frequency": { + "message": "Frecvența recurentă {frequency} nu este validă" + }, + "chore_overdue_for_assignee": { + "message": "Treaba {chore_name} este întârziată pentru {assignee_name}" + }, + "assignee_not_assigned_to_chore": { + "message": "Persoana desemnată {assignee_name} nu este atribuită sarcinii {chore_name}" + }, + "shared_chore_cannot_have_assignee": { + "message": "Nu se poate specifica persoana desemnată pentru sarcina partajată {chore_name}. Sarcinile partajate au o singură dată scadentă pentru toate persoanele desemnate." + }, + "reward_not_found": { + "message": "Recompensa cu ID-ul {reward_id} nu a fost găsită." + }, + "required_field": { + "message": "Trebuie să furnizați {field}" + }, + "invalid_date_format": { + "message": "Format de dată nevalid. Vă rugăm să furnizați un șir de date valid (de exemplu, AAAA-LL-ZZ sau data și ora ISO 8601)." + }, + "date_in_past": { + "message": "Data scadenței nu poate fi în trecut. Vă rugăm să furnizați o dată viitoare." + }, + "missing_chore": { + "message": "Trebuie să furnizați fie ID-ul sarcinii, fie numele acesteia." + }, + "missing_chore_identifier": { + "message": "Trebuie să furnizați fie chore_id, fie chore_name pentru a identifica sarcina." + }, + "chore_not_found": { + "message": "Treaba cu ID-ul {chore_id} nu a fost găsită." + }, + "completion_criteria_immutable": { + "message": "Criteriile de finalizare nu pot fi modificate după crearea sarcinii. Ștergeți și recreați sarcina dacă aveți nevoie de alte criterii de finalizare." + }, + "missing_reward_identifier": { + "message": "Trebuie să furnizați fie reward_id, fie reward_name pentru a identifica recompensa de actualizat." + }, + "missing_field": { + "message": "Câmpul obligatoriu {field} lipsește din {entity}" + }, + "invalid_date": { + "message": "Data {field} {date} este invalidă" + }, + "date_constraint": { + "message": "{constraint} încălcare: {detail}" + }, + "operation_failed": { + "message": "{operation} a eșuat: {reason}" + }, + "configuration_error": { + "message": "Eroare de configurare: {detail}" + }, + "data_reset_confirmation_required": { + "message": "Trebuie să setați confirm_destructive: true pentru a continua cu resetarea datelor." + }, + "data_reset_assignee_not_found": { + "message": "Cesionarul {assignee_name} nu a fost găsit" + }, + "data_reset_item_not_found": { + "message": "{item_type} {item_name} nu a fost găsit" + }, + "data_reset_invalid_scope": { + "message": "Domeniu de aplicare nevalid {scope}. Trebuie să fie: global, cesionar, tip_element sau element" + }, + "data_reset_invalid_item_type": { + "message": "Tip_item {item_type}nevalid. Trebuie să fie: persoane desemnate, sarcini casnice, recompense, insigne, realizări, provocări, penalizări sau bonusuri." + }, + "notif_title_data_reset": { + "message": "Resetare date tranzacționale" + }, + "notif_message_data_reset_global": { + "message": "Toate datele de execuție au fost resetate. Configurația a fost păstrată." + }, + "notif_message_data_reset_assignee": { + "message": "Resetarea datelor a fost finalizată pentru {assignee_name}. Punctele, statisticile și progresul au fost șterse." + }, + "notif_message_data_reset_item_type": { + "message": "Resetarea datelor a fost finalizată pentru toate {item_type}. Datele de execuție au fost șterse." + }, + "notif_message_data_reset_item": { + "message": "Resetarea datelor a fost finalizată pentru {item_name}. Datele de execuție au fost șterse." + }, + "notif_title_chore_missed": { + "message": "Treabă ratată" + }, + "notif_message_chore_missed": { + "message": "{assignee_name} a ratat treaba: {chore_name}" + }, + "chore_paused": { + "message": "Procesarea sarcinilor este momentan întreruptă pentru acest utilizator." + } + } +} diff --git a/custom_components/choreops/translations/sk.json b/custom_components/choreops/translations/sk.json index 368a077..529fb0d 100644 --- a/custom_components/choreops/translations/sk.json +++ b/custom_components/choreops/translations/sk.json @@ -81,13 +81,15 @@ "name": "Meno", "ha_user_id": "Používateľ domáceho asistenta", "dashboard_language": "Jazyk", - "mobile_notify_service": "Upozornenia" + "mobile_notify_service": "Upozornenia", + "notif_click_url": "URL adresa klepnutia na upozornenie" }, "data_description": { "name": "Jedinečný názov pre tento používateľský profil.", "ha_user_id": "Voliteľné: Prepojte tento profil s používateľom služby Home Assistant. Ak je režim kiosku vypnutý, akcie nárokovania a uplatnenia na zdieľanom zariadení sa spoliehajú na toto prepojenie.", "dashboard_language": "Jazyk používaný pre obsah a upozornenia ovládacieho panela.", - "mobile_notify_service": "Vyberte službu upozornení alebo nechajte pole prázdne, ak chcete upozornenia vypnúť." + "mobile_notify_service": "Vyberte službu upozornení alebo nechajte pole prázdne, ak chcete upozornenia vypnúť.", + "notif_click_url": "Voliteľná URL adresa, ktorá sa otvorí po klepnutí na upozornenie. Pre predvolené správanie ponechajte pole prázdne." } }, "section_system_usage": { @@ -110,12 +112,18 @@ "data": { "can_approve": "Môže schváliť", "can_manage": "Dokáže zvládnuť", - "associated_user_ids": "Priradení používatelia" + "associated_user_ids": "Priradení používatelia", + "notif_approve_click_url": "URL adresa klepnutím na oznámenie o schválení", + "chores_paused": "Pozastaviť domáce práce", + "chores_paused_until": "Pozastavené do" }, "data_description": { "can_approve": "Umožňuje akcie schválenia a zamietnutia.", "can_manage": "Umožňuje akcie správy, ktoré vyžadujú zvýšené povolenia.", - "associated_user_ids": "Používatelia, ktorých tento schvaľovateľ/správca dohliada na schvaľovacie akcie." + "associated_user_ids": "Používatelia, ktorých tento schvaľovateľ/správca dohliada na schvaľovacie akcie.", + "notif_approve_click_url": "Voliteľná URL adresa pre oznámenia o schválení. Prepíše všeobecnú URL adresu oznámenia pri schvaľovaní domácich úloh alebo odmien.", + "chores_paused": "Pozastaví spracovanie úloh. Nezhromažďujú sa žiadne oneskorené ani zmeškané štatistiky.", + "chores_paused_until": "Voliteľný dátum návratu. Ak je nastavený, domáce práce sa automaticky obnovia o polnoci po tomto dátume." } } } @@ -483,6 +491,8 @@ "invalid_reward_count": "Neplatný počet odmien", "invalid_reward_name": "Neplatný názov odmeny", "invalid_reward_cost": "Cena odmeny musí byť nula alebo vyššia s presnosťou na maximálne 2 desatinné miesta.", + "invalid_reward_assigned_users": "Jeden alebo viac priradených používateľov nie je platných", + "mixed_reward_assignment_sentinel": "Nemožno kombinovať „všetkých používateľov“ s konkrétnymi používateľmi", "invalid_bonus": "Neplatný bonus", "invalid_bonus_count": "Neplatný počet bonusov", "invalid_bonus_name": "Neplatný názov bonusu", @@ -569,13 +579,15 @@ "name": "Meno", "ha_user_id": "Používateľ domáceho asistenta", "dashboard_language": "Jazyk", - "mobile_notify_service": "Upozornenia" + "mobile_notify_service": "Upozornenia", + "notif_click_url": "URL adresa klepnutia na upozornenie" }, "data_description": { "name": "Jedinečný názov pre tento používateľský profil.", "ha_user_id": "Voliteľné: Prepojte tento profil s používateľom služby Home Assistant. Ak je režim kiosku vypnutý, akcie nárokovania a uplatnenia na zdieľanom zariadení sa spoliehajú na toto prepojenie.", "dashboard_language": "Jazyk používaný pre obsah a upozornenia ovládacieho panela.", - "mobile_notify_service": "Vyberte službu upozornení alebo nechajte pole prázdne, ak chcete upozornenia vypnúť." + "mobile_notify_service": "Vyberte službu upozornení alebo nechajte pole prázdne, ak chcete upozornenia vypnúť.", + "notif_click_url": "Voliteľná URL adresa, ktorá sa otvorí po klepnutí na upozornenie. Pre predvolené správanie ponechajte pole prázdne." } }, "section_system_usage": { @@ -598,12 +610,18 @@ "data": { "can_approve": "Môže schváliť", "can_manage": "Dokáže zvládnuť", - "associated_user_ids": "Priradení používatelia" + "associated_user_ids": "Priradení používatelia", + "notif_approve_click_url": "URL adresa klepnutím na oznámenie o schválení", + "chores_paused": "Pozastaviť domáce práce", + "chores_paused_until": "Pozastavené do" }, "data_description": { "can_approve": "Umožňuje akcie schválenia a zamietnutia.", "can_manage": "Umožňuje akcie správy, ktoré vyžadujú zvýšené povolenia.", - "associated_user_ids": "Používatelia, ktorých tento schvaľovateľ/správca dohliada na schvaľovacie akcie." + "associated_user_ids": "Používatelia, ktorých tento schvaľovateľ/správca dohliada na schvaľovacie akcie.", + "notif_approve_click_url": "Voliteľná URL adresa pre oznámenia o schválení. Prepíše všeobecnú URL adresu oznámenia pri schvaľovaní domácich úloh alebo odmien.", + "chores_paused": "Pozastaví spracovanie úloh. Nezhromažďujú sa žiadne oneskorené ani zmeškané štatistiky.", + "chores_paused_until": "Voliteľný dátum návratu. Ak je nastavený, domáce práce sa automaticky obnovia o polnoci po tomto dátume." } } } @@ -926,7 +944,8 @@ "cost": "Cena odmeny", "description": "Popis (voliteľné)", "reward_labels": "Štítky odmien", - "icon": "Ikona (mdi:xxx)" + "icon": "Ikona (mdi:xxx)", + "assigned_user_ids": "Pridelené komu" } }, "add_penalty": { @@ -1000,13 +1019,15 @@ "name": "Meno", "ha_user_id": "Používateľ domáceho asistenta", "dashboard_language": "Jazyk", - "mobile_notify_service": "Upozornenia" + "mobile_notify_service": "Upozornenia", + "notif_click_url": "URL adresa klepnutia na upozornenie" }, "data_description": { "name": "Jedinečný názov pre tento používateľský profil.", "ha_user_id": "Voliteľné: Prepojte tento profil s používateľom služby Home Assistant. Ak je režim kiosku vypnutý, akcie nárokovania a uplatnenia na zdieľanom zariadení sa spoliehajú na toto prepojenie.", "dashboard_language": "Jazyk používaný pre obsah a upozornenia ovládacieho panela.", - "mobile_notify_service": "Vyberte službu upozornení alebo nechajte pole prázdne, ak chcete upozornenia vypnúť." + "mobile_notify_service": "Vyberte službu upozornení alebo nechajte pole prázdne, ak chcete upozornenia vypnúť.", + "notif_click_url": "Voliteľná URL adresa, ktorá sa otvorí po klepnutí na upozornenie. Pre predvolené správanie ponechajte pole prázdne." } }, "section_system_usage": { @@ -1029,12 +1050,18 @@ "data": { "can_approve": "Môže schváliť", "can_manage": "Dokáže zvládnuť", - "associated_user_ids": "Pridružení používatelia" + "associated_user_ids": "Pridružení používatelia", + "notif_approve_click_url": "URL adresa klepnutím na oznámenie o schválení", + "chores_paused": "Pozastaviť domáce práce", + "chores_paused_until": "Pozastavené do" }, "data_description": { "can_approve": "Umožňuje akcie schválenia a zamietnutia.", "can_manage": "Umožňuje akcie správy, ktoré vyžadujú zvýšené povolenia.", - "associated_user_ids": "Používatelia, ktorých tento schvaľovateľ/správca dohliada na schvaľovacie akcie." + "associated_user_ids": "Používatelia, ktorých tento schvaľovateľ/správca dohliada na schvaľovacie akcie.", + "notif_approve_click_url": "Voliteľná URL adresa pre oznámenia o schválení. Prepíše všeobecnú URL adresu oznámenia pri schvaľovaní domácich úloh alebo odmien.", + "chores_paused": "Pozastaví spracovanie úloh. Nezhromažďujú sa žiadne oneskorené ani zmeškané štatistiky.", + "chores_paused_until": "Voliteľný dátum návratu. Ak je nastavený, domáce práce sa automaticky obnovia o polnoci po tomto dátume." } } } @@ -1385,7 +1412,8 @@ "cost": "Cena odmeny", "description": "Popis (voliteľné)", "reward_labels": "Štítky odmien", - "icon": "Ikona (mdi:xxx)" + "icon": "Ikona (mdi:xxx)", + "assigned_user_ids": "Pridelené komu" } }, "edit_penalty": { @@ -1633,6 +1661,7 @@ "title": "Všeobecné možnosti", "description": "Spravujte všeobecné nastavenia pre integráciu ChoreOps.\n\n ℹ️ [Získajte viac informácií o všeobecných možnostiach]({documentation_url})", "data": { + "dashboard_points_precision": "Presnosť bodov na palubnej doske", "default_chore_points": "Predvolené body za domácu úlohu", "points_adjust_values": "Hodnoty tlačidla manuálneho nastavenia bodov", "update_interval": "Interval aktualizácie", @@ -1649,6 +1678,7 @@ "backup_action_selection": "Zálohovacie akcie" }, "data_description": { + "dashboard_points_precision": "Vyberte spôsob zobrazenia bodov na podporovaných paneloch. Toto zmení iba formátovanie panela a nezmení uložené hodnoty bodov ani výpočty.", "default_chore_points": "Predvolená hodnota bodov použitá pre nové úlohy, keď nie sú zadané vlastné body.", "points_adjust_values": "Zoznam hodnôt pre tlačidlá manuálneho nastavenia bodov. Každá hodnota je oddelená znakom „|“.", "update_interval": "Interval v minútach pre aktualizáciu interného stavu ChoreOps.", @@ -1948,6 +1978,14 @@ "return_to_menu": "↩️ Späť do hlavnej ponuky" } }, + "dashboard_points_precision": { + "options": { + "fixed_0": "Iba celé čísla", + "adaptive": "Adaptívne (zobrazovať desatinné miesta iba v prípade potreby)", + "fixed_1": "Vždy 1 desatinné miesto", + "fixed_2": "Vždy na 2 desatinné miesta" + } + }, "select_backup_to_delete": { "options": { "cancel": "↩️ Zrušiť (návrat do ponuky zálohovania)" @@ -2223,6 +2261,37 @@ } } }, + "pause_user_chores": { + "name": "Pozastaviť domáce úlohy používateľa", + "description": "Pozastaviť alebo obnoviť spracovanie úloh pre používateľa.", + "fields": { + "config_entry_id": { + "name": "ID konfiguračnej položky (voliteľné)", + "description": "Použite toto, ak máte viac ako jedno nastavenie ChoreOps. Zameriava sa na jedno konkrétne nastavenie.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Názov konfiguračnej položky (voliteľné)", + "description": "Použite toto, ak máte viacero nastavení ChoreOps a každé z nich má jedinečný názov. Ak sa názvy opakujú, použite ID položky konfigurácie.", + "example": "Rodinné práce" + }, + "user_name": { + "name": "Používateľské meno", + "description": "Meno používateľa, ktorého úlohy sa majú pozastaviť alebo obnoviť.", + "example": "Sára" + }, + "paused": { + "name": "Pozastavené", + "description": "Pravda pre pozastavenie domácich úloh, Nepravda pre obnovenie.", + "example": "pravda" + }, + "paused_until": { + "name": "Pozastavené do", + "description": "Voliteľný dátum návratu. Ak je nastavený, domáce práce sa automaticky obnovia o polnoci po tomto dátume.", + "example": "2026-06-10T00:00:00+00:00" + } + } + }, "redeem_reward": { "name": "Uplatniť odmenu", "description": "Schvaľovateľ uplatní odmenu pre priradenú osobu a odpočíta jej body.", @@ -2461,6 +2530,11 @@ "name": "Štítky", "description": "Štítky na zoskupovanie odmien.", "example": "[„víkend“, „špeciál“]" + }, + "assigned_user_names": { + "name": "Pridelené komu", + "description": "Zobrazované mená používateľov priradené k tejto odmene. Pre všetkých používateľov použite [*]. Ak chcete odmenu nepriradiť žiadnym používateľom, zadajte prázdny zoznam.", + "example": "[„Zoë“, „Max!“]" } } }, @@ -2507,6 +2581,11 @@ "name": "Štítky", "description": "Aktualizované štítky.", "example": "[„prémiový“, „špeciálny“]" + }, + "assigned_user_names": { + "name": "Pridelené komu", + "description": "Zobrazované mená používateľov priradené k tejto odmene. Pre všetkých používateľov použite [*]. Pre odstránenie všetkých priradených používateľov zadajte prázdny zoznam. Vynechajte, ak chcete, aby aktuálne priradenia zostali nezmenené.", + "example": "[„Zoë“, „Max!“]" } } }, @@ -2557,7 +2636,7 @@ }, "assigned_user_names": { "name": "Pridelené komu", - "description": "Zoznam mien osôb, ktorým sa má táto úloha priradiť.", + "description": "Zoznam mien priradených osôb, ktorým sa má táto úloha priradiť. Pre všetkých priraditeľných používateľov použite [\"*\"]. Pre vytvorenie bez priradených osôb zadajte prázdny zoznam.", "example": "[„Emma“, „Jack“]" }, "points": { @@ -2663,7 +2742,7 @@ }, "assigned_user_names": { "name": "Pridelené komu", - "description": "Nový zoznam mien poverených osôb, ktorým sa má táto úloha priradiť.", + "description": "Nový zoznam mien priradených osôb, ktorým sa má táto úloha priradiť. Pre všetkých priraditeľných používateľov použite znak [\"*\"]. Pre odstránenie všetkých priradených používateľov zadajte prázdny zoznam. Vynechajte, ak chcete aktuálne priradenia ponechať nezmenené.", "example": "[„Emma“, „Jack“]" }, "points": { @@ -2735,6 +2814,11 @@ "name": "Posunutie pripomienky splatnosti", "description": "Nový posun pripomienky termínu. Čas pred dátumom termínu na odoslanie upozornenia na pripomienku. Formát: „30 min“, „1 h“, „1 deň 6 h 30 min“ atď. Na vypnutie použite „0“.", "example": "30 metrov" + }, + "assignment_action": { + "name": "Akcia priradenia", + "description": "Ako pracovať so zoznamom assigned_user_names. „replace“ nastaví zoznam priamo (predvolené, spätne kompatibilné). „add“ pridá uvedených používateľov k existujúcim prideleným používateľom. „remove“ odstráni uvedených používateľov z existujúcich pridelených používateľov.", + "example": "pridať" } } }, @@ -3096,6 +3180,11 @@ "name": "Preskočiť neopakujúce sa domáce práce", "description": "Povoľte túto možnosť, ak chcete, aby sa jednorazové úlohy nezmenili namiesto presunutia ich termínu na hranicu.", "example": "nepravdivé" + }, + "allow_long_recurrences": { + "name": "Povoliť dlhé opakovania", + "description": "Povoliť zmenu plánovania mesačných, štvrťročných, ročných a iných dlhodobých opakovaní. Predvolená hodnota je false, aby sa predišlo náhodným veľkým skokom.", + "example": "pravda" } } }, @@ -3179,7 +3268,8 @@ "completed_by_other": "Dokončené iným používateľom", "waiting": "Čakanie (Okno splatnosti nie je otvorené)", "not_my_turn": "Nie je môj ťah (rotácia)", - "missed": "Zmeškané (Uzamknuté)" + "missed": "Zmeškané (Uzamknuté)", + "paused": "Pozastavené" }, "state_attributes": { "purpose": { @@ -3426,7 +3516,8 @@ "blocked_pending_claim": "Čaká na vybavenie nároku", "blocked_waiting_window": "Čakanie na časový úsek", "blocked_not_my_turn": "Nie si na rade", - "blocked_missed_locked": "Nepremeškané a uzamknuté" + "blocked_missed_locked": "Nepremeškané a uzamknuté", + "blocked_paused": "Domáce úlohy sú pre tohto používateľa pozastavené" } }, "turn_user_name": { @@ -4740,9 +4831,15 @@ "core_sensors": { "name": "Základné senzory" }, + "dashboard_config": { + "name": "Konfigurácia ovládacieho panela" + }, "dashboard_helpers": { "name": "Pomocníci pre dashboard" }, + "shard_runtime": { + "name": "Zoznam úloh v režime runtime" + }, "chores_by_label": { "name": "Domáce práce podľa vydavateľstva" }, @@ -4753,6 +4850,29 @@ "name": "Jazyk" } } + }, + "assignee_dashboard_chore_list_helper_sensor": { + "name": "Zoznam úloh na ovládacom paneli používateľského rozhrania {shard_index}", + "state_attributes": { + "purpose": { + "name": "Účel", + "state": { + "purpose_dashboard_chore_shard_helper": "Poskytuje jeden zoznam úloh pre zobrazenie na ovládacom paneli, keď je celý zoznam úloh používateľa príliš veľký pre hlavného pomocníka." + } + }, + "chores": { + "name": "Domáce práce" + }, + "shard_index": { + "name": "Číslo zoznamu úloh" + }, + "shard_count": { + "name": "Celkový zoznam domácich úloh" + }, + "helper_contract_version": { + "name": "Verzia zmluvy pre pomocníkov" + } + } } }, "select": { @@ -5314,6 +5434,9 @@ }, "notif_message_chore_missed": { "message": "{assignee_name} zmeškal(a) som povinnú prácu: {chore_name}" + }, + "chore_paused": { + "message": "Spracovanie úloh je pre tohto používateľa momentálne pozastavené." } } } diff --git a/custom_components/choreops/translations/sl.json b/custom_components/choreops/translations/sl.json index 98eff87..93ea23f 100644 --- a/custom_components/choreops/translations/sl.json +++ b/custom_components/choreops/translations/sl.json @@ -81,13 +81,15 @@ "name": "Ime", "ha_user_id": "Home Assistant uporabnik", "dashboard_language": "Jezik", - "mobile_notify_service": "Obvestila" + "mobile_notify_service": "Obvestila", + "notif_click_url": "URL za obvestila z dotikom" }, "data_description": { "name": "Edinstveno ime za ta uporabniški profil.", "ha_user_id": "Izbirno: Povežite ta profil z uporabnikom storitve Home Assistant. Če je način kioska onemogočen, so dejanja prevzema in unovčenja v skupni napravi odvisna od te povezave.", "dashboard_language": "Jezik, ki se uporablja za vsebino in obvestila nadzorne plošče.", - "mobile_notify_service": "Izberite storitev obveščanja ali pustite prazno, da obvestila onemogočite." + "mobile_notify_service": "Izberite storitev obveščanja ali pustite prazno, da obvestila onemogočite.", + "notif_click_url": "Neobvezen URL, ki se odpre ob dotiku obvestila. Za privzeto delovanje pustite polje prazno." } }, "section_system_usage": { @@ -110,12 +112,18 @@ "data": { "can_approve": "Lahko odobri", "can_manage": "Lahko upravlja", - "associated_user_ids": "Povezani uporabniki" + "associated_user_ids": "Povezani uporabniki", + "notif_approve_click_url": "URL za obvestilo o odobritvi", + "chores_paused": "Začasno ustavi opravila", + "chores_paused_until": "Začasno ustavljeno do" }, "data_description": { "can_approve": "Omogoča dejanja odobritve in zavrnitve.", "can_manage": "Omogoča dejanja upravljanja, ki zahtevajo povišana dovoljenja.", - "associated_user_ids": "Uporabniki, ki jih ta odobritelj/skrbnik nadzira glede dejanj odobritve." + "associated_user_ids": "Uporabniki, ki jih ta odobritelj/skrbnik nadzira glede dejanj odobritve.", + "notif_approve_click_url": "Neobvezen URL za obvestila o odobritvi. Preglasi splošni URL za obvestila ob odobritvi opravil ali nagrad.", + "chores_paused": "Začasno ustavi obdelavo opravil. Zamujene ali zamujene statistike se ne kopičijo.", + "chores_paused_until": "Neobvezen datum vrnitve. Če je nastavljen, se opravila samodejno nadaljujejo ob polnoči po tem datumu." } } } @@ -483,6 +491,8 @@ "invalid_reward_count": "Neveljavno število nagrad", "invalid_reward_name": "Neveljavno ime nagrade", "invalid_reward_cost": "Stroški nagrade morajo biti nič ali večji, zaokroženi na največ dve decimalni mesti.", + "invalid_reward_assigned_users": "Eden ali več dodeljenih uporabnikov ni veljavnih", + "mixed_reward_assignment_sentinel": "»Vsi uporabniki« niso mogoči z določenimi uporabniki", "invalid_bonus": "Neveljaven bonus", "invalid_bonus_count": "Neveljavno število bonusov", "invalid_bonus_name": "Neveljavno ime bonusa", @@ -569,13 +579,15 @@ "name": "Ime", "ha_user_id": "Home Assistant uporabnik", "dashboard_language": "Jezik", - "mobile_notify_service": "Obvestila" + "mobile_notify_service": "Obvestila", + "notif_click_url": "URL za obvestila z dotikom" }, "data_description": { "name": "Edinstveno ime za ta uporabniški profil.", "ha_user_id": "Izbirno: Povežite ta profil z uporabnikom storitve Home Assistant. Če je način kioska onemogočen, so dejanja prevzema in unovčenja v skupni napravi odvisna od te povezave.", "dashboard_language": "Jezik, ki se uporablja za vsebino in obvestila nadzorne plošče.", - "mobile_notify_service": "Izberite storitev obveščanja ali pustite prazno, da obvestila onemogočite." + "mobile_notify_service": "Izberite storitev obveščanja ali pustite prazno, da obvestila onemogočite.", + "notif_click_url": "Neobvezen URL, ki se odpre ob dotiku obvestila. Za privzeto delovanje pustite polje prazno." } }, "section_system_usage": { @@ -598,12 +610,18 @@ "data": { "can_approve": "Lahko odobri", "can_manage": "Lahko upravlja", - "associated_user_ids": "Povezani uporabniki" + "associated_user_ids": "Povezani uporabniki", + "notif_approve_click_url": "URL za obvestilo o odobritvi", + "chores_paused": "Začasno ustavi opravila", + "chores_paused_until": "Začasno ustavljeno do" }, "data_description": { "can_approve": "Omogoča dejanja odobritve in zavrnitve.", "can_manage": "Omogoča dejanja upravljanja, ki zahtevajo povišana dovoljenja.", - "associated_user_ids": "Uporabniki, ki jih ta odobritelj/skrbnik nadzira glede dejanj odobritve." + "associated_user_ids": "Uporabniki, ki jih ta odobritelj/skrbnik nadzira glede dejanj odobritve.", + "notif_approve_click_url": "Neobvezen URL za obvestila o odobritvi. Preglasi splošni URL za obvestila ob odobritvi opravil ali nagrad.", + "chores_paused": "Začasno ustavi obdelavo opravil. Zamujene ali zamujene statistike se ne kopičijo.", + "chores_paused_until": "Neobvezen datum vrnitve. Če je nastavljen, se opravila samodejno nadaljujejo ob polnoči po tem datumu." } } } @@ -926,7 +944,8 @@ "cost": "Stroški nagrade", "description": "Opis (neobvezno)", "reward_labels": "Oznake nagrad", - "icon": "Ikona (mdi:xxx)" + "icon": "Ikona (mdi:xxx)", + "assigned_user_ids": "Dodeljeno" } }, "add_penalty": { @@ -1000,13 +1019,15 @@ "name": "Ime", "ha_user_id": "Home Assistant uporabnik", "dashboard_language": "Jezik", - "mobile_notify_service": "Obvestila" + "mobile_notify_service": "Obvestila", + "notif_click_url": "URL za obvestila z dotikom" }, "data_description": { "name": "Edinstveno ime za ta uporabniški profil.", "ha_user_id": "Izbirno: Povežite ta profil z uporabnikom storitve Home Assistant. Če je način kioska onemogočen, so dejanja prevzema in unovčenja v skupni napravi odvisna od te povezave.", "dashboard_language": "Jezik, ki se uporablja za vsebino in obvestila nadzorne plošče.", - "mobile_notify_service": "Izberite storitev obveščanja ali pustite prazno, da obvestila onemogočite." + "mobile_notify_service": "Izberite storitev obveščanja ali pustite prazno, da obvestila onemogočite.", + "notif_click_url": "Neobvezen URL, ki se odpre ob dotiku obvestila. Za privzeto delovanje pustite polje prazno." } }, "section_system_usage": { @@ -1029,12 +1050,18 @@ "data": { "can_approve": "Lahko odobri", "can_manage": "Lahko upravlja", - "associated_user_ids": "Povezani uporabniki" + "associated_user_ids": "Povezani uporabniki", + "notif_approve_click_url": "URL za obvestilo o odobritvi", + "chores_paused": "Začasno ustavi opravila", + "chores_paused_until": "Začasno ustavljeno do" }, "data_description": { "can_approve": "Omogoča dejanja odobritve in zavrnitve.", "can_manage": "Omogoča dejanja upravljanja, ki zahtevajo povišana dovoljenja.", - "associated_user_ids": "Uporabniki, ki jih ta odobritelj/skrbnik nadzira glede dejanj odobritve." + "associated_user_ids": "Uporabniki, ki jih ta odobritelj/skrbnik nadzira glede dejanj odobritve.", + "notif_approve_click_url": "Neobvezen URL za obvestila o odobritvi. Preglasi splošni URL za obvestila ob odobritvi opravil ali nagrad.", + "chores_paused": "Začasno ustavi obdelavo opravil. Zamujene ali zamujene statistike se ne kopičijo.", + "chores_paused_until": "Neobvezen datum vrnitve. Če je nastavljen, se opravila samodejno nadaljujejo ob polnoči po tem datumu." } } } @@ -1385,7 +1412,8 @@ "cost": "Stroški nagrade", "description": "Opis (neobvezno)", "reward_labels": "Oznake nagrad", - "icon": "Ikona (mdi:xxx)" + "icon": "Ikona (mdi:xxx)", + "assigned_user_ids": "Dodeljeno" } }, "edit_penalty": { @@ -1633,6 +1661,7 @@ "title": "Splošne možnosti", "description": "Upravljajte splošne nastavitve za integracijo ChoreOps.\n\n ℹ️ [Več o splošnih možnostih]({documentation_url})", "data": { + "dashboard_points_precision": "Natančnost točk na nadzorni plošči", "default_chore_points": "Privzete točke na opravilo", "points_adjust_values": "Vrednosti gumba za ročno prilagajanje točk", "update_interval": "Interval posodobitve", @@ -1649,6 +1678,7 @@ "backup_action_selection": "Varnostna dejanja" }, "data_description": { + "dashboard_points_precision": "Izberite, kako so točke prikazane na podprtih nadzornih ploščah. S tem spremenite samo oblikovanje nadzorne plošče in ne shranjenih vrednosti točk ali izračunov.", "default_chore_points": "Privzeta vrednost točk, ki se uporablja za nova opravila, kadar točke po meri niso določene.", "points_adjust_values": "Seznam vrednosti za gumbe za ročno prilagajanje točk. Vsaka vrednost je ločena z '|'.", "update_interval": "Interval v minutah za posodabljanje notranjega stanja ChoreOps.", @@ -1948,6 +1978,14 @@ "return_to_menu": "↩️ Nazaj v glavni meni" } }, + "dashboard_points_precision": { + "options": { + "fixed_0": "Samo cela števila", + "adaptive": "Prilagodljivo (decimalna mesta se prikažejo samo, kadar je to potrebno)", + "fixed_1": "Vedno 1 decimalno mesto", + "fixed_2": "Vedno 2 decimalni mesti" + } + }, "select_backup_to_delete": { "options": { "cancel": "↩️ Prekliči (vrnitev v meni za varnostno kopiranje)" @@ -2223,6 +2261,37 @@ } } }, + "pause_user_chores": { + "name": "Začasno ustavi uporabnikova opravila", + "description": "Začasno ustavite ali nadaljujte obdelavo opravil za uporabnika.", + "fields": { + "config_entry_id": { + "name": "ID vnosa konfiguracije (neobvezno)", + "description": "Uporabite to možnost, če imate več kot eno nastavitev ChoreOps. Cilja na eno specifično nastavitev.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Ime vnosa konfiguracije (neobvezno)", + "description": "Uporabite to možnost, če imate več kot eno nastavitev ChoreOps in ima vsaka edinstveno ime. Če se imena ponavljajo, uporabite ID vnosa konfiguracije.", + "example": "Družinska opravila" + }, + "user_name": { + "name": "Uporabniško ime", + "description": "Ime uporabnika, čigar opravila naj se začasno ustavijo ali nadaljujejo.", + "example": "Sara" + }, + "paused": { + "name": "Zaustavljeno", + "description": "True za začasno ustavitev opravil, False za nadaljevanje.", + "example": "res" + }, + "paused_until": { + "name": "Zaustavljeno do", + "description": "Neobvezen datum vrnitve. Če je nastavljen, se opravila samodejno nadaljujejo ob polnoči po tem datumu.", + "example": "2026-06-10T00:00:00+00:00" + } + } + }, "redeem_reward": { "name": "Unovči nagrado", "description": "Odobritelj unovči nagrado za prejemnika in mu odšteje točke.", @@ -2461,6 +2530,11 @@ "name": "Oznake", "description": "Oznake za združevanje nagrad.", "example": "['vikend', 'posebna ponudba']" + }, + "assigned_user_names": { + "name": "Dodeljeno", + "description": "Prikazna imena uporabnikov, dodeljena tej nagradi. Za vse uporabnike uporabite [\"*\"]. Za dodelitev brez uporabnikov posredujte prazen seznam.", + "example": "['Zoë', 'Max!']" } } }, @@ -2507,6 +2581,11 @@ "name": "Oznake", "description": "Posodobljene oznake.", "example": "['premium', 'posebno']" + }, + "assigned_user_names": { + "name": "Dodeljeno", + "description": "Prikazna imena uporabnikov, dodeljena tej nagradi. Za vse uporabnike uporabite [\"*\"]. Za odstranitev vseh dodeljenih uporabnikov podajte prazen seznam. Izpustite, če želite trenutne dodelitve ostati nespremenjene.", + "example": "['Zoë', 'Max!']" } } }, @@ -2557,7 +2636,7 @@ }, "assigned_user_names": { "name": "Dodeljeno", - "description": "Seznam imen dodeljevalcev, ki jim želite dodeliti to opravilo.", + "description": "Seznam imen dodeljenih oseb, ki jim želite dodeliti to opravilo. Za vse dodelljive uporabnike uporabite [\"*\"]. Za ustvarjanje brez dodeljenih oseb posredujte prazen seznam.", "example": "['Emma', 'Jack']" }, "points": { @@ -2663,7 +2742,7 @@ }, "assigned_user_names": { "name": "Dodeljeno", - "description": "Nov seznam imen dodeljevalcev, ki jim želite dodeliti to opravilo.", + "description": "Nov seznam imen dodeljenih oseb, ki jim želite dodeliti to opravilo. Za vse dodelljive uporabnike uporabite [\"*\"]. Za odstranitev vseh dodeljenih uporabnikov uporabite prazen seznam. Izpustite seznam, če želite trenutne dodelitve ostati nespremenjene.", "example": "['Emma', 'Jack']" }, "points": { @@ -2735,6 +2814,11 @@ "name": "Zamik opomnika za zapadlost", "description": "Nov odmik opomnika za zapadlost. Trajanje pred datumom zapadlosti za pošiljanje obvestila o opomniku. Oblika: '30 min', '1 ura', '1 dan 6 ur 30 min' itd. Za onemogočanje uporabite '0'.", "example": "30 m" + }, + "assignment_action": { + "name": "Dejanje dodelitve", + "description": "Kako ravnati s seznamom assigned_user_names. »replace« nastavi seznam neposredno (privzeto, združljivo s prejšnjimi različicami). »add« doda navedene uporabnike obstoječim dodeljevalcem. »remove« odstrani navedene uporabnike iz obstoječih dodeljevalcev.", + "example": "dodaj" } } }, @@ -3096,6 +3180,11 @@ "name": "Preskoči neponavljajoča se opravila", "description": "Omogočite to možnost, če želite, da se neponavljajoča se opravila ne spremenijo, namesto da se njihov rok premakne na mejo.", "example": "lažno" + }, + "allow_long_recurrences": { + "name": "Dovoli dolge ponovitve", + "description": "Dovoli prerazporejanje mesečnih, četrtletnih, letnih in drugih ponovitev z dolgimi intervali. Privzeta vrednost je »false«, da se preprečijo nenamerni veliki skoki.", + "example": "res" } } }, @@ -3179,7 +3268,8 @@ "completed_by_other": "Dokončal nekdo drug", "waiting": "Čakanje (okno za prijavo ni odprto)", "not_my_turn": "Nisem na vrsti (rotacija)", - "missed": "Zgrešeno (zaklenjeno)" + "missed": "Zgrešeno (zaklenjeno)", + "paused": "Zaustavljeno" }, "state_attributes": { "purpose": { @@ -3426,7 +3516,8 @@ "blocked_pending_claim": "Zahtevek v teku", "blocked_waiting_window": "Čakanje na zapadli okvir", "blocked_not_my_turn": "Nisi na vrsti", - "blocked_missed_locked": "Zgrešeno in zaklenjeno" + "blocked_missed_locked": "Zgrešeno in zaklenjeno", + "blocked_paused": "Opravila so za tega uporabnika zaustavljena" } }, "turn_user_name": { @@ -4740,9 +4831,15 @@ "core_sensors": { "name": "Osnovni senzorji" }, + "dashboard_config": { + "name": "Konfiguracija nadzorne plošče" + }, "dashboard_helpers": { "name": "Pomočniki nadzorne plošče" }, + "shard_runtime": { + "name": "Izvajanje seznama opravil" + }, "chores_by_label": { "name": "Opravila po založbi" }, @@ -4753,6 +4850,29 @@ "name": "Jezik" } } + }, + "assignee_dashboard_chore_list_helper_sensor": { + "name": "Seznam opravil nadzorne plošče uporabniškega vmesnika {shard_index}", + "state_attributes": { + "purpose": { + "name": "Namen", + "state": { + "purpose_dashboard_chore_shard_helper": "Zagotavlja en seznam opravil za prikaz na nadzorni plošči, ko je celoten seznam opravil uporabnika prevelik za glavnega pomočnika." + } + }, + "chores": { + "name": "Opravila" + }, + "shard_index": { + "name": "Številka seznama opravil" + }, + "shard_count": { + "name": "Skupni seznami opravil" + }, + "helper_contract_version": { + "name": "Različica pogodbe za pomočnike" + } + } } }, "select": { @@ -5314,6 +5434,9 @@ }, "notif_message_chore_missed": { "message": "{assignee_name} zamudil opravilo: {chore_name}" + }, + "chore_paused": { + "message": "Obdelava opravil je za tega uporabnika trenutno zaustavljena." } } } diff --git a/custom_components/choreops/translations/sv.json b/custom_components/choreops/translations/sv.json index 5fb185c..a943954 100644 --- a/custom_components/choreops/translations/sv.json +++ b/custom_components/choreops/translations/sv.json @@ -81,13 +81,15 @@ "name": "Namn", "ha_user_id": "Hemassistent-användare", "dashboard_language": "Språk", - "mobile_notify_service": "Aviseringar" + "mobile_notify_service": "Aviseringar", + "notif_click_url": "URL för aviseringstryck" }, "data_description": { "name": "Unikt namn för denna användarprofil.", "ha_user_id": "Valfritt: Länka den här profilen till en Home Assistant-användare. Om kioskläget är inaktiverat är anspråk och inlösen av delade enheter beroende av den här länken.", "dashboard_language": "Språk som används för instrumentpanelsinnehåll och aviseringar.", - "mobile_notify_service": "Välj aviseringstjänst eller lämna tomt för att inaktivera aviseringar." + "mobile_notify_service": "Välj aviseringstjänst eller lämna tomt för att inaktivera aviseringar.", + "notif_click_url": "Valfri URL som ska öppnas när avisering trycks på. Lämna tomt för standardbeteende." } }, "section_system_usage": { @@ -110,12 +112,18 @@ "data": { "can_approve": "Kan godkänna", "can_manage": "Kan hantera", - "associated_user_ids": "Associerade användare" + "associated_user_ids": "Associerade användare", + "notif_approve_click_url": "Tryck på URL för godkännandemeddelande", + "chores_paused": "Pausa sysslor", + "chores_paused_until": "Pausad tills" }, "data_description": { "can_approve": "Tillåter godkännande- och avvisningsåtgärder.", "can_manage": "Tillåter hanteringsåtgärder som kräver utökade behörigheter.", - "associated_user_ids": "Användare som denna godkännare/administratör övervakar för godkännandeåtgärder." + "associated_user_ids": "Användare som denna godkännare/administratör övervakar för godkännandeåtgärder.", + "notif_approve_click_url": "Valfri URL för godkännandemeddelanden. Åsidosätter den allmänna URL:en för aviseringar vid godkännande av sysslor eller belöningar.", + "chores_paused": "Pausar sysslobearbetningen. Ingen statistik för försenade eller missade uppgifter ackumuleras.", + "chores_paused_until": "Valfritt återlämningsdatum. Om det är inställt återupptas sysslor automatiskt vid midnatt efter detta datum." } } } @@ -483,6 +491,8 @@ "invalid_reward_count": "Ogiltigt antal belöningar", "invalid_reward_name": "Ogiltigt belöningsnamn", "invalid_reward_cost": "Belöningskostnaden måste vara noll eller större med upp till två decimaler", + "invalid_reward_assigned_users": "En eller flera tilldelade användare är ogiltiga", + "mixed_reward_assignment_sentinel": "Kan inte blanda \"alla användare\" med specifika användare", "invalid_bonus": "Ogiltig bonus", "invalid_bonus_count": "Ogiltigt bonusantal", "invalid_bonus_name": "Ogiltigt bonusnamn", @@ -569,13 +579,15 @@ "name": "Namn", "ha_user_id": "Hemassistent-användare", "dashboard_language": "Språk", - "mobile_notify_service": "Aviseringar" + "mobile_notify_service": "Aviseringar", + "notif_click_url": "URL för aviseringstryck" }, "data_description": { "name": "Unikt namn för denna användarprofil.", "ha_user_id": "Valfritt: Länka den här profilen till en Home Assistant-användare. Om kioskläget är inaktiverat är anspråk och inlösen av delade enheter beroende av den här länken.", "dashboard_language": "Språk som används för instrumentpanelsinnehåll och aviseringar.", - "mobile_notify_service": "Välj aviseringstjänst eller lämna tomt för att inaktivera aviseringar." + "mobile_notify_service": "Välj aviseringstjänst eller lämna tomt för att inaktivera aviseringar.", + "notif_click_url": "Valfri URL som ska öppnas när avisering trycks på. Lämna tomt för standardbeteende." } }, "section_system_usage": { @@ -598,12 +610,18 @@ "data": { "can_approve": "Kan godkänna", "can_manage": "Kan hantera", - "associated_user_ids": "Associerade användare" + "associated_user_ids": "Associerade användare", + "notif_approve_click_url": "Tryck på URL för godkännandemeddelande", + "chores_paused": "Pausa sysslor", + "chores_paused_until": "Pausad tills" }, "data_description": { "can_approve": "Tillåter godkännande- och avvisningsåtgärder.", "can_manage": "Tillåter hanteringsåtgärder som kräver utökade behörigheter.", - "associated_user_ids": "Användare som denna godkännare/administratör övervakar för godkännandeåtgärder." + "associated_user_ids": "Användare som denna godkännare/administratör övervakar för godkännandeåtgärder.", + "notif_approve_click_url": "Valfri URL för godkännandemeddelanden. Åsidosätter den allmänna URL:en för aviseringar vid godkännande av sysslor eller belöningar.", + "chores_paused": "Pausar sysslobearbetningen. Ingen statistik för försenade eller missade uppgifter ackumuleras.", + "chores_paused_until": "Valfritt återlämningsdatum. Om det är inställt återupptas sysslor automatiskt vid midnatt efter detta datum." } } } @@ -926,7 +944,8 @@ "cost": "Belöningskostnad", "description": "Beskrivning (valfritt)", "reward_labels": "Belöningsetiketter", - "icon": "Ikon (mdi:xxx)" + "icon": "Ikon (mdi:xxx)", + "assigned_user_ids": "Tilldelad till" } }, "add_penalty": { @@ -1000,13 +1019,15 @@ "name": "Namn", "ha_user_id": "Hemassistent-användare", "dashboard_language": "Språk", - "mobile_notify_service": "Aviseringar" + "mobile_notify_service": "Aviseringar", + "notif_click_url": "URL för aviseringstryck" }, "data_description": { "name": "Unikt namn för denna användarprofil.", "ha_user_id": "Valfritt: Länka den här profilen till en Home Assistant-användare. Om kioskläget är inaktiverat är anspråk och inlösen av delade enheter beroende av den här länken.", "dashboard_language": "Språk som används för instrumentpanelsinnehåll och aviseringar.", - "mobile_notify_service": "Välj aviseringstjänst eller lämna tomt för att inaktivera aviseringar." + "mobile_notify_service": "Välj aviseringstjänst eller lämna tomt för att inaktivera aviseringar.", + "notif_click_url": "Valfri URL som ska öppnas när avisering trycks på. Lämna tomt för standardbeteende." } }, "section_system_usage": { @@ -1029,12 +1050,18 @@ "data": { "can_approve": "Kan godkänna", "can_manage": "Kan hantera", - "associated_user_ids": "Associerade användare" + "associated_user_ids": "Associerade användare", + "notif_approve_click_url": "Tryck på URL för godkännandemeddelande", + "chores_paused": "Pausa sysslor", + "chores_paused_until": "Pausad tills" }, "data_description": { "can_approve": "Tillåter godkännande- och avvisningsåtgärder.", "can_manage": "Tillåter hanteringsåtgärder som kräver utökade behörigheter.", - "associated_user_ids": "Användare som denna godkännare/administratör övervakar för godkännandeåtgärder." + "associated_user_ids": "Användare som denna godkännare/administratör övervakar för godkännandeåtgärder.", + "notif_approve_click_url": "Valfri URL för godkännandemeddelanden. Åsidosätter den allmänna URL:en för aviseringar vid godkännande av sysslor eller belöningar.", + "chores_paused": "Pausar sysslobearbetningen. Ingen statistik för försenade eller missade uppgifter ackumuleras.", + "chores_paused_until": "Valfritt återlämningsdatum. Om det är inställt återupptas sysslor automatiskt vid midnatt efter detta datum." } } } @@ -1385,7 +1412,8 @@ "cost": "Belöningskostnad", "description": "Beskrivning (valfritt)", "reward_labels": "Belöningsetiketter", - "icon": "Ikon (mdi:xxx)" + "icon": "Ikon (mdi:xxx)", + "assigned_user_ids": "Tilldelad till" } }, "edit_penalty": { @@ -1633,6 +1661,7 @@ "title": "Allmänna alternativ", "description": "Hantera allmänna inställningar för ChoreOps-integrationen.\n\n ℹ️ [Läs mer om allmänna alternativ]({documentation_url})", "data": { + "dashboard_points_precision": "Precision i instrumentpanelens poäng", "default_chore_points": "Standardpoäng per syssla", "points_adjust_values": "Värden på knappen för manuell punktjustering", "update_interval": "Uppdateringsintervall", @@ -1649,6 +1678,7 @@ "backup_action_selection": "Säkerhetskopieringsåtgärder" }, "data_description": { + "dashboard_points_precision": "Välj hur punkter visas på alla instrumentpaneler som stöds. Detta ändrar endast instrumentpanelens formatering och ändrar inte lagrade punktvärden eller beräkningar.", "default_chore_points": "Standardpoängvärde som används för nya sysslor när anpassade poäng inte anges.", "points_adjust_values": "Lista med värden för knapparna för manuell punktjustering. Varje värde separeras med '|'.", "update_interval": "Intervall i minuter för uppdatering av ChoreOps interna tillstånd.", @@ -1948,6 +1978,14 @@ "return_to_menu": "↩️ Återgå till huvudmenyn" } }, + "dashboard_points_precision": { + "options": { + "fixed_0": "Endast heltal", + "adaptive": "Adaptiv (visa decimaler endast vid behov)", + "fixed_1": "Alltid 1 decimal", + "fixed_2": "Alltid 2 decimaler" + } + }, "select_backup_to_delete": { "options": { "cancel": "↩️ Avbryt (återgå till säkerhetskopieringsmenyn)" @@ -2223,6 +2261,37 @@ } } }, + "pause_user_chores": { + "name": "Pausa användarens sysslor", + "description": "Pausa eller återuppta sysslobearbetning för en användare.", + "fields": { + "config_entry_id": { + "name": "Konfigurationspost-ID (valfritt)", + "description": "Använd detta om du har mer än en ChoreOps-inställning. Den riktar sig mot en specifik inställning.", + "example": "abc123def456" + }, + "config_entry_title": { + "name": "Konfigurationspostnamn (valfritt)", + "description": "Använd detta om du har fler än en ChoreOps-konfiguration och de har unika namn. Om namnen upprepas, använd Config Entry ID.", + "example": "Familjesysslor" + }, + "user_name": { + "name": "Användarnamn", + "description": "Namn på användaren vars sysslor ska pausas eller återupptas.", + "example": "Sara" + }, + "paused": { + "name": "Pausad", + "description": "Sant för att pausa sysslor, Falskt för att återuppta.", + "example": "sann" + }, + "paused_until": { + "name": "Pausad tills", + "description": "Valfritt återlämningsdatum. Om det är inställt återupptas sysslor automatiskt vid midnatt efter detta datum.", + "example": "2026-06-10T00:00:00+00:00" + } + } + }, "redeem_reward": { "name": "Lös in belöning", "description": "En godkännare löser in en belöning för en tilldelad person och drar av poäng.", @@ -2461,6 +2530,11 @@ "name": "Etiketter", "description": "Etiketter för gruppering av belöningar.", "example": "['helg', 'special']" + }, + "assigned_user_names": { + "name": "Tilldelad till", + "description": "Användarens visningsnamn har tilldelats denna belöning. Använd [\"*\"] för alla användare. Skicka en tom lista för att inte tilldela några användare.", + "example": "['Zoë', 'Max!']" } } }, @@ -2507,6 +2581,11 @@ "name": "Etiketter", "description": "Uppdaterade etiketter.", "example": "['premium', 'special']" + }, + "assigned_user_names": { + "name": "Tilldelad till", + "description": "Användarnamn som är tilldelade denna belöning. Använd [\"*\"] för alla användare. Skicka en tom lista för att ta bort alla tilldelade användare. Utelämna att lämna nuvarande tilldelningar oförändrade.", + "example": "['Zoë', 'Max!']" } } }, @@ -2557,7 +2636,7 @@ }, "assigned_user_names": { "name": "Tilldelad till", - "description": "Lista över namn på tilldelade att tilldela denna syssla till.", + "description": "Lista över tilldelade personer att tilldela denna syssla till. Använd [\"*\"] för alla tilldelade användare. Skicka en tom lista för att skapa utan tilldelade personer.", "example": "['Emma', 'Jack']" }, "points": { @@ -2663,7 +2742,7 @@ }, "assigned_user_names": { "name": "Tilldelad till", - "description": "Ny lista med namn på tilldelade att tilldela denna syssla till.", + "description": "Ny lista med namn på tilldelade att tilldela denna syssla till. Använd [\"*\"] för alla tilldelade användare. Skicka en tom lista för att ta bort alla tilldelade användare. Utelämna att lämna nuvarande tilldelningar oförändrade.", "example": "['Emma', 'Jack']" }, "points": { @@ -2735,6 +2814,11 @@ "name": "Förskjutning av förfallna påminnelser", "description": "Ny förskjutning för förfallodatum för påminnelse. Tid före förfallodatum för att skicka påminnelsemeddelande. Format: '30m', '1h', '1d 6h 30m', etc. Använd '0' för att inaktivera.", "example": "30m" + }, + "assignment_action": { + "name": "Tilldelningsåtgärd", + "description": "Hur man hanterar listan assigned_user_names. 'replace' ställer in listan direkt (standard, bakåtkompatibel). 'add' lägger till de listade användarna till befintliga tilldelade. 'remove' tar bort de listade användarna från befintliga tilldelade.", + "example": "tillägga" } } }, @@ -3096,6 +3180,11 @@ "name": "Hoppa över icke-återkommande sysslor", "description": "Aktivera detta för att lämna engångssysslor oförändrade istället för att flytta deras förfallodatum till gränsen.", "example": "falsk" + }, + "allow_long_recurrences": { + "name": "Tillåt långa upprepningar", + "description": "Tillåt omplanering av månatliga, kvartalsvisa, årliga och andra långtidsintervall. Standardvärdet är falskt för att förhindra oavsiktliga stora hopp.", + "example": "sann" } } }, @@ -3179,7 +3268,8 @@ "completed_by_other": "Slutförd av Annan", "waiting": "Väntar (förfallofönstret är inte öppet)", "not_my_turn": "Inte min tur (rotation)", - "missed": "Missad (Låst)" + "missed": "Missad (Låst)", + "paused": "Pausad" }, "state_attributes": { "purpose": { @@ -3426,7 +3516,8 @@ "blocked_pending_claim": "Väntande anspråk", "blocked_waiting_window": "Väntar på förfallofönstret", "blocked_not_my_turn": "Inte din tur", - "blocked_missed_locked": "Missad och låst" + "blocked_missed_locked": "Missad och låst", + "blocked_paused": "Sysslor är pausade för den här användaren" } }, "turn_user_name": { @@ -4740,9 +4831,15 @@ "core_sensors": { "name": "Kärnsensorer" }, + "dashboard_config": { + "name": "Instrumentpanelskonfiguration" + }, "dashboard_helpers": { "name": "Instrumentpanelshjälpare" }, + "shard_runtime": { + "name": "Körtid för sysslolista" + }, "chores_by_label": { "name": "Sysslor efter etikett" }, @@ -4753,6 +4850,29 @@ "name": "Språk" } } + }, + "assignee_dashboard_chore_list_helper_sensor": { + "name": "Lista över sysslor i UI-instrumentpanelen {shard_index}", + "state_attributes": { + "purpose": { + "name": "Ändamål", + "state": { + "purpose_dashboard_chore_shard_helper": "Tillhandahåller en lista över sysslor för visning på instrumentpanelen när en användares fullständiga sysslor är för lång för huvudhjälparen." + } + }, + "chores": { + "name": "Sysslor" + }, + "shard_index": { + "name": "Nummer på sysslolista" + }, + "shard_count": { + "name": "Totalt antal sysslor" + }, + "helper_contract_version": { + "name": "Hjälpkontraktsversion" + } + } } }, "select": { @@ -5314,6 +5434,9 @@ }, "notif_message_chore_missed": { "message": "{assignee_name} missade sysslan: {chore_name}" + }, + "chore_paused": { + "message": "Bearbetningen av sysslor är för närvarande pausad för den här användaren." } } } diff --git a/custom_components/choreops/translations_custom/ca_notifications.json b/custom_components/choreops/translations_custom/ca_notifications.json index 171e6fa..3ec079b 100644 --- a/custom_components/choreops/translations_custom/ca_notifications.json +++ b/custom_components/choreops/translations_custom/ca_notifications.json @@ -4,7 +4,7 @@ "_comment_assignee_footer": "══════════════════════════════════════════════════════════════", "chore_approved_assignee": { "title": "🎉 Tasques aprovades!", - "message": "{chore_name} aprovat! Has guanyat {points} punts" + "message": "{chore_name} aprovat! Has guanyat {points} {points_label}" }, "chore_disapproved_assignee": { "title": "↩️ Tasca retornada", @@ -12,11 +12,11 @@ }, "chore_overdue_assignee": { "title": "⏰ Tasca pendent", - "message": "{chore_name} està pendent! Completa-ho ara per guanyar {points} punts" + "message": "{chore_name} està pendent! Completa-ho ara per guanyar {points} {points_label}" }, "chore_overdue_steal_available": { "title": "⚡ Alerta de tasques domèstiques", - "message": "{chore_name} està endarrerit i disponible per robar! Completa-ho primer per guanyar {points} punts" + "message": "{chore_name} està endarrerit i disponible per robar! Completa-ho primer per guanyar {points} {points_label}" }, "chore_missed_assignee": { "title": "😔 Tasca caducada", @@ -24,11 +24,11 @@ }, "chore_due_reminder_assignee": { "title": "⏰ Recordatori de tasques domèstiques", - "message": "{chore_name} s'ha de lliurar en {minutes} minuts! Val {points} punts" + "message": "{chore_name} es venç en {minutes} minuts! Val {points} {points_label}" }, "chore_due_window_assignee": { "title": "🎯 Tasca pendent", - "message": "{chore_name} ja ha de ser entregat! Completa-ho en {hours} hora(es) per guanyar {points} punts" + "message": "{chore_name} ja ha de ser! Completa-ho en {hours} hora(es) per guanyar {points} {points_label}" }, "reward_approved_assignee": { "title": "🎉 Recompensa aprovada!", @@ -52,15 +52,15 @@ }, "penalty_applied_assignee": { "title": "⚠️ Penalització aplicada", - "message": "{penalty_name}: S'han deduït {points} punts. Tornem a la normalitat!" + "message": "{penalty_name}: {points} {points_label} deduït. Tornem al bon camí!" }, "bonus_applied_assignee": { "title": "⭐ Bonificació aplicada!", - "message": "{bonus_name}: Has guanyat {points} punts extra! Bona feina." + "message": "{bonus_name}: Has guanyat la {points} de bonificació {points_label}! Bona feina." }, "multiplier_changed_assignee": { "title": "⚖️ Multiplicador actualitzat", - "message": "El multiplicador de punts ha canviat de {old_multiplier}x a {new_multiplier}x" + "message": "El multiplicador {points_label} ha canviat de {old_multiplier}x a {new_multiplier}x" }, "_comment_approver_section": "══════════════════════════════════════════════════════════════", "_comment_approver_desc": "NOTIFICACIONS DE L'APROVATOR: Informatives, en tercera persona, accionables. Format: '{assignee_name}: Acció'. NO hi ha el prefix 'ChoreOps:'.", @@ -79,11 +79,11 @@ }, "pending_chores_approver": { "title": "📋 {assignee_name}: {count} Pendent", - "message": "{count} tasques pendents de revisió. Últimes: {latest_chore} (+{points} pts)" + "message": "{count} tasques pendents de revisió. Últimes: {latest_chore} (+{points} {points_label})" }, "reward_claimed_approver": { "title": "🎁 {assignee_name}: Sol·licitud de recompensa", - "message": "{assignee_name} ha sol·licitat {reward_name} per a {points} punts" + "message": "{assignee_name} ha sol·licitat {reward_name} per a {points} {points_label}" }, "reward_reminder_approver": { "title": "⏰ {assignee_name}: Recompensa pendent", @@ -103,7 +103,7 @@ }, "multiplier_changed_approver": { "title": "⚖️ {assignee_name}: Multiplicador actualitzat", - "message": "El multiplicador de punts de {assignee_name}ha canviat de {old_multiplier}x a {new_multiplier}x" + "message": "El multiplicador {assignee_name}de {points_label} ha canviat de {old_multiplier}x a {new_multiplier}x" }, "_comment_system_section": "══════════════════════════════════════════════════════════════", "_comment_system_desc": "NOTIFICACIONS DEL SISTEMA/ADMINISTRADOR: Operacions de gestió de dades", diff --git a/custom_components/choreops/translations_custom/da_notifications.json b/custom_components/choreops/translations_custom/da_notifications.json index d63740d..b93256e 100644 --- a/custom_components/choreops/translations_custom/da_notifications.json +++ b/custom_components/choreops/translations_custom/da_notifications.json @@ -4,7 +4,7 @@ "_comment_assignee_footer": "═════════════════════════════════════════════════════════════════════════════════", "chore_approved_assignee": { "title": "🎉 Godkendt pligt!", - "message": "{chore_name} godkendt! Du har optjent {points} point" + "message": "{chore_name} godkendt! Du har opnået {points} {points_label}" }, "chore_disapproved_assignee": { "title": "↩️ Opgave returneret", @@ -12,11 +12,11 @@ }, "chore_overdue_assignee": { "title": "⏰ Forfalden pligt", - "message": "{chore_name} er for sent! Færdiggør den nu for at optjene {points} point" + "message": "{chore_name} er for sent! Færdiggør den nu for at optjene {points} {points_label}" }, "chore_overdue_steal_available": { "title": "⚡ Huslige pligter", - "message": "{chore_name} er for sent og kan stjæles! Fuldfør den først for at optjene {points} point" + "message": "{chore_name} er for sent og kan stjæles! Fuldfør den først for at optjene {points} {points_label}" }, "chore_missed_assignee": { "title": "😔 Opgave udløbet", @@ -24,11 +24,11 @@ }, "chore_due_reminder_assignee": { "title": "⏰ Påmindelse om huslige pligter", - "message": "{chore_name} forfalder om {minutes} minutter! Værd {points} point" + "message": "{chore_name} forfalder om {minutes} minutter! Værdien er {points} {points_label}" }, "chore_due_window_assignee": { "title": "🎯 Huslige pligter skal udføres nu", - "message": "{chore_name} skal nu afleveres! Færdiggør inden for {hours} time(r) for at optjene {points} point" + "message": "{chore_name} forfalder nu! Færdiggør inden for {hours} time(r) for at optjene {points} {points_label}" }, "reward_approved_assignee": { "title": "🎉 Belønning godkendt!", @@ -52,15 +52,15 @@ }, "penalty_applied_assignee": { "title": "⚠️ Straf pålagt", - "message": "{penalty_name}: {points} point fratrukket. Lad os komme tilbage på sporet!" + "message": "{penalty_name}: {points} {points_label} fratrukket. Lad os komme tilbage på sporet!" }, "bonus_applied_assignee": { "title": "⭐ Bonus anvendt!", - "message": "{bonus_name}: Du har optjent {points} bonuspoint! Godt gået" + "message": "{bonus_name}: Du har optjent {points} bonus {points_label}! Godt gået" }, "multiplier_changed_assignee": { "title": "⚖️ Multiplikator opdateret", - "message": "Din pointmultiplikator er ændret fra {old_multiplier}x til {new_multiplier}x" + "message": "Din {points_label} multiplikator er ændret fra {old_multiplier}x til {new_multiplier}x" }, "_comment_approver_section": "═════════════════════════════════════════════════════════════════════════════════", "_comment_approver_desc": "GODKENDELSESMEDDELELSER: Informative, tredjepersons, handlingsrettede. Format: '{assignee_name}: Handling'. INGEN 'ChoreOps:' præfiks.", @@ -79,11 +79,11 @@ }, "pending_chores_approver": { "title": "📋 {assignee_name}: {count} Afventer", - "message": "{count} pligter afventer gennemgang. Seneste: {latest_chore} (+{points} point)" + "message": "{count} pligter afventer gennemgang. Seneste: {latest_chore} (+{points} {points_label})" }, "reward_claimed_approver": { "title": "🎁 {assignee_name}: Belønningsanmodning", - "message": "{assignee_name} anmodede om {reward_name} for {points} point" + "message": "{assignee_name} anmodede om {reward_name} for {points} {points_label}" }, "reward_reminder_approver": { "title": "⏰ {assignee_name}: Belønning afventer", @@ -103,7 +103,7 @@ }, "multiplier_changed_approver": { "title": "⚖️ {assignee_name}: Multiplikator opdateret", - "message": "{assignee_name}s pointmultiplikator er ændret fra {old_multiplier}x til {new_multiplier}x" + "message": "{assignee_name}s {points_label} multiplikator ændret fra {old_multiplier}x til {new_multiplier}x" }, "_comment_system_section": "═════════════════════════════════════════════════════════════════════════════════", "_comment_system_desc": "SYSTEM-/ADMIN-MEDDELELSER: Datahåndteringshandlinger", diff --git a/custom_components/choreops/translations_custom/de_notifications.json b/custom_components/choreops/translations_custom/de_notifications.json index 978e1ea..405d9e7 100644 --- a/custom_components/choreops/translations_custom/de_notifications.json +++ b/custom_components/choreops/translations_custom/de_notifications.json @@ -4,7 +4,7 @@ "_comment_assignee_footer": "══════════════════════════════════════════════════════════════════", "chore_approved_assignee": { "title": "🎉 Aufgabe genehmigt!", - "message": "{chore_name} genehmigt! Du hast {points} Punkte verdient" + "message": "{chore_name} genehmigt! Du hast {points} {points_label} erhalten" }, "chore_disapproved_assignee": { "title": "↩️ Aufgabe zurückgegeben", @@ -12,11 +12,11 @@ }, "chore_overdue_assignee": { "title": "⏰ Aufgabe überfällig", - "message": "{chore_name} ist überfällig! Schließe sie jetzt ab, um {points} Punkte zu erhalten" + "message": "{chore_name} ist überfällig! Schließe es jetzt ab, um {points} {points_label} zu erhalten." }, "chore_overdue_steal_available": { "title": "⚡ Aufgabenalarm", - "message": "{chore_name} ist überfällig und kann gestohlen werden! Schließe sie als Erste* ab, um {points} Punkte zu erhalten" + "message": "{chore_name} ist überfällig und kann gestohlen werden! Schließe es zuerst ab, um {points} {points_label} zu erhalten." }, "chore_missed_assignee": { "title": "😔 Aufgabe abgelaufen", @@ -24,11 +24,11 @@ }, "chore_due_reminder_assignee": { "title": "⏰ Erinnerung an die Aufgabe", - "message": "{chore_name} ist in {minutes} Minuten fällig! Wert: {points} Punkte" + "message": "{chore_name} ist in {minutes} Minuten fällig! Wert {points} {points_label}" }, "chore_due_window_assignee": { "title": "🎯 Aufgabe jetzt fällig", - "message": "{chore_name} ist jetzt fällig! Schließe sie innerhalb von {hours} Stunde(n) ab, um {points} Punkte zu erhalten" + "message": "{chore_name} ist jetzt fällig! Schließe es innerhalb von {hours} Stunden ab, um {points} {points_label} zu erhalten." }, "reward_approved_assignee": { "title": "🎉 Belohnung genehmigt!", @@ -52,15 +52,15 @@ }, "penalty_applied_assignee": { "title": "⚠️ Strafe verhängt", - "message": "{penalty_name}: {points} Punkte abgezogen. Lass uns wieder auf Kurs kommen!" + "message": "{penalty_name}: {points} {points_label} abgezogen. Zurück zum Thema!" }, "bonus_applied_assignee": { "title": "⭐ Bonus angewendet!", - "message": "{bonus_name}: Du hast {points} Bonuspunkte verdient! Super gemacht" + "message": "{bonus_name}: Du hast einen Bonus von {points} {points_label}erhalten! Super gemacht!" }, "multiplier_changed_assignee": { "title": "⚖️ Multiplikator aktualisiert", - "message": "Dein Punktemultiplikator hat sich von {old_multiplier}x auf {new_multiplier}x geändert" + "message": "Ihr {points_label} Multiplikator hat sich von {old_multiplier}x auf {new_multiplier}x geändert." }, "_comment_approver_section": "══════════════════════════════════════════════════════════════════", "_comment_approver_desc": "BENACHRICHTIGUNGEN FÜR GENEHMIGER: Informativ, in der dritten Person, handlungsauffordernd. Format: '{assignee_name}: Aktion'. Ohne das Präfix 'ChoreOps:'.", @@ -79,11 +79,11 @@ }, "pending_chores_approver": { "title": "📋 {assignee_name}: {count} Ausstehend", - "message": "{count} Aufgaben, die noch überprüft werden müssen. Aktuell: {latest_chore} (+{points} Punkte)" + "message": "{count} Aufgaben, die noch überprüft werden müssen. Aktuell: {latest_chore} (+{points} {points_label})" }, "reward_claimed_approver": { "title": "🎁 {assignee_name}: Belohnungsanfrage", - "message": "{assignee_name} hat {reward_name} für {points} Punkte angefordert" + "message": "{assignee_name} hat {reward_name} für {points} {points_label} angefordert." }, "reward_reminder_approver": { "title": "⏰ {assignee_name}: Belohnung ausstehend", @@ -103,7 +103,7 @@ }, "multiplier_changed_approver": { "title": "⚖️ {assignee_name}: Multiplikator aktualisiert", - "message": "Der Punktemultiplikator von {assignee_name} wurde von {old_multiplier}x auf {new_multiplier}x geändert" + "message": "Der Multiplikator von {assignee_name}für {points_label} wurde von {old_multiplier}x auf {new_multiplier}x geändert." }, "_comment_system_section": "══════════════════════════════════════════════════════════════════", "_comment_system_desc": "SYSTEM-/ADMINISTRATOR-BENACHRICHTIGUNGEN: Datenverwaltungsvorgänge", diff --git a/custom_components/choreops/translations_custom/es_notifications.json b/custom_components/choreops/translations_custom/es_notifications.json index 625fbf3..81704c7 100644 --- a/custom_components/choreops/translations_custom/es_notifications.json +++ b/custom_components/choreops/translations_custom/es_notifications.json @@ -4,7 +4,7 @@ "_comment_assignee_footer": "══════════════════════════════════════════════════════════════════", "chore_approved_assignee": { "title": "¡Tarea aprobada!", - "message": "¡{chore_name} aprobado! Has ganado {points} puntos." + "message": "{chore_name} ¡Aprobado! Has ganado {points} {points_label}" }, "chore_disapproved_assignee": { "title": "↩️ Tarea devuelta", @@ -12,11 +12,11 @@ }, "chore_overdue_assignee": { "title": "⏰ Tarea atrasada", - "message": "¡{chore_name} está atrasado! Complétalo ahora para ganar {points} puntos." + "message": "{chore_name} ¡Está vencido! Complétalo ahora para ganar {points} {points_label}" }, "chore_overdue_steal_available": { "title": "⚡ Alerta de tareas", - "message": "¡{chore_name} está vencido y listo para robar! Complétalo primero para ganar {points} puntos." + "message": "{chore_name} está vencido y disponible para robar. Complétalo primero para ganar {points} {points_label}" }, "chore_missed_assignee": { "title": "😔 Tarea expirada", @@ -24,11 +24,11 @@ }, "chore_due_reminder_assignee": { "title": "⏰ Recordatorio de tareas", - "message": "¡{chore_name} se entrega en {minutes} minutos! Vale {points} puntos" + "message": "{chore_name} vence en {minutes} minutos. Vale {points} {points_label}" }, "chore_due_window_assignee": { "title": "🎯 Tarea pendiente", - "message": "¡{chore_name} ya está disponible! Complétalo en {hours} hora(s) para ganar {points} puntos." + "message": "{chore_name} ¡Ya vence! Complétalo en {hours} hora(s) para ganar {points} {points_label}" }, "reward_approved_assignee": { "title": "🎉 ¡Recompensa aprobada!", @@ -52,15 +52,15 @@ }, "penalty_applied_assignee": { "title": "⚠️ Sanción aplicada", - "message": "{penalty_name}: {points} puntos deducidos. ¡A por todas!" + "message": "{penalty_name}: {points} {points_label} deducido. ¡Volvamos al tema!" }, "bonus_applied_assignee": { "title": "⭐ ¡Bono aplicado!", - "message": "{bonus_name}: ¡Ganaste {points} puntos extra! ¡Buen trabajo!" + "message": "{bonus_name}: ¡Has ganado {points} bono {points_label}! ¡Buen trabajo!" }, "multiplier_changed_assignee": { "title": "⚖️ Multiplicador actualizado", - "message": "Tu multiplicador de puntos cambió de {old_multiplier}x a {new_multiplier}x" + "message": "Tu multiplicador {points_label} cambió de {old_multiplier}x a {new_multiplier}x" }, "_comment_approver_section": "══════════════════════════════════════════════════════════════════", "_comment_approver_desc": "NOTIFICACIONES DEL APROBADOR: Informativas, en tercera persona, con instrucciones. Formato: '{assignee_name}: Acción'. Sin prefijo 'ChoreOps:'.", @@ -79,11 +79,11 @@ }, "pending_chores_approver": { "title": "📋 {assignee_name}: {count} Pendiente", - "message": "{count} tareas pendientes de revisión. Últimas: {latest_chore} (+{points} pts)" + "message": "{count} tareas pendientes de revisión. Últimas: {latest_chore} (+{points} {points_label})" }, "reward_claimed_approver": { "title": "🎁 {assignee_name}: Solicitud de recompensa", - "message": "{assignee_name} solicitó {reward_name} por {points} puntos" + "message": "{assignee_name} solicitó {reward_name} para {points} {points_label}" }, "reward_reminder_approver": { "title": "⏰ {assignee_name}: Recompensa pendiente", @@ -103,7 +103,7 @@ }, "multiplier_changed_approver": { "title": "⚖️ {assignee_name}: Multiplicador actualizado", - "message": "El multiplicador de puntos de {assignee_name}cambió de {old_multiplier}x a {new_multiplier}x" + "message": "{assignee_name}'s {points_label} multiplier changed from {old_multiplier}x to {new_multiplier}x" }, "_comment_system_section": "══════════════════════════════════════════════════════════════════", "_comment_system_desc": "NOTIFICACIONES DE SISTEMA/ADMINISTRADOR: Operaciones de gestión de datos", diff --git a/custom_components/choreops/translations_custom/fi_notifications.json b/custom_components/choreops/translations_custom/fi_notifications.json index 778fa7b..7563ac7 100644 --- a/custom_components/choreops/translations_custom/fi_notifications.json +++ b/custom_components/choreops/translations_custom/fi_notifications.json @@ -4,7 +4,7 @@ "_comment_assignee_footer": "════════════════════════════════════════════════════════════════════════════════════════", "chore_approved_assignee": { "title": "🎉 Kotityöt hyväksytty!", - "message": "{chore_name} hyväksytty! Ansaitsit {points} pistettä" + "message": "{chore_name} hyväksytty! Ansaitsit {points} {points_label}" }, "chore_disapproved_assignee": { "title": "↩️ Kotityö palautettu", @@ -12,11 +12,11 @@ }, "chore_overdue_assignee": { "title": "⏰ Myöhässä oleva kotityö", - "message": "{chore_name} on myöhässä! Suorita se nyt ansaitaksesi {points} pistettä" + "message": "{chore_name} on myöhässä! Suorita se nyt ansaitaksesi {points} {points_label}" }, "chore_overdue_steal_available": { "title": "⚡ Kotiapuhälytys", - "message": "{chore_name} on myöhässä ja varastettavissa! Suorita se ensin ansaitaksesi {points} pistettä" + "message": "{chore_name} on myöhässä ja varastettavissa! Suorita se ensin ansaitaksesi {points} {points_label}" }, "chore_missed_assignee": { "title": "😔 Työtehtävä vanhentunut", @@ -24,11 +24,11 @@ }, "chore_due_reminder_assignee": { "title": "⏰ Kotitöiden muistutus", - "message": "{chore_name} erääntyy {minutes} minuutin kuluttua! Arvo {points} pistettä" + "message": "{chore_name} erääntyy {minutes} minuutin kuluttua! Arvo {points} {points_label}" }, "chore_due_window_assignee": { "title": "🎯 Kotityön eräpäivä", - "message": "{chore_name} erääntyy! Suorita {hours} tunnin sisällä ansaitaksesi {points} pistettä" + "message": "{chore_name} erääntyy! Suorita {hours} tunnin sisällä ansaitaksesi {points} {points_label}" }, "reward_approved_assignee": { "title": "🎉 Palkinto hyväksytty!", @@ -52,15 +52,15 @@ }, "penalty_applied_assignee": { "title": "⚠️ Rangaistus sovellettu", - "message": "{penalty_name}: {points} pistettä vähennetty. Palataanpa raiteille!" + "message": "{penalty_name}: {points} {points_label} vähennetty. Palataanpa raiteille!" }, "bonus_applied_assignee": { "title": "⭐ Bonus käytetty!", - "message": "{bonus_name}: Ansaitsit {points} bonuspistettä! Hienoa työtä!" + "message": "{bonus_name}: Ansaitsit {points} bonuksen {points_label}! Hienoa työtä!" }, "multiplier_changed_assignee": { "title": "⚖️ Kerroin päivitetty", - "message": "Pistekerroin muuttui arvosta {old_multiplier}x arvoon {new_multiplier}x" + "message": "{points_label} kertoimesi muuttui arvosta {old_multiplier}x arvoon {new_multiplier}x" }, "_comment_approver_section": "════════════════════════════════════════════════════════════════════════════════════════", "_comment_approver_desc": "HYVÄKSYJÄN ILMOITUKSET: Informatiiviset, kolmannen persoonan, toiminnalliset. Muoto: '{assignee_name}: Toiminta'. EI 'ChoreOps:'-etuliitettä.", @@ -79,11 +79,11 @@ }, "pending_chores_approver": { "title": "📋 {assignee_name}: {count} Odottaa", - "message": "{count} tehtävää odottaa arviointia. Viimeisimmät: {latest_chore} (+{points} pistettä)" + "message": "{count} tehtävää odottaa arviointia. Viimeisin: {latest_chore} (+{points} {points_label})" }, "reward_claimed_approver": { "title": "🎁 {assignee_name}: Palkintopyyntö", - "message": "{assignee_name} pyysi {reward_name} {points} pistettä" + "message": "{assignee_name} pyysi {reward_name} kohteelle {points} {points_label}" }, "reward_reminder_approver": { "title": "⏰ {assignee_name}: Palkintoa odotetaan", @@ -103,7 +103,7 @@ }, "multiplier_changed_approver": { "title": "⚖️ {assignee_name}: Kerroin päivitetty", - "message": "{assignee_name}:n pistekerroin muuttui arvosta {old_multiplier}x arvoon {new_multiplier}x" + "message": "{assignee_name}:n {points_label} kerroin muuttui arvosta {old_multiplier}x arvoon {new_multiplier}x" }, "_comment_system_section": "════════════════════════════════════════════════════════════════════════════════════════", "_comment_system_desc": "JÄRJESTELMÄN/JÄRJESTELMÄNVALVOJAN ILMOITUKSET: Tiedonhallintatoiminnot", diff --git a/custom_components/choreops/translations_custom/fr_notifications.json b/custom_components/choreops/translations_custom/fr_notifications.json index 18f99af..1555ef2 100644 --- a/custom_components/choreops/translations_custom/fr_notifications.json +++ b/custom_components/choreops/translations_custom/fr_notifications.json @@ -4,7 +4,7 @@ "_comment_assignee_footer": "══════════════════════════════════════════════════════════════", "chore_approved_assignee": { "title": "🎉 Tâches approuvées !", - "message": "{chore_name} approuvé! Vous avez gagné des points {points}" + "message": "{chore_name} approuvé ! Vous avez gagné {points} {points_label}" }, "chore_disapproved_assignee": { "title": "↩️ La tâche est revenue", @@ -12,11 +12,11 @@ }, "chore_overdue_assignee": { "title": "⏰ Tâche ménagère en retard", - "message": "{chore_name} est en retard ! Terminez-le maintenant pour gagner {points} points" + "message": "{chore_name} est en retard ! Terminez-le maintenant pour gagner {points} {points_label}" }, "chore_overdue_steal_available": { "title": "Alerte tâches", - "message": "{chore_name} est en retard et disponible pour être volé ! Terminez-le en premier pour gagner {points} points" + "message": "{chore_name} est en retard et disponible pour être volé ! Terminez-le d'abord pour gagner {points} {points_label}" }, "chore_missed_assignee": { "title": "😔 Tâche expirée", @@ -24,11 +24,11 @@ }, "chore_due_reminder_assignee": { "title": "⏰ Rappel des tâches ménagères", - "message": "{chore_name} doit être terminée avant {minutes} minutes ! Vaut {points} points" + "message": "{chore_name} est dû dans {minutes} minutes ! Valeur {points} {points_label}" }, "chore_due_window_assignee": { "title": "🎯 Tâches ménagères à faire maintenant", - "message": "{chore_name} est maintenant à faire ! Terminez-la dans un délai de {hours} heure(s) pour gagner {points} points" + "message": "{chore_name} est maintenant dû ! Terminez-le dans un délai de {hours} heure(s) pour gagner {points} {points_label}" }, "reward_approved_assignee": { "title": "🎉 Récompense approuvée !", @@ -52,15 +52,15 @@ }, "penalty_applied_assignee": { "title": "⚠️ Pénalité appliquée", - "message": "{penalty_name}: {points} points déduits. Reprenons le fil !" + "message": "{penalty_name}: {points} {points_label} déduit. Reprenons le fil !" }, "bonus_applied_assignee": { "title": "⭐ Bonus appliqué !", - "message": "{bonus_name}: Vous avez gagné {points} points bonus ! Bravo !" + "message": "{bonus_name}: Vous avez gagné {points} bonus {points_label}! Bravo !" }, "multiplier_changed_assignee": { "title": "⚖️ Multiplicateur mis à jour", - "message": "Votre multiplicateur de points est passé de {old_multiplier}x à {new_multiplier}x" + "message": "Votre multiplicateur {points_label} est passé de {old_multiplier}x à {new_multiplier}x" }, "_comment_approver_section": "══════════════════════════════════════════════════════════════", "_comment_approver_desc": "NOTIFICATIONS DES APPROUVEURS : Informatives, à la troisième personne, exploitables. Format : « {assignee_name} : Action ». Sans préfixe « ChoreOps : ».", @@ -79,11 +79,11 @@ }, "pending_chores_approver": { "title": "📋 {assignee_name}: {count} En attente", - "message": "{count} tâches en attente de révision. Dernière: {latest_chore} (+{points} pts)" + "message": "{count} chores awaiting review. Latest: {latest_chore} (+{points} {points_label})" }, "reward_claimed_approver": { "title": "🎁 {assignee_name}: Demande de récompense", - "message": "{assignee_name} a demandé {reward_name} pour {points} points" + "message": "{assignee_name} a demandé {reward_name} pour {points} {points_label}" }, "reward_reminder_approver": { "title": "⏰ {assignee_name}: Récompense en attente", @@ -103,7 +103,7 @@ }, "multiplier_changed_approver": { "title": "⚖️ {assignee_name}: Multiplicateur mis à jour", - "message": "Le multiplicateur de points de {assignee_name}est passé de {old_multiplier}x à {new_multiplier}x" + "message": "{assignee_name}'s {points_label} multiplier changed from {old_multiplier}x to {new_multiplier}x" }, "_comment_system_section": "══════════════════════════════════════════════════════════════", "_comment_system_desc": "NOTIFICATIONS SYSTÈME/ADMINISTRATEUR : Opérations de gestion des données", diff --git a/custom_components/choreops/translations_custom/it_notifications.json b/custom_components/choreops/translations_custom/it_notifications.json new file mode 100644 index 0000000..ee7354a --- /dev/null +++ b/custom_components/choreops/translations_custom/it_notifications.json @@ -0,0 +1,142 @@ +{ + "_comment_assignee_section": "══════════════════════════════════════════════════════════════════", + "_comment_assignee_desc": "NOTIFICHE AL CANDIDATO: Tono incoraggiante, in seconda persona e con elementi di gamification, con l'aggiunta di emoji. NESSUN prefisso 'ChoreOps:'.", + "_comment_assignee_footer": "══════════════════════════════════════════════════════════════════", + "chore_approved_assignee": { + "title": "🎉 Compito approvato!", + "message": "{chore_name} approvato! Hai guadagnato {points} {points_label}" + }, + "chore_disapproved_assignee": { + "title": "↩️ Compito restituito", + "message": "{chore_name} ha bisogno di ulteriori modifiche." + }, + "chore_overdue_assignee": { + "title": "⏰ Compito in sospeso", + "message": "{chore_name} è in ritardo! Completalo ora per ottenere {points} {points_label}" + }, + "chore_overdue_steal_available": { + "title": "⚡ Avviso di faccende domestiche", + "message": "{chore_name} è in ritardo ed è disponibile per essere rubato! Completalo prima per ottenere {points} {points_label}" + }, + "chore_missed_assignee": { + "title": "😔 Compito scaduto", + "message": "{chore_name} è scaduto senza essere completato." + }, + "chore_due_reminder_assignee": { + "title": "⏰ Promemoria per le faccende domestiche", + "message": "{chore_name} scade tra {minutes} minuti! Vale {points} {points_label}" + }, + "chore_due_window_assignee": { + "title": "🎯 Compito da svolgere ora", + "message": "{chore_name} è ora in scadenza! Completa entro {hours} ore per guadagnare {points} {points_label}" + }, + "reward_approved_assignee": { + "title": "🎉 Ricompensa approvata!", + "message": "{reward_name} approvato!" + }, + "reward_disapproved_assignee": { + "title": "💭 Richiesta di ricompensa restituita", + "message": "{reward_name} non è stato approvato questa volta." + }, + "badge_earned_assignee": { + "title": "🥇 Distintivo conquistato!", + "message": "Hai guadagnato il badge {badge_name}!" + }, + "achievement_earned_assignee": { + "title": "🏆 Obiettivo raggiunto!", + "message": "Hai meritato {achievement_name}! Continua così!" + }, + "challenge_completed_assignee": { + "title": "🏁 Sfida completata!", + "message": "Hai completato {challenge_name}! Continua così!" + }, + "penalty_applied_assignee": { + "title": "⚠️ Penalità applicata", + "message": "{penalty_name}: {points} {points_label} detratto. Torniamo in carreggiata!" + }, + "bonus_applied_assignee": { + "title": "⭐ Bonus applicato!", + "message": "{bonus_name}: Hai guadagnato {points} bonus {points_label}! Ottimo lavoro" + }, + "multiplier_changed_assignee": { + "title": "⚖️ Moltiplicatore aggiornato", + "message": "Il tuo moltiplicatore {points_label} è cambiato da {old_multiplier}x a {new_multiplier}x" + }, + "_comment_approver_section": "══════════════════════════════════════════════════════════════════", + "_comment_approver_desc": "NOTIFICHE DELL'APPROVATORE: Informative, in terza persona, attuabili. Formato: '{assignee_name}: Azione'. NESSUN prefisso 'ChoreOps:'.", + "_comment_approver_footer": "══════════════════════════════════════════════════════════════════", + "chore_claimed_approver": { + "title": "✋ {assignee_name}: Compito assegnato", + "message": "{assignee_name} rivendicato {chore_name}" + }, + "chore_reminder_approver": { + "title": "⏰ {assignee_name}: Approvazione necessaria", + "message": "Promemoria: {chore_name} richiesto da {assignee_name} è in attesa della tua revisione" + }, + "chore_overdue_approver": { + "title": "⚠️ {assignee_name}: Compito in sospeso", + "message": "Il compito {chore_name} di {assignee_name}è in ritardo (scadenza: {due_date})" + }, + "pending_chores_approver": { + "title": "📋 {assignee_name}: {count} In sospeso", + "message": "{count} incarichi in attesa di revisione. Ultimi: {latest_chore} (+{points} {points_label})" + }, + "reward_claimed_approver": { + "title": "🎁 {assignee_name}: Richiesta di ricompensa", + "message": "{assignee_name} ha richiesto {reward_name} per {points} {points_label}" + }, + "reward_reminder_approver": { + "title": "⏰ {assignee_name}: Ricompensa in sospeso", + "message": "Promemoria: {reward_name} richiesto da {assignee_name} è in attesa della tua approvazione" + }, + "badge_earned_approver": { + "title": "🥇 {assignee_name}: Distintivo guadagnato", + "message": "{assignee_name} ha ottenuto il badge {badge_name}!" + }, + "achievement_earned_approver": { + "title": "🏆 {assignee_name}: Obiettivo raggiunto", + "message": "{assignee_name} guadagnato {achievement_name}" + }, + "challenge_completed_approver": { + "title": "🏁 {assignee_name}: Sfida completata", + "message": "{assignee_name} completato {challenge_name}" + }, + "multiplier_changed_approver": { + "title": "⚖️ {assignee_name}: Moltiplicatore aggiornato", + "message": "{assignee_name}'s {points_label} multiplier changed from {old_multiplier}x to {new_multiplier}x" + }, + "_comment_system_section": "══════════════════════════════════════════════════════════════════", + "_comment_system_desc": "NOTIFICHE DI SISTEMA/AMMINISTRAZIONE: Operazioni di gestione dei dati", + "_comment_system_footer": "══════════════════════════════════════════════════════════════════", + "data_reset": { + "title": "🔄 ChoreOps: Ripristino dati", + "message": "I dati di sistema sono stati ripristinati" + }, + "data_reset_global": { + "title": "🔄 ChoreOps: Ripristino completo", + "message": "Tutti i dati di sistema sono stati ripristinati ai valori predefiniti." + }, + "data_reset_assignee": { + "title": "🔄 ChoreOps: Reimposta l'assegnatario", + "message": "Ripristino dei dati per {assignee_name}" + }, + "data_reset_item_type": { + "title": "🔄 ChoreOps: {item_type} Reimposta", + "message": "Tutti i dati {item_type} sono stati reimpostati" + }, + "data_reset_item": { + "title": "🔄 ChoreOps: Ripristino oggetto", + "message": "{item_type} '{item_name}' è stato ripristinato" + }, + "_comment_actions_section": "══════════════════════════════════════════════════════════════════", + "_comment_actions_desc": "PULSANTI DI AZIONE PER LE NOTIFICHE: Linguaggio più delicato e incoraggiante", + "_comment_actions_footer": "══════════════════════════════════════════════════════════════════", + "actions": { + "approve": "✅ Approva", + "claim": "✋ Ce l'ho fatta!", + "complete": "✅ Completo", + "disapprove": "↩️ Non approvare", + "remind_30": "⏰ Ricordamelo tra 30 minuti", + "skip": "⏭️ Salta" + } +} diff --git a/custom_components/choreops/translations_custom/it_report.json b/custom_components/choreops/translations_custom/it_report.json new file mode 100644 index 0000000..49c9288 --- /dev/null +++ b/custom_components/choreops/translations_custom/it_report.json @@ -0,0 +1,40 @@ +{ + "title_default": "🌈 I momenti salienti della settimana di ChoreOps", + "intro": "Ehi {assignee_heading}! Ecco cosa hai realizzato in questo periodo:", + "section_big_picture": "## ✨ Quadro generale", + "section_weekly_summary": "## 📊 Riepilogo settimanale", + "section_highlights": "## 🌟 Momenti salienti", + "section_daily_activity": "## 📅 Attività quotidiana", + "range_label": "Allineare", + "range_short": "{start_date} → {end_date}", + "total_points_earned": "Punti totali guadagnati", + "total_points_spent": "Punti totali spesi", + "net_points_change": "variazione dei punti netti", + "total_activities": "Attività totali", + "completed_chores_week": "Ho completato le faccende domestiche questa settimana.", + "avg_points_per_day": "Punti medi al giorno", + "avg_chores_per_day": "Media delle faccende domestiche al giorno", + "badges_earned": "🏅 Distintivi guadagnati", + "badges_earned_none": "🏅 Distintivi ottenuti: nessuno in questo periodo", + "bonus_points": "✨ Punti bonus", + "rewards_highlight": "🎁 Premi", + "daily_ledger": "Dettagli del registro contabile", + "best_day": "🏆 Giorno migliore: {date} (punti netti {net})", + "no_activity": "Nessuna attività rilevata per l'intervallo selezionato.", + "day_points_earned": "🌟 Punti guadagnati", + "day_points_spent": "🎁 Punti spesi", + "day_net_change": "📊 Variazione netta", + "day_activities": "✅ Attività", + "footer": "Ottimo lavoro questa settimana, continuate così! 🎉", + "automation_title": "# Rapporto attività ChoreOps", + "automation_summary": "## Riepilogo", + "automation_daily": "## Quotidiano", + "automation_no_activity": "- nessuna attività", + "automation_assignees": "assegnatari", + "automation_range_start": "inizio_intervallo", + "automation_range_end": "fine intervallo", + "automation_total_earned": "guadagno totale", + "automation_total_spent": "spesa_totale", + "automation_net": "netto", + "automation_transactions": "transazioni" +} diff --git a/custom_components/choreops/translations_custom/nb_notifications.json b/custom_components/choreops/translations_custom/nb_notifications.json index 6477b7f..3559541 100644 --- a/custom_components/choreops/translations_custom/nb_notifications.json +++ b/custom_components/choreops/translations_custom/nb_notifications.json @@ -3,32 +3,32 @@ "_comment_assignee_desc": "VARSLER TIL TILORDNERE: Spillbasert, andrepersons, oppmuntrende tone med emojier. INGEN «ChoreOps:»-prefiks.", "_comment_assignee_footer": "═════════════════════════════════════════════════════════════════════════════════════", "chore_approved_assignee": { - "title": "🎉 Godkjent husarbeid!", - "message": "{chore_name} godkjent! Du har tjent {points} poeng" + "title": "🎉 Godkjent gjøremål!", + "message": "{chore_name} godkjent! Du har oppnådd {points} {points_label}" }, "chore_disapproved_assignee": { - "title": "↩️ Gjøremål returnert", + "title": "↩️ Gjøremål er ikke godkjent", "message": "{chore_name} trenger mer arbeid." }, "chore_overdue_assignee": { - "title": "⏰ Forfalt husarbeid", - "message": "{chore_name} er for sent! Fullfør nå for å tjene {points} poeng" + "title": "⏰ Forfalt gjøremål", + "message": "{chore_name} er for sent ute! Fullfør nå for å tjene {points} {points_label}" }, "chore_overdue_steal_available": { "title": "⚡ Varsel om husarbeid", - "message": "{chore_name} er for sent ute og kan stjeles! Fullfør først for å tjene {points} poeng" + "message": "{chore_name} er for sent ute og tilgjengelig for å stjele! Fullfør den først for å tjene {points} {points_label}" }, "chore_missed_assignee": { "title": "😔 Gjøremål utløpt", "message": "{chore_name} utløp uten fullføring." }, "chore_due_reminder_assignee": { - "title": "⏰ Påminnelse om husarbeid", - "message": "{chore_name} forfaller om {minutes} minutter! Verdt {points} poeng" + "title": "⏰ Påminnelse om gjøremål", + "message": "{chore_name} forfaller om {minutes} minutter! Verdt {points} {points_label}" }, "chore_due_window_assignee": { "title": "🎯 Gjøremål forfaller nå", - "message": "{chore_name} forfaller nå! Fullfør innen {hours} time(r) for å tjene {points} poeng" + "message": "{chore_name} forfaller nå! Fullfør innen {hours} time(r) for å tjene {points} {points_label}" }, "reward_approved_assignee": { "title": "🎉 Belønning godkjent!", @@ -52,15 +52,15 @@ }, "penalty_applied_assignee": { "title": "⚠️ Straff ilagt", - "message": "{penalty_name}: {points} poeng trukket. La oss komme tilbake på sporet!" + "message": "{penalty_name}: {points} {points_label} trukket fra. La oss komme tilbake på sporet!" }, "bonus_applied_assignee": { "title": "⭐ Bonus benyttet!", - "message": "{bonus_name}: Du har tjent {points} bonuspoeng! Bra jobbet" + "message": "{bonus_name}: Du har tjent {points} bonus {points_label}! Bra jobbet" }, "multiplier_changed_assignee": { "title": "⚖️ Multiplikator oppdatert", - "message": "Poengmultiplikatoren din ble endret fra {old_multiplier}x til {new_multiplier}x" + "message": "Multiplikatoren din {points_label} er endret fra {old_multiplier}x til {new_multiplier}x" }, "_comment_approver_section": "═════════════════════════════════════════════════════════════════════════════════════", "_comment_approver_desc": "GODKJENNERVARSLER: Informativ, tredjeperson, handlingsrettet. Format: '{assignee_name}: Handling'. INGEN 'ChoreOps:' prefiks.", @@ -79,11 +79,11 @@ }, "pending_chores_approver": { "title": "📋 {assignee_name}: {count} Venter", - "message": "{count} gjøremål venter på gjennomgang. Siste: {latest_chore} (+{points} poeng)" + "message": "{count} gjøremål venter på gjennomgang. Siste: {latest_chore} (+{points} {points_label})" }, "reward_claimed_approver": { "title": "🎁 {assignee_name}: Belønningsforespørsel", - "message": "{assignee_name} ba om {reward_name} for {points} poeng" + "message": "{assignee_name} ba om {reward_name} for {points} {points_label}" }, "reward_reminder_approver": { "title": "⏰ {assignee_name}: Belønning venter", @@ -103,7 +103,7 @@ }, "multiplier_changed_approver": { "title": "⚖️ {assignee_name}: Multiplikator oppdatert", - "message": "Poengmultiplikatoren for {assignee_name}er endret fra {old_multiplier}x til {new_multiplier}x" + "message": "{assignee_name}sin {points_label} multiplikator endret fra {old_multiplier}x til {new_multiplier}x" }, "_comment_system_section": "═════════════════════════════════════════════════════════════════════════════════════", "_comment_system_desc": "SYSTEM-/ADMIN-VARSLER: Databehandlingsoperasjoner", diff --git a/custom_components/choreops/translations_custom/nl_notifications.json b/custom_components/choreops/translations_custom/nl_notifications.json index bc9ea2a..0f86caf 100644 --- a/custom_components/choreops/translations_custom/nl_notifications.json +++ b/custom_components/choreops/translations_custom/nl_notifications.json @@ -4,7 +4,7 @@ "_comment_assignee_footer": "═════════════════════════════════════════════════════════════════", "chore_approved_assignee": { "title": "🎉 Klusje goedgekeurd!", - "message": "{chore_name} goedgekeurd! Je hebt {points} punten verdiend!" + "message": "{chore_name} goedgekeurd! Je hebt {points} {points_label} verdiend" }, "chore_disapproved_assignee": { "title": "↩️ Werkzaamheden teruggegeven", @@ -12,11 +12,11 @@ }, "chore_overdue_assignee": { "title": "⏰ Klus die al lang had moeten worden uitgevoerd", - "message": "{chore_name} is te laat! Voltooi het nu om {points} punten te verdienen!" + "message": "{chore_name} is te laat! Voltooi het nu om {points} te verdienen {points_label}" }, "chore_overdue_steal_available": { "title": "⚡ Huishoudelijke taken-melding", - "message": "{chore_name} is te laat en kan gestolen worden! Voltooi het eerst om {points} punten te verdienen!" + "message": "{chore_name} is te laat en kan gestolen worden! Voltooi het eerst om {points} te verdienen. {points_label}" }, "chore_missed_assignee": { "title": "😔 Taak verlopen", @@ -24,11 +24,11 @@ }, "chore_due_reminder_assignee": { "title": "⏰ Herinnering aan huishoudelijke taken", - "message": "{chore_name} moet binnen {minutes} minuten ingeleverd worden! Waard {points} punten" + "message": "{chore_name} moet over {minutes} minuten betaald worden! Waarde {points} {points_label}" }, "chore_due_window_assignee": { "title": "🎯 Klus die nu af moet", - "message": "{chore_name} moet nu ingeleverd worden! Voltooi binnen {hours} uur om {points} punten te verdienen." + "message": "{chore_name} moet nu ingeleverd worden! Voltooi binnen {hours} uur om {points} te verdienen {points_label}" }, "reward_approved_assignee": { "title": "🎉 Beloning goedgekeurd!", @@ -52,15 +52,15 @@ }, "penalty_applied_assignee": { "title": "⚠️ Straf opgelegd", - "message": "{penalty_name}: {points} punten afgetrokken. Laten we weer op het goede spoor komen!" + "message": "{penalty_name}: {points} {points_label} afgetrokken. Laten we weer verder gaan!" }, "bonus_applied_assignee": { "title": "⭐ Bonus toegepast!", - "message": "{bonus_name}: Je hebt {points} bonuspunten verdiend! Goed gedaan!" + "message": "{bonus_name}: Je hebt {points} bonus {points_label}verdiend! Goed gedaan!" }, "multiplier_changed_assignee": { "title": "⚖️ Vermenigvuldiger bijgewerkt", - "message": "Je puntenvermenigvuldiger is veranderd van {old_multiplier}x naar {new_multiplier}x" + "message": "Je {points_label} -vermenigvuldiger is veranderd van {old_multiplier}x naar {new_multiplier}x" }, "_comment_approver_section": "═════════════════════════════════════════════════════════════════", "_comment_approver_desc": "MELDINGEN VAN GOEDKEURERS: Informatief, in de derde persoon, uitvoerbaar. Formaat: '{assignee_name}: Actie'. GEEN 'ChoreOps:'-voorvoegsel.", @@ -79,11 +79,11 @@ }, "pending_chores_approver": { "title": "📋 {assignee_name}: {count} In afwachting", - "message": "{count} klusjes die nog beoordeeld moeten worden. Laatste: {latest_chore} (+{points} punten)" + "message": "{count} taken die nog beoordeeld moeten worden. Laatste: {latest_chore} (+{points} {points_label})" }, "reward_claimed_approver": { "title": "🎁 {assignee_name}: Beloningsverzoek", - "message": "{assignee_name} heeft {reward_name} aangevraagd voor {points} punten" + "message": "{assignee_name} heeft {reward_name} aangevraagd voor {points} {points_label}" }, "reward_reminder_approver": { "title": "⏰ {assignee_name}: Beloning in afwachting", @@ -103,7 +103,7 @@ }, "multiplier_changed_approver": { "title": "⚖️ {assignee_name}: Vermenigvuldiger bijgewerkt", - "message": "De puntenvermenigvuldiger van {assignee_name}is veranderd van {old_multiplier}x naar {new_multiplier}x" + "message": "{assignee_name}'s {points_label} multiplier changed from {old_multiplier}x to {new_multiplier}x" }, "_comment_system_section": "═════════════════════════════════════════════════════════════════", "_comment_system_desc": "SYSTEEM-/BEHEERMELDINGEN: Gegevensbeheerbewerkingen", diff --git a/custom_components/choreops/translations_custom/pl_notifications.json b/custom_components/choreops/translations_custom/pl_notifications.json index 749d308..c900232 100644 --- a/custom_components/choreops/translations_custom/pl_notifications.json +++ b/custom_components/choreops/translations_custom/pl_notifications.json @@ -4,7 +4,7 @@ "_comment_assignee_footer": "══════════════════════════════════════════════════════════════════", "chore_approved_assignee": { "title": "🎉 Zadanie zatwierdzone!", - "message": "{chore_name} zatwierdzono! Zdobyłeś {points} punktów" + "message": "{chore_name} zatwierdzono! Zdobyłeś {points} {points_label}" }, "chore_disapproved_assignee": { "title": "↩️ Powrót do pracy", @@ -12,11 +12,11 @@ }, "chore_overdue_assignee": { "title": "⏰ Zaległe obowiązki", - "message": "{chore_name} jest spóźnione! Wykonaj je teraz, aby zdobyć {points} punktów" + "message": "{chore_name} jest spóźnione! Wykonaj je teraz, aby zdobyć {points} {points_label}" }, "chore_overdue_steal_available": { "title": "⚡ Alert o obowiązkach domowych", - "message": "{chore_name} jest przeterminowany i można go ukraść! Wykonaj go najpierw, aby zdobyć {points} punktów." + "message": "{chore_name} jest przeterminowany i dostępny do kradzieży! Ukończ go najpierw, aby zdobyć {points} {points_label}" }, "chore_missed_assignee": { "title": "😔 Obowiązek wygasł", @@ -24,11 +24,11 @@ }, "chore_due_reminder_assignee": { "title": "⏰ Przypomnienie o obowiązkach domowych", - "message": "{chore_name} jest należne za {minutes} minut! Wartość {points} punktów" + "message": "{chore_name} jest za {minutes} minut! Wartość {points} {points_label}" }, "chore_due_window_assignee": { "title": "🎯 Obowiązek domowy do oddania teraz", - "message": "{chore_name} jest teraz należne! Wykonaj zadanie w ciągu {hours} godzin, aby zdobyć {points} punktów" + "message": "{chore_name} jest teraz należne! Wykonaj w ciągu {hours} godzin, aby zdobyć {points} {points_label}" }, "reward_approved_assignee": { "title": "🎉 Nagroda zatwierdzona!", @@ -52,15 +52,15 @@ }, "penalty_applied_assignee": { "title": "⚠️ Zastosowano karę", - "message": "{penalty_name}: {points} punktów odjętych. Wracamy na właściwe tory!" + "message": "{penalty_name}: {points} {points_label} odjęto. Wracamy na właściwe tory!" }, "bonus_applied_assignee": { "title": "⭐ Bonus zastosowany!", - "message": "{bonus_name}: Zdobyłeś {points} punktów bonusowych! Świetna robota" + "message": "{bonus_name}: Zdobyłeś {points} bonus {points_label}! Świetna robota" }, "multiplier_changed_assignee": { "title": "⚖️ Zaktualizowano mnożnik", - "message": "Twój mnożnik punktów zmienił się z {old_multiplier}x na {new_multiplier}x" + "message": "Twój mnożnik {points_label} zmienił się z {old_multiplier}x na {new_multiplier}x" }, "_comment_approver_section": "══════════════════════════════════════════════════════════════════", "_comment_approver_desc": "POWIADOMIENIA DLA ZATWIERDZAJĄCYCH: informacyjne, w trzeciej osobie, z możliwością podjęcia działania. Format: „{assignee_name}: Działanie”. BRAK prefiksu „ChoreOps:”.", @@ -79,11 +79,11 @@ }, "pending_chores_approver": { "title": "📋 {assignee_name}: {count} Oczekujące", - "message": "{count} zadań oczekujących na sprawdzenie. Ostatnie: {latest_chore} (+{points} pkt)" + "message": "{count} zadań oczekujących na sprawdzenie. Ostatnie: {latest_chore} (+{points} {points_label})" }, "reward_claimed_approver": { "title": "🎁 {assignee_name}: Prośba o nagrodę", - "message": "{assignee_name} zażądał {reward_name} za {points} punktów" + "message": "{assignee_name} zażądał {reward_name} dla {points} {points_label}" }, "reward_reminder_approver": { "title": "⏰ {assignee_name}: Nagroda w toku", @@ -103,7 +103,7 @@ }, "multiplier_changed_approver": { "title": "⚖️ {assignee_name}: Zaktualizowano mnożnik", - "message": "Zmieniono mnożnik punktów {assignee_name}z {old_multiplier}x na {new_multiplier}x" + "message": "Zmieniono mnożnik {assignee_name} {points_label} z {old_multiplier}x na {new_multiplier}x" }, "_comment_system_section": "══════════════════════════════════════════════════════════════════", "_comment_system_desc": "POWIADOMIENIA SYSTEMOWE/ADMINISTRACYJNE: Operacje zarządzania danymi", diff --git a/custom_components/choreops/translations_custom/pt_notifications.json b/custom_components/choreops/translations_custom/pt_notifications.json index 61a4587..f999945 100644 --- a/custom_components/choreops/translations_custom/pt_notifications.json +++ b/custom_components/choreops/translations_custom/pt_notifications.json @@ -4,7 +4,7 @@ "_comment_assignee_footer": "═══════════════════════════════ ════════════════════════════════", "chore_approved_assignee": { "title": "🎉 Tarefa aprovada!", - "message": "{chore_name} aprovado! Ganhou {points} pontos" + "message": "{chore_name} aprovado! Ganhou {points} {points_label}" }, "chore_disapproved_assignee": { "title": "↩️ Tarefa devolvida", @@ -12,11 +12,11 @@ }, "chore_overdue_assignee": { "title": "⏰ Tarefa atrasada", - "message": "{chore_name} está atrasado! Complete-o agora para ganhar {points} pontos" + "message": "{chore_name} está atrasado! Complete agora para ganhar {points} {points_label}" }, "chore_overdue_steal_available": { "title": "⚡ Alerta de Tarefa", - "message": "{chore_name} está atrasado e disponível para roubar! Complete-o primeiro para ganhar {points} pontos" + "message": "{chore_name} está atrasado e disponível para roubar! Complete-o primeiro para ganhar {points} {points_label}" }, "chore_missed_assignee": { "title": "😔 Tarefa expirada", @@ -24,11 +24,11 @@ }, "chore_due_reminder_assignee": { "title": "⏰ Lembrete de Tarefas", - "message": "{chore_name} deve ser entregue em {minutes} minutos! Vale {points} pontos" + "message": "{chore_name} deve ser entregue em {minutes} minutos! Vale {points} {points_label}" }, "chore_due_window_assignee": { "title": "🎯 Tarefa a fazer agora", - "message": "{chore_name} já está disponível! Conclua até {hours} hora(s) para ganhar {points} pontos." + "message": "{chore_name} já está disponível! Conclua em {hours} hora(s) para ganhar {points} {points_label}" }, "reward_approved_assignee": { "title": "🎉 Recompensa aprovada!", @@ -52,15 +52,15 @@ }, "penalty_applied_assignee": { "title": "⚠️ Penalidade aplicada", - "message": "{penalty_name}: {points} pontos deduzidos. Vamos voltar ao início!" + "message": "{penalty_name}: {points} {points_label} deduzido. Vamos voltar ao assunto!" }, "bonus_applied_assignee": { "title": "⭐ Bónus aplicado!", - "message": "{bonus_name}: Ganhou {points} pontos de bónus! Ótimo trabalho!" + "message": "{bonus_name}: You earned {points} bonus {points_label}! Great job" }, "multiplier_changed_assignee": { "title": "⚖️ Multiplicador atualizado", - "message": "O seu multiplicador de pontos passou de {old_multiplier}x para {new_multiplier}x" + "message": "O seu multiplicador {points_label} passou de {old_multiplier}x para {new_multiplier}x" }, "_comment_approver_section": "═══════════════════════════════ ════════════════════════════════", "_comment_approver_desc": "NOTIFICAÇÕES DO APROVADOR: Informativas, na terceira pessoa, passíveis de ação. Formato: '{assignee_name}: Acção'. SEM prefixo 'ChoreOps:'.", @@ -79,11 +79,11 @@ }, "pending_chores_approver": { "title": "📋 {assignee_name}: {count} Pendente", - "message": "{count} tarefas que aguardam revisão. Mais recente: {latest_chore} (+{points} pts)" + "message": "{count} Tarefas a aguardar revisão. Mais recentes: {latest_chore} (+{points} {points_label})" }, "reward_claimed_approver": { "title": "🎁 {assignee_name}: Pedido de Recompensa", - "message": "{assignee_name} solicitou {reward_name} pontos no valor de {points}" + "message": "{assignee_name} solicitou {reward_name} para {points} {points_label}" }, "reward_reminder_approver": { "title": "⏰ {assignee_name}: Recompensa pendente", @@ -103,7 +103,7 @@ }, "multiplier_changed_approver": { "title": "⚖️ {assignee_name}: Multiplicador Atualizado", - "message": "O multiplicador de pontos de {assignee_name}passou de {old_multiplier}x para {new_multiplier}x" + "message": "{assignee_name}'s {points_label} multiplier changed from {old_multiplier}x to {new_multiplier}x" }, "_comment_system_section": "═══════════════════════════════ ════════════════════════════════", "_comment_system_desc": "NOTIFICAÇÕES DO SISTEMA/ADMINISTRADOR: Operações de gestão de dados", diff --git a/custom_components/choreops/translations_custom/ro_notifications.json b/custom_components/choreops/translations_custom/ro_notifications.json new file mode 100644 index 0000000..5dc8924 --- /dev/null +++ b/custom_components/choreops/translations_custom/ro_notifications.json @@ -0,0 +1,142 @@ +{ + "_comment_assignee_section": "══════════════════════════════════════════════════════════════", + "_comment_assignee_desc": "NOTIFICĂRI PENTRU PERSOANE DESIGNATE: Ton încurajator, la persoana a doua, cu emoji-uri, gamificat. FĂRĂ prefixul „ChoreOps:”.", + "_comment_assignee_footer": "══════════════════════════════════════════════════════════════", + "chore_approved_assignee": { + "title": "🎉 Treburi casnice aprobate!", + "message": "{chore_name} aprobat! Ai câștigat {points} {points_label}" + }, + "chore_disapproved_assignee": { + "title": "↩️ Treabă returnată", + "message": "{chore_name} necesită mai multă muncă." + }, + "chore_overdue_assignee": { + "title": "⏰ Treabă restantă", + "message": "{chore_name} este întârziat! Completează-l acum pentru a câștiga {points} {points_label}" + }, + "chore_overdue_steal_available": { + "title": "⚡ Alertă de treburi casnice", + "message": "{chore_name} este întârziat și disponibil pentru furt! Completează-l mai întâi pentru a câștiga {points} {points_label}" + }, + "chore_missed_assignee": { + "title": "😔 Treaba a expirat", + "message": "{chore_name} a expirat fără a fi finalizat." + }, + "chore_due_reminder_assignee": { + "title": "⏰ Memento treburi casnice", + "message": "{chore_name} se plătește în {minutes} minute! Valoare {points} {points_label}" + }, + "chore_due_window_assignee": { + "title": "🎯 Treabă acum scadentă", + "message": "{chore_name} este acum scadent! Finalizați în {hours} oră (ore) pentru a câștiga {points} {points_label}" + }, + "reward_approved_assignee": { + "title": "🎉 Recompensă aprobată!", + "message": "{reward_name} aprobat!" + }, + "reward_disapproved_assignee": { + "title": "💭 Cerere de recompensă returnată", + "message": "{reward_name} nu a fost aprobat de data aceasta." + }, + "badge_earned_assignee": { + "title": "🥇 Insignă câștigată!", + "message": "Ai câștigat insigna {badge_name}!" + }, + "achievement_earned_assignee": { + "title": "🏆 Realizare obținută!", + "message": "Ai câștigat {achievement_name}! Continuă treaba bună!" + }, + "challenge_completed_assignee": { + "title": "🏁 Provocare finalizată!", + "message": "Ai terminat {challenge_name}! Continuă treaba bună!" + }, + "penalty_applied_assignee": { + "title": "⚠️ Penalizare aplicată", + "message": "{penalty_name}: {points} {points_label} s-a dedus. Să revenim pe drumul cel bun!" + }, + "bonus_applied_assignee": { + "title": "⭐ Bonus aplicat!", + "message": "{bonus_name}: Ai câștigat bonusul {points} {points_label}! Bravo!" + }, + "multiplier_changed_assignee": { + "title": "⚖️ Multiplicator actualizat", + "message": "Multiplicatorul {points_label} s-a modificat de la {old_multiplier}x la {new_multiplier}x" + }, + "_comment_approver_section": "══════════════════════════════════════════════════════════════", + "_comment_approver_desc": "NOTIFICĂRI DE LA APROBATOR: Informative, la persoana a treia, acționabile. Format: „{assignee_name}: Acțiune”. FĂRĂ prefixul „ChoreOps:”.", + "_comment_approver_footer": "══════════════════════════════════════════════════════════════", + "chore_claimed_approver": { + "title": "✋ {assignee_name}: Treabă revendicată", + "message": "{assignee_name} a revendicat {chore_name}" + }, + "chore_reminder_approver": { + "title": "⏰ {assignee_name}: Este necesară aprobarea", + "message": "Memento: {chore_name} revendicat de {assignee_name} așteaptă recenzia ta" + }, + "chore_overdue_approver": { + "title": "⚠️ {assignee_name}: Treabă restantă", + "message": "Sarcina {assignee_name} {chore_name} este restantă (scadent: {due_date})" + }, + "pending_chores_approver": { + "title": "📋 {assignee_name}: {count} În așteptare", + "message": "{count} treburi casnice care așteaptă revizuire. Cele mai recente: {latest_chore} (+{points} {points_label})" + }, + "reward_claimed_approver": { + "title": "🎁 {assignee_name}: Cerere de recompensă", + "message": "{assignee_name} a solicitat {reward_name} pentru {points} {points_label}" + }, + "reward_reminder_approver": { + "title": "⏰ {assignee_name}: Recompensă în așteptare", + "message": "Memento: {reward_name} solicitat de {assignee_name} așteaptă aprobarea dumneavoastră" + }, + "badge_earned_approver": { + "title": "🥇 {assignee_name}: Insignă câștigată", + "message": "{assignee_name} a câștigat insigna {badge_name}!" + }, + "achievement_earned_approver": { + "title": "🏆 {assignee_name}: Realizare", + "message": "{assignee_name} câștigat {achievement_name}" + }, + "challenge_completed_approver": { + "title": "🏁 {assignee_name}: Provocare finalizată", + "message": "{assignee_name} finalizat {challenge_name}" + }, + "multiplier_changed_approver": { + "title": "⚖️ {assignee_name}: Multiplicator actualizat", + "message": "Multiplicatorul {assignee_name}al lui {points_label} s-a modificat de la {old_multiplier}x la {new_multiplier}x" + }, + "_comment_system_section": "══════════════════════════════════════════════════════════════", + "_comment_system_desc": "NOTIFICARE SISTEM/ADMINISTRATOR: Operațiuni de gestionare a datelor", + "_comment_system_footer": "══════════════════════════════════════════════════════════════", + "data_reset": { + "title": "🔄 ChoreOps: Resetare date", + "message": "Datele de sistem au fost resetate" + }, + "data_reset_global": { + "title": "🔄 ChoreOps: Resetare completă", + "message": "Toate datele sistemului au fost resetate la valorile implicite" + }, + "data_reset_assignee": { + "title": "🔄 ChoreOps: Resetare persoană desemnată", + "message": "Resetare date pentru {assignee_name}" + }, + "data_reset_item_type": { + "title": "🔄 ChoreOps: {item_type} Resetare", + "message": "Toate datele {item_type} au fost resetate" + }, + "data_reset_item": { + "title": "🔄 ChoreOps: Resetare obiect", + "message": "{item_type} '{item_name}' a fost resetat" + }, + "_comment_actions_section": "═════════════════════════════════════════════════════════════", + "_comment_actions_desc": "BUTOANE DE ACȚIUNE PENTRU NOTIFICARE: Limbaj mai blând și mai încurajator", + "_comment_actions_footer": "═════════════════════════════════════════════════════════════", + "actions": { + "approve": "✅ Aprobați", + "claim": "✋ Am reușit!", + "complete": "✅ Complet", + "disapprove": "↩️ Dezaprob", + "remind_30": "⏰ Reamintire în 30 de minute", + "skip": "⏭️ Sari peste" + } +} diff --git a/custom_components/choreops/translations_custom/ro_report.json b/custom_components/choreops/translations_custom/ro_report.json new file mode 100644 index 0000000..dd69816 --- /dev/null +++ b/custom_components/choreops/translations_custom/ro_report.json @@ -0,0 +1,40 @@ +{ + "title_default": "🌈 Repere săptămânale de la ChoreOps", + "intro": "Hei {assignee_heading}! Iată ce ai realizat în această perioadă:", + "section_big_picture": "## ✨ Imagine de ansamblu", + "section_weekly_summary": "## 📊 Rezumat săptămânal", + "section_highlights": "## 🌟 Repere", + "section_daily_activity": "## 📅 Activitate zilnică", + "range_label": "Gamă", + "range_short": "{start_date} → {end_date}", + "total_points_earned": "Total puncte câștigate", + "total_points_spent": "Total puncte cheltuite", + "net_points_change": "Schimbarea punctelor nete", + "total_activities": "Activități totale", + "completed_chores_week": "Treburi finalizate săptămâna aceasta", + "avg_points_per_day": "Puncte medii pe zi", + "avg_chores_per_day": "Treburi medii pe zi", + "badges_earned": "🏅 Insigne câștigate", + "badges_earned_none": "🏅 Insigne câștigate: niciuna în această perioadă", + "bonus_points": "✨ Puncte bonus", + "rewards_highlight": "🎁 Recompense", + "daily_ledger": "Detalii registru", + "best_day": "🏆 Cea mai bună zi: {date} (puncte net {net})", + "no_activity": "Nu a fost găsită nicio activitate pentru intervalul selectat.", + "day_points_earned": "🌟 Puncte câștigate", + "day_points_spent": "🎁 Puncte cheltuite", + "day_net_change": "📊 Schimbare netă", + "day_activities": "✅ Activități", + "footer": "Efort excelent săptămâna aceasta — continuați! 🎉", + "automation_title": "# Raport de activitate ChoreOps", + "automation_summary": "## Rezumat", + "automation_daily": "## Zilnic", + "automation_no_activity": "- fără_activitate", + "automation_assignees": "cesionari", + "automation_range_start": "interval_start", + "automation_range_end": "capăt_interval", + "automation_total_earned": "total_câștigat", + "automation_total_spent": "cheltuieli_totale", + "automation_net": "net", + "automation_transactions": "tranzacții" +} diff --git a/custom_components/choreops/translations_custom/sk_notifications.json b/custom_components/choreops/translations_custom/sk_notifications.json index fb1e937..523bf3a 100644 --- a/custom_components/choreops/translations_custom/sk_notifications.json +++ b/custom_components/choreops/translations_custom/sk_notifications.json @@ -4,7 +4,7 @@ "_comment_assignee_footer": "══════════════════════════════════════════════════════════════════════════", "chore_approved_assignee": { "title": "🎉 Domáca úloha schválená!", - "message": "{chore_name} schválená! Získali ste {points} bodov" + "message": "{chore_name} schválené! Získali ste {points} {points_label}" }, "chore_disapproved_assignee": { "title": "↩️ Vrátená práca", @@ -12,11 +12,11 @@ }, "chore_overdue_assignee": { "title": "⏰ Domáca práca po termíne", - "message": "{chore_name} je oneskorené! Dokončite ho teraz a získajte {points} bodov" + "message": "{chore_name} je už naplánované! Dokončite ho teraz a získajte {points} {points_label}" }, "chore_overdue_steal_available": { "title": "⚡ Upozornenie na domáce práce", - "message": "{chore_name} je po termíne a je k dispozícii na ukradnutie! Najprv ho dokončite a získajte {points} bodov" + "message": "{chore_name} je po termíne a je k dispozícii na ukradnutie! Najprv ho dokončite a získajte {points} {points_label}" }, "chore_missed_assignee": { "title": "😔 Platnosť úlohy vypršala", @@ -24,11 +24,11 @@ }, "chore_due_reminder_assignee": { "title": "⏰ Pripomienka domácich prác", - "message": "{chore_name} je splatné o {minutes} minút! Hodnota {points} bodov" + "message": "{chore_name} je splatné o {minutes} minút! Hodnota {points} {points_label}" }, "chore_due_window_assignee": { "title": "🎯 Domáca úloha teraz na splatenie", - "message": "Termín {chore_name} je teraz! Dokončite do {hours} hodiny a získajte {points} bodov" + "message": "{chore_name} je teraz splatné! Dokončite do {hours} hodiny a získajte {points} {points_label}" }, "reward_approved_assignee": { "title": "🎉 Odmena schválená!", @@ -52,15 +52,15 @@ }, "penalty_applied_assignee": { "title": "⚠️ Uplatnená pokuta", - "message": "{penalty_name}: Odpočítané {points} body. Vráťme sa na správnu cestu!" + "message": "{penalty_name}: {points} {points_label} odpočítané. Vráťme sa na správnu cestu!" }, "bonus_applied_assignee": { "title": "⭐ Bonus bol uplatnený!", - "message": "{bonus_name}: Získali ste {points} bonusových bodov! Skvelá práca" + "message": "{bonus_name}: Získali ste bonus {points} {points_label}! Skvelá práca" }, "multiplier_changed_assignee": { "title": "⚖️ Aktualizovaný multiplikátor", - "message": "Váš násobiteľ bodov sa zmenil z {old_multiplier}x na {new_multiplier}x" + "message": "Váš multiplikátor {points_label} sa zmenil z {old_multiplier}x na {new_multiplier}x" }, "_comment_approver_section": "══════════════════════════════════════════════════════════════════════════", "_comment_approver_desc": "OZNÁMENIA SCHVÁĽOVATEĽA: Informatívne, v tretej osobe, akčné. Formát: '{assignee_name}: Akcia'. BEZ predpony 'ChoreOps:'.", @@ -79,11 +79,11 @@ }, "pending_chores_approver": { "title": "📋 {assignee_name}: {count} Čaká sa", - "message": "{count} domácich úloh čakajúcich na kontrolu. Najnovšie: {latest_chore} (+{points} bodov)" + "message": "{count} domáce práce čakajúce na kontrolu. Najnovšie: {latest_chore} (+{points} {points_label})" }, "reward_claimed_approver": { "title": "🎁 {assignee_name}: Žiadosť o odmenu", - "message": "{assignee_name} požadoval {reward_name} za {points} bodov" + "message": "{assignee_name} požiadal o {reward_name} pre {points} {points_label}" }, "reward_reminder_approver": { "title": "⏰ {assignee_name}: Odmena čaká na vyplatenie", @@ -103,7 +103,7 @@ }, "multiplier_changed_approver": { "title": "⚖️ {assignee_name}: Multiplikátor bol aktualizovaný", - "message": "Násobiteľ bodov hráča {assignee_name}sa zmenil z {old_multiplier}x na {new_multiplier}x" + "message": "{assignee_name}'s {points_label} multiplier changed from {old_multiplier}x to {new_multiplier}x" }, "_comment_system_section": "══════════════════════════════════════════════════════════════════════════", "_comment_system_desc": "SYSTÉMOVÉ/ADMINISTRÁTORSKÉ OZNÁMENIA: Operácie správy údajov", diff --git a/custom_components/choreops/translations_custom/sl_notifications.json b/custom_components/choreops/translations_custom/sl_notifications.json index a43aa22..fb26569 100644 --- a/custom_components/choreops/translations_custom/sl_notifications.json +++ b/custom_components/choreops/translations_custom/sl_notifications.json @@ -4,7 +4,7 @@ "_comment_assignee_footer": "══════════════════════════════════════════════════════════════════════════", "chore_approved_assignee": { "title": "🎉 Opravilo odobreno!", - "message": "{chore_name} odobreno! Zaslužili ste si {points} točk" + "message": "{chore_name} odobreno! Zaslužili ste si {points} {points_label}" }, "chore_disapproved_assignee": { "title": "↩️ Opravilo vrnjeno", @@ -12,11 +12,11 @@ }, "chore_overdue_assignee": { "title": "⏰ Opravilo je zamujeno", - "message": "{chore_name} je že v zamudi! Izpolnite ga zdaj in si prislužite {points} točk" + "message": "{chore_name} je že zapadel! Izpolnite ga zdaj in si prislužite {points} {points_label}" }, "chore_overdue_steal_available": { "title": "⚡ Opozorilo o opravilih", - "message": "{chore_name} je zapadla in jo lahko ukradete! Najprej jo dokončajte, da zaslužite {points} točk" + "message": "{chore_name} je zapadla in jo lahko ukradete! Najprej jo dokončajte, da si prislužite {points} {points_label}" }, "chore_missed_assignee": { "title": "😔 Opravilo je poteklo", @@ -24,11 +24,11 @@ }, "chore_due_reminder_assignee": { "title": "⏰ Opomnik za opravila", - "message": "{chore_name} je zapadlo čez {minutes} minut! Vredno {points} točk" + "message": "{chore_name} je zapadlo čez {minutes} minut! Vredno {points} {points_label}" }, "chore_due_window_assignee": { "title": "🎯 Opravilo čaka na izvedbo", - "message": "Rok za oddajo {chore_name} je zdaj! Izpolnite v {hours} urah in zaslužite {points} točk" + "message": "{chore_name} je zdaj rok! Izpolnite v {hours} uri in zaslužite {points} {points_label}" }, "reward_approved_assignee": { "title": "🎉 Nagrada odobrena!", @@ -52,15 +52,15 @@ }, "penalty_applied_assignee": { "title": "⚠️ Izrečena kazen", - "message": "{penalty_name}: {points} odbitih točk. Gremo nazaj na pravo pot!" + "message": "{penalty_name}: {points} {points_label} odšteto. Gremo nazaj na pravo pot!" }, "bonus_applied_assignee": { "title": "⭐ Bonus je bil uporabljen!", - "message": "{bonus_name}: Prislužili ste si {points} bonus točk! Odlično opravljeno" + "message": "{bonus_name}: Prislužili ste si {points} bonus {points_label}! Odlično opravljeno" }, "multiplier_changed_assignee": { "title": "⚖️ Množitelj posodobljen", - "message": "Vaš množitelj točk se je spremenil iz {old_multiplier}x na {new_multiplier}x" + "message": "Vaš množitelj {points_label} se je spremenil iz {old_multiplier}x na {new_multiplier}x" }, "_comment_approver_section": "══════════════════════════════════════════════════════════════════════════", "_comment_approver_desc": "OBVESTILA ODOBRITELJA: Informativna, v tretji osebi, uporabna. Oblika: '{assignee_name}: Dejanje'. BREZ predpone 'ChoreOps:'.", @@ -79,11 +79,11 @@ }, "pending_chores_approver": { "title": "📋 {assignee_name}: {count} V teku", - "message": "{count} opravil, ki čakajo na pregled. Zadnja: {latest_chore} (+{points} točk)" + "message": "{count} opravila, ki čakajo na pregled. Zadnja: {latest_chore} (+{points} {points_label})" }, "reward_claimed_approver": { "title": "🎁 {assignee_name}: Zahteva za nagrado", - "message": "{assignee_name} je zahteval {reward_name} za {points} točk" + "message": "{assignee_name} zahteval {reward_name} za {points} {points_label}" }, "reward_reminder_approver": { "title": "⏰ {assignee_name}: Nagrada čaka", @@ -103,7 +103,7 @@ }, "multiplier_changed_approver": { "title": "⚖️ {assignee_name}: Množitelj posodobljen", - "message": "Množitelj točk igralca {assignee_name}se je spremenil iz {old_multiplier}x na {new_multiplier}x" + "message": "{assignee_name}'s {points_label} multiplier changed from {old_multiplier}x to {new_multiplier}x" }, "_comment_system_section": "══════════════════════════════════════════════════════════════════════════", "_comment_system_desc": "OBVESTILA SISTEMA/ADMINIRANJA: Postopki upravljanja podatkov", diff --git a/custom_components/choreops/translations_custom/sv_notifications.json b/custom_components/choreops/translations_custom/sv_notifications.json index 8263ad5..bba4419 100644 --- a/custom_components/choreops/translations_custom/sv_notifications.json +++ b/custom_components/choreops/translations_custom/sv_notifications.json @@ -4,7 +4,7 @@ "_comment_assignee_footer": "═════════════════════════════════════════════════════════════════════════════════", "chore_approved_assignee": { "title": "🎉 Godkänt för sysslor!", - "message": "{chore_name} godkänd! Du fick {points} poäng" + "message": "{chore_name} godkänt! Du fick {points} {points_label}" }, "chore_disapproved_assignee": { "title": "↩️ Syssla återlämnad", @@ -12,11 +12,11 @@ }, "chore_overdue_assignee": { "title": "⏰ Försenad syssla", - "message": "{chore_name} är försenad! Slutför den nu för att tjäna {points} poäng" + "message": "{chore_name} är försenad! Slutför den nu för att tjäna {points} {points_label}" }, "chore_overdue_steal_available": { "title": "⚡ Sysslovarning", - "message": "{chore_name} är försenad och tillgänglig för stjälning! Slutför den först för att tjäna {points} poäng" + "message": "{chore_name} är försenad och tillgänglig för stjälning! Slutför den först för att tjäna {points} {points_label}" }, "chore_missed_assignee": { "title": "😔 Syssla har löpt ut", @@ -24,11 +24,11 @@ }, "chore_due_reminder_assignee": { "title": "⏰ Påminnelse om sysslor", - "message": "{chore_name} ska vara klar om {minutes} minuter! Värt {points} poäng" + "message": "{chore_name} förfaller om {minutes} minuter! Värt {points} {points_label}" }, "chore_due_window_assignee": { "title": "🎯 Syssla ska vara klar nu", - "message": "{chore_name} är nu förfallet! Slutför inom {hours} timme(r) för att tjäna {points} poäng" + "message": "{chore_name} är nu förfallet! Slutför inom {hours} timme(r) för att tjäna {points} {points_label}" }, "reward_approved_assignee": { "title": "🎉 Belöning godkänd!", @@ -52,15 +52,15 @@ }, "penalty_applied_assignee": { "title": "⚠️ Straff tillämpad", - "message": "{penalty_name}: {points} poäng dragna. Nu kommer vi tillbaka på rätt spår!" + "message": "{penalty_name}: {points} {points_label} dragit av. Nu kommer vi tillbaka på rätt spår!" }, "bonus_applied_assignee": { "title": "⭐ Bonus tillämpad!", - "message": "{bonus_name}: Du tjänade {points} bonuspoäng! Bra jobbat" + "message": "{bonus_name}: Du tjänade {points} bonus {points_label}! Bra jobbat" }, "multiplier_changed_assignee": { "title": "⚖️ Multiplikator uppdaterad", - "message": "Din poängmultiplikator har ändrats från {old_multiplier}x till {new_multiplier}x" + "message": "Din {points_label} multiplikator har ändrats från {old_multiplier}x till {new_multiplier}x" }, "_comment_approver_section": "═════════════════════════════════════════════════════════════════════════════════", "_comment_approver_desc": "GODKÄNNANDENUMMER: Informativa, tredjepersons, handlingsbara. Format: '{assignee_name}: Åtgärd'. INGET prefix 'ChoreOps:'.", @@ -79,11 +79,11 @@ }, "pending_chores_approver": { "title": "📋 {assignee_name}: {count} Väntar", - "message": "{count} sysslor väntar på granskning. Senaste: {latest_chore} (+{points} poäng)" + "message": "{count} sysslor väntar på granskning. Senaste: {latest_chore} (+{points} {points_label})" }, "reward_claimed_approver": { "title": "🎁 {assignee_name}: Belöningsförfrågan", - "message": "{assignee_name} begärde {reward_name} för {points} poäng" + "message": "{assignee_name} begärde {reward_name} för {points} {points_label}" }, "reward_reminder_approver": { "title": "⏰ {assignee_name}: Belöning väntar", @@ -103,7 +103,7 @@ }, "multiplier_changed_approver": { "title": "⚖️ {assignee_name}: Multiplikatorn uppdaterad", - "message": "{assignee_name}s poängmultiplikator ändrad från {old_multiplier}x till {new_multiplier}x" + "message": "{assignee_name}s multiplikator {points_label} har ändrats från {old_multiplier}x till {new_multiplier}x" }, "_comment_system_section": "═════════════════════════════════════════════════════════════════════════════════", "_comment_system_desc": "SYSTEM-/ADMINISTRATIONSMEDDELANDEN: Datahanteringsåtgärder",