{ "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 aujourd’hui" } }, "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" } } } }