TidyQuest/client/src/i18n/fr.json
root a7cd81fe81 Initial release: TidyQuest v0.1.0
TidyQuest is a self-hosted web application that gamifies household chores
using RPG mechanics. Complete tasks, earn coins, unlock achievements, and
compete with your family on the leaderboard.

Features:
- 🎯 Health-based task tracking with visual decay over time
- 💰 Coin system with customizable rewards
- 🔥 Daily/weekly streak tracking
- 🏆 Family leaderboard (week/month/quarter/year)
- 🎖️ Automatic achievement unlocking
- 📅 Calendar view for upcoming tasks
- 🌍 Multilingual support (EN/FR/DE/ES)
- 📱 Optional Telegram notifications
- 🏖️ Vacation mode (pause task decay)
- 🐳 Docker deployment (single container)

Tech Stack:
- Frontend: React 19 + Vite + TypeScript
- Backend: Node.js + Express + TypeScript
- Database: SQLite3 with WAL mode
- Auth: JWT + bcrypt
- Deployment: Docker Compose

Includes:
- 8 room types with 60+ predefined tasks
- 10 preset rewards
- 12 achievement types
- Complete API documentation
- Security best practices guide
- Comprehensive README with examples

License: GNU Affero General Public License v3.0 (AGPL-3.0)
This ensures TidyQuest remains free and open-source forever, preventing
proprietary SaaS forks. Any modified hosted version must share source code.
2026-02-17 18:40:09 +01:00

512 lines
21 KiB
JSON

{
"tasks": {
"kitchen": {
"wash_dishes": "Faire la vaisselle",
"clean_counters": "Nettoyer les plans de travail",
"wipe_stovetop": "Essuyer la plaque de cuisson",
"empty_trash": "Vider la poubelle",
"empty_household_waste": "Vider les ordures ménagères",
"empty_compost": "Vider le compost",
"empty_plastic_recycling": "Vider les ordures plastiques",
"empty_glass_recycling": "Vider les verres",
"clean_sink": "Nettoyer l'évier",
"clean_sink_drain": "Nettoyer le siphon de l'évier",
"wipe_appliances": "Essuyer les appareils",
"mop_floor": "Laver le sol",
"clean_microwave": "Nettoyer le micro-ondes",
"wipe_cabinet_fronts": "Essuyer les façades des placards",
"clean_fridge": "Nettoyer le réfrigérateur",
"defrost_freezer": "Décongeler le congélateur",
"descale_kettle": "Détartrer la bouilloire",
"clean_dishwasher": "Nettoyer le lave-vaisselle",
"clean_dishwasher_filter": "Nettoyer le filtre du lave-vaisselle",
"check_dishwasher_salt": "Contrôler/rajouter du sel dans le lave-vaisselle",
"clean_oven": "Nettoyer le four",
"clean_range_hood": "Nettoyer la hotte",
"deep_clean_fridge": "Nettoyage en profondeur du réfrigérateur",
"organize_pantry": "Ranger le garde-manger"
},
"bedroom": {
"make_bed": "Faire le lit",
"tidy_nightstand": "Ranger la table de nuit",
"change_sheets": "Changer les draps",
"vacuum_floor": "Passer l'aspirateur",
"dust_surfaces": "Dépoussiérer les surfaces",
"clean_under_bed": "Nettoyer sous le lit",
"wash_pillows": "Laver les oreillers",
"wash_duvet": "Laver la couette",
"change_fitted_sheet": "Changer le drap-housse",
"organize_closet": "Ranger le placard",
"flip_mattress": "Retourner le matelas",
"clean_windows": "Nettoyer les fenêtres",
"wash_curtains": "Laver les rideaux"
},
"bathroom": {
"wipe_sink_counter": "Essuyer le lavabo et le plan de toilette",
"squeegee_shower": "Racler la douche",
"scrub_toilet": "Récurer les toilettes",
"clean_mirror": "Nettoyer le miroir",
"wash_towels": "Laver les serviettes",
"clean_shower_tub": "Nettoyer la douche et la baignoire",
"clean_sink_drain": "Nettoyer le siphon du lavabo",
"mop_floor": "Laver le sol",
"clean_shower_drain": "Nettoyer le siphon de douche",
"wash_bath_mat": "Laver le tapis de bain",
"wipe_switches_handles": "Essuyer les interrupteurs et poignées",
"clean_grout": "Nettoyer les joints",
"descale_showerhead": "Détartrer le pommeau de douche",
"wash_shower_curtain": "Laver le rideau de douche",
"organize_cabinets": "Ranger les placards",
"replace_toothbrush": "Remplacer la brosse à dents"
},
"living": {
"tidy_up": "Ranger",
"fluff_cushions": "Regonfler les coussins",
"vacuum_carpet": "Aspirer le tapis",
"dust_surfaces_shelves": "Dépoussiérer les surfaces et étagères",
"wipe_tv": "Essuyer la télé",
"clean_remotes": "Nettoyer les télécommandes",
"dust_lampshades": "Dépoussiérer les abat-jour",
"vacuum_sofa": "Aspirer le canapé",
"clean_windows": "Nettoyer les fenêtres",
"wash_curtains_blinds": "Laver les rideaux et stores",
"deep_clean_carpet": "Nettoyage en profondeur du tapis",
"clean_behind_furniture": "Nettoyer derrière les meubles",
"polish_furniture": "Cirer les meubles"
},
"office": {
"clear_desk": "Débarrasser le bureau",
"wipe_desk": "Essuyer le bureau",
"clean_keyboard_mouse": "Nettoyer le clavier et la souris",
"wipe_monitor": "Essuyer l'écran",
"empty_paper_trash": "Vider la corbeille à papier",
"vacuum_floor": "Passer l'aspirateur",
"organize_cables": "Ranger les câbles",
"dust_shelves": "Dépoussiérer les étagères",
"clean_desk_lamp": "Nettoyer la lampe de bureau",
"organize_drawers": "Ranger les tiroirs",
"wipe_switches": "Essuyer les interrupteurs",
"clean_chair": "Nettoyer la chaise"
},
"garage": {
"sweep_floor": "Balayer le sol",
"organize_tools": "Ranger les outils",
"clean_workbench": "Nettoyer l'établi",
"clear_cobwebs": "Enlever les toiles d'araignée",
"organize_shelves": "Ranger les étagères",
"wipe_power_tools": "Essuyer les outils électriques",
"sort_recycling": "Trier le recyclage",
"mop_hose_floor": "Laver le sol au jet ou à la serpillère",
"check_chemicals": "Vérifier les produits chimiques",
"clean_door_tracks": "Nettoyer les rails de porte"
},
"laundry": {
"wipe_washer_seal": "Essuyer le joint du lave-linge",
"clean_lint_filter": "Nettoyer le filtre à peluches",
"wipe_machine_exterior": "Essuyer l'extérieur de la machine",
"run_cleaning_cycle": "Lancer un cycle de nettoyage",
"drain_washing_machine": "Vidanger le lave-linge",
"descale_washing_machine": "Détartrer le lave-linge",
"clean_detergent_drawer": "Nettoyer le bac à lessive",
"sweep_mop_floor": "Balayer et laver le sol",
"organize_supplies": "Ranger les produits",
"clean_dryer_vent": "Nettoyer l'aération du sèche-linge",
"wipe_folding_surface": "Essuyer la surface de pliage",
"sort_donate_clothes": "Trier et donner des vêtements"
}
},
"rooms": {
"kitchen": "Cuisine",
"bedroom": "Chambre",
"bathroom": "Salle de bain",
"living": "Salon",
"office": "Bureau",
"garage": "Garage",
"laundry": "Buanderie",
"other": "Autre"
},
"ui": {
"profile": {
"title": "Profil",
"displayName": "Nom affiché",
"avatarMode": "Mode avatar",
"letterMode": "Lettre",
"characterMode": "Personnage",
"photoMode": "Photo",
"uploadPhoto": "Télécharger une photo",
"language": "Langue",
"save": "Enregistrer",
"saved": "Enregistré",
"logout": "Se déconnecter"
},
"settings": {
"title": "Paramètres",
"general": "Général",
"notifications": "Notifications",
"notificationsDesc": "Rappels de ménage quotidiens",
"theme": "Thème",
"themeDesc": "Changer l'ambiance de couleur",
"themeOrange": "Orange chaleureux",
"themeBlue": "Bleu clair",
"themeRose": "Rose clair",
"themeNight": "Nuit",
"vacationMode": "Mode vacances",
"vacationDesc": "Suspendre tous les rappels de tâches pendant votre absence",
"adminRequired": "Un parent admin est requis pour modifier les paramètres.",
"data": "Données",
"dataPrivacy": "Données et confidentialité",
"export": "Exporter",
"exportData": "Exporter les données",
"exportDesc": "Télécharger une sauvegarde JSON",
"download": "Télécharger",
"import": "Importer",
"importData": "Importer les données",
"importDesc": "Restaurer depuis une sauvegarde",
"upload": "Importer",
"family": "Famille",
"familyMembers": "Membres de la famille",
"addMember": "Ajouter un membre",
"memberDisplayName": "Nom affiché",
"memberUsername": "Nom d'utilisateur",
"memberPassword": "Mot de passe",
"passwordSection": "Mot de passe",
"currentPassword": "Mot de passe actuel",
"newPassword": "Nouveau mot de passe",
"confirmPassword": "Confirmer le nouveau mot de passe",
"updatePassword": "Mettre à jour le mot de passe",
"resetPassword": "Réinitialiser le mot de passe",
"passwordMismatch": "Les mots de passe ne correspondent pas.",
"passwordUpdated": "Mot de passe mis à jour.",
"passwordUpdateFailed": "Échec de mise à jour du mot de passe.",
"manageChild": "Gérer l'enfant",
"coinsPerEffort": "Pièces par effort",
"coinsPerEffortDesc": "Définissez les pièces gagnées pour les niveaux d'effort 1 à 5.",
"goalsSection": "Objectifs par membre",
"goalsSectionDesc": "Définissez les objectifs de pièces et la période pour chaque enfant/membre.",
"useDefaultCoins": "Utiliser les valeurs par défaut",
"create": "Créer",
"privacy": "Confidentialité",
"privacyDesc": "Toutes les données restent sur votre serveur",
"docker": "Docker",
"roleAdmin": "Admin",
"roleChild": "Enfant",
"setAs": "Définir comme",
"coins": "pièces",
"streak": "série",
"roleMember": "Membre",
"deleteUser": "Supprimer l'utilisateur",
"deleteUserConfirm": "Supprimer \"{user}\" ? Cette action est irréversible.",
"goalCoins": "Objectif pièces",
"goalTitle": "Titre de l'objectif",
"setGoal": "Définir l'objectif",
"addGoal": "Ajouter objectif",
"manageMember": "Gerer le membre",
"goalStart": "Date de debut",
"goalEnd": "Date de fin",
"goalDeleted": "Objectif supprimé.",
"goalDeleteFailed": "Échec de la suppression de l'objectif.",
"rewardsSection": "Catalogue des récompenses",
"rewardsSectionDesc": "Les parents peuvent créer des récompenses achetables avec des pièces.",
"rewardTitle": "Titre récompense",
"rewardDesc": "Description",
"rewardCost": "Coût pièces",
"addPresetRewards": "Ajouter récompenses prédéfinies",
"rewardRequests": "Demandes de récompenses",
"noRewardRequests": "Aucune demande de récompense.",
"telegramChatId": "ID de chat Telegram",
"telegramChatIdHint": "Attendu: ID de chat numerique (ex: 123456789 ou -1001234567890). Ouvre d'abord un chat Telegram avec ton bot.",
"notificationTime": "Heure de notification",
"telegramToken": "Token bot Telegram",
"telegramTokenHint": "Attendu: token du bot depuis @BotFather (format du type 123456789:AA...).",
"telegramTokenConfigured": "Token Telegram déjà configuré (saisir pour remplacer)",
"telegramChatIdRequired": "L'ID de chat Telegram est requis quand les notifications sont activées.",
"telegramTokenRequired": "Le token Telegram est requis quand les notifications sont activées.",
"notificationsDisabledHint": "Active Notifications pour configurer Telegram et l'heure d'envoi.",
"notificationTypeTaskDue": "Rappels de tâches à faire",
"notificationTypeRewardRequest": "Demandes de récompenses",
"notificationTypeAchievementUnlocked": "Succès débloqués",
"sendTestNotification": "Envoyer une notification test",
"notificationsSaved": "Paramètres de notification enregistrés.",
"notificationsSaveFailed": "Échec de l'enregistrement des notifications.",
"notificationsTestSent": "Notification de test envoyée.",
"notificationsTestFailed": "Échec de l'envoi de la notification test."
},
"nav": {
"home": "Accueil",
"rooms": "Pièces",
"board": "Tableau",
"calendar": "Calendrier",
"activity": "Activité",
"rewards": "Récompenses",
"settings": "Paramètres",
"profile": "Profil",
"tagline": "Fais évoluer ta maison",
"achievements": "Succès"
},
"app": {
"roomsConfigured": "pièces configurées",
"calendarSubtitle": "Suivez votre historique de ménage",
"leaderboardTitle": "Classement",
"leaderboardSubtitle": "Qui garde la maison propre ?",
"historyTitle": "Journal d'activité",
"historySubtitle": "Toutes les tâches terminées",
"activitySubtitle": "Qui a fait quoi, quand, et pour combien de points",
"rewardsSubtitle": "Dépense tes pièces pour des récompenses réelles",
"profileSubtitle": "Personnalisez votre avatar et vos préférences",
"settingsSubtitle": "Configurez votre expérience",
"achievementsSubtitle": "Transforme les tâches en jeu avec des badges et objectifs"
},
"calendar": {
"mon": "Lun",
"tue": "Mar",
"wed": "Mer",
"thu": "Jeu",
"fri": "Ven",
"sat": "Sam",
"sun": "Dim",
"choresDone": "Tâches faites",
"tasksDue": "Tâches à faire",
"today": "Aujourd'hui",
"upcomingDueDates": "Échéances à venir",
"inDays": "dans {days}j",
"allCaughtUp": "Tout est à jour ! Aucune tâche imminente."
},
"leaderboard": {
"thisWeek": "Cette semaine",
"thisMonth": "Ce mois-ci",
"thisQuarter": "Ce trimestre",
"thisYear": "Cette année",
"points": "points",
"streak": "série",
"noData": "Pas encore de données pour cette période."
},
"rewards": {
"catalog": "Catalogue des récompenses",
"balanceHint": "Termine des tâches pour gagner des pièces puis échange-les.",
"noDescription": "Pas de description",
"redeem": "Utiliser",
"notEnough": "Pas assez de pièces",
"myRequests": "Historique de mes demandes",
"noRequests": "Aucune récompense utilisée pour l'instant.",
"confirmTitle": "Confirmer l'achat",
"confirmText": "Acheter \"{reward}\" pour {coins} pièces ?",
"confirmBuy": "Confirmer",
"cancelRequest": "Annuler",
"statusPending": "En attente",
"statusApproved": "Approuvée",
"statusRejected": "Refusée",
"statusCancelled": "Annulée"
},
"rewardsPreset": {
"movie_night": { "title": "Choix du film", "desc": "Choisir le film en famille ce soir." },
"ice_cream": { "title": "Pause glace", "desc": "Prendre une glace ou un dessert spécial." },
"late_bedtime": { "title": "Coucher +30 min", "desc": "Se coucher 30 minutes plus tard." },
"game_bonus": { "title": "Bonus jeu vidéo", "desc": "30 minutes de jeu supplémentaires." },
"choose_dinner": { "title": "Choisir le dîner", "desc": "Choisir le repas de ce soir." },
"park_adventure": { "title": "Aventure au parc", "desc": "Sortie spéciale au parc en famille." },
"chore_pass": { "title": "Passe corvée", "desc": "Sauter une corvée cette semaine." },
"board_game": { "title": "Soirée jeu de société", "desc": "Choisir le jeu de société du soir." }
},
"history": {
"task": "Tâche",
"room": "Pièce",
"when": "Quand",
"earned": "Gagné",
"by": "par",
"noActivity": "Aucune activité pour le moment. Complétez une tâche pour commencer !",
"previous": "Précédent",
"next": "Suivant",
"of": "sur"
},
"roomDetail": {
"name": "Nom",
"notes": "Notes",
"optionalNotes": "Notes optionnelles...",
"every": "Tous les",
"effort": "Effort",
"frequency": "Fréquence",
"actions": "Actions",
"deleteTask": "Supprimer la tâche",
"done": "Fait",
"seasonal": "Saisonnier",
"taskName": "Nom de la tâche...",
"addTask": "Ajouter une tâche"
},
"avatars": {
"cat": "Chat",
"dog": "Chien",
"bunny": "Lapin",
"bear": "Ours",
"fox": "Renard",
"owl": "Hibou",
"panda": "Panda",
"penguin": "Pingouin",
"unicorn": "Licorne",
"frog": "Grenouille",
"koala": "Koala",
"hedgehog": "Hérisson"
},
"dashboard": {
"houseHealth": "Santé de la maison",
"todaysQuests": "Quêtes du jour",
"recentActivity": "Activité récente",
"noQuests": "Aucune quête pour aujourd'hui",
"roomsCount": "Pièces",
"tasksCount": "Tâches",
"criticalCount": "Critiques",
"pending": "en attente",
"sortedUrgency": "Triées par urgence",
"dayStreak": "Série de jours",
"keepStreak": "Complète 1 tâche par jour pour continuer !",
"streakDoneToday": "Série complétée pour aujourd'hui !",
"more": "Plus",
"nextTasks": "Prochaines tâches à venir",
"healthGreat": "Super état ! Continue comme ça.",
"healthMedium": "Certaines pièces ont besoin d'attention.",
"healthLow": "C'est le moment d'une session ménage !",
"myGoal": "Mon objectif",
"childrenGoals": "Objectifs des enfants",
"noGoal": "Pas d'objectif",
"rewardRequestsTitle": "Demandes de récompenses",
"rewardRequestEmpty": "Aucune demande en attente.",
"coinsStatusTitle": "État des pièces",
"approve": "Approuver",
"reject": "Refuser"
},
"rooms": {
"addRoom": "Ajouter une pièce",
"room": "Pièce",
"tasks": "Tâches",
"health": "Santé",
"healthHealthy": "En bonne santé",
"healthNeedsAttention": "À surveiller",
"healthCritical": "Critique",
"deleteRoomConfirm": "Supprimer \"{room}\" et toutes ses tâches ? Cette action est définitive.",
"noRoomsYet": "Aucune pièce pour le moment",
"clickAddRoom": "Cliquez sur \"Ajouter une pièce\" pour commencer !",
"addRoomTitle": "Ajouter une pièce",
"pickRoomType": "Choisissez un type de pièce, puis configurez ses tâches.",
"customNameOptional": "Nom personnalisé (optionnel)",
"nextConfigure": "Suivant : configurer les tâches",
"configureTasks": "Configurer les tâches",
"configureTasksDesc": "Sélectionnez les tâches, leur état actuel, effort et fréquence.",
"currentState": "État actuel",
"dirty": "Sale",
"clean": "Propre",
"addCustomTask": "Ajouter une tâche personnalisée...",
"tasksSelected": "tâches sélectionnées",
"createRoom": "Créer la pièce",
"roomNotFound": "Pièce introuvable.",
"backToRooms": "Retour aux pièces",
"tasksTracked": "tâches suivies"
},
"common": {
"save": "Enregistrer",
"saved": "Enregistré",
"cancel": "Annuler",
"delete": "Supprimer",
"edit": "Modifier",
"loading": "Chargement",
"add": "Ajouter"
},
"units": {
"hours": "heures",
"days": "jours",
"weeks": "semaines",
"months": "mois",
"years": "années"
},
"unitsShort": {
"hours": "h",
"days": "j",
"weeks": "sem",
"months": "mois",
"years": "an"
},
"time": {
"never": "Jamais",
"justNow": "à l'instant",
"minutesAgo": "il y a {count} min",
"hoursAgo": "il y a {count} h",
"yesterday": "hier",
"daysAgo": "il y a {count} j",
"oneWeekAgo": "il y a 1 sem",
"weeksAgo": "il y a {count} sem",
"oneMonthAgo": "il y a 1 mois",
"monthsAgo": "il y a {count} mois"
},
"auth": {
"welcomeBack": "Bienvenue !",
"welcome": "Bienvenue sur TidyQuest",
"createYourAccount": "Créez votre compte",
"username": "Nom d'utilisateur",
"usernamePlaceholder": "Entrez votre nom d'utilisateur",
"password": "Mot de passe",
"passwordPlaceholder": "Entrez votre mot de passe",
"passwordMinChars": "min 4 caractères",
"displayName": "Nom affiché",
"displayNamePlaceholder": "John",
"avatarColor": "Couleur d'avatar",
"loggingIn": "Connexion...",
"logIn": "Se connecter",
"createAccount": "Créer un compte",
"createAccountAction": "Créer le compte",
"creating": "Création...",
"alreadyHaveAccount": "Déjà un compte ? Se connecter",
"allFieldsRequired": "Tous les champs sont requis",
"loginFailed": "Échec de connexion",
"registrationFailed": "Échec de l'inscription"
},
"achievements": {
"familyProgress": "Progression famille",
"firstStep": "Premier pas",
"firstStepDesc": "Termine ta premiere tache",
"helper": "Petit assistant",
"helperDesc": "Termine 10 tâches",
"busyBee": "Abeille active",
"busyBeeDesc": "Termine 25 tâches",
"cleaningHero": "Super nettoyeur",
"cleaningHeroDesc": "Termine 50 tâches",
"choreChampion": "Champion du menage",
"choreChampionDesc": "Termine 100 tâches",
"legend": "Legende TidyQuest",
"legendDesc": "Termine 250 tâches",
"unstoppable": "Inarretable !",
"unstoppableDesc": "Termine 500 tâches",
"onFire": "En feu",
"onFireDesc": "Atteins une serie de 3 jours",
"streakMaster": "Maitre de la serie",
"streakMasterDesc": "Atteins une serie de 7 jours",
"twoWeekWarrior": "Guerrier de la quinzaine",
"twoWeekWarriorDesc": "Atteins une serie de 14 jours",
"monthlyMachine": "Machine du mois",
"monthlyMachineDesc": "Atteins une serie de 30 jours",
"centurion": "Centurion",
"centurionDesc": "Atteins une serie de 100 jours !",
"piggyBank": "Tirelire",
"piggyBankDesc": "Gagne 50 pieces",
"saver": "Econome",
"saverDesc": "Gagne 100 pieces",
"treasureHunter": "Chasseur de tresor",
"treasureHunterDesc": "Gagne 500 pieces",
"goldMaster": "Maitre de l'or",
"goldMasterDesc": "Gagne 1 000 pieces",
"millionaire": "Millionnaire",
"millionaireDesc": "Gagne 5 000 pieces",
"roomTamer": "Dompteur de pieces",
"roomTamerDesc": "Garde 3 pieces en bonne sante en meme temps",
"housePride": "Fierte du foyer",
"housePrideDesc": "Garde 5 pieces en bonne sante en meme temps",
"weekendWarrior": "Guerrier du week-end",
"weekendWarriorDesc": "Termine 5 tâches en une semaine",
"superWeek": "Super semaine",
"superWeekDesc": "Termine 15 tâches en une semaine",
"perfectWeek": "Semaine parfaite",
"perfectWeekDesc": "Fais au moins 1 tache chaque jour pendant une semaine",
"perfectMonth": "Mois parfait",
"perfectMonthDesc": "Enchaine 4 semaines parfaites",
"nightOwl": "Planificateur Nocturne",
"nightOwlDesc": "Atteins une serie de 60 jours"
}
}
}