New apps Added

This commit is contained in:
2026-07-08 10:43:39 -04:00
parent 3b1f4bbd75
commit fefc2c8b5c
1114 changed files with 406637 additions and 154 deletions
@@ -0,0 +1,884 @@
{
"config": {
"step": {
"user": {
"title": "Willkommen bei TaskMate!",
"description": "Richten Sie Ihr Familien Aufgabenverwaltungssystem ein. Sie können die Punktewährung anpassen, die Kinder verdienen können.",
"data": {
"points_name": "Name der Punktewährung (z. B. Sterne, Münzen, Dollar)",
"points_icon": "Punkte-Symbol"
}
}
},
"error": {
"name_required": "Name ist erforderlich"
},
"abort": {
"already_configured": "TaskMate ist bereits konfiguriert"
}
},
"selector": {
"chore_action": {
"options": {
"save": "Änderungen speichern",
"re_enable": "Aufgabe erneut aktivieren",
"disable": "Aufgabe deaktivieren",
"delete": "Diese Aufgabe löschen"
}
},
"reward_action": {
"options": {
"save": "Änderungen speichern",
"delete": "Belohnung löschen"
}
},
"time_category": {
"options": {
"morning": "Morgen",
"afternoon": "Nachmittag",
"evening": "Abend",
"night": "Nacht",
"anytime": "Jederzeit"
}
},
"schedule_mode": {
"options": {
"specific_days": "Bestimmte Wochentage",
"recurring": "Wiederkehrend (alle N Tage/Wochen/Monate)",
"one_shot": "Einmalige Aufgabe (einzelner Tag)"
}
},
"due_days_option": {
"options": {
"monday": "Montag",
"tuesday": "Dienstag",
"wednesday": "Mittwoch",
"thursday": "Donnerstag",
"friday": "Freitag",
"saturday": "Samstag",
"sunday": "Sonntag"
}
},
"recurrence": {
"options": {
"every_2_days": "Alle 2 Tage",
"weekly": "Wöchentlich",
"every_2_weeks": "Alle 2 Wochen",
"monthly": "Monatlich",
"every_3_months": "Alle 3 Monate",
"every_6_months": "Alle 6 Monate"
}
},
"recurrence_day_option": {
"options": {
"monday": "Montag",
"tuesday": "Dienstag",
"wednesday": "Mittwoch",
"thursday": "Donnerstag",
"friday": "Freitag",
"saturday": "Samstag",
"sunday": "Sonntag",
"any_day": "Jeder Tag"
}
},
"first_occurrence_mode": {
"options": {
"available_immediately": "Sofort verfügbar",
"wait_for_first_occurrence": "Warten Sie auf das erste geplante Ereignis"
}
},
"streak_reset_mode": {
"options": {
"reset": "Zurücksetzen Serie geht am verpassten Tag auf 0",
"pause": "Pause die Serie bleibt bis zum nächsten Abschluss erhalten"
}
},
"visibility_operator": {
"options": {
"none": "Kein Filter Aufgaben immer anzeigen",
"equals": "Gleicht Wird angezeigt, wenn der Entitätsstatus genau übereinstimmt",
"not_equals": "Nicht gleich Wird angezeigt, wenn der Entitätsstatus nicht übereinstimmt",
"gte": "Größer als oder gleich (≥) Wird angezeigt, wenn der numerische Wert ≥ dem Zielwert ist",
"lte": "Kleiner oder gleich (≤) Wird angezeigt, wenn der numerische Wert ≤ Ziel ist",
"gt": "Größer als (>) Wird angezeigt, wenn der numerische Wert > Ziel ist",
"lt": "Kleiner als (<) Wird angezeigt, wenn der numerische Wert < Ziel ist"
}
},
"assignment_mode": {
"options": {
"everyone": "Jeder jedes zugewiesene Kind sieht die Aufgabe",
"alternating": "Abwechselnd wechseln Sie durch die zugewiesenen Kinder, eines pro Tag",
"random": "Zufällig Wählen Sie jeden Tag zufällig ein zugewiesenes Kind aus",
"balanced": "Ausgewogen Verteilen Sie die heutigen ausgeglichenen Aufgaben gleichmäßig auf die zugewiesenen Kinder",
"first_come": "Wer zuerst kommt, mahlt zuerst — das erste Kind, das sie erledigt, gewinnt; bei den anderen ausgeblendet",
"unassigned": "Nicht zugewiesen — kein Kind sieht diese Aufgabe"
}
},
"task_group_policy": {
"options": {
"sticky": "Festgelegt dasselbe Kind für alle Aufgaben in der Gruppe",
"spread": "Verteilt - für verschiedene Kinder in der Gruppe heute"
}
},
"task_group_action": {
"options": {
"save": "Änderungen speichern",
"delete": "Gruppe löschen"
}
}
},
"services": {
"complete_chore": {
"name": "Erledige Aufgabe",
"description": "Markieren Sie eine Aufgabe als von einem Kind erledigt",
"fields": {
"chore_id": {
"name": "Aufgaben-ID",
"description": "Die ID der Aufgabe, die abgeschlossen werden soll"
},
"child_id": {
"name": "Kinder-ID",
"description": "Die ID des Kindes, das die Aufgabe erledigt"
}
}
},
"complete_bonus_subtask": {
"name": "Bonus-Unteraufgabe erledigen",
"description": "Erledigen Sie eine Bonus-Unteraufgabe, nachdem die übergeordnete Aufgabe abgeschlossen wurde",
"fields": {
"chore_id": {
"name": "Aufgaben-ID",
"description": "Die ID der übergeordneten Aufgabe"
},
"bonus_subtask_id": {
"name": "Bonus-Unteraufgaben-ID",
"description": "Die ID der zu erledigenden Bonus-Unteraufgabe"
},
"child_id": {
"name": "Kinder-ID",
"description": "Die ID des Kindes, das die Bonus-Unteraufgabe erledigt"
}
}
},
"approve_chore": {
"name": "Genehmigen Sie die Aufgabe",
"description": "Genehmigen Sie eine erledigte Aufgabe und vergeben Sie Punkte",
"fields": {
"completion_id": {
"name": "Abschluss-ID",
"description": "Die ID des zu genehmigenden Aufgabenabschlusses"
}
}
},
"approve_all_chores": {
"name": "Alle Aufgaben genehmigen",
"description": "Alle ausstehenden Aufgabenerledigungen (oder eine bestimmte Auswahl) genehmigen und Punkte vergeben",
"fields": {
"completion_ids": {
"name": "Erledigungs-IDs",
"description": "Bestimmte Erledigungs-IDs zum Genehmigen; leer lassen, um alle ausstehenden zu genehmigen"
}
}
},
"reject_chore": {
"name": "Aufgabe ablehnen",
"description": "Eine erledigte Aufgabe ablehnen",
"fields": {
"completion_id": {
"name": "Abschluss-ID",
"description": "Die ID des abzulehnenden Aufgabenabschlusses"
}
}
},
"undo_chore_approval": {
"name": "Aufgabengenehmigung rückgängig machen",
"description": "Eine versehentliche Aufgabengenehmigung rückgängig machen — entfernt die vergebenen Punkte und setzt die Erledigung zurück auf ausstehend, sodass sie erneut genehmigt werden kann.",
"fields": {
"completion_id": {
"name": "Erledigungs-ID",
"description": "Die ID der genehmigten Aufgabenerledigung, die auf ausstehend zurückgesetzt werden soll"
}
}
},
"undo_transaction": {
"name": "Transaktion rückgängig machen",
"description": "Eine Punktetransaktion anhand ihrer ID rückgängig machen — Strafen, Boni, manuelle Anpassungen (Hinzufügen/Entfernen) und Geschenke (beide Seiten). Automatische Transaktionen (Wochenend-/Serien-/Perfekte-Woche-Boni, Sparglas-Buchungen, Verfall, Zinsen) können nicht rückgängig gemacht werden.",
"fields": {
"transaction_id": {
"name": "Transaktions-ID",
"description": "Die ID der rückgängig zu machenden Punktetransaktion"
}
}
},
"claim_reward": {
"name": "Fordern Sie eine Belohnung an",
"description": "Das Kind erhält mit seinen Punkten eine Belohnung",
"fields": {
"reward_id": {
"name": "Prämien-ID",
"description": "Die ID der zu beanspruchenden Belohnung"
},
"child_id": {
"name": "Kinder-ID",
"description": "Die ID des Kindes, das die Belohnung beansprucht"
}
}
},
"approve_reward": {
"name": "Belohnung genehmigen",
"description": "Genehmigen Sie einen Prämienanspruch",
"fields": {
"claim_id": {
"name": "Anspruchs-ID",
"description": "Die ID des zu genehmigenden Prämienanspruchs"
}
}
},
"allocate_points_to_pool": {
"name": "Punkte dem Pool zuweisen",
"description": "Verschieben Sie Punkte vom ausgebbaren Guthaben eines Kindes in den Sparpool einer Belohnung (gesperrt).",
"fields": {
"child_id": {
"name": "Kinder-ID",
"description": "Die ID des Kindes, das die Zuweisung vornimmt"
},
"reward_id": {
"name": "Prämien-ID",
"description": "Die ID des Belohnungs-Pools, in den eingezahlt werden soll"
},
"points": {
"name": "Punkte",
"description": "Anzahl der zuzuweisenden Punkte (begrenzt durch Poolkapazität und ausgebbares Guthaben)"
}
}
},
"add_points": {
"name": "Punkte hinzufügen",
"description": "Fügen Sie einem Kind Bonuspunkte hinzu",
"fields": {
"child_id": {
"name": "Kinder-ID",
"description": "Die ID des Kindes, dem Punkte hinzugefügt werden sollen"
},
"points": {
"name": "Punkte",
"description": "Die Anzahl der hinzuzufügenden Punkte"
},
"reason": {
"name": "Grund",
"description": "Optionaler Grund für den Bonus"
}
}
},
"remove_points": {
"name": "Punkte entfernen",
"description": "Punkte von einem Kind abziehen (Strafe)",
"fields": {
"child_id": {
"name": "Kinder-ID",
"description": "Die ID des Kindes, von dem Punkte entfernt werden sollen"
},
"points": {
"name": "Punkte",
"description": "Die Anzahl der zu entfernenden Punkte"
},
"reason": {
"name": "Grund",
"description": "Optionaler Grund für die Strafe"
}
}
},
"reject_reward": {
"name": "Belohnung ablehnen",
"description": "Einen Prämienanspruch ablehnen",
"fields": {
"claim_id": {
"name": "Anspruchs-ID",
"description": "Die ID des abzulehnenden Prämienanspruchs"
}
}
},
"preview_sound": {
"name": "Vorschau des Tons",
"description": "Vorschau eines Abschlusssoundeffekts im Browser",
"fields": {
"sound": {
"name": "Klang",
"description": "Der Ton zur Vorschau"
}
}
},
"set_chore_order": {
"name": "Legen Sie die Aufgabenreihenfolge fest",
"description": "Legen Sie die Anzeigereihenfolge der Aufgaben für ein Kind fest",
"fields": {
"child_id": {
"name": "Kinder-ID",
"description": "Die ID des Kindes, für das die Aufgabenreihenfolge festgelegt werden soll"
},
"chore_order": {
"name": "Aufgabenreihenfolge",
"description": "Geordnete Liste der Aufgaben-IDs"
}
}
},
"add_penalty": {
"name": "Strafe hinzufügen",
"description": "Erstellen Sie eine neue Strafdefinition",
"fields": {
"name": {
"name": "Name",
"description": "Der Name der Strafe"
},
"points": {
"name": "Punkte",
"description": "Die Anzahl der Punkte, die bei der Anwendung abgezogen werden"
},
"description": {
"name": "Beschreibung",
"description": "Optionale Beschreibung der Strafe"
},
"icon": {
"name": "Symbol",
"description": "MDI-Symbol für den Elfmeter"
},
"assigned_to": {
"name": "Zugewiesen an",
"description": "Liste der Kinder-IDs, für die diese Strafe gilt"
}
}
},
"update_penalty": {
"name": "Strafe aktualisieren",
"description": "Aktualisieren Sie eine vorhandene Strafdefinition",
"fields": {
"penalty_id": {
"name": "Straf-ID",
"description": "Die ID der zu aktualisierenden Strafe"
},
"name": {
"name": "Name",
"description": "Neuer Name für den Elfmeter"
},
"points": {
"name": "Punkte",
"description": "Neuer Punktewert"
},
"description": {
"name": "Beschreibung",
"description": "Neue Beschreibung"
},
"icon": {
"name": "Symbol",
"description": "Neues Symbol"
},
"assigned_to": {
"name": "Zugewiesen an",
"description": "Neue Liste der Kinder-IDs"
}
}
},
"remove_penalty": {
"name": "Strafe entfernen",
"description": "Entfernen Sie eine Strafdefinition",
"fields": {
"penalty_id": {
"name": "Straf-ID",
"description": "Die ID der zu entfernenden Strafe"
}
}
},
"apply_penalty": {
"name": "Strafe anwenden",
"description": "Verhängen Sie eine Strafe gegen ein Kind und ziehen Sie Punkte ab",
"fields": {
"penalty_id": {
"name": "Straf-ID",
"description": "Die ID der anzuwendenden Strafe"
},
"child_id": {
"name": "Kinder-ID",
"description": "Die ID des Kindes, auf das die Strafe angewendet werden soll"
}
}
},
"add_bonus": {
"name": "Bonus hinzufügen",
"description": "Erstellen Sie eine neue Bonusdefinition",
"fields": {
"name": {
"name": "Name",
"description": "Der Name des Bonus"
},
"points": {
"name": "Punkte",
"description": "Die Anzahl der bei der Bewerbung zu vergebenden Punkte"
},
"description": {
"name": "Beschreibung",
"description": "Optionale Beschreibung des Bonus"
},
"icon": {
"name": "Symbol",
"description": "MDI-Symbol für den Bonus"
},
"assigned_to": {
"name": "Zugewiesen an",
"description": "Liste der Kinder-IDs, für die dieser Bonus gilt"
}
}
},
"update_bonus": {
"name": "Update-Bonus",
"description": "Aktualisieren Sie eine vorhandene Bonusdefinition",
"fields": {
"bonus_id": {
"name": "Bonus-ID",
"description": "Die ID des zu aktualisierenden Bonus"
},
"name": {
"name": "Name",
"description": "Neuer Name für den Bonus"
},
"points": {
"name": "Punkte",
"description": "Neuer Punktewert"
},
"description": {
"name": "Beschreibung",
"description": "Neue Beschreibung"
},
"icon": {
"name": "Symbol",
"description": "Neues Symbol"
},
"assigned_to": {
"name": "Zugewiesen an",
"description": "Neue Liste der Kinder-IDs"
}
}
},
"remove_bonus": {
"name": "Bonus entfernen",
"description": "Entfernen Sie eine Bonusdefinition",
"fields": {
"bonus_id": {
"name": "Bonus-ID",
"description": "Die ID des zu entfernenden Bonus"
}
}
},
"apply_bonus": {
"name": "Bonus anwenden",
"description": "Geben Sie einem Kind einen Bonus und vergeben Sie Punkte",
"fields": {
"bonus_id": {
"name": "Bonus-ID",
"description": "Die ID des anzuwendenden Bonus"
},
"child_id": {
"name": "Kinder-ID",
"description": "Die ID des Kindes, auf das der Bonus angewendet werden soll"
}
}
},
"add_chore": {
"name": "Aufgaben hinzufügen",
"description": "Erstellen Sie dynamisch eine neue Aufgabe, normalerweise aus einer Automatisierung oder einem Skript",
"fields": {
"name": {
"name": "Name",
"description": "Der Name der Aufgabe"
},
"description": {
"name": "Beschreibung",
"description": "Optionale Beschreibung der Aufgabe"
},
"points": {
"name": "Punkte",
"description": "Punkte werden vergeben, wenn diese Aufgabe erledigt ist"
},
"assigned_to": {
"name": "Zugewiesen an",
"description": "Liste der Kinder-IDs, denen diese Aufgabe zugewiesen werden soll. Lassen Sie das Feld leer, um es allen Kindern zuzuweisen"
},
"time_category": {
"name": "Zeitkategorie",
"description": "Wann diese Aufgabe erledigt sein sollte: morgens, nachmittags, abends, abends oder jederzeit"
},
"one_shot": {
"name": "One-Shot",
"description": "Wenn dies zutrifft, handelt es sich um eine einmalige Aufgabe, die nach Abschluss oder am Ende des Tages abläuft"
},
"requires_approval": {
"name": "Erfordert eine Genehmigung",
"description": "Wenn dies zutrifft, muss ein Elternteil den Abschluss genehmigen, bevor Punkte vergeben werden"
}
}
},
"skip_chore": {
"name": "Überspringen Sie lästige Aufgaben",
"description": "Führen Sie die heutige Rotation über den aktuellen Beauftragten hinaus weiter. Ephemeral die morgige Rotation wird wie gewohnt fortgesetzt.",
"fields": {
"chore_id": {
"name": "Aufgaben-ID",
"description": "Die ID der Aufgabe, die übersprungen werden soll"
}
}
},
"set_chore_manual_start": {
"name": "Manuelles Start-Kind festlegen",
"description": "Legen Sie fest, welches Kind eine rotierende Aufgabe beginnt. Im Wechselmodus ordnet dies den Pool neu; Bei „Zufällig/Ausgeglichen“ überschreibt es nur den heutigen Beauftragten.",
"fields": {
"chore_id": {
"name": "Aufgaben-ID",
"description": "Die ID des zu aktualisierenden Jobs"
},
"child_id": {
"name": "Kinder-ID",
"description": "Die ID des Kindes, das die Rotation starten soll"
}
}
},
"add_task_group": {
"name": "Aufgabengruppe hinzufügen",
"description": "Erstellen Sie eine Aufgabengruppe (festgelegt = dasselbe untergeordnete Element, verteilt = verschiedene untergeordnete Elemente).",
"fields": {
"name": {
"name": "Name",
"description": "Anzeigename für die Gruppe"
},
"policy": {
"name": "Richtlinie",
"description": "festglegt (gleiches Kind) oder verteilt (verschiedene Kinder)"
},
"chore_ids": {
"name": "Aufgaben-IDs",
"description": "Liste der Aufgaben-IDs in der Gruppe. Für Festgelegt ist die erste Aufgabe der Anführer."
}
}
},
"update_task_group": {
"name": "Aufgabengruppe aktualisieren",
"description": "Aktualisieren Sie den Namen, die Richtlinie oder die Mitgliedschaft einer Aufgabengruppe.",
"fields": {
"group_id": {
"name": "Gruppen-ID",
"description": "Die ID der zu aktualisierenden Gruppe"
},
"name": {
"name": "Name",
"description": "Neuer Anzeigename"
},
"policy": {
"name": "Richtlinie",
"description": "Neue Richtlinie (festgelegt oder verteilt)"
},
"chore_ids": {
"name": "Aufgaben-IDs",
"description": "Ersatz-Aufgaben-ID-Liste. Für Festgelegt ist die erste Aufgabe der Anführer."
}
}
},
"remove_task_group": {
"name": "Aufgabengruppe entfernen",
"description": "Löschen Sie eine Aufgabengruppe. Die Aufgaben der Mitglieder sind nicht betroffen.",
"fields": {
"group_id": {
"name": "Gruppen-ID",
"description": "Die ID der zu löschenden Gruppe"
}
}
},
"start_timed_task": {
"name": "Zeitbasierte Aufgabe starten",
"description": "Starten Sie den Timer einer zeitbasierten Aufgabe oder setzen Sie ihn fort",
"fields": {
"chore_id": {
"name": "Aufgaben-ID",
"description": "Die ID der zeitbasierten Aufgabe"
},
"child_id": {
"name": "Kinder-ID",
"description": "Die ID des Kindes, das den Timer startet"
}
}
},
"pause_timed_task": {
"name": "Zeitbasierte Aufgabe pausieren",
"description": "Pausieren Sie den laufenden Timer einer zeitbasierten Aufgabe",
"fields": {
"chore_id": {
"name": "Aufgaben-ID",
"description": "Die ID der zeitbasierten Aufgabe"
},
"child_id": {
"name": "Kinder-ID",
"description": "Die ID des Kindes, das den Timer pausiert"
}
}
},
"stop_timed_task": {
"name": "Zeitbasierte Aufgabe stoppen",
"description": "Stoppen Sie den Timer einer zeitbasierten Aufgabe und reichen Sie sie zur Genehmigung ein",
"fields": {
"chore_id": {
"name": "Aufgaben-ID",
"description": "Die ID der zeitbasierten Aufgabe"
},
"child_id": {
"name": "Kinder-ID",
"description": "Die ID des Kindes, das den Timer stoppt"
}
}
},
"add_badge": {
"name": "Abzeichen hinzufügen",
"description": "Erstellen Sie ein eigenes Abzeichen.",
"fields": {
"name": {
"name": "Name",
"description": "Der Anzeigename des Abzeichens"
},
"description": {
"name": "Beschreibung",
"description": "Beschreibung, wie das Abzeichen verdient wird"
},
"icon": {
"name": "Symbol",
"description": "Symbol für das Abzeichen (z. B. mdi:beach)"
},
"tier": {
"name": "Stufe",
"description": "Stufe des Abzeichens: Bronze, Silber, Gold oder Platin"
},
"point_bonus": {
"name": "Punktebonus",
"description": "Punkte, die dem Kind gutgeschrieben werden, wenn es das Abzeichen verdient"
},
"criteria": {
"name": "Kriterien",
"description": "Liste von metric / operator / value-Einträgen. Leer = nur manuelle Vergabe."
},
"assigned_to": {
"name": "Zugewiesen an",
"description": "Liste von Kinder-IDs (leer = alle)"
},
"notify_on_earn": {
"name": "Benachrichtigung beim Verdienen",
"description": "Senden Sie eine Benachrichtigung, wenn das Abzeichen verdient wird"
}
}
},
"update_badge": {
"name": "Abzeichen aktualisieren",
"description": "Aktualisieren Sie ein vorhandenes Abzeichen. Bei integrierten Abzeichen sind nur point_bonus, tier, assigned_to, enabled und notify_on_earn bearbeitbar.",
"fields": {
"badge_id": {
"name": "Abzeichen-ID",
"description": "Die ID des zu aktualisierenden Abzeichens"
},
"name": {
"name": "Name",
"description": "Neuer Anzeigename des Abzeichens"
},
"description": {
"name": "Beschreibung",
"description": "Neue Beschreibung des Abzeichens"
},
"icon": {
"name": "Symbol",
"description": "Neues Symbol für das Abzeichen"
},
"tier": {
"name": "Stufe",
"description": "Stufe des Abzeichens: Bronze, Silber, Gold oder Platin"
},
"point_bonus": {
"name": "Punktebonus",
"description": "Punkte, die dem Kind gutgeschrieben werden, wenn es das Abzeichen verdient"
},
"criteria": {
"name": "Kriterien",
"description": "Liste von metric / operator / value-Einträgen. Leer = nur manuelle Vergabe."
},
"assigned_to": {
"name": "Zugewiesen an",
"description": "Liste von Kinder-IDs (leer = alle)"
},
"enabled": {
"name": "Aktiviert",
"description": "Ob das Abzeichen aktiv ist"
},
"notify_on_earn": {
"name": "Benachrichtigung beim Verdienen",
"description": "Senden Sie eine Benachrichtigung, wenn das Abzeichen verdient wird"
}
}
},
"remove_badge": {
"name": "Abzeichen entfernen",
"description": "Entfernen Sie ein eigenes Abzeichen. Integrierte Abzeichen können nicht entfernt werden.",
"fields": {
"badge_id": {
"name": "Abzeichen-ID",
"description": "Die ID des zu entfernenden Abzeichens"
}
}
},
"award_badge_manually": {
"name": "Abzeichen manuell vergeben",
"description": "Vergeben Sie ein Abzeichen manuell an ein Kind.",
"fields": {
"badge_id": {
"name": "Abzeichen-ID",
"description": "Die ID des zu vergebenden Abzeichens"
},
"child_id": {
"name": "Kinder-ID",
"description": "Die ID des Kindes, das das Abzeichen erhält"
}
}
},
"revoke_badge": {
"name": "Abzeichen widerrufen",
"description": "Widerrufen Sie ein vergebenes Abzeichen. Wenn ein Punktebonus gutgeschrieben wurde, wird er rückgängig gemacht.",
"fields": {
"awarded_badge_id": {
"name": "ID des vergebenen Abzeichens",
"description": "Die ID des vergebenen Abzeichens, das widerrufen werden soll"
}
}
},
"rebuild_badges": {
"name": "Abzeichen neu berechnen",
"description": "Bewerten Sie alle Abzeichen für alle Kinder im Hintergrund neu (keine Benachrichtigungen, keine Punkteboni)."
},
"apply_mandatory_penalty": {
"name": "Pflichtstrafe anwenden",
"description": "Zieht die konfigurierten Strafpunkte für eine verpasste Pflichtaufgabe ab und entfernt den Prüfeintrag.",
"fields": {
"miss_id": {
"name": "Versäumnis-ID",
"description": "Die ID des Prüfeintrags für die verpasste Pflichtaufgabe"
}
}
},
"choose_avatar": {
"name": "Avatar wählen",
"description": "Ein Kind wechselt zu einem freigeschalteten Avatar.",
"fields": {
"child_id": {
"name": "Kind-ID",
"description": "Die ID des Kindes"
},
"icon": {
"name": "Avatar-Symbol",
"description": "Das mdi-Symbol eines freigeschalteten Katalog-Avatars (z. B. mdi:rocket-launch)."
}
}
},
"dismiss_mandatory_chore": {
"name": "Pflichtaufgabe verwerfen",
"description": "Entfernt den Prüfeintrag einer verpassten Pflichtaufgabe ohne Strafe.",
"fields": {
"miss_id": {
"name": "Versäumnis-ID",
"description": "Die ID des Prüfeintrags für die verpasste Pflichtaufgabe"
}
}
},
"gift_points": {
"name": "Punkte verschenken",
"description": "Überträgt ausgebbare Punkte von einem Kind auf ein anderes (elterngesteuert).",
"fields": {
"from_child_id": {
"name": "Von Kind-ID",
"description": "Die ID des Kindes, das Punkte sendet"
},
"to_child_id": {
"name": "An Kind-ID",
"description": "Die ID des Kindes, das Punkte erhält"
},
"points": {
"name": "Punkte",
"description": "Die Anzahl der zu übertragenden Punkte"
}
}
},
"postpone_mandatory_chore": {
"name": "Pflichtaufgabe verschieben",
"description": "Gewährt einer verpassten Pflichtaufgabe ohne Strafe einen weiteren Zeitraum (oder morgen) und entfernt den Prüfeintrag.",
"fields": {
"miss_id": {
"name": "Versäumnis-ID",
"description": "Die ID des Prüfeintrags für die verpasste Pflichtaufgabe"
}
}
},
"request_swap": {
"name": "Aufgabentausch anfragen",
"description": "Ein Kind beantragt, die heutige Rotationszuweisung einer Aufgabe zu übernehmen (Genehmigung der Eltern erforderlich).",
"fields": {
"chore_id": {
"name": "Aufgaben-ID",
"description": "Die ID der zu übernehmenden Aufgabe"
},
"requester_id": {
"name": "Anfragende Kind-ID",
"description": "Die ID des Kindes, das den Tausch beantragt"
}
}
},
"test_notification": {
"name": "Test-Benachrichtigung",
"description": "Sendet eine Beispiel-Benachrichtigung des angegebenen Typs an die aktivierten Empfänger (ignoriert den Hauptschalter, damit das Routing geprüft werden kann).",
"fields": {
"type_id": {
"name": "Benachrichtigungstyp",
"description": "ID des Benachrichtigungstyps, z. B. pending_chore_approval, badge_earned, streak_milestone"
}
}
},
"record_allowance_payout": {
"name": "Taschengeld-Auszahlung erfassen",
"description": "Punkte abziehen und eine reale Taschengeld-Auszahlung im Verlauf erfassen (fester Umrechnungskurs; elterngesteuert).",
"fields": {
"child_id": {
"name": "Kind-ID",
"description": "Die ID des Kindes, das die Auszahlung erhält"
},
"points": {
"name": "Punkte",
"description": "Punkte, die in Bargeld umgerechnet und abgezogen werden"
}
}
}
},
"entity": {
"sensor": {
"child_stats": {
"unit_of_measurement": "Aufgaben"
},
"child_badges": {
"unit_of_measurement": "Abzeichen"
}
},
"number": {
"weekend_multiplier": {
"name": "Wochenend-Multiplikator"
},
"perfect_week_bonus": {
"name": "Bonus für perfekte Woche"
}
},
"select": {
"streak_reset_mode": {
"name": "Streak-Zurücksetzmodus"
},
"card_design": {
"name": "Kartendesign"
}
}
}
}
@@ -0,0 +1,884 @@
{
"config": {
"step": {
"user": {
"title": "Welcome to TaskMate!",
"description": "Set up your family chore management system. You can customize the points currency that children will earn.",
"data": {
"points_name": "Points Currency Name (e.g., Stars, Coins, Bucks)",
"points_icon": "Points Icon"
}
}
},
"error": {
"name_required": "Name is required"
},
"abort": {
"already_configured": "TaskMate is already configured"
}
},
"selector": {
"chore_action": {
"options": {
"save": "Save Changes",
"re_enable": "Re-enable Chore",
"disable": "Disable Chore",
"delete": "Delete This Chore"
}
},
"reward_action": {
"options": {
"save": "Save Changes",
"delete": "Delete Reward"
}
},
"time_category": {
"options": {
"morning": "Morning",
"afternoon": "Afternoon",
"evening": "Evening",
"night": "Night",
"anytime": "Anytime"
}
},
"schedule_mode": {
"options": {
"specific_days": "Specific days of the week",
"recurring": "Recurring (every N days/weeks/months)",
"one_shot": "One-time task (single day)"
}
},
"due_days_option": {
"options": {
"monday": "Monday",
"tuesday": "Tuesday",
"wednesday": "Wednesday",
"thursday": "Thursday",
"friday": "Friday",
"saturday": "Saturday",
"sunday": "Sunday"
}
},
"recurrence": {
"options": {
"every_2_days": "Every 2 days",
"weekly": "Weekly",
"every_2_weeks": "Every 2 weeks",
"monthly": "Monthly",
"every_3_months": "Every 3 months",
"every_6_months": "Every 6 months"
}
},
"recurrence_day_option": {
"options": {
"monday": "Monday",
"tuesday": "Tuesday",
"wednesday": "Wednesday",
"thursday": "Thursday",
"friday": "Friday",
"saturday": "Saturday",
"sunday": "Sunday",
"any_day": "Any day"
}
},
"first_occurrence_mode": {
"options": {
"available_immediately": "Available immediately",
"wait_for_first_occurrence": "Wait for first scheduled occurrence"
}
},
"streak_reset_mode": {
"options": {
"reset": "Reset — streak goes to 0 on missed day",
"pause": "Pause — streak preserved until next completion"
}
},
"visibility_operator": {
"options": {
"none": "No filter — Always show chore",
"equals": "Equals — Show when entity state matches exactly",
"not_equals": "Not Equal — Show when entity state does not match",
"gte": "Greater than or equal (≥) — Show when numeric value is ≥ target",
"lte": "Less than or equal (≤) — Show when numeric value is ≤ target",
"gt": "Greater than (>) — Show when numeric value is > target",
"lt": "Less than (<) — Show when numeric value is < target"
}
},
"assignment_mode": {
"options": {
"everyone": "Everyone — every assigned child sees the chore",
"alternating": "Alternating — rotate through the assigned children, one per day",
"random": "Random — pick one assigned child at random each day",
"balanced": "Balanced — split today's balanced chores evenly across the assigned children",
"first_come": "First come, first served — first child to complete it wins; it hides for the rest",
"unassigned": "Unassigned — no child sees this chore"
}
},
"task_group_policy": {
"options": {
"sticky": "Sticky — same child for all chores in the group",
"spread": "Spread — different children across the group today"
}
},
"task_group_action": {
"options": {
"save": "Save Changes",
"delete": "Delete Group"
}
}
},
"services": {
"complete_chore": {
"name": "Complete Chore",
"description": "Mark a chore as completed by a child",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to complete"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child completing the chore"
}
}
},
"complete_bonus_subtask": {
"name": "Complete Bonus Sub-task",
"description": "Complete a bonus sub-task after the parent chore is done",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the parent chore"
},
"bonus_subtask_id": {
"name": "Bonus Sub-task ID",
"description": "The ID of the bonus sub-task to complete"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child completing the bonus sub-task"
}
}
},
"approve_chore": {
"name": "Approve Chore",
"description": "Approve a completed chore and award points",
"fields": {
"completion_id": {
"name": "Completion ID",
"description": "The ID of the chore completion to approve"
}
}
},
"approve_all_chores": {
"name": "Approve All Chores",
"description": "Approve all pending chore completions (or a specific set) and award points",
"fields": {
"completion_ids": {
"name": "Completion IDs",
"description": "Specific completion IDs to approve; omit to approve all pending"
}
}
},
"reject_chore": {
"name": "Reject Chore",
"description": "Reject a completed chore",
"fields": {
"completion_id": {
"name": "Completion ID",
"description": "The ID of the chore completion to reject"
}
}
},
"undo_chore_approval": {
"name": "Undo Chore Approval",
"description": "Reverse an accidental chore approval — removes the awarded points and returns the completion to pending so it can be approved again.",
"fields": {
"completion_id": {
"name": "Completion ID",
"description": "The ID of the approved chore completion to revert to pending"
}
}
},
"undo_transaction": {
"name": "Undo Transaction",
"description": "Reverse a points transaction by its ID — penalties, bonuses, manual add/remove adjustments and gifts (both legs). Automatic transactions (weekend/streak/perfect-week bonuses, pool moves, decay, interest) can't be undone.",
"fields": {
"transaction_id": {
"name": "Transaction ID",
"description": "The ID of the points transaction to reverse"
}
}
},
"claim_reward": {
"name": "Claim Reward",
"description": "Child claims a reward using their points",
"fields": {
"reward_id": {
"name": "Reward ID",
"description": "The ID of the reward to claim"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child claiming the reward"
}
}
},
"approve_reward": {
"name": "Approve Reward",
"description": "Approve a reward claim",
"fields": {
"claim_id": {
"name": "Claim ID",
"description": "The ID of the reward claim to approve"
}
}
},
"allocate_points_to_pool": {
"name": "Allocate Points to Pool",
"description": "Move points from a child's spendable balance into a reward's savings pool (locked).",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child making the allocation"
},
"reward_id": {
"name": "Reward ID",
"description": "The ID of the reward pool to deposit into"
},
"points": {
"name": "Points",
"description": "Number of points to allocate (capped at pool capacity and spendable balance)"
}
}
},
"add_points": {
"name": "Add Points",
"description": "Add bonus points to a child",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child to add points to"
},
"points": {
"name": "Points",
"description": "The number of points to add"
},
"reason": {
"name": "Reason",
"description": "Optional reason for the bonus"
}
}
},
"remove_points": {
"name": "Remove Points",
"description": "Remove points from a child (penalty)",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child to remove points from"
},
"points": {
"name": "Points",
"description": "The number of points to remove"
},
"reason": {
"name": "Reason",
"description": "Optional reason for the penalty"
}
}
},
"reject_reward": {
"name": "Reject Reward",
"description": "Reject a reward claim",
"fields": {
"claim_id": {
"name": "Claim ID",
"description": "The ID of the reward claim to reject"
}
}
},
"preview_sound": {
"name": "Preview Sound",
"description": "Preview a completion sound effect in the browser",
"fields": {
"sound": {
"name": "Sound",
"description": "The sound to preview"
}
}
},
"set_chore_order": {
"name": "Set Chore Order",
"description": "Set the display order of chores for a child",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child to set chore order for"
},
"chore_order": {
"name": "Chore Order",
"description": "Ordered list of chore IDs"
}
}
},
"add_penalty": {
"name": "Add Penalty",
"description": "Create a new penalty definition",
"fields": {
"name": {
"name": "Name",
"description": "The name of the penalty"
},
"points": {
"name": "Points",
"description": "The number of points to deduct when applied"
},
"description": {
"name": "Description",
"description": "Optional description of the penalty"
},
"icon": {
"name": "Icon",
"description": "MDI icon for the penalty"
},
"assigned_to": {
"name": "Assigned To",
"description": "List of child IDs this penalty applies to"
}
}
},
"update_penalty": {
"name": "Update Penalty",
"description": "Update an existing penalty definition",
"fields": {
"penalty_id": {
"name": "Penalty ID",
"description": "The ID of the penalty to update"
},
"name": {
"name": "Name",
"description": "New name for the penalty"
},
"points": {
"name": "Points",
"description": "New points value"
},
"description": {
"name": "Description",
"description": "New description"
},
"icon": {
"name": "Icon",
"description": "New icon"
},
"assigned_to": {
"name": "Assigned To",
"description": "New list of child IDs"
}
}
},
"remove_penalty": {
"name": "Remove Penalty",
"description": "Remove a penalty definition",
"fields": {
"penalty_id": {
"name": "Penalty ID",
"description": "The ID of the penalty to remove"
}
}
},
"apply_penalty": {
"name": "Apply Penalty",
"description": "Apply a penalty to a child, deducting points",
"fields": {
"penalty_id": {
"name": "Penalty ID",
"description": "The ID of the penalty to apply"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child to apply the penalty to"
}
}
},
"add_bonus": {
"name": "Add Bonus",
"description": "Create a new bonus definition",
"fields": {
"name": {
"name": "Name",
"description": "The name of the bonus"
},
"points": {
"name": "Points",
"description": "The number of points to award when applied"
},
"description": {
"name": "Description",
"description": "Optional description of the bonus"
},
"icon": {
"name": "Icon",
"description": "MDI icon for the bonus"
},
"assigned_to": {
"name": "Assigned To",
"description": "List of child IDs this bonus applies to"
}
}
},
"update_bonus": {
"name": "Update Bonus",
"description": "Update an existing bonus definition",
"fields": {
"bonus_id": {
"name": "Bonus ID",
"description": "The ID of the bonus to update"
},
"name": {
"name": "Name",
"description": "New name for the bonus"
},
"points": {
"name": "Points",
"description": "New points value"
},
"description": {
"name": "Description",
"description": "New description"
},
"icon": {
"name": "Icon",
"description": "New icon"
},
"assigned_to": {
"name": "Assigned To",
"description": "New list of child IDs"
}
}
},
"remove_bonus": {
"name": "Remove Bonus",
"description": "Remove a bonus definition",
"fields": {
"bonus_id": {
"name": "Bonus ID",
"description": "The ID of the bonus to remove"
}
}
},
"apply_bonus": {
"name": "Apply Bonus",
"description": "Apply a bonus to a child, awarding points",
"fields": {
"bonus_id": {
"name": "Bonus ID",
"description": "The ID of the bonus to apply"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child to apply the bonus to"
}
}
},
"add_chore": {
"name": "Add Chore",
"description": "Create a new chore dynamically, typically from an automation or script",
"fields": {
"name": {
"name": "Name",
"description": "The name of the chore"
},
"description": {
"name": "Description",
"description": "Optional description of the chore"
},
"points": {
"name": "Points",
"description": "Points awarded when this chore is completed"
},
"assigned_to": {
"name": "Assigned To",
"description": "List of child IDs to assign this chore to. Leave empty to assign to all children"
},
"time_category": {
"name": "Time Category",
"description": "When this chore should be completed: morning, afternoon, evening, night, or anytime"
},
"one_shot": {
"name": "One-Shot",
"description": "If true, this is a one-time chore that expires after being completed or at the end of the day"
},
"requires_approval": {
"name": "Requires Approval",
"description": "If true, a parent must approve the completion before points are awarded"
}
}
},
"skip_chore": {
"name": "Skip Chore",
"description": "Advance today's rotation past the current assignee. Ephemeral — tomorrow's rotation resumes as normal.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to skip"
}
}
},
"set_chore_manual_start": {
"name": "Set Manual Start Child",
"description": "Set which child starts a rotating chore. For alternating mode this reorders the pool; for random/balanced it only overrides today's assignee.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to update"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child who should start the rotation"
}
}
},
"add_task_group": {
"name": "Add Task Group",
"description": "Create a task group (sticky = same child, spread = different children).",
"fields": {
"name": {
"name": "Name",
"description": "Display name for the group"
},
"policy": {
"name": "Policy",
"description": "sticky (same child) or spread (different children)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "List of chore IDs in the group. For sticky, the first chore is the leader."
}
}
},
"update_task_group": {
"name": "Update Task Group",
"description": "Update a task group's name, policy, or membership.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to update"
},
"name": {
"name": "Name",
"description": "New display name"
},
"policy": {
"name": "Policy",
"description": "New policy (sticky or spread)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "Replacement chore ID list. For sticky, the first chore is the leader."
}
}
},
"remove_task_group": {
"name": "Remove Task Group",
"description": "Delete a task group. Member chores are not affected.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to delete"
}
}
},
"start_timed_task": {
"name": "Start Timed Task",
"description": "Start or resume the timer on a timed task",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the timed chore"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child starting the timer"
}
}
},
"pause_timed_task": {
"name": "Pause Timed Task",
"description": "Pause a running timed task timer",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the timed chore"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child pausing the timer"
}
}
},
"stop_timed_task": {
"name": "Stop Timed Task",
"description": "Stop a timed task timer and submit for approval",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the timed chore"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child stopping the timer"
}
}
},
"add_badge": {
"name": "Add Badge",
"description": "Create a custom badge.",
"fields": {
"name": {
"name": "Name",
"description": "The display name of the badge"
},
"description": {
"name": "Description",
"description": "Description of how the badge is earned"
},
"icon": {
"name": "Icon",
"description": "Icon for the badge (e.g. mdi:beach)"
},
"tier": {
"name": "Tier",
"description": "Badge tier: bronze, silver, gold or platinum"
},
"point_bonus": {
"name": "Point bonus",
"description": "Points credited to the child when the badge is earned"
},
"criteria": {
"name": "Criteria",
"description": "List of metric / operator / value dicts. Empty = manual-award only."
},
"assigned_to": {
"name": "Assigned to",
"description": "List of child IDs (empty = all)"
},
"notify_on_earn": {
"name": "Notify on earn",
"description": "Send a notification when the badge is earned"
}
}
},
"update_badge": {
"name": "Update Badge",
"description": "Update an existing badge. For built-ins, only point_bonus, tier, assigned_to, enabled, notify_on_earn are editable.",
"fields": {
"badge_id": {
"name": "Badge ID",
"description": "The ID of the badge to update"
},
"name": {
"name": "Name",
"description": "New display name of the badge"
},
"description": {
"name": "Description",
"description": "New description of the badge"
},
"icon": {
"name": "Icon",
"description": "New icon for the badge"
},
"tier": {
"name": "Tier",
"description": "Badge tier: bronze, silver, gold or platinum"
},
"point_bonus": {
"name": "Point bonus",
"description": "Points credited to the child when the badge is earned"
},
"criteria": {
"name": "Criteria",
"description": "List of metric / operator / value dicts. Empty = manual-award only."
},
"assigned_to": {
"name": "Assigned to",
"description": "List of child IDs (empty = all)"
},
"enabled": {
"name": "Enabled",
"description": "Whether the badge is active"
},
"notify_on_earn": {
"name": "Notify on earn",
"description": "Send a notification when the badge is earned"
}
}
},
"remove_badge": {
"name": "Remove Badge",
"description": "Remove a custom badge. Built-ins cannot be removed.",
"fields": {
"badge_id": {
"name": "Badge ID",
"description": "The ID of the badge to remove"
}
}
},
"award_badge_manually": {
"name": "Award Badge Manually",
"description": "Manually award a badge to a child.",
"fields": {
"badge_id": {
"name": "Badge ID",
"description": "The ID of the badge to award"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child receiving the badge"
}
}
},
"revoke_badge": {
"name": "Revoke Badge",
"description": "Revoke an awarded badge. If a point bonus was credited, it is reversed.",
"fields": {
"awarded_badge_id": {
"name": "Awarded Badge ID",
"description": "The ID of the awarded badge record to revoke"
}
}
},
"rebuild_badges": {
"name": "Rebuild Badges",
"description": "Re-evaluate all badges across all children silently (no notifications, no point bonuses)."
},
"apply_mandatory_penalty": {
"name": "Apply Mandatory Penalty",
"description": "Deduct the configured penalty points for a missed mandatory chore and clear the review item.",
"fields": {
"miss_id": {
"name": "Miss ID",
"description": "The ID of the mandatory-miss review item"
}
}
},
"choose_avatar": {
"name": "Choose Avatar",
"description": "A child switches to an avatar they have unlocked.",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child"
},
"icon": {
"name": "Avatar icon",
"description": "The mdi icon of an unlocked catalogue avatar (e.g. mdi:rocket-launch)."
}
}
},
"dismiss_mandatory_chore": {
"name": "Dismiss Mandatory Chore",
"description": "Clear a missed mandatory chore review item with no penalty.",
"fields": {
"miss_id": {
"name": "Miss ID",
"description": "The ID of the mandatory-miss review item"
}
}
},
"gift_points": {
"name": "Gift Points",
"description": "Transfer spendable points from one child to another (parent-controlled).",
"fields": {
"from_child_id": {
"name": "From child ID",
"description": "The ID of the child sending points"
},
"to_child_id": {
"name": "To child ID",
"description": "The ID of the child receiving points"
},
"points": {
"name": "Points",
"description": "The number of points to transfer"
}
}
},
"postpone_mandatory_chore": {
"name": "Postpone Mandatory Chore",
"description": "Give a missed mandatory chore another period (or tomorrow) without a penalty, and clear the review item.",
"fields": {
"miss_id": {
"name": "Miss ID",
"description": "The ID of the mandatory-miss review item"
}
}
},
"request_swap": {
"name": "Request Chore Swap",
"description": "A child requests to take over today's rotation assignment of a chore (pending parent approval).",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to take over"
},
"requester_id": {
"name": "Requester child ID",
"description": "The ID of the child requesting the swap"
}
}
},
"test_notification": {
"name": "Test Notification",
"description": "Send a sample notification of the given type to its enabled recipients (ignores the master on/off so routing can be verified).",
"fields": {
"type_id": {
"name": "Notification type",
"description": "Notification type id, e.g. pending_chore_approval, badge_earned, streak_milestone"
}
}
},
"record_allowance_payout": {
"name": "Record Allowance Payout",
"description": "Deduct points and record a real-money allowance payout in the ledger (fixed conversion rate; parent-controlled).",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child receiving the payout"
},
"points": {
"name": "Points",
"description": "Points to convert to cash and deduct"
}
}
}
},
"entity": {
"sensor": {
"child_stats": {
"unit_of_measurement": "chores"
},
"child_badges": {
"unit_of_measurement": "badges"
}
},
"number": {
"weekend_multiplier": {
"name": "Weekend multiplier"
},
"perfect_week_bonus": {
"name": "Perfect week bonus"
}
},
"select": {
"streak_reset_mode": {
"name": "Streak reset mode"
},
"card_design": {
"name": "Card design"
}
}
}
}
@@ -0,0 +1,884 @@
{
"config": {
"step": {
"user": {
"title": "Welcome to TaskMate!",
"description": "Set up your family chore management system. You can customize the points currency that children will earn.",
"data": {
"points_name": "Points Currency Name (e.g., Stars, Coins, Bucks)",
"points_icon": "Points Icon"
}
}
},
"error": {
"name_required": "Name is required"
},
"abort": {
"already_configured": "TaskMate is already configured"
}
},
"selector": {
"chore_action": {
"options": {
"save": "Save Changes",
"re_enable": "Re-enable Chore",
"disable": "Disable Chore",
"delete": "Delete This Chore"
}
},
"reward_action": {
"options": {
"save": "Save Changes",
"delete": "Delete Reward"
}
},
"time_category": {
"options": {
"morning": "Morning",
"afternoon": "Afternoon",
"evening": "Evening",
"night": "Night",
"anytime": "Anytime"
}
},
"schedule_mode": {
"options": {
"specific_days": "Specific days of the week",
"recurring": "Recurring (every N days/weeks/months)",
"one_shot": "One-time task (single day)"
}
},
"due_days_option": {
"options": {
"monday": "Monday",
"tuesday": "Tuesday",
"wednesday": "Wednesday",
"thursday": "Thursday",
"friday": "Friday",
"saturday": "Saturday",
"sunday": "Sunday"
}
},
"recurrence": {
"options": {
"every_2_days": "Every 2 days",
"weekly": "Weekly",
"every_2_weeks": "Every 2 weeks",
"monthly": "Monthly",
"every_3_months": "Every 3 months",
"every_6_months": "Every 6 months"
}
},
"recurrence_day_option": {
"options": {
"monday": "Monday",
"tuesday": "Tuesday",
"wednesday": "Wednesday",
"thursday": "Thursday",
"friday": "Friday",
"saturday": "Saturday",
"sunday": "Sunday",
"any_day": "Any day"
}
},
"first_occurrence_mode": {
"options": {
"available_immediately": "Available immediately",
"wait_for_first_occurrence": "Wait for first scheduled occurrence"
}
},
"streak_reset_mode": {
"options": {
"reset": "Reset — streak goes to 0 on missed day",
"pause": "Pause — streak preserved until next completion"
}
},
"visibility_operator": {
"options": {
"none": "No filter — Always show chore",
"equals": "Equals — Show when entity state matches exactly",
"not_equals": "Not Equal — Show when entity state does not match",
"gte": "Greater than or equal (≥) — Show when numeric value is ≥ target",
"lte": "Less than or equal (≤) — Show when numeric value is ≤ target",
"gt": "Greater than (>) — Show when numeric value is > target",
"lt": "Less than (<) — Show when numeric value is < target"
}
},
"assignment_mode": {
"options": {
"everyone": "Everyone — every assigned child sees the chore",
"alternating": "Alternating — rotate through the assigned children, one per day",
"random": "Random — pick one assigned child at random each day",
"balanced": "Balanced — split today's balanced chores evenly across the assigned children",
"first_come": "First come, first served — first child to complete it wins; it hides for the rest",
"unassigned": "Unassigned — no child sees this chore"
}
},
"task_group_policy": {
"options": {
"sticky": "Sticky — same child for all chores in the group",
"spread": "Spread — different children across the group today"
}
},
"task_group_action": {
"options": {
"save": "Save Changes",
"delete": "Delete Group"
}
}
},
"services": {
"complete_chore": {
"name": "Complete Chore",
"description": "Mark a chore as completed by a child",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to complete"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child completing the chore"
}
}
},
"complete_bonus_subtask": {
"name": "Complete Bonus Sub-task",
"description": "Complete a bonus sub-task after the parent chore is done",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the parent chore"
},
"bonus_subtask_id": {
"name": "Bonus Sub-task ID",
"description": "The ID of the bonus sub-task to complete"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child completing the bonus sub-task"
}
}
},
"approve_chore": {
"name": "Approve Chore",
"description": "Approve a completed chore and award points",
"fields": {
"completion_id": {
"name": "Completion ID",
"description": "The ID of the chore completion to approve"
}
}
},
"approve_all_chores": {
"name": "Approve All Chores",
"description": "Approve all pending chore completions (or a specific set) and award points",
"fields": {
"completion_ids": {
"name": "Completion IDs",
"description": "Specific completion IDs to approve; omit to approve all pending"
}
}
},
"reject_chore": {
"name": "Reject Chore",
"description": "Reject a completed chore",
"fields": {
"completion_id": {
"name": "Completion ID",
"description": "The ID of the chore completion to reject"
}
}
},
"undo_chore_approval": {
"name": "Undo Chore Approval",
"description": "Reverse an accidental chore approval — removes the awarded points and returns the completion to pending so it can be approved again.",
"fields": {
"completion_id": {
"name": "Completion ID",
"description": "The ID of the approved chore completion to revert to pending"
}
}
},
"undo_transaction": {
"name": "Undo Transaction",
"description": "Reverse a points transaction by its ID — penalties, bonuses, manual add/remove adjustments and gifts (both legs). Automatic transactions (weekend/streak/perfect-week bonuses, pool moves, decay, interest) can't be undone.",
"fields": {
"transaction_id": {
"name": "Transaction ID",
"description": "The ID of the points transaction to reverse"
}
}
},
"claim_reward": {
"name": "Claim Reward",
"description": "Child claims a reward using their points",
"fields": {
"reward_id": {
"name": "Reward ID",
"description": "The ID of the reward to claim"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child claiming the reward"
}
}
},
"approve_reward": {
"name": "Approve Reward",
"description": "Approve a reward claim",
"fields": {
"claim_id": {
"name": "Claim ID",
"description": "The ID of the reward claim to approve"
}
}
},
"allocate_points_to_pool": {
"name": "Allocate Points to Pool",
"description": "Move points from a child's spendable balance into a reward's savings pool (locked).",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child making the allocation"
},
"reward_id": {
"name": "Reward ID",
"description": "The ID of the reward pool to deposit into"
},
"points": {
"name": "Points",
"description": "Number of points to allocate (capped at pool capacity and spendable balance)"
}
}
},
"add_points": {
"name": "Add Points",
"description": "Add bonus points to a child",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child to add points to"
},
"points": {
"name": "Points",
"description": "The number of points to add"
},
"reason": {
"name": "Reason",
"description": "Optional reason for the bonus"
}
}
},
"remove_points": {
"name": "Remove Points",
"description": "Remove points from a child (penalty)",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child to remove points from"
},
"points": {
"name": "Points",
"description": "The number of points to remove"
},
"reason": {
"name": "Reason",
"description": "Optional reason for the penalty"
}
}
},
"reject_reward": {
"name": "Reject Reward",
"description": "Reject a reward claim",
"fields": {
"claim_id": {
"name": "Claim ID",
"description": "The ID of the reward claim to reject"
}
}
},
"preview_sound": {
"name": "Preview Sound",
"description": "Preview a completion sound effect in the browser",
"fields": {
"sound": {
"name": "Sound",
"description": "The sound to preview"
}
}
},
"set_chore_order": {
"name": "Set Chore Order",
"description": "Set the display order of chores for a child",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child to set chore order for"
},
"chore_order": {
"name": "Chore Order",
"description": "Ordered list of chore IDs"
}
}
},
"add_penalty": {
"name": "Add Penalty",
"description": "Create a new penalty definition",
"fields": {
"name": {
"name": "Name",
"description": "The name of the penalty"
},
"points": {
"name": "Points",
"description": "The number of points to deduct when applied"
},
"description": {
"name": "Description",
"description": "Optional description of the penalty"
},
"icon": {
"name": "Icon",
"description": "MDI icon for the penalty"
},
"assigned_to": {
"name": "Assigned To",
"description": "List of child IDs this penalty applies to"
}
}
},
"update_penalty": {
"name": "Update Penalty",
"description": "Update an existing penalty definition",
"fields": {
"penalty_id": {
"name": "Penalty ID",
"description": "The ID of the penalty to update"
},
"name": {
"name": "Name",
"description": "New name for the penalty"
},
"points": {
"name": "Points",
"description": "New points value"
},
"description": {
"name": "Description",
"description": "New description"
},
"icon": {
"name": "Icon",
"description": "New icon"
},
"assigned_to": {
"name": "Assigned To",
"description": "New list of child IDs"
}
}
},
"remove_penalty": {
"name": "Remove Penalty",
"description": "Remove a penalty definition",
"fields": {
"penalty_id": {
"name": "Penalty ID",
"description": "The ID of the penalty to remove"
}
}
},
"apply_penalty": {
"name": "Apply Penalty",
"description": "Apply a penalty to a child, deducting points",
"fields": {
"penalty_id": {
"name": "Penalty ID",
"description": "The ID of the penalty to apply"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child to apply the penalty to"
}
}
},
"add_bonus": {
"name": "Add Bonus",
"description": "Create a new bonus definition",
"fields": {
"name": {
"name": "Name",
"description": "The name of the bonus"
},
"points": {
"name": "Points",
"description": "The number of points to award when applied"
},
"description": {
"name": "Description",
"description": "Optional description of the bonus"
},
"icon": {
"name": "Icon",
"description": "MDI icon for the bonus"
},
"assigned_to": {
"name": "Assigned To",
"description": "List of child IDs this bonus applies to"
}
}
},
"update_bonus": {
"name": "Update Bonus",
"description": "Update an existing bonus definition",
"fields": {
"bonus_id": {
"name": "Bonus ID",
"description": "The ID of the bonus to update"
},
"name": {
"name": "Name",
"description": "New name for the bonus"
},
"points": {
"name": "Points",
"description": "New points value"
},
"description": {
"name": "Description",
"description": "New description"
},
"icon": {
"name": "Icon",
"description": "New icon"
},
"assigned_to": {
"name": "Assigned To",
"description": "New list of child IDs"
}
}
},
"remove_bonus": {
"name": "Remove Bonus",
"description": "Remove a bonus definition",
"fields": {
"bonus_id": {
"name": "Bonus ID",
"description": "The ID of the bonus to remove"
}
}
},
"apply_bonus": {
"name": "Apply Bonus",
"description": "Apply a bonus to a child, awarding points",
"fields": {
"bonus_id": {
"name": "Bonus ID",
"description": "The ID of the bonus to apply"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child to apply the bonus to"
}
}
},
"add_chore": {
"name": "Add Chore",
"description": "Create a new chore dynamically, typically from an automation or script",
"fields": {
"name": {
"name": "Name",
"description": "The name of the chore"
},
"description": {
"name": "Description",
"description": "Optional description of the chore"
},
"points": {
"name": "Points",
"description": "Points awarded when this chore is completed"
},
"assigned_to": {
"name": "Assigned To",
"description": "List of child IDs to assign this chore to. Leave empty to assign to all children"
},
"time_category": {
"name": "Time Category",
"description": "When this chore should be completed: morning, afternoon, evening, night, or anytime"
},
"one_shot": {
"name": "One-Shot",
"description": "If true, this is a one-time chore that expires after being completed or at the end of the day"
},
"requires_approval": {
"name": "Requires Approval",
"description": "If true, a parent must approve the completion before points are awarded"
}
}
},
"skip_chore": {
"name": "Skip Chore",
"description": "Advance today's rotation past the current assignee. Ephemeral — tomorrow's rotation resumes as normal.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to skip"
}
}
},
"set_chore_manual_start": {
"name": "Set Manual Start Child",
"description": "Set which child starts a rotating chore. For alternating mode this reorders the pool; for random/balanced it only overrides today's assignee.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to update"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child who should start the rotation"
}
}
},
"add_task_group": {
"name": "Add Task Group",
"description": "Create a task group (sticky = same child, spread = different children).",
"fields": {
"name": {
"name": "Name",
"description": "Display name for the group"
},
"policy": {
"name": "Policy",
"description": "sticky (same child) or spread (different children)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "List of chore IDs in the group. For sticky, the first chore is the leader."
}
}
},
"update_task_group": {
"name": "Update Task Group",
"description": "Update a task group's name, policy, or membership.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to update"
},
"name": {
"name": "Name",
"description": "New display name"
},
"policy": {
"name": "Policy",
"description": "New policy (sticky or spread)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "Replacement chore ID list. For sticky, the first chore is the leader."
}
}
},
"remove_task_group": {
"name": "Remove Task Group",
"description": "Delete a task group. Member chores are not affected.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to delete"
}
}
},
"start_timed_task": {
"name": "Start Timed Task",
"description": "Start or resume the timer on a timed task",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the timed chore"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child starting the timer"
}
}
},
"pause_timed_task": {
"name": "Pause Timed Task",
"description": "Pause a running timed task timer",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the timed chore"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child pausing the timer"
}
}
},
"stop_timed_task": {
"name": "Stop Timed Task",
"description": "Stop a timed task timer and submit for approval",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the timed chore"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child stopping the timer"
}
}
},
"add_badge": {
"name": "Add Badge",
"description": "Create a custom badge.",
"fields": {
"name": {
"name": "Name",
"description": "The display name of the badge"
},
"description": {
"name": "Description",
"description": "Description of how the badge is earned"
},
"icon": {
"name": "Icon",
"description": "Icon for the badge (e.g. mdi:beach)"
},
"tier": {
"name": "Tier",
"description": "Badge tier: bronze, silver, gold or platinum"
},
"point_bonus": {
"name": "Point bonus",
"description": "Points credited to the child when the badge is earned"
},
"criteria": {
"name": "Criteria",
"description": "List of metric / operator / value dicts. Empty = manual-award only."
},
"assigned_to": {
"name": "Assigned to",
"description": "List of child IDs (empty = all)"
},
"notify_on_earn": {
"name": "Notify on earn",
"description": "Send a notification when the badge is earned"
}
}
},
"update_badge": {
"name": "Update Badge",
"description": "Update an existing badge. For built-ins, only point_bonus, tier, assigned_to, enabled, notify_on_earn are editable.",
"fields": {
"badge_id": {
"name": "Badge ID",
"description": "The ID of the badge to update"
},
"name": {
"name": "Name",
"description": "New display name of the badge"
},
"description": {
"name": "Description",
"description": "New description of the badge"
},
"icon": {
"name": "Icon",
"description": "New icon for the badge"
},
"tier": {
"name": "Tier",
"description": "Badge tier: bronze, silver, gold or platinum"
},
"point_bonus": {
"name": "Point bonus",
"description": "Points credited to the child when the badge is earned"
},
"criteria": {
"name": "Criteria",
"description": "List of metric / operator / value dicts. Empty = manual-award only."
},
"assigned_to": {
"name": "Assigned to",
"description": "List of child IDs (empty = all)"
},
"enabled": {
"name": "Enabled",
"description": "Whether the badge is active"
},
"notify_on_earn": {
"name": "Notify on earn",
"description": "Send a notification when the badge is earned"
}
}
},
"remove_badge": {
"name": "Remove Badge",
"description": "Remove a custom badge. Built-ins cannot be removed.",
"fields": {
"badge_id": {
"name": "Badge ID",
"description": "The ID of the badge to remove"
}
}
},
"award_badge_manually": {
"name": "Award Badge Manually",
"description": "Manually award a badge to a child.",
"fields": {
"badge_id": {
"name": "Badge ID",
"description": "The ID of the badge to award"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child receiving the badge"
}
}
},
"revoke_badge": {
"name": "Revoke Badge",
"description": "Revoke an awarded badge. If a point bonus was credited, it is reversed.",
"fields": {
"awarded_badge_id": {
"name": "Awarded Badge ID",
"description": "The ID of the awarded badge record to revoke"
}
}
},
"rebuild_badges": {
"name": "Rebuild Badges",
"description": "Re-evaluate all badges across all children silently (no notifications, no point bonuses)."
},
"apply_mandatory_penalty": {
"name": "Apply Mandatory Penalty",
"description": "Deduct the configured penalty points for a missed mandatory chore and clear the review item.",
"fields": {
"miss_id": {
"name": "Miss ID",
"description": "The ID of the mandatory-miss review item"
}
}
},
"choose_avatar": {
"name": "Choose Avatar",
"description": "A child switches to an avatar they have unlocked.",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child"
},
"icon": {
"name": "Avatar icon",
"description": "The mdi icon of an unlocked catalogue avatar (e.g. mdi:rocket-launch)."
}
}
},
"dismiss_mandatory_chore": {
"name": "Dismiss Mandatory Chore",
"description": "Clear a missed mandatory chore review item with no penalty.",
"fields": {
"miss_id": {
"name": "Miss ID",
"description": "The ID of the mandatory-miss review item"
}
}
},
"gift_points": {
"name": "Gift Points",
"description": "Transfer spendable points from one child to another (parent-controlled).",
"fields": {
"from_child_id": {
"name": "From child ID",
"description": "The ID of the child sending points"
},
"to_child_id": {
"name": "To child ID",
"description": "The ID of the child receiving points"
},
"points": {
"name": "Points",
"description": "The number of points to transfer"
}
}
},
"postpone_mandatory_chore": {
"name": "Postpone Mandatory Chore",
"description": "Give a missed mandatory chore another period (or tomorrow) without a penalty, and clear the review item.",
"fields": {
"miss_id": {
"name": "Miss ID",
"description": "The ID of the mandatory-miss review item"
}
}
},
"request_swap": {
"name": "Request Chore Swap",
"description": "A child requests to take over today's rotation assignment of a chore (pending parent approval).",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to take over"
},
"requester_id": {
"name": "Requester child ID",
"description": "The ID of the child requesting the swap"
}
}
},
"test_notification": {
"name": "Test Notification",
"description": "Send a sample notification of the given type to its enabled recipients (ignores the master on/off so routing can be verified).",
"fields": {
"type_id": {
"name": "Notification type",
"description": "Notification type id, e.g. pending_chore_approval, badge_earned, streak_milestone"
}
}
},
"record_allowance_payout": {
"name": "Record Allowance Payout",
"description": "Deduct points and record a real-money allowance payout in the ledger (fixed conversion rate; parent-controlled).",
"fields": {
"child_id": {
"name": "Child ID",
"description": "The ID of the child receiving the payout"
},
"points": {
"name": "Points",
"description": "Points to convert to cash and deduct"
}
}
}
},
"entity": {
"sensor": {
"child_stats": {
"unit_of_measurement": "chores"
},
"child_badges": {
"unit_of_measurement": "badges"
}
},
"number": {
"weekend_multiplier": {
"name": "Weekend multiplier"
},
"perfect_week_bonus": {
"name": "Perfect week bonus"
}
},
"select": {
"streak_reset_mode": {
"name": "Streak reset mode"
},
"card_design": {
"name": "Card design"
}
}
}
}
@@ -0,0 +1,884 @@
{
"config": {
"step": {
"user": {
"title": "Bienvenue sur TaskMate !",
"description": "Configurez votre système de gestion des tâches familiales. Vous pouvez personnaliser le nom de la monnaie de points que les enfants gagneront.",
"data": {
"points_name": "Nom de la monnaie de points (ex: Étoiles, Pièces, Jetons)",
"points_icon": "Icône des points"
}
}
},
"error": {
"name_required": "Le nom est obligatoire"
},
"abort": {
"already_configured": "TaskMate est déjà configuré"
}
},
"selector": {
"chore_action": {
"options": {
"save": "Enregistrer les modifications",
"re_enable": "Réactiver la corvée",
"disable": "Désactiver la corvée",
"delete": "Supprimer cette corvée"
}
},
"reward_action": {
"options": {
"save": "Enregistrer les modifications",
"delete": "Supprimer la récompense"
}
},
"time_category": {
"options": {
"morning": "Matin",
"afternoon": "Après-midi",
"evening": "Soirée",
"night": "Nuit",
"anytime": "N'importe quand"
}
},
"schedule_mode": {
"options": {
"specific_days": "Jours spécifiques de la semaine",
"recurring": "Récurrent (tous les N jours/semaines/mois)",
"one_shot": "Tâche unique (un seul jour)"
}
},
"due_days_option": {
"options": {
"monday": "Lundi",
"tuesday": "Mardi",
"wednesday": "Mercredi",
"thursday": "Jeudi",
"friday": "Vendredi",
"saturday": "Samedi",
"sunday": "Dimanche"
}
},
"recurrence": {
"options": {
"every_2_days": "Tous les 2 jours",
"weekly": "Hebdomadaire",
"every_2_weeks": "Toutes les 2 semaines",
"monthly": "Mensuel",
"every_3_months": "Tous les 3 mois",
"every_6_months": "Tous les 6 mois"
}
},
"recurrence_day_option": {
"options": {
"monday": "Lundi",
"tuesday": "Mardi",
"wednesday": "Mercredi",
"thursday": "Jeudi",
"friday": "Vendredi",
"saturday": "Samedi",
"sunday": "Dimanche",
"any_day": "N'importe quel jour"
}
},
"first_occurrence_mode": {
"options": {
"available_immediately": "Disponible immédiatement",
"wait_for_first_occurrence": "Attendre la première occurrence prévue"
}
},
"streak_reset_mode": {
"options": {
"reset": "Réinitialiser — la série retombe à 0 en cas d'oubli",
"pause": "Pause — la série est préservée jusqu'à la prochaine exécution"
}
},
"visibility_operator": {
"options": {
"none": "Aucun filtre — Toujours afficher la corvée",
"equals": "Égale — Afficher quand l'état correspond exactement",
"not_equals": "Non égale — Afficher quand l'état ne correspond pas",
"gte": "Supérieur ou égal (≥) — Afficher quand la valeur est ≥ cible",
"lte": "Inférieur ou égal (≤) — Afficher quand la valeur est ≤ cible",
"gt": "Supérieur (>) — Afficher quand la valeur est > cible",
"lt": "Inférieur (<) — Afficher quand la valeur est < cible"
}
},
"assignment_mode": {
"options": {
"everyone": "Tout le monde — chaque enfant assigné voit la tâche",
"alternating": "Alternance — rotation entre les enfants assignés, un par jour",
"random": "Aléatoire — un enfant assigné choisi au hasard chaque jour",
"balanced": "Équilibré — répartit les tâches équilibrées du jour équitablement entre les enfants assignés",
"first_come": "Premier arrivé, premier servi — le premier enfant à la terminer gagne ; masquée pour les autres",
"unassigned": "Non attribué — aucun enfant ne voit cette tâche"
}
},
"task_group_policy": {
"options": {
"sticky": "Sticky — même enfant pour toutes les tâches du groupe",
"spread": "Spread — enfants différents dans le groupe aujourdhui"
}
},
"task_group_action": {
"options": {
"save": "Enregistrer",
"delete": "Supprimer le groupe"
}
}
},
"services": {
"complete_chore": {
"name": "Terminer une corvée",
"description": "Marquer une corvée comme terminée par un enfant",
"fields": {
"chore_id": {
"name": "ID de la corvée",
"description": "L'identifiant de la corvée à terminer"
},
"child_id": {
"name": "ID de l'enfant",
"description": "L'identifiant de l'enfant effectuant la corvée"
}
}
},
"complete_bonus_subtask": {
"name": "Terminer une sous-tâche bonus",
"description": "Terminer une sous-tâche bonus une fois la corvée parente terminée",
"fields": {
"chore_id": {
"name": "ID de la corvée",
"description": "L'identifiant de la corvée parente"
},
"bonus_subtask_id": {
"name": "ID de la sous-tâche bonus",
"description": "L'identifiant de la sous-tâche bonus à terminer"
},
"child_id": {
"name": "ID de l'enfant",
"description": "L'identifiant de l'enfant effectuant la sous-tâche bonus"
}
}
},
"approve_chore": {
"name": "Approuver une corvée",
"description": "Approuver une corvée terminée et attribuer les points",
"fields": {
"completion_id": {
"name": "ID de complétion",
"description": "L'identifiant de l'exécution à approuver"
}
}
},
"approve_all_chores": {
"name": "Approuver toutes les tâches",
"description": "Approuver toutes les tâches terminées en attente (ou un ensemble précis) et attribuer les points",
"fields": {
"completion_ids": {
"name": "Identifiants de complétion",
"description": "Identifiants de complétion à approuver ; laisser vide pour tout approuver"
}
}
},
"reject_chore": {
"name": "Rejeter une corvée",
"description": "Rejeter une corvée terminée",
"fields": {
"completion_id": {
"name": "ID de complétion",
"description": "L'identifiant de l'exécution à rejeter"
}
}
},
"undo_chore_approval": {
"name": "Annuler l'approbation d'une tâche",
"description": "Annuler l'approbation accidentelle d'une tâche — retire les points attribués et remet la réalisation en attente afin qu'elle puisse être approuvée à nouveau.",
"fields": {
"completion_id": {
"name": "ID de réalisation",
"description": "L'ID de la réalisation de tâche approuvée à remettre en attente"
}
}
},
"undo_transaction": {
"name": "Annuler une transaction",
"description": "Annuler une transaction de points via son ID — pénalités, bonus, ajustements manuels (ajout/retrait) et cadeaux (les deux volets). Les transactions automatiques (bonus de week-end/série/semaine parfaite, mouvements de cagnotte, dépréciation, intérêts) ne peuvent pas être annulées.",
"fields": {
"transaction_id": {
"name": "ID de transaction",
"description": "L'ID de la transaction de points à annuler"
}
}
},
"claim_reward": {
"name": "Réclamer une récompense",
"description": "L'enfant réclame une récompense en utilisant ses points",
"fields": {
"reward_id": {
"name": "ID de la récompense",
"description": "L'identifiant de la récompense à réclamer"
},
"child_id": {
"name": "ID de l'enfant",
"description": "L'identifiant de l'enfant réclamant la récompense"
}
}
},
"approve_reward": {
"name": "Approuver une récompense",
"description": "Approuver une demande de récompense",
"fields": {
"claim_id": {
"name": "ID de la demande",
"description": "L'identifiant de la demande de récompense à approuver"
}
}
},
"allocate_points_to_pool": {
"name": "Allouer des points à la cagnotte",
"description": "Déplacer des points du solde disponible d'un enfant vers la cagnotte d'une récompense (verrouillée).",
"fields": {
"child_id": {
"name": "ID de l'enfant",
"description": "L'identifiant de l'enfant effectuant l'allocation"
},
"reward_id": {
"name": "ID de la récompense",
"description": "L'identifiant de la cagnotte de récompense où déposer les points"
},
"points": {
"name": "Points",
"description": "Nombre de points à allouer (limité par la capacité de la cagnotte et le solde disponible)"
}
}
},
"add_points": {
"name": "Ajouter des points",
"description": "Ajouter des points bonus à un enfant",
"fields": {
"child_id": {
"name": "ID de l'enfant",
"description": "L'identifiant de l'enfant à qui ajouter des points"
},
"points": {
"name": "Points",
"description": "Le nombre de points à ajouter"
},
"reason": {
"name": "Raison",
"description": "Raison optionnelle pour le bonus"
}
}
},
"remove_points": {
"name": "Retirer des points",
"description": "Retirer des points à un enfant (pénalité)",
"fields": {
"child_id": {
"name": "ID de l'enfant",
"description": "L'identifiant de l'enfant à qui retirer des points"
},
"points": {
"name": "Points",
"description": "Le nombre de points à retirer"
},
"reason": {
"name": "Raison",
"description": "Raison optionnelle pour la pénalité"
}
}
},
"reject_reward": {
"name": "Rejeter une récompense",
"description": "Rejeter une demande de récompense",
"fields": {
"claim_id": {
"name": "ID de la demande",
"description": "L'identifiant de la demande à rejeter"
}
}
},
"preview_sound": {
"name": "Aperçu du son",
"description": "Tester un effet sonore de complétion dans le navigateur",
"fields": {
"sound": {
"name": "Son",
"description": "Le son à tester"
}
}
},
"set_chore_order": {
"name": "Définir l'ordre des corvées",
"description": "Définir l'ordre d'affichage des corvées pour un enfant",
"fields": {
"child_id": {
"name": "ID de l'enfant",
"description": "L'identifiant de l'enfant"
},
"chore_order": {
"name": "Ordre des corvées",
"description": "Liste ordonnée des IDs de corvées"
}
}
},
"add_penalty": {
"name": "Ajouter une pénalité",
"description": "Créer une nouvelle définition de pénalité",
"fields": {
"name": {
"name": "Nom",
"description": "Le nom de la pénalité"
},
"points": {
"name": "Points",
"description": "Le nombre de points à déduire"
},
"description": {
"name": "Description",
"description": "Description optionnelle"
},
"icon": {
"name": "Icône",
"description": "Icône MDI pour la pénalité"
},
"assigned_to": {
"name": "Assignée à",
"description": "Liste des IDs d'enfants concernés"
}
}
},
"update_penalty": {
"name": "Mettre à jour la pénalité",
"description": "Modifier une définition de pénalité existante",
"fields": {
"penalty_id": {
"name": "ID de pénalité",
"description": "L'identifiant de la pénalité à modifier"
},
"name": {
"name": "Nom",
"description": "Nouveau nom"
},
"points": {
"name": "Points",
"description": "Nouvelle valeur de points"
},
"description": {
"name": "Description",
"description": "Nouvelle description"
},
"icon": {
"name": "Icône",
"description": "Nouvelle icône"
},
"assigned_to": {
"name": "Assignée à",
"description": "Nouvelle liste d'identifiants d'enfants"
}
}
},
"remove_penalty": {
"name": "Supprimer la pénalité",
"description": "Supprimer une définition de pénalité",
"fields": {
"penalty_id": {
"name": "ID de pénalité",
"description": "L'identifiant de la pénalité à supprimer"
}
}
},
"apply_penalty": {
"name": "Appliquer une pénalité",
"description": "Appliquer une pénalité à un enfant, déduisant ses points",
"fields": {
"penalty_id": {
"name": "ID de pénalité",
"description": "L'identifiant de la pénalité à appliquer"
},
"child_id": {
"name": "ID de l'enfant",
"description": "L'identifiant de l'enfant à pénaliser"
}
}
},
"add_bonus": {
"name": "Ajouter un bonus",
"description": "Créer une nouvelle définition de bonus",
"fields": {
"name": {
"name": "Nom",
"description": "Le nom du bonus"
},
"points": {
"name": "Points",
"description": "Le nombre de points à attribuer lors de l'application"
},
"description": {
"name": "Description",
"description": "Description optionnelle du bonus"
},
"icon": {
"name": "Icône",
"description": "Icône MDI pour le bonus"
},
"assigned_to": {
"name": "Assigné à",
"description": "Liste des identifiants d'enfants auxquels ce bonus s'applique"
}
}
},
"update_bonus": {
"name": "Mettre à jour le bonus",
"description": "Mettre à jour une définition de bonus existante",
"fields": {
"bonus_id": {
"name": "ID de bonus",
"description": "L'identifiant du bonus à mettre à jour"
},
"name": {
"name": "Nom",
"description": "Nouveau nom pour le bonus"
},
"points": {
"name": "Points",
"description": "Nouvelle valeur de points"
},
"description": {
"name": "Description",
"description": "Nouvelle description"
},
"icon": {
"name": "Icône",
"description": "Nouvelle icône"
},
"assigned_to": {
"name": "Assigné à",
"description": "Nouvelle liste d'identifiants d'enfants"
}
}
},
"remove_bonus": {
"name": "Supprimer le bonus",
"description": "Supprimer une définition de bonus",
"fields": {
"bonus_id": {
"name": "ID de bonus",
"description": "L'identifiant du bonus à supprimer"
}
}
},
"apply_bonus": {
"name": "Appliquer un bonus",
"description": "Appliquer un bonus à un enfant, attribuant des points",
"fields": {
"bonus_id": {
"name": "ID de bonus",
"description": "L'identifiant du bonus à appliquer"
},
"child_id": {
"name": "ID de l'enfant",
"description": "L'identifiant de l'enfant à qui attribuer le bonus"
}
}
},
"add_chore": {
"name": "Ajouter une corvée",
"description": "Créer une nouvelle corvée dynamiquement, généralement depuis une automatisation ou un script",
"fields": {
"name": {
"name": "Nom",
"description": "Le nom de la corvée"
},
"description": {
"name": "Description",
"description": "Description optionnelle de la corvée"
},
"points": {
"name": "Points",
"description": "Points attribués à l'achèvement de cette corvée"
},
"assigned_to": {
"name": "Assignée à",
"description": "Liste des IDs d'enfants à qui assigner cette corvée. Laisser vide pour l'assigner à tous les enfants"
},
"time_category": {
"name": "Catégorie horaire",
"description": "Quand cette corvée doit être effectuée : morning, afternoon, evening, night ou anytime"
},
"one_shot": {
"name": "Unique",
"description": "Si vrai, c'est une corvée unique qui expire après exécution ou à la fin de la journée"
},
"requires_approval": {
"name": "Nécessite approbation",
"description": "Si vrai, un parent doit approuver l'exécution avant que les points soient attribués"
}
}
},
"skip_chore": {
"name": "Skip Chore",
"description": "Advance today's rotation past the current assignee. Ephemeral — tomorrow's rotation resumes as normal.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to skip"
}
}
},
"set_chore_manual_start": {
"name": "Set Manual Start Child",
"description": "Set which child starts a rotating chore. For alternating mode this reorders the pool; for random/balanced it only overrides today's assignee.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to update"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child who should start the rotation"
}
}
},
"add_task_group": {
"name": "Add Task Group",
"description": "Create a task group (sticky = same child, spread = different children).",
"fields": {
"name": {
"name": "Name",
"description": "Display name for the group"
},
"policy": {
"name": "Policy",
"description": "sticky (same child) or spread (different children)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "List of chore IDs in the group. For sticky, the first chore is the leader."
}
}
},
"update_task_group": {
"name": "Update Task Group",
"description": "Update a task group's name, policy, or membership.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to update"
},
"name": {
"name": "Name",
"description": "New display name"
},
"policy": {
"name": "Policy",
"description": "New policy (sticky or spread)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "Replacement chore ID list. For sticky, the first chore is the leader."
}
}
},
"remove_task_group": {
"name": "Remove Task Group",
"description": "Delete a task group. Member chores are not affected.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to delete"
}
}
},
"start_timed_task": {
"name": "Démarrer une tâche chronométrée",
"description": "Démarrer ou reprendre le minuteur d'une tâche chronométrée",
"fields": {
"chore_id": {
"name": "ID de la corvée",
"description": "L'identifiant de la corvée chronométrée"
},
"child_id": {
"name": "ID de l'enfant",
"description": "L'identifiant de l'enfant démarrant le minuteur"
}
}
},
"pause_timed_task": {
"name": "Mettre en pause une tâche chronométrée",
"description": "Mettre en pause le minuteur d'une tâche chronométrée en cours",
"fields": {
"chore_id": {
"name": "ID de la corvée",
"description": "L'identifiant de la corvée chronométrée"
},
"child_id": {
"name": "ID de l'enfant",
"description": "L'identifiant de l'enfant mettant le minuteur en pause"
}
}
},
"stop_timed_task": {
"name": "Arrêter une tâche chronométrée",
"description": "Arrêter le minuteur d'une tâche chronométrée et la soumettre pour approbation",
"fields": {
"chore_id": {
"name": "ID de la corvée",
"description": "L'identifiant de la corvée chronométrée"
},
"child_id": {
"name": "ID de l'enfant",
"description": "L'identifiant de l'enfant arrêtant le minuteur"
}
}
},
"add_badge": {
"name": "Ajouter un badge",
"description": "Créer un badge personnalisé.",
"fields": {
"name": {
"name": "Nom",
"description": "Le nom affiché du badge"
},
"description": {
"name": "Description",
"description": "Description de la façon d'obtenir le badge"
},
"icon": {
"name": "Icône",
"description": "Icône du badge (ex. mdi:beach)"
},
"tier": {
"name": "Niveau",
"description": "Niveau du badge : bronze, argent, or ou platine"
},
"point_bonus": {
"name": "Bonus de points",
"description": "Points crédités à l'enfant lorsque le badge est obtenu"
},
"criteria": {
"name": "Critères",
"description": "Liste de dictionnaires metric / operator / value. Vide = attribution manuelle uniquement."
},
"assigned_to": {
"name": "Attribué à",
"description": "Liste d'identifiants d'enfants (vide = tous)"
},
"notify_on_earn": {
"name": "Notifier à l'obtention",
"description": "Envoyer une notification lorsque le badge est obtenu"
}
}
},
"update_badge": {
"name": "Mettre à jour un badge",
"description": "Mettre à jour un badge existant. Pour les badges intégrés, seuls point_bonus, tier, assigned_to, enabled et notify_on_earn sont modifiables.",
"fields": {
"badge_id": {
"name": "ID du badge",
"description": "L'identifiant du badge à mettre à jour"
},
"name": {
"name": "Nom",
"description": "Nouveau nom affiché du badge"
},
"description": {
"name": "Description",
"description": "Nouvelle description du badge"
},
"icon": {
"name": "Icône",
"description": "Nouvelle icône du badge"
},
"tier": {
"name": "Niveau",
"description": "Niveau du badge : bronze, argent, or ou platine"
},
"point_bonus": {
"name": "Bonus de points",
"description": "Points crédités à l'enfant lorsque le badge est obtenu"
},
"criteria": {
"name": "Critères",
"description": "Liste de dictionnaires metric / operator / value. Vide = attribution manuelle uniquement."
},
"assigned_to": {
"name": "Attribué à",
"description": "Liste d'identifiants d'enfants (vide = tous)"
},
"enabled": {
"name": "Activé",
"description": "Indique si le badge est actif"
},
"notify_on_earn": {
"name": "Notifier à l'obtention",
"description": "Envoyer une notification lorsque le badge est obtenu"
}
}
},
"remove_badge": {
"name": "Supprimer un badge",
"description": "Supprimer un badge personnalisé. Les badges intégrés ne peuvent pas être supprimés.",
"fields": {
"badge_id": {
"name": "ID du badge",
"description": "L'identifiant du badge à supprimer"
}
}
},
"award_badge_manually": {
"name": "Attribuer un badge manuellement",
"description": "Attribuer manuellement un badge à un enfant.",
"fields": {
"badge_id": {
"name": "ID du badge",
"description": "L'identifiant du badge à attribuer"
},
"child_id": {
"name": "ID de l'enfant",
"description": "L'identifiant de l'enfant recevant le badge"
}
}
},
"revoke_badge": {
"name": "Révoquer un badge",
"description": "Révoquer un badge attribué. Si un bonus de points a été crédité, il est annulé.",
"fields": {
"awarded_badge_id": {
"name": "ID du badge attribué",
"description": "L'identifiant du badge attribué à révoquer"
}
}
},
"rebuild_badges": {
"name": "Recalculer les badges",
"description": "Réévaluer silencieusement tous les badges pour tous les enfants (sans notifications ni bonus de points)."
},
"apply_mandatory_penalty": {
"name": "Appliquer la pénalité obligatoire",
"description": "Déduit les points de pénalité configurés pour une tâche obligatoire manquée et supprime l'élément à vérifier.",
"fields": {
"miss_id": {
"name": "ID d'oubli",
"description": "L'ID de l'élément à vérifier pour la tâche obligatoire manquée"
}
}
},
"choose_avatar": {
"name": "Choisir un avatar",
"description": "Un enfant passe à un avatar qu'il a débloqué.",
"fields": {
"child_id": {
"name": "ID enfant",
"description": "L'ID de l'enfant"
},
"icon": {
"name": "Icône d'avatar",
"description": "L'icône mdi d'un avatar du catalogue débloqué (par ex. mdi:rocket-launch)."
}
}
},
"dismiss_mandatory_chore": {
"name": "Ignorer la tâche obligatoire",
"description": "Supprime l'élément à vérifier d'une tâche obligatoire manquée sans pénalité.",
"fields": {
"miss_id": {
"name": "ID d'oubli",
"description": "L'ID de l'élément à vérifier pour la tâche obligatoire manquée"
}
}
},
"gift_points": {
"name": "Offrir des points",
"description": "Transfère des points dépensables d'un enfant à un autre (contrôlé par les parents).",
"fields": {
"from_child_id": {
"name": "ID enfant source",
"description": "L'ID de l'enfant qui envoie les points"
},
"to_child_id": {
"name": "ID enfant destinataire",
"description": "L'ID de l'enfant qui reçoit les points"
},
"points": {
"name": "Points",
"description": "Le nombre de points à transférer"
}
}
},
"postpone_mandatory_chore": {
"name": "Reporter la tâche obligatoire",
"description": "Accorde à une tâche obligatoire manquée une autre période (ou demain) sans pénalité et supprime l'élément à vérifier.",
"fields": {
"miss_id": {
"name": "ID d'oubli",
"description": "L'ID de l'élément à vérifier pour la tâche obligatoire manquée"
}
}
},
"request_swap": {
"name": "Demander un échange de tâche",
"description": "Un enfant demande à reprendre l'attribution par rotation d'une tâche pour aujourd'hui (en attente d'approbation parentale).",
"fields": {
"chore_id": {
"name": "ID tâche",
"description": "L'ID de la tâche à reprendre"
},
"requester_id": {
"name": "ID enfant demandeur",
"description": "L'ID de l'enfant qui demande l'échange"
}
}
},
"test_notification": {
"name": "Notification de test",
"description": "Envoie un exemple de notification du type indiqué à ses destinataires activés (ignore l'interrupteur principal afin de vérifier le routage).",
"fields": {
"type_id": {
"name": "Type de notification",
"description": "ID du type de notification, par ex. pending_chore_approval, badge_earned, streak_milestone"
}
}
},
"record_allowance_payout": {
"name": "Enregistrer un versement d'argent de poche",
"description": "Déduire des points et enregistrer un versement d'argent de poche réel dans le journal (taux de conversion fixe ; contrôlé par les parents).",
"fields": {
"child_id": {
"name": "ID enfant",
"description": "L'ID de l'enfant recevant le versement"
},
"points": {
"name": "Points",
"description": "Points à convertir en argent et à déduire"
}
}
}
},
"entity": {
"sensor": {
"child_stats": {
"unit_of_measurement": "tâches"
},
"child_badges": {
"unit_of_measurement": "badges"
}
},
"number": {
"weekend_multiplier": {
"name": "Multiplicateur week-end"
},
"perfect_week_bonus": {
"name": "Bonus de semaine parfaite"
}
},
"select": {
"streak_reset_mode": {
"name": "Mode de réinitialisation de série"
},
"card_design": {
"name": "Design de carte"
}
}
}
}
@@ -0,0 +1,884 @@
{
"config": {
"step": {
"user": {
"title": "Velkommen til TaskMate!",
"description": "Sett opp ditt familieoppgavesystem. Du kan tilpasse poengvalutaen barna skal tjene.",
"data": {
"points_name": "Poengvalutanavn (f.eks. Stjerner, Mynter, Kroner)",
"points_icon": "Poengikon"
}
}
},
"error": {
"name_required": "Navn er påkrevd"
},
"abort": {
"already_configured": "TaskMate er allerede konfigurert"
}
},
"selector": {
"chore_action": {
"options": {
"save": "Lagre endringer",
"re_enable": "Reaktiver oppgave",
"disable": "Deaktiver oppgave",
"delete": "Slett denne oppgaven"
}
},
"reward_action": {
"options": {
"save": "Lagre endringer",
"delete": "Slett belønning"
}
},
"time_category": {
"options": {
"morning": "Morgen",
"afternoon": "Ettermiddag",
"evening": "Kveld",
"night": "Natt",
"anytime": "Når som helst"
}
},
"schedule_mode": {
"options": {
"specific_days": "Bestemte ukedager",
"recurring": "Gjentakende (hver N dag/uke/måned)",
"one_shot": "Engangsoppgave (én dag)"
}
},
"due_days_option": {
"options": {
"monday": "Mandag",
"tuesday": "Tirsdag",
"wednesday": "Onsdag",
"thursday": "Torsdag",
"friday": "Fredag",
"saturday": "Lørdag",
"sunday": "Søndag"
}
},
"recurrence": {
"options": {
"every_2_days": "Annenhver dag",
"weekly": "Ukentlig",
"every_2_weeks": "Annenhver uke",
"monthly": "Månedlig",
"every_3_months": "Hver 3. måned",
"every_6_months": "Hver 6. måned"
}
},
"recurrence_day_option": {
"options": {
"monday": "Mandag",
"tuesday": "Tirsdag",
"wednesday": "Onsdag",
"thursday": "Torsdag",
"friday": "Fredag",
"saturday": "Lørdag",
"sunday": "Søndag",
"any_day": "Hvilken som helst dag"
}
},
"first_occurrence_mode": {
"options": {
"available_immediately": "Tilgjengelig umiddelbart",
"wait_for_first_occurrence": "Vent på første planlagte forekomst"
}
},
"streak_reset_mode": {
"options": {
"reset": "Nullstill — rekken går til 0 ved tapt dag",
"pause": "Pause — rekken bevares til neste fullføring"
}
},
"visibility_operator": {
"options": {
"none": "Ingen filter — Vis oppgaven alltid",
"equals": "Lik — Vis når enhetstilstanden stemmer nøyaktig",
"not_equals": "Ikke lik — Vis når enhetstilstanden ikke stemmer",
"gte": "Større enn eller lik (≥) — Vis når numerisk verdi er ≥ målverdien",
"lte": "Mindre enn eller lik (≤) — Vis når numerisk verdi er ≤ målverdien",
"gt": "Større enn (>) — Vis når numerisk verdi er > målverdien",
"lt": "Mindre enn (<) — Vis når numerisk verdi er < målverdien"
}
},
"assignment_mode": {
"options": {
"everyone": "Alle — hvert tildelt barn ser oppgaven",
"alternating": "Vekslende — roter mellom de tildelte barna, ett per dag",
"random": "Tilfeldig — plukk ett tildelt barn tilfeldig hver dag",
"balanced": "Balansert — fordel dagens balanserte oppgaver jevnt mellom de tildelte barna",
"first_come": "Førstemann til mølla — første barn som fullfører den vinner; skjules for de andre",
"unassigned": "Ikke tildelt — ingen barn ser denne oppgaven"
}
},
"task_group_policy": {
"options": {
"sticky": "Sticky — samme barn for alle oppgaver i gruppen",
"spread": "Spread — ulike barn i gruppen i dag"
}
},
"task_group_action": {
"options": {
"save": "Lagre endringer",
"delete": "Slett gruppe"
}
}
},
"services": {
"complete_chore": {
"name": "Fullfør oppgave",
"description": "Merk en oppgave som fullført av et barn",
"fields": {
"chore_id": {
"name": "Oppgave-ID",
"description": "ID-en til oppgaven som skal fullføres"
},
"child_id": {
"name": "Barn-ID",
"description": "ID-en til barnet som fullfører oppgaven"
}
}
},
"complete_bonus_subtask": {
"name": "Fullfør bonusdeloppgave",
"description": "Fullfør en bonusdeloppgave etter at hovedoppgaven er fullført",
"fields": {
"chore_id": {
"name": "Oppgave-ID",
"description": "ID-en til hovedoppgaven"
},
"bonus_subtask_id": {
"name": "Bonusdeloppgave-ID",
"description": "ID-en til bonusdeloppgaven som skal fullføres"
},
"child_id": {
"name": "Barn-ID",
"description": "ID-en til barnet som fullfører bonusdeloppgaven"
}
}
},
"approve_chore": {
"name": "Godkjenn oppgave",
"description": "Godkjenn en fullført oppgave og tildel poeng",
"fields": {
"completion_id": {
"name": "Fullførings-ID",
"description": "ID-en til oppgavefullføringen som skal godkjennes"
}
}
},
"approve_all_chores": {
"name": "Godkjenn alle gjøremål",
"description": "Godkjenn alle ventende fullførte gjøremål (eller et bestemt utvalg) og tildel poeng",
"fields": {
"completion_ids": {
"name": "Fullførings-ID-er",
"description": "Bestemte fullførings-ID-er som skal godkjennes; utelat for å godkjenne alle ventende"
}
}
},
"reject_chore": {
"name": "Avvis oppgave",
"description": "Avvis en fullført oppgave",
"fields": {
"completion_id": {
"name": "Fullførings-ID",
"description": "ID-en til oppgavefullføringen som skal avvises"
}
}
},
"undo_chore_approval": {
"name": "Angre godkjenning av gjøremål",
"description": "Angre en utilsiktet godkjenning av et gjøremål — fjerner de tildelte poengene og setter fullføringen tilbake til venter, slik at den kan godkjennes på nytt.",
"fields": {
"completion_id": {
"name": "Fullførings-ID",
"description": "ID-en til den godkjente gjøremålsfullføringen som skal settes tilbake til venter"
}
}
},
"undo_transaction": {
"name": "Angre transaksjon",
"description": "Angre en poengtransaksjon med ID-en — straffer, bonuser, manuelle justeringer (legg til/fjern) og gaver (begge sider). Automatiske transaksjoner (helg-/rekke-/perfekt uke-bonuser, sparekrukke-bevegelser, forfall, renter) kan ikke angres.",
"fields": {
"transaction_id": {
"name": "Transaksjons-ID",
"description": "ID-en til poengtransaksjonen som skal angres"
}
}
},
"claim_reward": {
"name": "Hent belønning",
"description": "Barnet henter en belønning med sine poeng",
"fields": {
"reward_id": {
"name": "Belønnings-ID",
"description": "ID-en til belønningen som skal hentes"
},
"child_id": {
"name": "Barn-ID",
"description": "ID-en til barnet som henter belønningen"
}
}
},
"approve_reward": {
"name": "Godkjenn belønning",
"description": "Godkjenn et belønningskrav",
"fields": {
"claim_id": {
"name": "Krav-ID",
"description": "ID-en til belønningskravet som skal godkjennes"
}
}
},
"allocate_points_to_pool": {
"name": "Tildel poeng til sparegris",
"description": "Flytt poeng fra et barns disponible saldo til en belønnings sparegris (låst).",
"fields": {
"child_id": {
"name": "Barn-ID",
"description": "ID-en til barnet som gjør tildelingen"
},
"reward_id": {
"name": "Belønnings-ID",
"description": "ID-en til belønningens sparegris det skal settes inn i"
},
"points": {
"name": "Poeng",
"description": "Antall poeng å tildele (begrenset av sparegrisens kapasitet og disponibel saldo)"
}
}
},
"add_points": {
"name": "Legg til poeng",
"description": "Legg til bonuspoeng til et barn",
"fields": {
"child_id": {
"name": "Barn-ID",
"description": "ID-en til barnet som skal få poeng"
},
"points": {
"name": "Poeng",
"description": "Antall poeng å legge til"
},
"reason": {
"name": "Grunn",
"description": "Valgfri grunn for bonusen"
}
}
},
"remove_points": {
"name": "Fjern poeng",
"description": "Fjern poeng fra et barn (straff)",
"fields": {
"child_id": {
"name": "Barn-ID",
"description": "ID-en til barnet som skal miste poeng"
},
"points": {
"name": "Poeng",
"description": "Antall poeng å fjerne"
},
"reason": {
"name": "Grunn",
"description": "Valgfri grunn for straffen"
}
}
},
"reject_reward": {
"name": "Avvis belønning",
"description": "Avvis et belønningskrav",
"fields": {
"claim_id": {
"name": "Krav-ID",
"description": "ID-en til belønningskravet som skal avvises"
}
}
},
"preview_sound": {
"name": "Forhåndsvis lyd",
"description": "Forhåndsvis en fullføringslydeffekt i nettleseren",
"fields": {
"sound": {
"name": "Lyd",
"description": "Lyden som skal forhåndsvises"
}
}
},
"set_chore_order": {
"name": "Sett oppgaverekkefølge",
"description": "Sett visningsrekkefølgen for oppgaver for et barn",
"fields": {
"child_id": {
"name": "Barn-ID",
"description": "ID-en til barnet å sette oppgaverekkefølge for"
},
"chore_order": {
"name": "Oppgaverekkefølge",
"description": "Ordnet liste over oppgave-ID-er"
}
}
},
"add_penalty": {
"name": "Legg til straff",
"description": "Opprett en ny straffedefinisjon",
"fields": {
"name": {
"name": "Navn",
"description": "Navnet på straffen"
},
"points": {
"name": "Poeng",
"description": "Antall poeng å trekke når den brukes"
},
"description": {
"name": "Beskrivelse",
"description": "Valgfri beskrivelse av straffen"
},
"icon": {
"name": "Ikon",
"description": "MDI-ikon for straffen"
},
"assigned_to": {
"name": "Tildelt til",
"description": "Liste over barn-ID-er denne straffen gjelder for"
}
}
},
"update_penalty": {
"name": "Oppdater straff",
"description": "Oppdater en eksisterende straffedefinisjon",
"fields": {
"penalty_id": {
"name": "Straffe-ID",
"description": "ID-en til straffen som skal oppdateres"
},
"name": {
"name": "Navn",
"description": "Nytt navn for straffen"
},
"points": {
"name": "Poeng",
"description": "Ny poengverdi"
},
"description": {
"name": "Beskrivelse",
"description": "Ny beskrivelse"
},
"icon": {
"name": "Ikon",
"description": "Nytt ikon"
},
"assigned_to": {
"name": "Tildelt til",
"description": "Ny liste over barn-ID-er"
}
}
},
"remove_penalty": {
"name": "Fjern straff",
"description": "Fjern en straffedefinisjon",
"fields": {
"penalty_id": {
"name": "Straffe-ID",
"description": "ID-en til straffen som skal fjernes"
}
}
},
"apply_penalty": {
"name": "Bruk straff",
"description": "Bruk en straff på et barn og trekk poeng",
"fields": {
"penalty_id": {
"name": "Straffe-ID",
"description": "ID-en til straffen som skal brukes"
},
"child_id": {
"name": "Barn-ID",
"description": "ID-en til barnet straffen skal brukes på"
}
}
},
"add_bonus": {
"name": "Legg til bonus",
"description": "Opprett en ny bonusdefinisjon",
"fields": {
"name": {
"name": "Navn",
"description": "Navnet på bonusen"
},
"points": {
"name": "Poeng",
"description": "Antall poeng som tildeles når bonusen brukes"
},
"description": {
"name": "Beskrivelse",
"description": "Valgfri beskrivelse av bonusen"
},
"icon": {
"name": "Ikon",
"description": "MDI-ikon for bonusen"
},
"assigned_to": {
"name": "Tildelt til",
"description": "Liste over barn-ID-er bonusen gjelder for"
}
}
},
"update_bonus": {
"name": "Oppdater bonus",
"description": "Oppdater en eksisterende bonusdefinisjon",
"fields": {
"bonus_id": {
"name": "Bonus-ID",
"description": "ID-en til bonusen som skal oppdateres"
},
"name": {
"name": "Navn",
"description": "Nytt navn for bonusen"
},
"points": {
"name": "Poeng",
"description": "Ny poengverdi"
},
"description": {
"name": "Beskrivelse",
"description": "Ny beskrivelse"
},
"icon": {
"name": "Ikon",
"description": "Nytt ikon"
},
"assigned_to": {
"name": "Tildelt til",
"description": "Ny liste over barn-ID-er"
}
}
},
"remove_bonus": {
"name": "Fjern bonus",
"description": "Fjern en bonusdefinisjon",
"fields": {
"bonus_id": {
"name": "Bonus-ID",
"description": "ID-en til bonusen som skal fjernes"
}
}
},
"apply_bonus": {
"name": "Bruk bonus",
"description": "Bruk en bonus på et barn og tildel poeng",
"fields": {
"bonus_id": {
"name": "Bonus-ID",
"description": "ID-en til bonusen som skal brukes"
},
"child_id": {
"name": "Barn-ID",
"description": "ID-en til barnet bonusen skal brukes på"
}
}
},
"add_chore": {
"name": "Legg til oppgave",
"description": "Opprett en ny oppgave dynamisk, typisk fra en automasjon eller et skript",
"fields": {
"name": {
"name": "Navn",
"description": "Navnet på oppgaven"
},
"description": {
"name": "Beskrivelse",
"description": "Valgfri beskrivelse av oppgaven"
},
"points": {
"name": "Poeng",
"description": "Poeng som tildeles når denne oppgaven fullføres"
},
"assigned_to": {
"name": "Tildelt",
"description": "Liste over barne-ID-er oppgaven skal tildeles. La stå tom for å tildele alle barn"
},
"time_category": {
"name": "Tidskategori",
"description": "Når oppgaven skal fullføres: morning, afternoon, evening, night eller anytime"
},
"one_shot": {
"name": "Engangsoppgave",
"description": "Hvis sann er dette en engangsoppgave som utløper etter fullføring eller ved dagens slutt"
},
"requires_approval": {
"name": "Krever godkjenning",
"description": "Hvis sann må en forelder godkjenne fullføringen før poeng tildeles"
}
}
},
"skip_chore": {
"name": "Skip Chore",
"description": "Advance today's rotation past the current assignee. Ephemeral — tomorrow's rotation resumes as normal.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to skip"
}
}
},
"set_chore_manual_start": {
"name": "Set Manual Start Child",
"description": "Set which child starts a rotating chore. For alternating mode this reorders the pool; for random/balanced it only overrides today's assignee.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to update"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child who should start the rotation"
}
}
},
"add_task_group": {
"name": "Add Task Group",
"description": "Create a task group (sticky = same child, spread = different children).",
"fields": {
"name": {
"name": "Name",
"description": "Display name for the group"
},
"policy": {
"name": "Policy",
"description": "sticky (same child) or spread (different children)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "List of chore IDs in the group. For sticky, the first chore is the leader."
}
}
},
"update_task_group": {
"name": "Update Task Group",
"description": "Update a task group's name, policy, or membership.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to update"
},
"name": {
"name": "Name",
"description": "New display name"
},
"policy": {
"name": "Policy",
"description": "New policy (sticky or spread)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "Replacement chore ID list. For sticky, the first chore is the leader."
}
}
},
"remove_task_group": {
"name": "Remove Task Group",
"description": "Delete a task group. Member chores are not affected.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to delete"
}
}
},
"start_timed_task": {
"name": "Start tidsbasert oppgave",
"description": "Start eller gjenoppta timeren på en tidsbasert oppgave",
"fields": {
"chore_id": {
"name": "Oppgave-ID",
"description": "ID-en til den tidsbaserte oppgaven"
},
"child_id": {
"name": "Barn-ID",
"description": "ID-en til barnet som starter timeren"
}
}
},
"pause_timed_task": {
"name": "Sett tidsbasert oppgave på pause",
"description": "Sett timeren på en tidsbasert oppgave på pause",
"fields": {
"chore_id": {
"name": "Oppgave-ID",
"description": "ID-en til den tidsbaserte oppgaven"
},
"child_id": {
"name": "Barn-ID",
"description": "ID-en til barnet som pauser timeren"
}
}
},
"stop_timed_task": {
"name": "Stopp tidsbasert oppgave",
"description": "Stopp timeren på en tidsbasert oppgave og send inn til godkjenning",
"fields": {
"chore_id": {
"name": "Oppgave-ID",
"description": "ID-en til den tidsbaserte oppgaven"
},
"child_id": {
"name": "Barn-ID",
"description": "ID-en til barnet som stopper timeren"
}
}
},
"add_badge": {
"name": "Legg til merke",
"description": "Opprett et egendefinert merke.",
"fields": {
"name": {
"name": "Navn",
"description": "Visningsnavnet til merket"
},
"description": {
"name": "Beskrivelse",
"description": "Beskrivelse av hvordan merket oppnås"
},
"icon": {
"name": "Ikon",
"description": "Ikon for merket (f.eks. mdi:beach)"
},
"tier": {
"name": "Nivå",
"description": "Merkets nivå: bronse, sølv, gull eller platina"
},
"point_bonus": {
"name": "Poengbonus",
"description": "Poeng som krediteres barnet når merket oppnås"
},
"criteria": {
"name": "Kriterier",
"description": "Liste med metric / operator / value-oppføringer. Tom = kun manuell tildeling."
},
"assigned_to": {
"name": "Tildelt til",
"description": "Liste med barn-ID-er (tom = alle)"
},
"notify_on_earn": {
"name": "Varsle ved oppnåelse",
"description": "Send et varsel når merket oppnås"
}
}
},
"update_badge": {
"name": "Oppdater merke",
"description": "Oppdater et eksisterende merke. For innebygde merker kan kun point_bonus, tier, assigned_to, enabled og notify_on_earn redigeres.",
"fields": {
"badge_id": {
"name": "Merke-ID",
"description": "ID-en til merket som skal oppdateres"
},
"name": {
"name": "Navn",
"description": "Nytt visningsnavn for merket"
},
"description": {
"name": "Beskrivelse",
"description": "Ny beskrivelse av merket"
},
"icon": {
"name": "Ikon",
"description": "Nytt ikon for merket"
},
"tier": {
"name": "Nivå",
"description": "Merkets nivå: bronse, sølv, gull eller platina"
},
"point_bonus": {
"name": "Poengbonus",
"description": "Poeng som krediteres barnet når merket oppnås"
},
"criteria": {
"name": "Kriterier",
"description": "Liste med metric / operator / value-oppføringer. Tom = kun manuell tildeling."
},
"assigned_to": {
"name": "Tildelt til",
"description": "Liste med barn-ID-er (tom = alle)"
},
"enabled": {
"name": "Aktivert",
"description": "Om merket er aktivt"
},
"notify_on_earn": {
"name": "Varsle ved oppnåelse",
"description": "Send et varsel når merket oppnås"
}
}
},
"remove_badge": {
"name": "Fjern merke",
"description": "Fjern et egendefinert merke. Innebygde merker kan ikke fjernes.",
"fields": {
"badge_id": {
"name": "Merke-ID",
"description": "ID-en til merket som skal fjernes"
}
}
},
"award_badge_manually": {
"name": "Tildel merke manuelt",
"description": "Tildel et merke manuelt til et barn.",
"fields": {
"badge_id": {
"name": "Merke-ID",
"description": "ID-en til merket som skal tildeles"
},
"child_id": {
"name": "Barn-ID",
"description": "ID-en til barnet som mottar merket"
}
}
},
"revoke_badge": {
"name": "Tilbakekall merke",
"description": "Tilbakekall et tildelt merke. Hvis en poengbonus ble kreditert, blir den reversert.",
"fields": {
"awarded_badge_id": {
"name": "Tildelt merke-ID",
"description": "ID-en til det tildelte merket som skal tilbakekalles"
}
}
},
"rebuild_badges": {
"name": "Gjenoppbygg merker",
"description": "Reevaluer alle merker for alle barn i stillhet (ingen varsler, ingen poengbonuser)."
},
"apply_mandatory_penalty": {
"name": "Bruk obligatorisk straff",
"description": "Trekk fra de konfigurerte strafepoengene for en glemt obligatorisk oppgave og fjern gjennomgangselementet.",
"fields": {
"miss_id": {
"name": "Forsømmelse-ID",
"description": "ID-en til gjennomgangselementet for den glemte obligatoriske oppgaven"
}
}
},
"choose_avatar": {
"name": "Velg avatar",
"description": "Et barn bytter til en avatar de har låst opp.",
"fields": {
"child_id": {
"name": "Barne-ID",
"description": "ID-en til barnet"
},
"icon": {
"name": "Avatar-ikon",
"description": "mdi-ikonet til en opplåst katalog-avatar (f.eks. mdi:rocket-launch)."
}
}
},
"dismiss_mandatory_chore": {
"name": "Avvis obligatorisk oppgave",
"description": "Fjern gjennomgangselementet for en glemt obligatorisk oppgave uten straff.",
"fields": {
"miss_id": {
"name": "Forsømmelse-ID",
"description": "ID-en til gjennomgangselementet for den glemte obligatoriske oppgaven"
}
}
},
"gift_points": {
"name": "Gi bort poeng",
"description": "Overfør brukbare poeng fra ett barn til et annet (foreldrestyrt).",
"fields": {
"from_child_id": {
"name": "Fra barne-ID",
"description": "ID-en til barnet som sender poeng"
},
"to_child_id": {
"name": "Til barne-ID",
"description": "ID-en til barnet som mottar poeng"
},
"points": {
"name": "Poeng",
"description": "Antall poeng som skal overføres"
}
}
},
"postpone_mandatory_chore": {
"name": "Utsett obligatorisk oppgave",
"description": "Gi en glemt obligatorisk oppgave en ny periode (eller i morgen) uten straff, og fjern gjennomgangselementet.",
"fields": {
"miss_id": {
"name": "Forsømmelse-ID",
"description": "ID-en til gjennomgangselementet for den glemte obligatoriske oppgaven"
}
}
},
"request_swap": {
"name": "Be om oppgavebytte",
"description": "Et barn ber om å overta dagens rotasjonstildeling av en oppgave (venter på foreldregodkjenning).",
"fields": {
"chore_id": {
"name": "Oppgave-ID",
"description": "ID-en til oppgaven som skal overtas"
},
"requester_id": {
"name": "Barne-ID for forespørsel",
"description": "ID-en til barnet som ber om byttet"
}
}
},
"test_notification": {
"name": "Testvarsel",
"description": "Send et eksempelvarsel av den angitte typen til de aktiverte mottakerne (ignorerer hovedbryteren slik at rutingen kan verifiseres).",
"fields": {
"type_id": {
"name": "Varseltype",
"description": "ID for varseltype, f.eks. pending_chore_approval, badge_earned, streak_milestone"
}
}
},
"record_allowance_payout": {
"name": "Registrer lommepenge-utbetaling",
"description": "Trekk fra poeng og registrer en reell lommepenge-utbetaling i loggen (fast omregningskurs; foreldrestyrt).",
"fields": {
"child_id": {
"name": "Barne-ID",
"description": "ID-en til barnet som mottar utbetalingen"
},
"points": {
"name": "Poeng",
"description": "Poeng som skal regnes om til penger og trekkes fra"
}
}
}
},
"entity": {
"sensor": {
"child_stats": {
"unit_of_measurement": "oppgaver"
},
"child_badges": {
"unit_of_measurement": "merker"
}
},
"number": {
"weekend_multiplier": {
"name": "Helgemultiplikator"
},
"perfect_week_bonus": {
"name": "Bonus for perfekt uke"
}
},
"select": {
"streak_reset_mode": {
"name": "Tilbakestillingsmodus for rekke"
},
"card_design": {
"name": "Kortdesign"
}
}
}
}
@@ -0,0 +1,884 @@
{
"config": {
"step": {
"user": {
"title": "Velkomen til TaskMate!",
"description": "Set opp familieoppgåvesystemet ditt. Du kan tilpasse poengvalutaen borna skal tene.",
"data": {
"points_name": "Poengvalutanamn (t.d. Stjerner, Myntar, Kroner)",
"points_icon": "Poengikon"
}
}
},
"error": {
"name_required": "Namn er påkravd"
},
"abort": {
"already_configured": "TaskMate er allereie konfigurert"
}
},
"selector": {
"chore_action": {
"options": {
"save": "Lagre endringar",
"re_enable": "Reaktiver oppgåve",
"disable": "Deaktiver oppgåve",
"delete": "Slett denne oppgåva"
}
},
"reward_action": {
"options": {
"save": "Lagre endringar",
"delete": "Slett løning"
}
},
"time_category": {
"options": {
"morning": "Morgon",
"afternoon": "Ettermiddag",
"evening": "Kveld",
"night": "Natt",
"anytime": "Når som helst"
}
},
"schedule_mode": {
"options": {
"specific_days": "Bestemte vekedagar",
"recurring": "Gjentakande (kvar N dag/veke/månad)",
"one_shot": "Eingongsoppgåve (éin dag)"
}
},
"due_days_option": {
"options": {
"monday": "Måndag",
"tuesday": "Tysdag",
"wednesday": "Onsdag",
"thursday": "Torsdag",
"friday": "Fredag",
"saturday": "Laurdag",
"sunday": "Sundag"
}
},
"recurrence": {
"options": {
"every_2_days": "Annakvar dag",
"weekly": "Vekeleg",
"every_2_weeks": "Annakvar veke",
"monthly": "Månadleg",
"every_3_months": "Kvar 3. månad",
"every_6_months": "Kvar 6. månad"
}
},
"recurrence_day_option": {
"options": {
"monday": "Måndag",
"tuesday": "Tysdag",
"wednesday": "Onsdag",
"thursday": "Torsdag",
"friday": "Fredag",
"saturday": "Laurdag",
"sunday": "Sundag",
"any_day": "Kva dag som helst"
}
},
"first_occurrence_mode": {
"options": {
"available_immediately": "Tilgjengeleg med ein gong",
"wait_for_first_occurrence": "Vent på fyrste planlagde førekomst"
}
},
"streak_reset_mode": {
"options": {
"reset": "Nullstill — rekka går til 0 ved tapt dag",
"pause": "Pause — rekka vert bevart til neste fullføring"
}
},
"visibility_operator": {
"options": {
"none": "Ingen filter — Vis oppgåva alltid",
"equals": "Lik — Vis når eininga si tilstand stemmer nøyaktig",
"not_equals": "Ikkje lik — Vis når eininga si tilstand ikkje stemmer",
"gte": "Større enn eller lik (≥) — Vis når numerisk verdi er ≥ målverdien",
"lte": "Mindre enn eller lik (≤) — Vis når numerisk verdi er ≤ målverdien",
"gt": "Større enn (>) — Vis når numerisk verdi er > målverdien",
"lt": "Mindre enn (<) — Vis når numerisk verdi er < målverdien"
}
},
"assignment_mode": {
"options": {
"everyone": "Alle — kvart tildelt barn ser oppgåva",
"alternating": "Vekslande — roter mellom dei tildelte barna, eitt per dag",
"random": "Tilfeldig — plukk eitt tildelt barn tilfeldig kvar dag",
"balanced": "Balansert — fordel dagens balanserte oppgåver jamt mellom dei tildelte barna",
"first_come": "Førstemann til mølla — første barn som fullfører den vinn; vert skjult for dei andre",
"unassigned": "Ikkje tildelt — ingen born ser denne oppgåva"
}
},
"task_group_policy": {
"options": {
"sticky": "Sticky — same barn for alle oppgåver i gruppa",
"spread": "Spread — ulike barn i gruppa i dag"
}
},
"task_group_action": {
"options": {
"save": "Lagre endringar",
"delete": "Slett gruppe"
}
}
},
"services": {
"complete_chore": {
"name": "Fullfør oppgåve",
"description": "Merk ei oppgåve som fullført av eit born",
"fields": {
"chore_id": {
"name": "Oppgåve-ID",
"description": "ID-en til oppgåva som skal fullførast"
},
"child_id": {
"name": "Born-ID",
"description": "ID-en til bornet som fullfører oppgåva"
}
}
},
"complete_bonus_subtask": {
"name": "Fullfør bonus-deloppgåve",
"description": "Fullfør ei bonus-deloppgåve etter at hovudoppgåva er fullført",
"fields": {
"chore_id": {
"name": "Oppgåve-ID",
"description": "ID-en til hovudoppgåva"
},
"bonus_subtask_id": {
"name": "Bonus-deloppgåve-ID",
"description": "ID-en til bonus-deloppgåva som skal fullførast"
},
"child_id": {
"name": "Born-ID",
"description": "ID-en til bornet som fullfører bonus-deloppgåva"
}
}
},
"approve_chore": {
"name": "Godkjenn oppgåve",
"description": "Godkjenn ei fullført oppgåve og tildel poeng",
"fields": {
"completion_id": {
"name": "Fullførings-ID",
"description": "ID-en til oppgåvefullføringa som skal godkjennast"
}
}
},
"approve_all_chores": {
"name": "Godkjenn alle gjeremål",
"description": "Godkjenn alle ventande fullførte gjeremål (eller eit bestemt utval) og tildel poeng",
"fields": {
"completion_ids": {
"name": "Fullførings-ID-ar",
"description": "Bestemte fullførings-ID-ar som skal godkjennast; utelat for å godkjenne alle ventande"
}
}
},
"reject_chore": {
"name": "Avvis oppgåve",
"description": "Avvis ei fullført oppgåve",
"fields": {
"completion_id": {
"name": "Fullførings-ID",
"description": "ID-en til oppgåvefullføringa som skal avvisast"
}
}
},
"undo_chore_approval": {
"name": "Angre godkjenning av gjeremål",
"description": "Angre ei utilsikta godkjenning av eit gjeremål — fjernar dei tildelte poenga og set fullføringa tilbake til ventar, slik at ho kan godkjennast på nytt.",
"fields": {
"completion_id": {
"name": "Fullførings-ID",
"description": "ID-en til den godkjende gjeremålsfullføringa som skal setjast tilbake til ventar"
}
}
},
"undo_transaction": {
"name": "Angre transaksjon",
"description": "Angre ein poengtransaksjon med ID-en — straffer, bonusar, manuelle justeringar (legg til/fjern) og gåver (begge sider). Automatiske transaksjonar (helg-/rekkje-/perfekt veke-bonusar, sparekrukke-rørsler, forfall, renter) kan ikkje angrast.",
"fields": {
"transaction_id": {
"name": "Transaksjons-ID",
"description": "ID-en til poengtransaksjonen som skal angrast"
}
}
},
"claim_reward": {
"name": "Hent løning",
"description": "Bornet hentar ei løning med poenga sine",
"fields": {
"reward_id": {
"name": "Lønings-ID",
"description": "ID-en til løninga som skal hentast"
},
"child_id": {
"name": "Born-ID",
"description": "ID-en til bornet som hentar løninga"
}
}
},
"approve_reward": {
"name": "Godkjenn løning",
"description": "Godkjenn eit løningskrav",
"fields": {
"claim_id": {
"name": "Krav-ID",
"description": "ID-en til løningskravet som skal godkjennast"
}
}
},
"allocate_points_to_pool": {
"name": "Tildel poeng til sparegris",
"description": "Flytt poeng frå den disponible saldoen til eit born inn i sparegrisen til ei løning (låst).",
"fields": {
"child_id": {
"name": "Born-ID",
"description": "ID-en til bornet som gjer tildelinga"
},
"reward_id": {
"name": "Lønings-ID",
"description": "ID-en til sparegrisen til løninga det skal setjast inn i"
},
"points": {
"name": "Poeng",
"description": "Tal poeng å tildele (avgrensa av kapasiteten til sparegrisen og disponibel saldo)"
}
}
},
"add_points": {
"name": "Legg til poeng",
"description": "Legg til bonuspoeng til eit born",
"fields": {
"child_id": {
"name": "Born-ID",
"description": "ID-en til bornet som skal få poeng"
},
"points": {
"name": "Poeng",
"description": "Tal poeng å leggje til"
},
"reason": {
"name": "Grunn",
"description": "Valfri grunn for bonusen"
}
}
},
"remove_points": {
"name": "Fjern poeng",
"description": "Fjern poeng frå eit born (straff)",
"fields": {
"child_id": {
"name": "Born-ID",
"description": "ID-en til bornet som skal miste poeng"
},
"points": {
"name": "Poeng",
"description": "Tal poeng å fjerne"
},
"reason": {
"name": "Grunn",
"description": "Valfri grunn for straffen"
}
}
},
"reject_reward": {
"name": "Avvis løning",
"description": "Avvis eit løningskrav",
"fields": {
"claim_id": {
"name": "Krav-ID",
"description": "ID-en til løningskravet som skal avvisast"
}
}
},
"preview_sound": {
"name": "Førehandsvise lyd",
"description": "Førehandsvise ein fullføringslydeffekt i nettlesaren",
"fields": {
"sound": {
"name": "Lyd",
"description": "Lyden som skal førehandsvisast"
}
}
},
"set_chore_order": {
"name": "Set oppgåverekkjefølgje",
"description": "Set visingsrekkjefølgja for oppgåver for eit born",
"fields": {
"child_id": {
"name": "Born-ID",
"description": "ID-en til bornet å sette oppgåverekkjefølgje for"
},
"chore_order": {
"name": "Oppgåverekkjefølgje",
"description": "Ordna liste over oppgåve-ID-ar"
}
}
},
"add_penalty": {
"name": "Legg til straff",
"description": "Opprett ein ny straffedefinisjon",
"fields": {
"name": {
"name": "Namn",
"description": "Namnet på straffen"
},
"points": {
"name": "Poeng",
"description": "Tal poeng å trekkje når ho vert brukt"
},
"description": {
"name": "Omtale",
"description": "Valfri omtale av straffen"
},
"icon": {
"name": "Ikon",
"description": "MDI-ikon for straffen"
},
"assigned_to": {
"name": "Tildelt til",
"description": "Liste over born-ID-ar denne straffen gjeld for"
}
}
},
"update_penalty": {
"name": "Oppdater straff",
"description": "Oppdater ein eksisterande straffedefinisjon",
"fields": {
"penalty_id": {
"name": "Straffe-ID",
"description": "ID-en til straffen som skal oppdaterast"
},
"name": {
"name": "Namn",
"description": "Nytt namn for straffen"
},
"points": {
"name": "Poeng",
"description": "Ny poengverdi"
},
"description": {
"name": "Omtale",
"description": "Ny omtale"
},
"icon": {
"name": "Ikon",
"description": "Nytt ikon"
},
"assigned_to": {
"name": "Tildelt til",
"description": "Ny liste over born-ID-ar"
}
}
},
"remove_penalty": {
"name": "Fjern straff",
"description": "Fjern ein straffedefinisjon",
"fields": {
"penalty_id": {
"name": "Straffe-ID",
"description": "ID-en til straffen som skal fjernast"
}
}
},
"apply_penalty": {
"name": "Bruk straff",
"description": "Bruk ein straff på eit born og trekk poeng",
"fields": {
"penalty_id": {
"name": "Straffe-ID",
"description": "ID-en til straffen som skal brukast"
},
"child_id": {
"name": "Born-ID",
"description": "ID-en til bornet straffen skal brukast på"
}
}
},
"add_bonus": {
"name": "Legg til bonus",
"description": "Opprett ein ny bonusdefinisjon",
"fields": {
"name": {
"name": "Namn",
"description": "Namnet på bonusen"
},
"points": {
"name": "Poeng",
"description": "Kor mange poeng som vert tildelt når bonusen vert brukt"
},
"description": {
"name": "Omtale",
"description": "Valfri omtale av bonusen"
},
"icon": {
"name": "Ikon",
"description": "MDI-ikon for bonusen"
},
"assigned_to": {
"name": "Tildelt til",
"description": "Liste over born-ID-ar bonusen gjeld for"
}
}
},
"update_bonus": {
"name": "Oppdater bonus",
"description": "Oppdater ein eksisterande bonusdefinisjon",
"fields": {
"bonus_id": {
"name": "Bonus-ID",
"description": "ID-en til bonusen som skal oppdaterast"
},
"name": {
"name": "Namn",
"description": "Nytt namn for bonusen"
},
"points": {
"name": "Poeng",
"description": "Ny poengverdi"
},
"description": {
"name": "Omtale",
"description": "Ny omtale"
},
"icon": {
"name": "Ikon",
"description": "Nytt ikon"
},
"assigned_to": {
"name": "Tildelt til",
"description": "Ny liste over born-ID-ar"
}
}
},
"remove_bonus": {
"name": "Fjern bonus",
"description": "Fjern ein bonusdefinisjon",
"fields": {
"bonus_id": {
"name": "Bonus-ID",
"description": "ID-en til bonusen som skal fjernast"
}
}
},
"apply_bonus": {
"name": "Bruk bonus",
"description": "Bruk ein bonus på eit born og tildel poeng",
"fields": {
"bonus_id": {
"name": "Bonus-ID",
"description": "ID-en til bonusen som skal brukast"
},
"child_id": {
"name": "Born-ID",
"description": "ID-en til bornet bonusen skal brukast på"
}
}
},
"add_chore": {
"name": "Legg til oppgåve",
"description": "Opprett ei ny oppgåve dynamisk, vanlegvis frå ein automasjon eller eit skript",
"fields": {
"name": {
"name": "Namn",
"description": "Namnet på oppgåva"
},
"description": {
"name": "Skildring",
"description": "Valfri skildring av oppgåva"
},
"points": {
"name": "Poeng",
"description": "Poeng som vert tildelte når oppgåva er fullført"
},
"assigned_to": {
"name": "Tildelt",
"description": "Liste over born-ID-ar oppgåva skal tildelast. Lat stå tom for å tildele alle born"
},
"time_category": {
"name": "Tidskategori",
"description": "Når oppgåva skal fullførast: morning, afternoon, evening, night eller anytime"
},
"one_shot": {
"name": "Eingongsoppgåve",
"description": "Om sann er dette ei eingongsoppgåve som går ut etter fullføring eller ved dagens slutt"
},
"requires_approval": {
"name": "Krev godkjenning",
"description": "Om sann må ein forelder godkjenne fullføringa før poeng vert tildelte"
}
}
},
"skip_chore": {
"name": "Skip Chore",
"description": "Advance today's rotation past the current assignee. Ephemeral — tomorrow's rotation resumes as normal.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to skip"
}
}
},
"set_chore_manual_start": {
"name": "Set Manual Start Child",
"description": "Set which child starts a rotating chore. For alternating mode this reorders the pool; for random/balanced it only overrides today's assignee.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to update"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child who should start the rotation"
}
}
},
"add_task_group": {
"name": "Add Task Group",
"description": "Create a task group (sticky = same child, spread = different children).",
"fields": {
"name": {
"name": "Name",
"description": "Display name for the group"
},
"policy": {
"name": "Policy",
"description": "sticky (same child) or spread (different children)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "List of chore IDs in the group. For sticky, the first chore is the leader."
}
}
},
"update_task_group": {
"name": "Update Task Group",
"description": "Update a task group's name, policy, or membership.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to update"
},
"name": {
"name": "Name",
"description": "New display name"
},
"policy": {
"name": "Policy",
"description": "New policy (sticky or spread)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "Replacement chore ID list. For sticky, the first chore is the leader."
}
}
},
"remove_task_group": {
"name": "Remove Task Group",
"description": "Delete a task group. Member chores are not affected.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to delete"
}
}
},
"start_timed_task": {
"name": "Start tidsstyrt oppgåve",
"description": "Start eller hald fram timeren på ei tidsstyrt oppgåve",
"fields": {
"chore_id": {
"name": "Oppgåve-ID",
"description": "ID-en til den tidsstyrte oppgåva"
},
"child_id": {
"name": "Born-ID",
"description": "ID-en til bornet som startar timeren"
}
}
},
"pause_timed_task": {
"name": "Set tidsstyrt oppgåve på pause",
"description": "Set timeren på ei tidsstyrt oppgåve på pause",
"fields": {
"chore_id": {
"name": "Oppgåve-ID",
"description": "ID-en til den tidsstyrte oppgåva"
},
"child_id": {
"name": "Born-ID",
"description": "ID-en til bornet som pausar timeren"
}
}
},
"stop_timed_task": {
"name": "Stopp tidsstyrt oppgåve",
"description": "Stopp timeren på ei tidsstyrt oppgåve og send inn til godkjenning",
"fields": {
"chore_id": {
"name": "Oppgåve-ID",
"description": "ID-en til den tidsstyrte oppgåva"
},
"child_id": {
"name": "Born-ID",
"description": "ID-en til bornet som stoppar timeren"
}
}
},
"add_badge": {
"name": "Legg til merke",
"description": "Opprett eit eigendefinert merke.",
"fields": {
"name": {
"name": "Namn",
"description": "Visingsnamnet til merket"
},
"description": {
"name": "Skildring",
"description": "Skildring av korleis merket vert oppnådd"
},
"icon": {
"name": "Ikon",
"description": "Ikon for merket (t.d. mdi:beach)"
},
"tier": {
"name": "Nivå",
"description": "Nivået til merket: bronse, sølv, gull eller platina"
},
"point_bonus": {
"name": "Poengbonus",
"description": "Poeng som vert krediterte bornet når merket vert oppnådd"
},
"criteria": {
"name": "Kriterium",
"description": "Liste med metric / operator / value-oppføringar. Tom = berre manuell tildeling."
},
"assigned_to": {
"name": "Tildelt til",
"description": "Liste med born-ID-ar (tom = alle)"
},
"notify_on_earn": {
"name": "Varsle ved oppnåing",
"description": "Send eit varsel når merket vert oppnådd"
}
}
},
"update_badge": {
"name": "Oppdater merke",
"description": "Oppdater eit eksisterande merke. For innebygde merke kan berre point_bonus, tier, assigned_to, enabled og notify_on_earn redigerast.",
"fields": {
"badge_id": {
"name": "Merke-ID",
"description": "ID-en til merket som skal oppdaterast"
},
"name": {
"name": "Namn",
"description": "Nytt visingsnamn for merket"
},
"description": {
"name": "Skildring",
"description": "Ny skildring av merket"
},
"icon": {
"name": "Ikon",
"description": "Nytt ikon for merket"
},
"tier": {
"name": "Nivå",
"description": "Nivået til merket: bronse, sølv, gull eller platina"
},
"point_bonus": {
"name": "Poengbonus",
"description": "Poeng som vert krediterte bornet når merket vert oppnådd"
},
"criteria": {
"name": "Kriterium",
"description": "Liste med metric / operator / value-oppføringar. Tom = berre manuell tildeling."
},
"assigned_to": {
"name": "Tildelt til",
"description": "Liste med born-ID-ar (tom = alle)"
},
"enabled": {
"name": "Aktivert",
"description": "Om merket er aktivt"
},
"notify_on_earn": {
"name": "Varsle ved oppnåing",
"description": "Send eit varsel når merket vert oppnådd"
}
}
},
"remove_badge": {
"name": "Fjern merke",
"description": "Fjern eit eigendefinert merke. Innebygde merke kan ikkje fjernast.",
"fields": {
"badge_id": {
"name": "Merke-ID",
"description": "ID-en til merket som skal fjernast"
}
}
},
"award_badge_manually": {
"name": "Tildel merke manuelt",
"description": "Tildel eit merke manuelt til eit born.",
"fields": {
"badge_id": {
"name": "Merke-ID",
"description": "ID-en til merket som skal tildelast"
},
"child_id": {
"name": "Born-ID",
"description": "ID-en til bornet som tek imot merket"
}
}
},
"revoke_badge": {
"name": "Tilbakekall merke",
"description": "Tilbakekall eit tildelt merke. Om ein poengbonus vart kreditert, vert han reversert.",
"fields": {
"awarded_badge_id": {
"name": "Tildelt merke-ID",
"description": "ID-en til det tildelte merket som skal tilbakekallast"
}
}
},
"rebuild_badges": {
"name": "Bygg opp att merke",
"description": "Reevaluer alle merke for alle born i det stille (ingen varsel, ingen poengbonusar)."
},
"apply_mandatory_penalty": {
"name": "Bruk obligatorisk straff",
"description": "Trekk frå dei konfigurerte straffepoenga for ei gløymd obligatorisk oppgåve og fjern gjennomgangselementet.",
"fields": {
"miss_id": {
"name": "Forsøming-ID",
"description": "ID-en til gjennomgangselementet for den gløymde obligatoriske oppgåva"
}
}
},
"choose_avatar": {
"name": "Vel avatar",
"description": "Eit barn byter til ein avatar dei har låst opp.",
"fields": {
"child_id": {
"name": "Barne-ID",
"description": "ID-en til barnet"
},
"icon": {
"name": "Avatar-ikon",
"description": "mdi-ikonet til ein opplåst katalog-avatar (t.d. mdi:rocket-launch)."
}
}
},
"dismiss_mandatory_chore": {
"name": "Avvis obligatorisk oppgåve",
"description": "Fjern gjennomgangselementet for ei gløymd obligatorisk oppgåve utan straff.",
"fields": {
"miss_id": {
"name": "Forsøming-ID",
"description": "ID-en til gjennomgangselementet for den gløymde obligatoriske oppgåva"
}
}
},
"gift_points": {
"name": "Gi bort poeng",
"description": "Overfør brukbare poeng frå eitt barn til eit anna (foreldrestyrt).",
"fields": {
"from_child_id": {
"name": "Frå barne-ID",
"description": "ID-en til barnet som sender poeng"
},
"to_child_id": {
"name": "Til barne-ID",
"description": "ID-en til barnet som mottek poeng"
},
"points": {
"name": "Poeng",
"description": "Talet på poeng som skal overførast"
}
}
},
"postpone_mandatory_chore": {
"name": "Utsett obligatorisk oppgåve",
"description": "Gi ei gløymd obligatorisk oppgåve ein ny periode (eller i morgon) utan straff, og fjern gjennomgangselementet.",
"fields": {
"miss_id": {
"name": "Forsøming-ID",
"description": "ID-en til gjennomgangselementet for den gløymde obligatoriske oppgåva"
}
}
},
"request_swap": {
"name": "Be om oppgåvebyte",
"description": "Eit barn ber om å overta dagens rotasjonstildeling av ei oppgåve (ventar på foreldregodkjenning).",
"fields": {
"chore_id": {
"name": "Oppgåve-ID",
"description": "ID-en til oppgåva som skal overtakast"
},
"requester_id": {
"name": "Barne-ID for førespurnad",
"description": "ID-en til barnet som ber om bytet"
}
}
},
"test_notification": {
"name": "Testvarsel",
"description": "Send eit eksempelvarsel av den angitte typen til dei aktiverte mottakarane (ignorerer hovudbrytaren slik at rutinga kan verifiserast).",
"fields": {
"type_id": {
"name": "Varseltype",
"description": "ID for varseltype, t.d. pending_chore_approval, badge_earned, streak_milestone"
}
}
},
"record_allowance_payout": {
"name": "Registrer lommepenge-utbetaling",
"description": "Trekk frå poeng og registrer ei reell lommepenge-utbetaling i loggen (fast omrekningskurs; foreldrestyrt).",
"fields": {
"child_id": {
"name": "Barne-ID",
"description": "ID-en til barnet som mottek utbetalinga"
},
"points": {
"name": "Poeng",
"description": "Poeng som skal reknast om til pengar og trekkjast frå"
}
}
}
},
"entity": {
"sensor": {
"child_stats": {
"unit_of_measurement": "oppgåver"
},
"child_badges": {
"unit_of_measurement": "merke"
}
},
"number": {
"weekend_multiplier": {
"name": "Helgemultiplikator"
},
"perfect_week_bonus": {
"name": "Bonus for perfekt veke"
}
},
"select": {
"streak_reset_mode": {
"name": "Tilbakestillingsmodus for rekkje"
},
"card_design": {
"name": "Kortdesign"
}
}
}
}
@@ -0,0 +1,884 @@
{
"config": {
"step": {
"user": {
"title": "Bem-vindo ao TaskMate!",
"description": "Configure o seu sistema de gestão de tarefas familiar. Pode personalizar a moeda de pontos que as crianças vão ganhar.",
"data": {
"points_name": "Nome da moeda de pontos (ex: Estrelas, Moedas, Pontos)",
"points_icon": "Ícone dos pontos"
}
}
},
"error": {
"name_required": "O nome é obrigatório"
},
"abort": {
"already_configured": "O TaskMate já está configurado"
}
},
"selector": {
"chore_action": {
"options": {
"save": "Guardar alterações",
"re_enable": "Reativar tarefa",
"disable": "Desativar tarefa",
"delete": "Eliminar esta tarefa"
}
},
"reward_action": {
"options": {
"save": "Guardar alterações",
"delete": "Eliminar recompensa"
}
},
"time_category": {
"options": {
"morning": "Manhã",
"afternoon": "Tarde",
"evening": "Fim da tarde",
"night": "Noite",
"anytime": "Qualquer hora"
}
},
"schedule_mode": {
"options": {
"specific_days": "Dias específicos da semana",
"recurring": "Recorrente (a cada N dias/semanas/meses)",
"one_shot": "Tarefa única (um dia)"
}
},
"due_days_option": {
"options": {
"monday": "Segunda-feira",
"tuesday": "Terça-feira",
"wednesday": "Quarta-feira",
"thursday": "Quinta-feira",
"friday": "Sexta-feira",
"saturday": "Sábado",
"sunday": "Domingo"
}
},
"recurrence": {
"options": {
"every_2_days": "A cada 2 dias",
"weekly": "Semanal",
"every_2_weeks": "A cada 2 semanas",
"monthly": "Mensal",
"every_3_months": "A cada 3 meses",
"every_6_months": "A cada 6 meses"
}
},
"recurrence_day_option": {
"options": {
"monday": "Segunda-feira",
"tuesday": "Terça-feira",
"wednesday": "Quarta-feira",
"thursday": "Quinta-feira",
"friday": "Sexta-feira",
"saturday": "Sábado",
"sunday": "Domingo",
"any_day": "Qualquer dia"
}
},
"first_occurrence_mode": {
"options": {
"available_immediately": "Disponível imediatamente",
"wait_for_first_occurrence": "Aguardar primeira ocorrência agendada"
}
},
"streak_reset_mode": {
"options": {
"reset": "Reiniciar — sequência volta a 0 num dia falhado",
"pause": "Pausar — sequência preservada até próxima conclusão"
}
},
"visibility_operator": {
"options": {
"none": "Sem filtro — Sempre mostrar a tarefa",
"equals": "Igual — Mostrar quando o estado da entidade corresponde exatamente",
"not_equals": "Não igual — Mostrar quando o estado da entidade não corresponde",
"gte": "Maior ou igual (≥) — Mostrar quando valor numérico é ≥ alvo",
"lte": "Menor ou igual (≤) — Mostrar quando valor numérico é ≤ alvo",
"gt": "Maior que (>) — Mostrar quando valor numérico é > alvo",
"lt": "Menor que (<) — Mostrar quando valor numérico é < alvo"
}
},
"assignment_mode": {
"options": {
"everyone": "Todos — todas as crianças atribuídas veem a tarefa",
"alternating": "Alternado — alterna entre as crianças atribuídas, uma por dia",
"random": "Aleatório — escolhe aleatoriamente uma criança atribuída por dia",
"balanced": "Equilibrado — divide as tarefas equilibradas do dia igualmente entre as crianças atribuídas",
"first_come": "Quem chega primeiro — a primeira criança a concluir ganha; some para as demais",
"unassigned": "Não atribuído — nenhuma criança vê esta tarefa"
}
},
"task_group_policy": {
"options": {
"sticky": "Sticky — mesma criança para todas as tarefas do grupo",
"spread": "Spread — crianças diferentes no grupo hoje"
}
},
"task_group_action": {
"options": {
"save": "Salvar alterações",
"delete": "Excluir grupo"
}
}
},
"services": {
"complete_chore": {
"name": "Concluir tarefa",
"description": "Marcar uma tarefa como concluída por uma criança",
"fields": {
"chore_id": {
"name": "ID da tarefa",
"description": "O ID da tarefa a concluir"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que conclui a tarefa"
}
}
},
"complete_bonus_subtask": {
"name": "Concluir subtarefa bônus",
"description": "Concluir uma subtarefa bônus depois que a tarefa principal for concluída",
"fields": {
"chore_id": {
"name": "ID da tarefa",
"description": "O ID da tarefa principal"
},
"bonus_subtask_id": {
"name": "ID da subtarefa bônus",
"description": "O ID da subtarefa bônus a concluir"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que conclui a subtarefa bônus"
}
}
},
"approve_chore": {
"name": "Aprovar tarefa",
"description": "Aprovar uma tarefa concluída e atribuir pontos",
"fields": {
"completion_id": {
"name": "ID de conclusão",
"description": "O ID da conclusão da tarefa a aprovar"
}
}
},
"approve_all_chores": {
"name": "Aprovar todas as tarefas",
"description": "Aprovar todas as conclusões de tarefas pendentes (ou um conjunto específico) e atribuir pontos",
"fields": {
"completion_ids": {
"name": "IDs de conclusão",
"description": "IDs de conclusão específicos para aprovar; omita para aprovar todas as pendentes"
}
}
},
"reject_chore": {
"name": "Rejeitar tarefa",
"description": "Rejeitar uma tarefa concluída",
"fields": {
"completion_id": {
"name": "ID de conclusão",
"description": "O ID da conclusão da tarefa a rejeitar"
}
}
},
"undo_chore_approval": {
"name": "Desfazer aprovação de tarefa",
"description": "Desfazer a aprovação acidental de uma tarefa — remove os pontos concedidos e retorna a conclusão para pendente para que possa ser aprovada novamente.",
"fields": {
"completion_id": {
"name": "ID de conclusão",
"description": "O ID da conclusão de tarefa aprovada a retornar para pendente"
}
}
},
"undo_transaction": {
"name": "Desfazer transação",
"description": "Desfazer uma transação de pontos pelo seu ID — penalidades, bônus, ajustes manuais (adicionar/remover) e presentes (ambos os lados). Transações automáticas (bônus de fim de semana/sequência/semana perfeita, movimentações do cofrinho, desvalorização, juros) não podem ser desfeitas.",
"fields": {
"transaction_id": {
"name": "ID da transação",
"description": "O ID da transação de pontos a reverter"
}
}
},
"claim_reward": {
"name": "Reclamar recompensa",
"description": "A criança reclama uma recompensa usando os seus pontos",
"fields": {
"reward_id": {
"name": "ID da recompensa",
"description": "O ID da recompensa a reclamar"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que reclama a recompensa"
}
}
},
"approve_reward": {
"name": "Aprovar recompensa",
"description": "Aprovar um pedido de recompensa",
"fields": {
"claim_id": {
"name": "ID do pedido",
"description": "O ID do pedido de recompensa a aprovar"
}
}
},
"allocate_points_to_pool": {
"name": "Alocar pontos ao cofrinho",
"description": "Mover pontos do saldo disponível de uma criança para o cofrinho de uma recompensa (bloqueado).",
"fields": {
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que faz a alocação"
},
"reward_id": {
"name": "ID da recompensa",
"description": "O ID do cofrinho da recompensa onde depositar"
},
"points": {
"name": "Pontos",
"description": "Número de pontos a alocar (limitado pela capacidade do cofrinho e pelo saldo disponível)"
}
}
},
"add_points": {
"name": "Adicionar pontos",
"description": "Adicionar pontos de bónus a uma criança",
"fields": {
"child_id": {
"name": "ID da criança",
"description": "O ID da criança a quem adicionar pontos"
},
"points": {
"name": "Pontos",
"description": "O número de pontos a adicionar"
},
"reason": {
"name": "Motivo",
"description": "Motivo opcional para o bónus"
}
}
},
"remove_points": {
"name": "Remover pontos",
"description": "Remover pontos de uma criança (penalização)",
"fields": {
"child_id": {
"name": "ID da criança",
"description": "O ID da criança a quem remover pontos"
},
"points": {
"name": "Pontos",
"description": "O número de pontos a remover"
},
"reason": {
"name": "Motivo",
"description": "Motivo opcional para a penalização"
}
}
},
"reject_reward": {
"name": "Rejeitar recompensa",
"description": "Rejeitar um pedido de recompensa",
"fields": {
"claim_id": {
"name": "ID do pedido",
"description": "O ID do pedido de recompensa a rejeitar"
}
}
},
"preview_sound": {
"name": "Pré-visualizar som",
"description": "Pré-visualizar um efeito sonoro de conclusão no navegador",
"fields": {
"sound": {
"name": "Som",
"description": "O som a pré-visualizar"
}
}
},
"set_chore_order": {
"name": "Definir ordem das tarefas",
"description": "Definir a ordem de apresentação das tarefas para uma criança",
"fields": {
"child_id": {
"name": "ID da criança",
"description": "O ID da criança para definir a ordem das tarefas"
},
"chore_order": {
"name": "Ordem das tarefas",
"description": "Lista ordenada de IDs de tarefas"
}
}
},
"add_penalty": {
"name": "Adicionar penalização",
"description": "Criar uma nova definição de penalização",
"fields": {
"name": {
"name": "Nome",
"description": "O nome da penalização"
},
"points": {
"name": "Pontos",
"description": "O número de pontos a deduzir quando aplicada"
},
"description": {
"name": "Descrição",
"description": "Descrição opcional da penalização"
},
"icon": {
"name": "Ícone",
"description": "Ícone MDI para a penalização"
},
"assigned_to": {
"name": "Atribuída a",
"description": "Lista de IDs de crianças a quem esta penalização se aplica"
}
}
},
"update_penalty": {
"name": "Atualizar penalização",
"description": "Atualizar uma definição de penalização existente",
"fields": {
"penalty_id": {
"name": "ID da penalização",
"description": "O ID da penalização a atualizar"
},
"name": {
"name": "Nome",
"description": "Novo nome para a penalização"
},
"points": {
"name": "Pontos",
"description": "Novo valor de pontos"
},
"description": {
"name": "Descrição",
"description": "Nova descrição"
},
"icon": {
"name": "Ícone",
"description": "Novo ícone"
},
"assigned_to": {
"name": "Atribuída a",
"description": "Nova lista de IDs de crianças"
}
}
},
"remove_penalty": {
"name": "Remover penalização",
"description": "Remover uma definição de penalização",
"fields": {
"penalty_id": {
"name": "ID da penalização",
"description": "O ID da penalização a remover"
}
}
},
"apply_penalty": {
"name": "Aplicar penalização",
"description": "Aplicar uma penalização a uma criança, deduzindo pontos",
"fields": {
"penalty_id": {
"name": "ID da penalização",
"description": "O ID da penalização a aplicar"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança a quem aplicar a penalização"
}
}
},
"add_bonus": {
"name": "Adicionar bônus",
"description": "Criar uma nova definição de bônus",
"fields": {
"name": {
"name": "Nome",
"description": "O nome do bônus"
},
"points": {
"name": "Pontos",
"description": "O número de pontos a conceder quando aplicado"
},
"description": {
"name": "Descrição",
"description": "Descrição opcional do bônus"
},
"icon": {
"name": "Ícone",
"description": "Ícone MDI para o bônus"
},
"assigned_to": {
"name": "Atribuído a",
"description": "Lista de IDs de crianças a que este bônus se aplica"
}
}
},
"update_bonus": {
"name": "Atualizar bônus",
"description": "Atualizar uma definição de bônus existente",
"fields": {
"bonus_id": {
"name": "ID do bônus",
"description": "O ID do bônus a atualizar"
},
"name": {
"name": "Nome",
"description": "Novo nome para o bônus"
},
"points": {
"name": "Pontos",
"description": "Novo valor de pontos"
},
"description": {
"name": "Descrição",
"description": "Nova descrição"
},
"icon": {
"name": "Ícone",
"description": "Novo ícone"
},
"assigned_to": {
"name": "Atribuído a",
"description": "Nova lista de IDs de crianças"
}
}
},
"remove_bonus": {
"name": "Remover bônus",
"description": "Remover uma definição de bônus",
"fields": {
"bonus_id": {
"name": "ID do bônus",
"description": "O ID do bônus a remover"
}
}
},
"apply_bonus": {
"name": "Aplicar bônus",
"description": "Aplicar um bônus a uma criança, concedendo pontos",
"fields": {
"bonus_id": {
"name": "ID do bônus",
"description": "O ID do bônus a aplicar"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança a quem aplicar o bônus"
}
}
},
"add_chore": {
"name": "Adicionar tarefa",
"description": "Criar uma nova tarefa dinamicamente, normalmente a partir de uma automação ou script",
"fields": {
"name": {
"name": "Nome",
"description": "O nome da tarefa"
},
"description": {
"name": "Descrição",
"description": "Descrição opcional da tarefa"
},
"points": {
"name": "Pontos",
"description": "Pontos concedidos quando esta tarefa é concluída"
},
"assigned_to": {
"name": "Atribuída a",
"description": "Lista de IDs de crianças para atribuir esta tarefa. Deixe em branco para atribuir a todas as crianças"
},
"time_category": {
"name": "Categoria de tempo",
"description": "Quando esta tarefa deve ser concluída: morning, afternoon, evening, night ou anytime"
},
"one_shot": {
"name": "Única",
"description": "Se verdadeiro, é uma tarefa única que expira após a conclusão ou no final do dia"
},
"requires_approval": {
"name": "Requer aprovação",
"description": "Se verdadeiro, um pai/mãe deve aprovar a conclusão antes de os pontos serem concedidos"
}
}
},
"skip_chore": {
"name": "Skip Chore",
"description": "Advance today's rotation past the current assignee. Ephemeral — tomorrow's rotation resumes as normal.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to skip"
}
}
},
"set_chore_manual_start": {
"name": "Set Manual Start Child",
"description": "Set which child starts a rotating chore. For alternating mode this reorders the pool; for random/balanced it only overrides today's assignee.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to update"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child who should start the rotation"
}
}
},
"add_task_group": {
"name": "Add Task Group",
"description": "Create a task group (sticky = same child, spread = different children).",
"fields": {
"name": {
"name": "Name",
"description": "Display name for the group"
},
"policy": {
"name": "Policy",
"description": "sticky (same child) or spread (different children)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "List of chore IDs in the group. For sticky, the first chore is the leader."
}
}
},
"update_task_group": {
"name": "Update Task Group",
"description": "Update a task group's name, policy, or membership.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to update"
},
"name": {
"name": "Name",
"description": "New display name"
},
"policy": {
"name": "Policy",
"description": "New policy (sticky or spread)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "Replacement chore ID list. For sticky, the first chore is the leader."
}
}
},
"remove_task_group": {
"name": "Remove Task Group",
"description": "Delete a task group. Member chores are not affected.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to delete"
}
}
},
"start_timed_task": {
"name": "Iniciar tarefa cronometrada",
"description": "Iniciar ou retomar o cronômetro de uma tarefa cronometrada",
"fields": {
"chore_id": {
"name": "ID da tarefa",
"description": "O ID da tarefa cronometrada"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que inicia o cronômetro"
}
}
},
"pause_timed_task": {
"name": "Pausar tarefa cronometrada",
"description": "Pausar o cronômetro de uma tarefa cronometrada em andamento",
"fields": {
"chore_id": {
"name": "ID da tarefa",
"description": "O ID da tarefa cronometrada"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que pausa o cronômetro"
}
}
},
"stop_timed_task": {
"name": "Parar tarefa cronometrada",
"description": "Parar o cronômetro de uma tarefa cronometrada e enviar para aprovação",
"fields": {
"chore_id": {
"name": "ID da tarefa",
"description": "O ID da tarefa cronometrada"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que para o cronômetro"
}
}
},
"add_badge": {
"name": "Adicionar conquista",
"description": "Criar uma conquista personalizada.",
"fields": {
"name": {
"name": "Nome",
"description": "O nome de exibição da conquista"
},
"description": {
"name": "Descrição",
"description": "Descrição de como a conquista é ganha"
},
"icon": {
"name": "Ícone",
"description": "Ícone da conquista (ex.: mdi:beach)"
},
"tier": {
"name": "Nível",
"description": "Nível da conquista: bronze, prata, ouro ou platina"
},
"point_bonus": {
"name": "Bônus de pontos",
"description": "Pontos creditados à criança quando a conquista é ganha"
},
"criteria": {
"name": "Critérios",
"description": "Lista de dicionários metric / operator / value. Vazio = apenas atribuição manual."
},
"assigned_to": {
"name": "Atribuída a",
"description": "Lista de IDs de crianças (vazio = todas)"
},
"notify_on_earn": {
"name": "Notificar ao ganhar",
"description": "Enviar uma notificação quando a conquista é ganha"
}
}
},
"update_badge": {
"name": "Atualizar conquista",
"description": "Atualizar uma conquista existente. Para as integradas, apenas point_bonus, tier, assigned_to, enabled e notify_on_earn são editáveis.",
"fields": {
"badge_id": {
"name": "ID da conquista",
"description": "O ID da conquista a atualizar"
},
"name": {
"name": "Nome",
"description": "Novo nome de exibição da conquista"
},
"description": {
"name": "Descrição",
"description": "Nova descrição da conquista"
},
"icon": {
"name": "Ícone",
"description": "Novo ícone da conquista"
},
"tier": {
"name": "Nível",
"description": "Nível da conquista: bronze, prata, ouro ou platina"
},
"point_bonus": {
"name": "Bônus de pontos",
"description": "Pontos creditados à criança quando a conquista é ganha"
},
"criteria": {
"name": "Critérios",
"description": "Lista de dicionários metric / operator / value. Vazio = apenas atribuição manual."
},
"assigned_to": {
"name": "Atribuída a",
"description": "Lista de IDs de crianças (vazio = todas)"
},
"enabled": {
"name": "Ativada",
"description": "Se a conquista está ativa"
},
"notify_on_earn": {
"name": "Notificar ao ganhar",
"description": "Enviar uma notificação quando a conquista é ganha"
}
}
},
"remove_badge": {
"name": "Remover conquista",
"description": "Remover uma conquista personalizada. As integradas não podem ser removidas.",
"fields": {
"badge_id": {
"name": "ID da conquista",
"description": "O ID da conquista a remover"
}
}
},
"award_badge_manually": {
"name": "Atribuir conquista manualmente",
"description": "Atribuir manualmente uma conquista a uma criança.",
"fields": {
"badge_id": {
"name": "ID da conquista",
"description": "O ID da conquista a atribuir"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que recebe a conquista"
}
}
},
"revoke_badge": {
"name": "Revogar conquista",
"description": "Revogar uma conquista atribuída. Se um bônus de pontos foi creditado, ele é revertido.",
"fields": {
"awarded_badge_id": {
"name": "ID da conquista atribuída",
"description": "O ID da conquista atribuída a revogar"
}
}
},
"rebuild_badges": {
"name": "Reconstruir conquistas",
"description": "Reavaliar todas as conquistas de todas as crianças silenciosamente (sem notificações nem bônus de pontos)."
},
"apply_mandatory_penalty": {
"name": "Aplicar penalidade obrigatória",
"description": "Deduz os pontos de penalidade configurados por uma tarefa obrigatória perdida e remove o item de revisão.",
"fields": {
"miss_id": {
"name": "ID da falha",
"description": "O ID do item de revisão da tarefa obrigatória perdida"
}
}
},
"choose_avatar": {
"name": "Escolher avatar",
"description": "Uma criança muda para um avatar que desbloqueou.",
"fields": {
"child_id": {
"name": "ID da criança",
"description": "O ID da criança"
},
"icon": {
"name": "Ícone do avatar",
"description": "O ícone mdi de um avatar do catálogo desbloqueado (ex.: mdi:rocket-launch)."
}
}
},
"dismiss_mandatory_chore": {
"name": "Dispensar tarefa obrigatória",
"description": "Remove o item de revisão de uma tarefa obrigatória perdida sem penalidade.",
"fields": {
"miss_id": {
"name": "ID da falha",
"description": "O ID do item de revisão da tarefa obrigatória perdida"
}
}
},
"gift_points": {
"name": "Presentear pontos",
"description": "Transfere pontos disponíveis de uma criança para outra (controlado pelos pais).",
"fields": {
"from_child_id": {
"name": "ID da criança de origem",
"description": "O ID da criança que envia os pontos"
},
"to_child_id": {
"name": "ID da criança de destino",
"description": "O ID da criança que recebe os pontos"
},
"points": {
"name": "Pontos",
"description": "O número de pontos a transferir"
}
}
},
"postpone_mandatory_chore": {
"name": "Adiar tarefa obrigatória",
"description": "Dá a uma tarefa obrigatória perdida outro período (ou amanhã) sem penalidade e remove o item de revisão.",
"fields": {
"miss_id": {
"name": "ID da falha",
"description": "O ID do item de revisão da tarefa obrigatória perdida"
}
}
},
"request_swap": {
"name": "Solicitar troca de tarefa",
"description": "Uma criança pede para assumir a atribuição de rodízio de hoje de uma tarefa (sujeito a aprovação dos pais).",
"fields": {
"chore_id": {
"name": "ID da tarefa",
"description": "O ID da tarefa a assumir"
},
"requester_id": {
"name": "ID da criança solicitante",
"description": "O ID da criança que pede a troca"
}
}
},
"test_notification": {
"name": "Notificação de teste",
"description": "Envia uma notificação de exemplo do tipo indicado aos destinatários ativados (ignora o interruptor principal para que o roteamento possa ser verificado).",
"fields": {
"type_id": {
"name": "Tipo de notificação",
"description": "ID do tipo de notificação, ex.: pending_chore_approval, badge_earned, streak_milestone"
}
}
},
"record_allowance_payout": {
"name": "Registrar pagamento de mesada",
"description": "Deduzir pontos e registrar um pagamento de mesada real no histórico (taxa de conversão fixa; controlado pelos pais).",
"fields": {
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que recebe o pagamento"
},
"points": {
"name": "Pontos",
"description": "Pontos a converter em dinheiro e deduzir"
}
}
}
},
"entity": {
"sensor": {
"child_stats": {
"unit_of_measurement": "tarefas"
},
"child_badges": {
"unit_of_measurement": "medalhas"
}
},
"number": {
"weekend_multiplier": {
"name": "Multiplicador de fim de semana"
},
"perfect_week_bonus": {
"name": "Bônus de semana perfeita"
}
},
"select": {
"streak_reset_mode": {
"name": "Modo de redefinição de sequência"
},
"card_design": {
"name": "Design do cartão"
}
}
}
}
@@ -0,0 +1,884 @@
{
"config": {
"step": {
"user": {
"title": "Bem-vindo ao TaskMate!",
"description": "Configure o seu sistema de gestão de tarefas familiar. Pode personalizar a moeda de pontos que as crianças vão ganhar.",
"data": {
"points_name": "Nome da moeda de pontos (ex: Estrelas, Moedas, Pontos)",
"points_icon": "Ícone dos pontos"
}
}
},
"error": {
"name_required": "O nome é obrigatório"
},
"abort": {
"already_configured": "O TaskMate já está configurado"
}
},
"selector": {
"chore_action": {
"options": {
"save": "Guardar alterações",
"re_enable": "Reativar tarefa",
"disable": "Desativar tarefa",
"delete": "Eliminar esta tarefa"
}
},
"reward_action": {
"options": {
"save": "Guardar alterações",
"delete": "Eliminar recompensa"
}
},
"time_category": {
"options": {
"morning": "Manhã",
"afternoon": "Tarde",
"evening": "Fim da tarde",
"night": "Noite",
"anytime": "Qualquer hora"
}
},
"schedule_mode": {
"options": {
"specific_days": "Dias específicos da semana",
"recurring": "Recorrente (a cada N dias/semanas/meses)",
"one_shot": "Tarefa única (um dia)"
}
},
"due_days_option": {
"options": {
"monday": "Segunda-feira",
"tuesday": "Terça-feira",
"wednesday": "Quarta-feira",
"thursday": "Quinta-feira",
"friday": "Sexta-feira",
"saturday": "Sábado",
"sunday": "Domingo"
}
},
"recurrence": {
"options": {
"every_2_days": "A cada 2 dias",
"weekly": "Semanal",
"every_2_weeks": "A cada 2 semanas",
"monthly": "Mensal",
"every_3_months": "A cada 3 meses",
"every_6_months": "A cada 6 meses"
}
},
"recurrence_day_option": {
"options": {
"monday": "Segunda-feira",
"tuesday": "Terça-feira",
"wednesday": "Quarta-feira",
"thursday": "Quinta-feira",
"friday": "Sexta-feira",
"saturday": "Sábado",
"sunday": "Domingo",
"any_day": "Qualquer dia"
}
},
"first_occurrence_mode": {
"options": {
"available_immediately": "Disponível imediatamente",
"wait_for_first_occurrence": "Aguardar primeira ocorrência agendada"
}
},
"streak_reset_mode": {
"options": {
"reset": "Reiniciar — sequência volta a 0 num dia falhado",
"pause": "Pausar — sequência preservada até próxima conclusão"
}
},
"visibility_operator": {
"options": {
"none": "Sem filtro — Mostrar sempre a tarefa",
"equals": "Igual — Mostrar quando o estado da entidade corresponde exatamente",
"not_equals": "Não igual — Mostrar quando o estado da entidade não corresponde",
"gte": "Maior ou igual (≥) — Mostrar quando valor numérico é ≥ alvo",
"lte": "Menor ou igual (≤) — Mostrar quando valor numérico é ≤ alvo",
"gt": "Maior que (>) — Mostrar quando valor numérico é > alvo",
"lt": "Menor que (<) — Mostrar quando valor numérico é < alvo"
}
},
"assignment_mode": {
"options": {
"everyone": "Todos — todas as crianças atribuídas veem a tarefa",
"alternating": "Alternado — alterna entre as crianças atribuídas, uma por dia",
"random": "Aleatório — escolhe aleatoriamente uma criança atribuída por dia",
"balanced": "Equilibrado — divide as tarefas equilibradas do dia igualmente entre as crianças atribuídas",
"first_come": "Quem chega primeiro — a primeira criança a concluir ganha; desaparece para as restantes",
"unassigned": "Não atribuído — nenhuma criança vê esta tarefa"
}
},
"task_group_policy": {
"options": {
"sticky": "Sticky — mesma criança para todas as tarefas do grupo",
"spread": "Spread — crianças diferentes no grupo hoje"
}
},
"task_group_action": {
"options": {
"save": "Guardar alterações",
"delete": "Eliminar grupo"
}
}
},
"services": {
"complete_chore": {
"name": "Concluir tarefa",
"description": "Marcar uma tarefa como concluída por uma criança",
"fields": {
"chore_id": {
"name": "ID da tarefa",
"description": "O ID da tarefa a concluir"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que conclui a tarefa"
}
}
},
"complete_bonus_subtask": {
"name": "Concluir subtarefa bónus",
"description": "Concluir uma subtarefa bónus depois de a tarefa principal estar concluída",
"fields": {
"chore_id": {
"name": "ID da tarefa",
"description": "O ID da tarefa principal"
},
"bonus_subtask_id": {
"name": "ID da subtarefa bónus",
"description": "O ID da subtarefa bónus a concluir"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que conclui a subtarefa bónus"
}
}
},
"approve_chore": {
"name": "Aprovar tarefa",
"description": "Aprovar uma tarefa concluída e atribuir pontos",
"fields": {
"completion_id": {
"name": "ID de conclusão",
"description": "O ID da conclusão da tarefa a aprovar"
}
}
},
"approve_all_chores": {
"name": "Aprovar todas as tarefas",
"description": "Aprovar todas as conclusões de tarefas pendentes (ou um conjunto específico) e atribuir pontos",
"fields": {
"completion_ids": {
"name": "IDs de conclusão",
"description": "IDs de conclusão específicos para aprovar; omita para aprovar todas as pendentes"
}
}
},
"reject_chore": {
"name": "Rejeitar tarefa",
"description": "Rejeitar uma tarefa concluída",
"fields": {
"completion_id": {
"name": "ID de conclusão",
"description": "O ID da conclusão da tarefa a rejeitar"
}
}
},
"undo_chore_approval": {
"name": "Anular aprovação de tarefa",
"description": "Anular a aprovação acidental de uma tarefa — remove os pontos atribuídos e devolve a conclusão a pendente para que possa ser aprovada novamente.",
"fields": {
"completion_id": {
"name": "ID de conclusão",
"description": "O ID da conclusão de tarefa aprovada a repor como pendente"
}
}
},
"undo_transaction": {
"name": "Anular transação",
"description": "Anular uma transação de pontos pelo seu ID — penalizações, bónus, ajustes manuais (adicionar/remover) e presentes (ambas as partes). As transações automáticas (bónus de fim de semana/sequência/semana perfeita, movimentos do mealheiro, desvalorização, juros) não podem ser anuladas.",
"fields": {
"transaction_id": {
"name": "ID da transação",
"description": "O ID da transação de pontos a reverter"
}
}
},
"claim_reward": {
"name": "Reclamar recompensa",
"description": "A criança reclama uma recompensa usando os seus pontos",
"fields": {
"reward_id": {
"name": "ID da recompensa",
"description": "O ID da recompensa a reclamar"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que reclama a recompensa"
}
}
},
"approve_reward": {
"name": "Aprovar recompensa",
"description": "Aprovar um pedido de recompensa",
"fields": {
"claim_id": {
"name": "ID do pedido",
"description": "O ID do pedido de recompensa a aprovar"
}
}
},
"allocate_points_to_pool": {
"name": "Alocar pontos ao mealheiro",
"description": "Mover pontos do saldo disponível de uma criança para o mealheiro de uma recompensa (bloqueado).",
"fields": {
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que faz a alocação"
},
"reward_id": {
"name": "ID da recompensa",
"description": "O ID do mealheiro da recompensa onde depositar"
},
"points": {
"name": "Pontos",
"description": "Número de pontos a alocar (limitado pela capacidade do mealheiro e pelo saldo disponível)"
}
}
},
"add_points": {
"name": "Adicionar pontos",
"description": "Adicionar pontos de bónus a uma criança",
"fields": {
"child_id": {
"name": "ID da criança",
"description": "O ID da criança a quem adicionar pontos"
},
"points": {
"name": "Pontos",
"description": "O número de pontos a adicionar"
},
"reason": {
"name": "Motivo",
"description": "Motivo opcional para o bónus"
}
}
},
"remove_points": {
"name": "Remover pontos",
"description": "Remover pontos de uma criança (penalização)",
"fields": {
"child_id": {
"name": "ID da criança",
"description": "O ID da criança a quem remover pontos"
},
"points": {
"name": "Pontos",
"description": "O número de pontos a remover"
},
"reason": {
"name": "Motivo",
"description": "Motivo opcional para a penalização"
}
}
},
"reject_reward": {
"name": "Rejeitar recompensa",
"description": "Rejeitar um pedido de recompensa",
"fields": {
"claim_id": {
"name": "ID do pedido",
"description": "O ID do pedido de recompensa a rejeitar"
}
}
},
"preview_sound": {
"name": "Pré-visualizar som",
"description": "Pré-visualizar um efeito sonoro de conclusão no navegador",
"fields": {
"sound": {
"name": "Som",
"description": "O som a pré-visualizar"
}
}
},
"set_chore_order": {
"name": "Definir ordem das tarefas",
"description": "Definir a ordem de apresentação das tarefas para uma criança",
"fields": {
"child_id": {
"name": "ID da criança",
"description": "O ID da criança para definir a ordem das tarefas"
},
"chore_order": {
"name": "Ordem das tarefas",
"description": "Lista ordenada de IDs de tarefas"
}
}
},
"add_penalty": {
"name": "Adicionar penalização",
"description": "Criar uma nova definição de penalização",
"fields": {
"name": {
"name": "Nome",
"description": "O nome da penalização"
},
"points": {
"name": "Pontos",
"description": "O número de pontos a deduzir quando aplicada"
},
"description": {
"name": "Descrição",
"description": "Descrição opcional da penalização"
},
"icon": {
"name": "Ícone",
"description": "Ícone MDI para a penalização"
},
"assigned_to": {
"name": "Atribuída a",
"description": "Lista de IDs de crianças a quem esta penalização se aplica"
}
}
},
"update_penalty": {
"name": "Atualizar penalização",
"description": "Atualizar uma definição de penalização existente",
"fields": {
"penalty_id": {
"name": "ID da penalização",
"description": "O ID da penalização a atualizar"
},
"name": {
"name": "Nome",
"description": "Novo nome para a penalização"
},
"points": {
"name": "Pontos",
"description": "Novo valor de pontos"
},
"description": {
"name": "Descrição",
"description": "Nova descrição"
},
"icon": {
"name": "Ícone",
"description": "Novo ícone"
},
"assigned_to": {
"name": "Atribuída a",
"description": "Nova lista de IDs de crianças"
}
}
},
"remove_penalty": {
"name": "Remover penalização",
"description": "Remover uma definição de penalização",
"fields": {
"penalty_id": {
"name": "ID da penalização",
"description": "O ID da penalização a remover"
}
}
},
"apply_penalty": {
"name": "Aplicar penalização",
"description": "Aplicar uma penalização a uma criança, deduzindo pontos",
"fields": {
"penalty_id": {
"name": "ID da penalização",
"description": "O ID da penalização a aplicar"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança a quem aplicar a penalização"
}
}
},
"add_bonus": {
"name": "Adicionar bónus",
"description": "Criar uma nova definição de bónus",
"fields": {
"name": {
"name": "Nome",
"description": "O nome do bónus"
},
"points": {
"name": "Pontos",
"description": "O número de pontos a atribuir quando aplicado"
},
"description": {
"name": "Descrição",
"description": "Descrição opcional do bónus"
},
"icon": {
"name": "Ícone",
"description": "Ícone MDI para o bónus"
},
"assigned_to": {
"name": "Atribuído a",
"description": "Lista de IDs de crianças a que este bónus se aplica"
}
}
},
"update_bonus": {
"name": "Atualizar bónus",
"description": "Atualizar uma definição de bónus existente",
"fields": {
"bonus_id": {
"name": "ID do bónus",
"description": "O ID do bónus a atualizar"
},
"name": {
"name": "Nome",
"description": "Novo nome para o bónus"
},
"points": {
"name": "Pontos",
"description": "Novo valor de pontos"
},
"description": {
"name": "Descrição",
"description": "Nova descrição"
},
"icon": {
"name": "Ícone",
"description": "Novo ícone"
},
"assigned_to": {
"name": "Atribuído a",
"description": "Nova lista de IDs de crianças"
}
}
},
"remove_bonus": {
"name": "Remover bónus",
"description": "Remover uma definição de bónus",
"fields": {
"bonus_id": {
"name": "ID do bónus",
"description": "O ID do bónus a remover"
}
}
},
"apply_bonus": {
"name": "Aplicar bónus",
"description": "Aplicar um bónus a uma criança, atribuindo pontos",
"fields": {
"bonus_id": {
"name": "ID do bónus",
"description": "O ID do bónus a aplicar"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança a quem aplicar o bónus"
}
}
},
"add_chore": {
"name": "Adicionar tarefa",
"description": "Criar uma nova tarefa dinamicamente, normalmente a partir de uma automação ou script",
"fields": {
"name": {
"name": "Nome",
"description": "O nome da tarefa"
},
"description": {
"name": "Descrição",
"description": "Descrição opcional da tarefa"
},
"points": {
"name": "Pontos",
"description": "Pontos atribuídos quando esta tarefa é concluída"
},
"assigned_to": {
"name": "Atribuída a",
"description": "Lista de IDs de crianças a quem atribuir esta tarefa. Deixe vazio para atribuir a todas as crianças"
},
"time_category": {
"name": "Categoria de tempo",
"description": "Quando esta tarefa deve ser concluída: morning, afternoon, evening, night ou anytime"
},
"one_shot": {
"name": "Única",
"description": "Se verdadeiro, é uma tarefa única que expira após a conclusão ou no final do dia"
},
"requires_approval": {
"name": "Requer aprovação",
"description": "Se verdadeiro, um pai/mãe deve aprovar a conclusão antes de os pontos serem atribuídos"
}
}
},
"skip_chore": {
"name": "Skip Chore",
"description": "Advance today's rotation past the current assignee. Ephemeral — tomorrow's rotation resumes as normal.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to skip"
}
}
},
"set_chore_manual_start": {
"name": "Set Manual Start Child",
"description": "Set which child starts a rotating chore. For alternating mode this reorders the pool; for random/balanced it only overrides today's assignee.",
"fields": {
"chore_id": {
"name": "Chore ID",
"description": "The ID of the chore to update"
},
"child_id": {
"name": "Child ID",
"description": "The ID of the child who should start the rotation"
}
}
},
"add_task_group": {
"name": "Add Task Group",
"description": "Create a task group (sticky = same child, spread = different children).",
"fields": {
"name": {
"name": "Name",
"description": "Display name for the group"
},
"policy": {
"name": "Policy",
"description": "sticky (same child) or spread (different children)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "List of chore IDs in the group. For sticky, the first chore is the leader."
}
}
},
"update_task_group": {
"name": "Update Task Group",
"description": "Update a task group's name, policy, or membership.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to update"
},
"name": {
"name": "Name",
"description": "New display name"
},
"policy": {
"name": "Policy",
"description": "New policy (sticky or spread)"
},
"chore_ids": {
"name": "Chore IDs",
"description": "Replacement chore ID list. For sticky, the first chore is the leader."
}
}
},
"remove_task_group": {
"name": "Remove Task Group",
"description": "Delete a task group. Member chores are not affected.",
"fields": {
"group_id": {
"name": "Group ID",
"description": "The ID of the group to delete"
}
}
},
"start_timed_task": {
"name": "Iniciar tarefa temporizada",
"description": "Iniciar ou retomar o temporizador de uma tarefa temporizada",
"fields": {
"chore_id": {
"name": "ID da tarefa",
"description": "O ID da tarefa temporizada"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que inicia o temporizador"
}
}
},
"pause_timed_task": {
"name": "Pausar tarefa temporizada",
"description": "Pausar o temporizador de uma tarefa temporizada em curso",
"fields": {
"chore_id": {
"name": "ID da tarefa",
"description": "O ID da tarefa temporizada"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que pausa o temporizador"
}
}
},
"stop_timed_task": {
"name": "Parar tarefa temporizada",
"description": "Parar o temporizador de uma tarefa temporizada e submeter para aprovação",
"fields": {
"chore_id": {
"name": "ID da tarefa",
"description": "O ID da tarefa temporizada"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que para o temporizador"
}
}
},
"add_badge": {
"name": "Adicionar conquista",
"description": "Criar uma conquista personalizada.",
"fields": {
"name": {
"name": "Nome",
"description": "O nome de apresentação da conquista"
},
"description": {
"name": "Descrição",
"description": "Descrição de como a conquista é ganha"
},
"icon": {
"name": "Ícone",
"description": "Ícone da conquista (ex.: mdi:beach)"
},
"tier": {
"name": "Nível",
"description": "Nível da conquista: bronze, prata, ouro ou platina"
},
"point_bonus": {
"name": "Bónus de pontos",
"description": "Pontos creditados à criança quando a conquista é ganha"
},
"criteria": {
"name": "Critérios",
"description": "Lista de dicionários metric / operator / value. Vazio = apenas atribuição manual."
},
"assigned_to": {
"name": "Atribuída a",
"description": "Lista de IDs de crianças (vazio = todas)"
},
"notify_on_earn": {
"name": "Notificar ao ganhar",
"description": "Enviar uma notificação quando a conquista é ganha"
}
}
},
"update_badge": {
"name": "Atualizar conquista",
"description": "Atualizar uma conquista existente. Para as integradas, apenas point_bonus, tier, assigned_to, enabled e notify_on_earn são editáveis.",
"fields": {
"badge_id": {
"name": "ID da conquista",
"description": "O ID da conquista a atualizar"
},
"name": {
"name": "Nome",
"description": "Novo nome de apresentação da conquista"
},
"description": {
"name": "Descrição",
"description": "Nova descrição da conquista"
},
"icon": {
"name": "Ícone",
"description": "Novo ícone da conquista"
},
"tier": {
"name": "Nível",
"description": "Nível da conquista: bronze, prata, ouro ou platina"
},
"point_bonus": {
"name": "Bónus de pontos",
"description": "Pontos creditados à criança quando a conquista é ganha"
},
"criteria": {
"name": "Critérios",
"description": "Lista de dicionários metric / operator / value. Vazio = apenas atribuição manual."
},
"assigned_to": {
"name": "Atribuída a",
"description": "Lista de IDs de crianças (vazio = todas)"
},
"enabled": {
"name": "Ativada",
"description": "Se a conquista está ativa"
},
"notify_on_earn": {
"name": "Notificar ao ganhar",
"description": "Enviar uma notificação quando a conquista é ganha"
}
}
},
"remove_badge": {
"name": "Remover conquista",
"description": "Remover uma conquista personalizada. As integradas não podem ser removidas.",
"fields": {
"badge_id": {
"name": "ID da conquista",
"description": "O ID da conquista a remover"
}
}
},
"award_badge_manually": {
"name": "Atribuir conquista manualmente",
"description": "Atribuir manualmente uma conquista a uma criança.",
"fields": {
"badge_id": {
"name": "ID da conquista",
"description": "O ID da conquista a atribuir"
},
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que recebe a conquista"
}
}
},
"revoke_badge": {
"name": "Revogar conquista",
"description": "Revogar uma conquista atribuída. Se um bónus de pontos foi creditado, é revertido.",
"fields": {
"awarded_badge_id": {
"name": "ID da conquista atribuída",
"description": "O ID da conquista atribuída a revogar"
}
}
},
"rebuild_badges": {
"name": "Reconstruir conquistas",
"description": "Reavaliar todas as conquistas de todas as crianças silenciosamente (sem notificações nem bónus de pontos)."
},
"apply_mandatory_penalty": {
"name": "Aplicar penalização obrigatória",
"description": "Deduz os pontos de penalização configurados por uma tarefa obrigatória falhada e remove o item de revisão.",
"fields": {
"miss_id": {
"name": "ID da falha",
"description": "O ID do item de revisão da tarefa obrigatória falhada"
}
}
},
"choose_avatar": {
"name": "Escolher avatar",
"description": "Uma criança muda para um avatar que desbloqueou.",
"fields": {
"child_id": {
"name": "ID da criança",
"description": "O ID da criança"
},
"icon": {
"name": "Ícone do avatar",
"description": "O ícone mdi de um avatar do catálogo desbloqueado (ex.: mdi:rocket-launch)."
}
}
},
"dismiss_mandatory_chore": {
"name": "Dispensar tarefa obrigatória",
"description": "Remove o item de revisão de uma tarefa obrigatória falhada sem penalização.",
"fields": {
"miss_id": {
"name": "ID da falha",
"description": "O ID do item de revisão da tarefa obrigatória falhada"
}
}
},
"gift_points": {
"name": "Oferecer pontos",
"description": "Transfere pontos disponíveis de uma criança para outra (controlado pelos pais).",
"fields": {
"from_child_id": {
"name": "ID da criança de origem",
"description": "O ID da criança que envia os pontos"
},
"to_child_id": {
"name": "ID da criança de destino",
"description": "O ID da criança que recebe os pontos"
},
"points": {
"name": "Pontos",
"description": "O número de pontos a transferir"
}
}
},
"postpone_mandatory_chore": {
"name": "Adiar tarefa obrigatória",
"description": "Dá a uma tarefa obrigatória falhada outro período (ou amanhã) sem penalização e remove o item de revisão.",
"fields": {
"miss_id": {
"name": "ID da falha",
"description": "O ID do item de revisão da tarefa obrigatória falhada"
}
}
},
"request_swap": {
"name": "Pedir troca de tarefa",
"description": "Uma criança pede para assumir a atribuição de rotação de hoje de uma tarefa (sujeito a aprovação dos pais).",
"fields": {
"chore_id": {
"name": "ID da tarefa",
"description": "O ID da tarefa a assumir"
},
"requester_id": {
"name": "ID da criança solicitante",
"description": "O ID da criança que pede a troca"
}
}
},
"test_notification": {
"name": "Notificação de teste",
"description": "Envia uma notificação de exemplo do tipo indicado aos destinatários ativados (ignora o interruptor principal para que o encaminhamento possa ser verificado).",
"fields": {
"type_id": {
"name": "Tipo de notificação",
"description": "ID do tipo de notificação, p. ex. pending_chore_approval, badge_earned, streak_milestone"
}
}
},
"record_allowance_payout": {
"name": "Registar pagamento de mesada",
"description": "Deduzir pontos e registar um pagamento de mesada real no histórico (taxa de conversão fixa; controlado pelos pais).",
"fields": {
"child_id": {
"name": "ID da criança",
"description": "O ID da criança que recebe o pagamento"
},
"points": {
"name": "Pontos",
"description": "Pontos a converter em dinheiro e a deduzir"
}
}
}
},
"entity": {
"sensor": {
"child_stats": {
"unit_of_measurement": "tarefas"
},
"child_badges": {
"unit_of_measurement": "medalhas"
}
},
"number": {
"weekend_multiplier": {
"name": "Multiplicador de fim de semana"
},
"perfect_week_bonus": {
"name": "Bónus de semana perfeita"
}
},
"select": {
"streak_reset_mode": {
"name": "Modo de reposição de sequência"
},
"card_design": {
"name": "Design do cartão"
}
}
}
}