{
  "common": {
    "save": "Enregistrer",
    "cancel": "Annuler",
    "delete": "Supprimer",
    "edit": "Modifier",
    "close": "Fermer",
    "create": "Créer",
    "add": "Ajouter",
    "back": "Retour",
    "next": "Suivant",
    "loading": "Chargement…",
    "saving": "Enregistrement…",
    "required": "Ce champ est obligatoire.",
    "error": "Erreur",
    "allFieldsRequired": "Veuillez remplir tous les champs.",
    "today": "Aujourd'hui",
    "tomorrow": "Demain",
    "skipToContent": "Aller au contenu",
    "reload": "Recharger",
    "errorOccurred": "Une erreur s'est produite.",
    "unexpectedError": "Une erreur inattendue s'est produite.",
    "errorGeneric": "Une erreur s'est produite.",
    "updateAvailable": "Mise à jour disponible - rechargez la page pour obtenir la dernière version.",
    "titleRequired": "Le titre est obligatoire",
    "nameRequired": "Le nom est obligatoire",
    "contentRequired": "Le contenu est obligatoire",
    "all": "Tout",
    "unknownError": "Erreur inconnue",
    "confirm": "Confirmer",
    "undo": "Annuler",
    "reset": "Réinitialiser",
    "errorOffline": "Pas de connexion internet. Vérifiez votre réseau.",
    "errorForbidden": "Accès refusé. Veuillez vous reconnecter.",
    "errorNotFound": "L'entrée n'a pas été trouvée.",
    "errorServer": "Erreur serveur. Veuillez réessayer plus tard.",
    "errorTimeout": "La connexion a pris trop de temps. Veuillez réessayer."
  },
  "nav": {
    "dashboard": "Accueil",
    "tasks": "Tâches",
    "calendar": "Calendrier",
    "meals": "Repas",
    "shopping": "Courses",
    "notes": "Notes",
    "contacts": "Contacts",
    "birthdays": "Anniversaires",
    "budget": "Budget",
    "settings": "Paramètres",
    "main": "Navigation principale",
    "navigation": "Navigation",
    "quickActions": "Actions rapides",
    "recipes": "Recettes",
    "more": "Plus",
    "documents": "Documents",
    "kitchen": "Cuisine",
    "search": "Recherche"
  },
  "dashboard": {
    "title": "Accueil",
    "greetingMorning": "Bonjour, {{name}}",
    "greetingDay": "Bon après-midi, {{name}}",
    "greetingEvening": "Bonsoir, {{name}}",
    "allDone": "Tout est fait",
    "noEvents": "Aucun événement",
    "noPinnedNotes": "Aucune note épinglée",
    "todayMeals": "Repas du jour",
    "allLink": "Tout",
    "weekLink": "Semaine",
    "urgentTasksChip": "{{count}} tâche à échéance proche",
    "urgentTasksChipPlural": "{{count}} tâches à échéance proche",
    "eventsChip": "{{count}} événement aujourd'hui",
    "eventsChipPlural": "{{count}} événements aujourd'hui",
    "todayMealChip": "Aujourd'hui : {{title}}",
    "loadError": "Le tableau de bord n'a pas pu être chargé complètement.",
    "weatherRefresh": "Actualiser la météo",
    "weatherRefreshTitle": "Actualiser",
    "weatherUpdated": "Météo mise à jour",
    "weatherFeelsLike": "Ressenti {{temp}}° · {{humidity}}% · Vent {{wind}} {{windUnit}}",
    "fabTaskLabel": "Ajouter une tâche",
    "fabCalendarLabel": "Ajouter un événement",
    "fabShoppingLabel": "Ajouter une course",
    "fabNoteLabel": "Ajouter une note",
    "fabTask": "Tâche",
    "fabCalendar": "Événement",
    "fabShopping": "Course",
    "fabNote": "Note",
    "overdue": "En retard",
    "dueSoon": "À rendre aujourd'hui",
    "dueToday": "À rendre aujourd'hui",
    "dueTomorrow": "À rendre demain",
    "allDay": "Toute la journée",
    "shoppingMore": "+{{count}} de plus",
    "weather": "Météo",
    "familyMembers": "Membres de la famille",
    "participantsAdded": "participants ajoutés",
    "upcomingBirthdays": "Prochains anniversaires",
    "noBirthdays": "Aucun anniversaire pour l'instant",
    "daysLeft": "{{count}} jours",
    "budgetOverview": "Aperçu du budget",
    "monthlyIncome": "Revenus",
    "monthlyExpenses": "Dépenses",
    "monthlyBalance": "Solde",
    "savingsRate": "Taux d'épargne",
    "topExpense": "Plus grosse dépense",
    "budgetEntries": "Écritures",
    "noBudgetData": "Aucune donnée de budget ce mois-ci.",
    "customize": "Personnaliser",
    "customizeTitle": "Personnaliser les widgets",
    "customizeReset": "Réinitialiser",
    "customizeSaved": "Tableau de bord sauvegardé",
    "customizeMoveUp": "Monter",
    "customizeMoveDown": "Descendre",
    "overdueTasksChip": "{{count}} tâche en retard",
    "overdueTasksChipPlural": "{{count}} tâches en retard"
  },
  "tasks": {
    "title": "Tâches",
    "newTask": "Nouvelle tâche",
    "editTask": "Modifier la tâche",
    "emptyTitle": "Aucune tâche - tout est fait ?",
    "emptyDescription": "Créez de nouvelles tâches avec le bouton +.",
    "titleLabel": "Titre *",
    "titlePlaceholder": "Que faut-il faire ?",
    "descriptionLabel": "Note",
    "descriptionPlaceholder": "Détails optionnels…",
    "priorityLabel": "Priorité",
    "categoryLabel": "Catégorie",
    "dueDateLabel": "Date d'échéance",
    "dueTimeLabel": "Heure",
    "assignedLabel": "Assigné à",
    "assignedNobody": "- Personne -",
    "statusLabel": "Statut",
    "priorityUrgent": "Urgent",
    "priorityHigh": "Élevée",
    "priorityMedium": "Moyenne",
    "priorityLow": "Faible",
    "priorityNone": "Aucune",
    "statusOpen": "Ouvert",
    "statusInProgress": "En cours",
    "statusDone": "Terminé",
    "categoryHousehold": "Maison",
    "categorySchool": "École",
    "categoryShopping": "Courses",
    "categoryRepair": "Réparation",
    "categoryHealth": "Santé",
    "categoryFinance": "Finances",
    "categoryLeisure": "Loisirs",
    "categoryMisc": "Divers",
    "overdue": "En retard",
    "overdueDay": "{{count}}j de retard",
    "dueToday": "À rendre aujourd'hui",
    "dueTomorrow": "À rendre demain",
    "groupOverdue": "En retard",
    "groupToday": "Aujourd'hui",
    "groupThisWeek": "Cette semaine",
    "groupNextWeek": "Semaine prochaine",
    "groupLater": "Plus tard",
    "groupNoDate": "Sans date",
    "markDone": "Marquer {{title}} comme terminé",
    "markOpen": "Marquer {{title}} comme non terminé",
    "editButton": "Modifier la tâche",
    "swipeOpen": "Rouvrir",
    "swipeDone": "Terminé",
    "swipeEdit": "Modifier",
    "subtaskAdd": "+ Ajouter une sous-tâche",
    "subtaskToggle": "Afficher les sous-tâches",
    "subtaskMarkDone": "Marquer {{title}} comme terminé",
    "deleteConfirm": "Supprimer la tâche et toutes ses sous-tâches ?",
    "savedToast": "Tâche enregistrée.",
    "createdToast": "Tâche créée.",
    "deletedToast": "Tâche supprimée.",
    "loadError": "La tâche n'a pas pu être chargée.",
    "subtaskPrompt": "Sous-tâche :",
    "kanbanOpen": "Ouvert",
    "kanbanInProgress": "En cours",
    "kanbanDone": "Terminé",
    "kanbanMoveToInProgress": "Mettre en cours",
    "kanbanMoveToDone": "Marquer comme terminé",
    "kanbanMoveToOpen": "Rouvrir",
    "recurring": "Récurrent",
    "listView": "Vue liste",
    "kanbanView": "Vue Kanban",
    "filterBtn": "Filtrer",
    "filterClearAll": "Effacer tous les filtres",
    "filterGroupPerson": "Personne",
    "filterGroupPriority": "Priorité",
    "filterGroupStatus": "Statut",
    "swipedDoneToast": "Marqué comme terminé.",
    "swipedOpenToast": "Marqué comme ouvert.",
    "statusArchived": "Archivé",
    "archiveButton": "Archiver la tâche",
    "archivedToast": "Tâche archivée.",
    "kanbanArchived": "Archivé",
    "reminderNeedsDueDate": "Définissez une date d'échéance pour activer les rappels de tâche.",
    "emptyAction": "Créer une tâche"
  },
  "shopping": {
    "title": "Courses",
    "noLists": "Aucune liste",
    "noListsDescription": "Créez une liste avec le bouton +.",
    "emptyList": "La liste est vide",
    "emptyListDescription": "Ajoutez des articles via le champ de saisie ci-dessus.",
    "newListPrompt": "Nom de la nouvelle liste :",
    "newListButton": "Créer une nouvelle liste",
    "renameListPrompt": "Nouveau nom de la liste :",
    "deleteListConfirm": "Supprimer la liste « {{name}} » et tous ses articles ?",
    "deletedListToast": "Liste supprimée.",
    "itemDeletedToast": "« {{name}} » supprimé.",
    "itemsRemovedToast": "{{count}} articles supprimés.",
    "clearChecked": "Supprimer les cochés ({{count}})",
    "itemNamePlaceholder": "Ajouter un article…",
    "itemQtyPlaceholder": "Quantité",
    "itemNameLabel": "Nom de l'article",
    "itemQtyLabel": "Quantité",
    "categoryLabel": "Catégorie",
    "addItemLabel": "Ajouter un article",
    "renameListLabel": "Renommer la liste",
    "deleteListLabel": "Supprimer la liste",
    "swipeBack": "Annuler",
    "swipeCheck": "Cocher",
    "swipeDelete": "Supprimer",
    "markDoneLabel": "Cocher {{name}}",
    "markUndoneLabel": "Décocher {{name}}",
    "deleteItemLabel": "Supprimer {{name}}",
    "listsLoadError": "Les listes n'ont pas pu être chargées.",
    "itemsLoadError": "Les articles n'ont pas pu être chargés.",
    "catFruitVeg": "Fruits et légumes",
    "catBakery": "Boulangerie",
    "catDairy": "Produits laitiers",
    "catMeatFish": "Viande et poisson",
    "catFrozen": "Surgelés",
    "catDrinks": "Boissons",
    "catHousehold": "Ménage",
    "catDrugstore": "Pharmacie",
    "catMisc": "Divers",
    "emptyAction": "Ajouter un article"
  },
  "meals": {
    "title": "Plan de repas",
    "noMealPlanned": "Aucun repas prévu",
    "addMeal": "Ajouter {{type}}",
    "editMeal": "Modifier le repas",
    "addMealTitle": "Ajouter un repas",
    "deleteMeal": "Supprimer le repas",
    "transferToShoppingList": "Ajouter les ingrédients à la liste de courses",
    "today": "Aujourd'hui",
    "prevWeek": "Semaine précédente",
    "nextWeek": "Semaine suivante",
    "loadError": "Le plan de repas n'a pas pu être chargé.",
    "typeBreakfast": "Petit-déjeuner",
    "typeLunch": "Déjeuner",
    "typeDinner": "Dîner",
    "typeSnack": "Snack",
    "dayMo": "Lun",
    "dayDi": "Mar",
    "dayMi": "Mer",
    "dayDo": "Jeu",
    "dayFr": "Ven",
    "daySa": "Sam",
    "daySo": "Dim",
    "dateLabel": "Date",
    "mealTypeLabel": "Repas",
    "titleLabel": "Titre *",
    "titlePlaceholder": "ex. Pâtes bolognaise",
    "notesLabel": "Notes",
    "notesPlaceholder": "Optionnel…",
    "ingredientsLabel": "Ingrédients",
    "addIngredient": "Ajouter un ingrédient",
    "ingredientNamePlaceholder": "Ingrédient",
    "ingredientQtyPlaceholder": "Quantité",
    "ingredientCategoryLabel": "Catégorie",
    "ingredientCategoryDefault": "Divers",
    "removeIngredient": "Supprimer l'ingrédient",
    "transferLabel": "Transférer les ingrédients vers la liste de courses",
    "transferNow": "Transférer maintenant",
    "noShoppingLists": "Aucune liste de courses disponible",
    "transferSuccess": "{{count}} ingrédient transféré",
    "transferSuccessPlural": "{{count}} ingrédients transférés",
    "transferAlreadyDone": "Tous les ingrédients ont déjà été transférés",
    "ingredientCount": "{{count}} ingrédient",
    "ingredientCountPlural": "{{count}} ingrédients",
    "titleRequired": "Le titre est obligatoire",
    "loadingIndicator": "Chargement…",
    "recipeUrlLabel": "Lien recette (optionnel)",
    "recipeUrlPlaceholder": "https://…",
    "openRecipe": "Ouvrir la recette",
    "savedRecipeLabel": "Saved recipe",
    "savedRecipePlaceholder": "Select recipe",
    "saveAsRecipe": "Save as recipe",
    "recipeScaleLabel": "Scale ingredients",
    "deletedToast": "Meal deleted"
  },
  "calendar": {
    "title": "Calendrier",
    "newEvent": "Nouvel événement",
    "editEvent": "Modifier l'événement",
    "addEvent": "Ajouter un événement",
    "deleteEvent": "Supprimer l'événement",
    "noEvents": "Aucun événement dans la période sélectionnée.",
    "today": "Aujourd'hui",
    "back": "Retour",
    "forward": "Avancer",
    "viewMonth": "Mois",
    "viewWeek": "Semaine",
    "viewDay": "Jour",
    "viewAgenda": "Agenda",
    "allDay": "Toute la journée",
    "allDayShort": "tj.",
    "moreEvents": "+{{count}} de plus",
    "weekNumberLabel": "S{{week}} · {{month}} {{year}}",
    "agendaFrom": "À partir du {{date}}",
    "titleLabel": "Titre *",
    "titlePlaceholder": "ex. Dentiste",
    "allDayToggle": "Toute la journée",
    "startDateLabel": "Date de début",
    "startTimeLabel": "Heure de début",
    "endDateLabel": "Date de fin",
    "endTimeLabel": "Heure de fin",
    "fromLabel": "De",
    "toLabel": "À",
    "locationLabel": "Lieu",
    "locationPlaceholder": "Optionnel",
    "assignedLabel": "Assigné à",
    "assignedNobody": "- Personne -",
    "colorLabel": "Couleur {{color}}",
    "descriptionLabel": "Description",
    "descriptionPlaceholder": "Optionnel…",
    "popupEdit": "Modifier",
    "deleteConfirm": "Supprimer « {{title}} » ?",
    "createdToast": "Événement créé",
    "savedToast": "Événement enregistré",
    "deletedToast": "Événement supprimé",
    "loadError": "Les événements n'ont pas pu être chargés.",
    "saveError": "Erreur lors de l'enregistrement",
    "deleteError": "Erreur lors de la suppression",
    "titleRequired": "Le titre est obligatoire",
    "monthJanuary": "Janvier",
    "monthFebruary": "Février",
    "monthMarch": "Mars",
    "monthApril": "Avril",
    "monthMay": "Mai",
    "monthJune": "Juin",
    "monthJuly": "Juillet",
    "monthAugust": "Août",
    "monthSeptember": "Septembre",
    "monthOctober": "Octobre",
    "monthNovember": "Novembre",
    "monthDecember": "Décembre",
    "dayShortSunday": "Dim",
    "dayShortMonday": "Lun",
    "dayShortTuesday": "Mar",
    "dayShortWednesday": "Mer",
    "dayShortThursday": "Jeu",
    "dayShortFriday": "Ven",
    "dayShortSaturday": "Sam",
    "dayLongSunday": "Dimanche",
    "dayLongMonday": "Lundi",
    "dayLongTuesday": "Mardi",
    "dayLongWednesday": "Mercredi",
    "dayLongThursday": "Jeudi",
    "dayLongFriday": "Vendredi",
    "dayLongSaturday": "Samedi",
    "timeSuffix": "",
    "ics": {
      "reset": "Réinitialiser",
      "resetToast": "Modifications annulées."
    },
    "iconLabel": "Icon",
    "invalidDate": "Use a valid date in the selected date format.",
    "attachmentLabel": "Attachment",
    "attachmentHint": "Attach a local image, PDF, or document. Images will be shown in the event popup.",
    "attachmentFallback": "Attachment",
    "attachmentReadError": "The attachment could not be read.",
    "attachmentTooLarge": "Attachment may be at most 5 MB."
  },
  "notes": {
    "title": "Notes",
    "newNote": "Nouvelle note",
    "editNote": "Modifier la note",
    "addNoteLabel": "Nouvelle note",
    "searchPlaceholder": "Rechercher des notes…",
    "emptyTitle": "Aucune note",
    "emptyDescription": "Créez une nouvelle note avec le bouton +.",
    "noResultsTitle": "Aucun résultat",
    "noResultsDescription": "Aucune note ne contient « {{query}} ».",
    "titleLabel": "Titre (optionnel)",
    "titlePlaceholder": "Sans titre",
    "contentLabel": "Contenu",
    "contentMarkdownHint": "(Formatage Markdown supporté)",
    "contentPlaceholder": "Saisir une note…",
    "colorLabel": "Couleur",
    "pinnedLabel": "Épingler (apparaît sur le tableau de bord)",
    "pinAction": "Épingler",
    "unpinAction": "Désépingler",
    "deleteLabel": "Supprimer la note",
    "deleteConfirm": "Supprimer cette note ?",
    "createdToast": "Note créée",
    "savedToast": "Note enregistrée",
    "deletedToast": "Note supprimée",
    "loadError": "Les notes n'ont pas pu être chargées.",
    "formatBold": "Gras (Ctrl+B)",
    "formatItalic": "Italique (Ctrl+I)",
    "formatUnderline": "Souligné (Ctrl+U)",
    "formatStrikethrough": "Barré",
    "formatHeading": "Titre",
    "formatList": "Liste à puces",
    "formatOrderedList": "Liste numérotée",
    "formatChecklist": "Liste de contrôle",
    "formatLink": "Lien",
    "formatCode": "Code",
    "formatQuote": "Citation",
    "formatDivider": "Séparateur",
    "emptyAction": "Créer une note"
  },
  "contacts": {
    "title": "Contacts",
    "newContact": "Nouveau contact",
    "editContact": "Modifier le contact",
    "addButton": "Nouveau",
    "newContactLabel": "Nouveau contact",
    "searchPlaceholder": "Rechercher par nom, téléphone ou e-mail…",
    "importButton": "Importer",
    "importLabel": "Importer un contact depuis vCard",
    "importTooltip": "Importer vCard",
    "emptyTitle": "Aucun contact",
    "emptyDescription": "Ajoutez de nouveaux contacts avec le bouton +.",
    "filterAll": "Tous",
    "nameLabel": "Nom *",
    "namePlaceholder": "Nom complet",
    "categoryLabel": "Catégorie",
    "phoneLabel": "Téléphone",
    "phonePlaceholder": "+33 …",
    "emailLabel": "E-mail",
    "emailPlaceholder": "nom@exemple.fr",
    "addressLabel": "Adresse",
    "addressPlaceholder": "Rue, Code postal Ville",
    "notesLabel": "Notes",
    "notesPlaceholder": "Optionnel…",
    "callLabel": "Appeler",
    "emailActionLabel": "E-mail",
    "mapsLabel": "Ouvrir dans Maps",
    "exportLabel": "Exporter en vCard",
    "exportTooltip": "Exporter vCard",
    "deleteLabel": "Supprimer le contact",
    "deleteConfirm": "Supprimer ce contact ?",
    "deletePersonConfirm": "Supprimer « {{name}} » ?",
    "savedToast": "Contact enregistré",
    "updatedToast": "Contact mis à jour",
    "deletedToast": "Contact supprimé",
    "importedToast": "{{name}} importé.",
    "importError": "Importation échouée : {{error}}",
    "vcardNoName": "La vCard ne contient pas de nom.",
    "catDoctor": "Médecin",
    "catSchool": "École/Crèche",
    "catAuthority": "Administration",
    "catInsurance": "Assurance",
    "catCraftsman": "Artisan",
    "catEmergency": "Urgence",
    "catMisc": "Divers",
    "categoryDoctor": "Médecin",
    "categorySchool": "École/Crèche",
    "categoryAuthority": "Administration",
    "categoryInsurance": "Assurance",
    "categoryCraftsman": "Artisan",
    "categoryEmergency": "Urgence",
    "categoryOther": "Autre",
    "emptyAction": "Ajouter un contact"
  },
  "budget": {
    "title": "Budget",
    "newEntry": "Nouvelle entrée",
    "editEntry": "Modifier l'entrée",
    "addEntryLabel": "Ajouter une entrée",
    "newEntryFabLabel": "Nouvelle entrée",
    "currentMonth": "Actuel",
    "prevMonth": "Mois précédent",
    "nextMonth": "Mois suivant",
    "income": "Revenus",
    "expenses": "Dépenses",
    "balance": "Solde",
    "byCategory": "Par catégorie",
    "transactions": "Transactions",
    "emptyTitle": "Aucune entrée ce mois-ci",
    "emptyDescription": "Ajoutez des entrées budgétaires avec le bouton +.",
    "csvExport": "CSV",
    "typeExpense": "Dépense",
    "typeIncome": "Revenu",
    "titleLabel": "Titre *",
    "titlePlaceholder": "ex. Supermarché",
    "amountLabel": "Montant *",
    "amountPlaceholder": "0,00",
    "categoryLabel": "Catégorie",
    "dateLabel": "Date *",
    "recurringLabel": "Récurrent",
    "deleteLabel": "Supprimer l'entrée",
    "deleteConfirm": "Supprimer cette entrée ?",
    "deletePersonConfirm": "Supprimer « {{title}} » ?",
    "addedToast": "Entrée ajoutée",
    "savedToast": "Entrée enregistrée",
    "deletedToast": "Entrée supprimée",
    "loadError": "Le budget n'a pas pu être chargé.",
    "trendNeutral": "- identique à {{month}}",
    "validAmountRequired": "Veuillez saisir un montant valide",
    "dateRequired": "La date est obligatoire",
    "catFood": "Alimentation",
    "catRent": "Loyer",
    "catInsurance": "Assurance",
    "catMobility": "Transport",
    "catLeisure": "Loisirs et divertissement",
    "catClothing": "Vêtements",
    "catHealth": "Santé",
    "catEducation": "Éducation",
    "catMisc": "Divers",
    "catEarnedIncome": "Revenus du Travail",
    "catInvestmentIncome": "Revenus d'Investissement",
    "catTransferGiftIncome": "Transferts et Cadeaux",
    "catGovernmentBenefits": "Allocations Sociales",
    "catOtherIncome": "Autres Revenus",
    "loadingIndicator": "Chargement…",
    "subcategoryLabel": "Sous-catégorie",
    "catHousing": "Logement / Maison",
    "catTransport": "Transport",
    "catPersonalHealth": "Soins personnels / Santé",
    "catShoppingClothing": "Achats et vêtements",
    "catFinancialOther": "Services financiers et autres",
    "subcatRentMortgage": "Loyer / Crédit immobilier",
    "subcatCondominium": "Copropriété",
    "subcatUtilities": "Électricité / Eau / Gaz",
    "subcatInternetTvPhone": "Internet / TV / Téléphone",
    "subcatRenovationMaintenance": "Rénovation / Entretien",
    "subcatCleaning": "Nettoyage",
    "subcatGroceries": "Supermarché",
    "subcatRestaurantsBars": "Restaurants / Bars",
    "subcatSnacksFastFood": "Snacks / Fast-food",
    "subcatBakery": "Boulangerie",
    "subcatFuel": "Carburant",
    "subcatParkingTolls": "Parking / Péages",
    "subcatPublicTransport": "Transports publics",
    "subcatAppsTaxi": "Apps / Taxi",
    "subcatMaintenanceInsurance": "Entretien / Assurance",
    "subcatPharmacy": "Pharmacie",
    "subcatHealthInsurance": "Assurance santé",
    "subcatGymSports": "Salle de sport / Sports",
    "subcatBeautyCosmetics": "Beauté / Cosmétiques",
    "subcatTravel": "Voyages",
    "subcatStreaming": "Streaming",
    "subcatEvents": "Événements",
    "subcatHobbies": "Loisirs",
    "subcatClothesShoes": "Vêtements / Chaussures",
    "subcatElectronics": "Électronique",
    "subcatGifts": "Cadeaux",
    "subcatCoursesCollege": "Cours / Université",
    "subcatSchoolSupplies": "Fournitures scolaires",
    "subcatLanguages": "Langues",
    "subcatLoansInterest": "Prêts / Intérêts",
    "subcatBankFees": "Frais bancaires",
    "subcatInsuranceOther": "Assurances",
    "subcatInvestments": "Investissements",
    "subcatTaxes": "Impôts",
    "metaLoadError": "Impossible de charger les catégories du budget.",
    "addCategory": "+ catégorie",
    "addSubcategory": "+ sous-catégorie",
    "newCategoryPrompt": "Nom de la nouvelle catégorie :",
    "newSubcategoryPrompt": "Nom de la nouvelle sous-catégorie :",
    "categoryAddedToast": "Catégorie ajoutée.",
    "subcategoryAddedToast": "Sous-catégorie ajoutée.",
    "emptyAction": "Ajouter une entrée"
  },
  "settings": {
    "title": "Paramètres",
    "tabGeneral": "Général",
    "tabMeals": "Repas",
    "tabBudget": "Budget",
    "tabShopping": "Courses",
    "tabCalendar": "Calendrier",
    "tabFamily": "Gestion familiale",
    "tabApiTokens": "API Tokens",
    "tabAccount": "Compte",
    "tabsAriaLabel": "Sections des paramètres",
    "sectionDesign": "Apparence",
    "sectionAppName": "Nom de l'application",
    "sectionShopping": "Courses",
    "shoppingCategoriesLabel": "Catégories de courses",
    "shoppingCategoriesHint": "Ajoutez, renommez, supprimez ou réorganisez les catégories.",
    "shoppingCategoryPlaceholder": "Nouvelle catégorie…",
    "shoppingCategoryRenameHint": "Cliquez pour renommer",
    "shoppingCategoryRenamePrompt": "Nouveau nom de catégorie :",
    "shoppingCategoryMoveUp": "Déplacer la catégorie vers le haut",
    "shoppingCategoryMoveDown": "Déplacer la catégorie vers le bas",
    "shoppingCategoryDelete": "Supprimer la catégorie",
    "shoppingCategoryDeleteConfirm": "Supprimer la catégorie « {{name}} » ? Les articles existants seront déplacés vers la catégorie suivante.",
    "shoppingCategoryAdded": "Catégorie ajoutée.",
    "shoppingCategoryRenamed": "Catégorie renommée.",
    "shoppingCategoryDeleted": "Catégorie supprimée.",
    "sectionAccount": "Mon compte",
    "sectionCalendarSync": "Synchronisation du calendrier",
    "sectionFamily": "Membres de la famille",
    "cardAppearance": "Affichage",
    "appNameTitle": "Nom de l'application",
    "appNameLabel": "Nom de l'application",
    "appNameHint": "Ce nom apparaît dans la barre latérale, le titre du navigateur et l'écran de connexion.",
    "appNamePlaceholder": "Oikos",
    "appNameSavedToast": "Nom de l'application enregistré.",
    "sectionDate": "Date",
    "dateFormatTitle": "Format de date",
    "dateFormatLabel": "Format de date préféré",
    "dateFormatHint": "Choisissez comment les dates sont affichées dans l'application.",
    "dateFormatSavedToast": "Format de date enregistré.",
    "themeSystem": "Système",
    "themeSysLabel": "Utiliser le paramètre système",
    "themeLight": "Clair",
    "themeLightLabel": "Mode clair",
    "themeDark": "Sombre",
    "themeDarkLabel": "Mode sombre",
    "changePassword": "Changer le mot de passe",
    "currentPasswordLabel": "Mot de passe actuel",
    "newPasswordLabel": "Nouveau mot de passe",
    "confirmPasswordLabel": "Confirmer le nouveau mot de passe",
    "savePassword": "Enregistrer le mot de passe",
    "passwordMismatch": "Les mots de passe ne correspondent pas.",
    "passwordSavedToast": "Mot de passe modifié avec succès.",
    "googleCalendar": "Google Agenda",
    "appleCalendar": "Apple Calendar (iCloud)",
    "syncNow": "Synchroniser maintenant",
    "disconnect": "Déconnecter",
    "connectGoogle": "Connecter avec Google",
    "connected": "Connecté",
    "connectedLastSync": "Connecté · Dernière sync. : {{date}}",
    "notConnected": "Non connecté",
    "notConfigured": "Non configuré (variables .env manquantes)",
    "configured": "Configuré (via .env)",
    "configuredLastSync": "Configuré (via .env) · Dernière sync. : {{date}}",
    "syncSuccess": "{{provider}} synchronisé.",
    "disconnectedToast": "{{provider}} déconnecté.",
    "googleOnlyAdmin": "Seul l'administrateur peut connecter Google Agenda.",
    "appleOnlyAdmin": "Seul l'administrateur peut connecter Apple Calendar.",
    "caldavUrlLabel": "URL du serveur CalDAV",
    "caldavUrlPlaceholder": "https://caldav.icloud.com",
    "appleIdLabel": "Identifiant Apple (e-mail)",
    "applePasswordLabel": "Mot de passe spécifique à l'app",
    "applePasswordHint": "Créez le mot de passe sur <strong>appleid.apple.com → Sécurité</strong>.",
    "appleConnectBtn": "Connecter et tester",
    "appleConnecting": "Connexion…",
    "appleConnectedToast": "Apple Calendar connecté.",
    "syncSuccessGoogle": "Synchronisation du calendrier avec Google réussie.",
    "syncSuccessApple": "Synchronisation du calendrier avec Apple réussie.",
    "syncErrorGoogle": "La connexion à Google a échoué. Veuillez réessayer.",
    "syncErrorApple": "La connexion à Apple a échoué. Veuillez réessayer.",
    "addMember": "+ Ajouter un membre",
    "newMemberTitle": "Nouveau membre de la famille",
    "usernameLabel": "Nom d'utilisateur",
    "displayNameLabel": "Nom affiché",
    "memberPasswordLabel": "Mot de passe",
    "colorLabel": "Couleur",
    "profilePictureTitle": "Photo de profil",
    "profilePictureLabel": "Importer une photo",
    "profilePictureHint": "PNG, JPEG ou WebP. Les grandes images sont redimensionnées avant l'envoi.",
    "profilePictureRemove": "Supprimer la photo",
    "profilePictureTypeError": "Utilisez une image PNG, JPEG ou WebP.",
    "profilePictureFileTooLarge": "Le fichier image est trop volumineux.",
    "profilePictureTooLarge": "La photo reste trop volumineuse après redimensionnement.",
    "profilePictureReadError": "Impossible de lire l'image sélectionnée.",
    "profileSavedToast": "Profil mis à jour.",
    "editMemberLabel": "Modifier",
    "editMemberTitle": "Modifier le membre de la famille",
    "saveMember": "Enregistrer le membre",
    "memberUpdatedToast": "{{name}} mis à jour.",
    "familyRoleLabel": "Rôle familial",
    "familyRoleDad": "Papa",
    "familyRoleMom": "Maman",
    "familyRoleParent": "Parent",
    "familyRoleChild": "Enfant",
    "familyRoleGrandparent": "Grand-parent",
    "familyRoleRelative": "Proche",
    "familyRoleOther": "Membre de la famille",
    "systemAdminLabel": "Administrateur système",
    "systemAdminHint": "Les administrateurs système peuvent gérer les paramètres, intégrations, jetons API et comptes familiaux.",
    "systemAdminBadge": "Admin système",
    "roleLabel": "Rôle",
    "roleMember": "Membre",
    "roleAdmin": "Admin",
    "createMember": "Créer",
    "cancelAddMember": "Annuler",
    "memberAddedToast": "{{name}} ajouté.",
    "deleteMemberConfirm": "Supprimer {{name}} ?",
    "memberDeletedToast": "{{name}} supprimé.",
    "deleteMemberLabel": "Supprimer",
    "logout": "Se déconnecter",
    "synchronizing": "Synchronisation…",
    "googleDisconnectConfirm": "Déconnecter Google Agenda ?",
    "appleDisconnectConfirm": "Déconnecter Apple Calendar ?",
    "localeSystem": "Système",
    "localeLabel": "Langue",
    "languageTitle": "Langue",
    "sectionMeals": "Plan de repas",
    "mealTypesLabel": "Repas visibles",
    "mealTypesHint": "Seuls les types de repas sélectionnés s'affichent dans le planificateur.",
    "mealTypesSaved": "Paramètres du plan de repas enregistrés.",
    "mealTypesMinOne": "Au moins un type de repas doit être actif.",
    "sectionBudget": "Budget",
    "currencyLabel": "Devise",
    "currencyHint": "Définit la devise utilisée dans toute la section budget.",
    "currencySaved": "Devise enregistrée.",
    "apiTokensTitle": "API Tokens",
    "apiTokensCardTitle": "Access Tokens",
    "apiTokensHint": "Create API tokens for external integrations. The full token is shown only once after creation.",
    "apiTokenNameLabel": "Token name",
    "apiTokenExpiresLabel": "Expiration date",
    "apiTokenExpiresHint": "Leave empty to create a token without expiration.",
    "apiTokenCreatedLabel": "New API token",
    "apiTokenCreatedHint": "Store this token securely. It cannot be shown again.",
    "apiTokenCreate": "Create token",
    "apiTokenInvalidExpiration": "Please enter a valid expiration date.",
    "apiTokenCreatedToast": "API token created.",
    "apiTokenRevokedToast": "API token revoked.",
    "apiTokenRevokeConfirm": "Revoke API token \"{{name}}\"?",
    "apiTokenRevoke": "Revoke token",
    "apiTokenRevoked": "Revoked",
    "apiTokenExpired": "Expired",
    "apiTokenActive": "Active",
    "apiTokenPrefix": "Prefix",
    "apiTokenExpires": "Expires",
    "apiTokenNeverExpires": "No expiration",
    "apiTokenLastUsed": "Last used",
    "apiTokenNeverUsed": "Never used",
    "ics": {
      "title": "Abonnements ICS",
      "add": "Ajouter un abonnement",
      "addedToast": "Abonnement ajouté.",
      "deletedToast": "Abonnement supprimé.",
      "syncedToast": "Abonnement synchronisé.",
      "confirm_delete": "Voulez-vous vraiment supprimer cet abonnement ? Tous les événements associés seront également supprimés.",
      "empty": "Aucun abonnement pour le moment.",
      "form": {
        "name": "Nom",
        "url": "URL ICS",
        "color": "Couleur",
        "shared": "Visible par tous"
      },
      "actions": {
        "submit": "Ajouter",
        "save": "Enregistrer",
        "cancel": "Annuler",
        "delete": "Supprimer",
        "edit": "Modifier",
        "sync": "Synchroniser maintenant"
      },
      "status": {
        "lastSync": "Dernière sync. :",
        "never": "Pas encore synchronisé",
        "syncing": "Synchronisation...",
        "syncError": "Erreur de sync."
      },
      "badges": {
        "private": "Privé",
        "shared": "Partagé"
      },
      "updatedToast": "Abonnement mis à jour."
    },
    "memberPhoneLabel": "Numéro de téléphone (facultatif)",
    "memberEmailLabel": "E-mail (facultatif)",
    "memberBirthDateLabel": "Date de naissance (facultatif)",
    "memberContactBirthdayHint": "Ce membre est automatiquement synchronisé avec les Contacts et les Anniversaires.",
    "memberBirthDateInvalid": "Utilisez une date de naissance valide dans le format sélectionné.",
    "memberPhoneMeta": "Téléphone : {{value}}",
    "memberBirthdayMeta": "Anniversaire : {{date}}",
    "tabBackup": "Gestion des sauvegardes",
    "sectionBackup": "Gestion des sauvegardes",
    "backupDownloadTitle": "Télécharger la sauvegarde de la base",
    "backupDownloadHint": "Crée une sauvegarde SQLite cohérente de toutes les données.",
    "backupDownloadButton": "Télécharger la sauvegarde",
    "backupRestoreTitle": "Restaurer une sauvegarde de la base",
    "backupRestoreHint": "La restauration remplace la base actuelle. Télécharge une sauvegarde récente avant de continuer.",
    "backupDropzoneTitle": "Dépose un fichier de sauvegarde ici ou clique pour le choisir",
    "backupDropzoneHint": "Fichiers SQLite : .db, .sqlite ou .sqlite3",
    "backupRestoreButton": "Restaurer la sauvegarde",
    "backupRestoreConfirm": "Cette restauration remplacera la base actuelle pour tout le monde. Continuer ?",
    "backupRestoring": "Restauration...",
    "backupRestoredToast": "Base restaurée. Rechargement...",
    "backupCliTitle": "Restauration CLI / Docker Compose",
    "backupCliHint": "For operational restores, stop the app, mount the backup in a temporary container and replace the database file.",
    "backupCliBackupHint": "Tu peux aussi créer une sauvegarde directement avec Docker Compose :"
  },
  "login": {
    "tagline": "Planification familiale. Sécurisée. Respectueuse de la vie privée. Open source.",
    "usernameLabel": "Nom d'utilisateur",
    "usernamePlaceholder": "identifiant",
    "passwordLabel": "Mot de passe",
    "passwordPlaceholder": "••••••••",
    "loginButton": "Se connecter",
    "loggingIn": "Connexion…",
    "tooManyAttempts": "Trop de tentatives. Veuillez patienter un moment.",
    "invalidCredentials": "Identifiants invalides.",
    "version": "v{{version}}"
  },
  "install": {
    "title": "Installer Oikos",
    "subtitle": "Ajouter à l'écran d'accueil",
    "iosTip1": "Appuyez sur ",
    "iosTip2": " → « Ajouter à l'écran d'accueil »",
    "installButton": "Installer",
    "dismissLabel": "Fermer"
  },
  "modal": {
    "closeLabel": "Fermer",
    "overlayLabel": "Arrière-plan de la boîte de dialogue modale",
    "unsavedChanges": "Abandonner les modifications ?",
    "discardChanges": "Abandonner"
  },
  "rrule": {
    "freqNone": "Pas de répétition",
    "freqDaily": "Quotidien",
    "freqWeekly": "Hebdomadaire",
    "freqMonthly": "Mensuel",
    "dayMo": "Lu",
    "dayTu": "Ma",
    "dayWe": "Me",
    "dayTh": "Je",
    "dayFr": "Ve",
    "daySa": "Sa",
    "daySu": "Di",
    "labelRepeat": "Répétition",
    "labelEvery": "Tous les",
    "labelOnDays": "Ces jours-ci",
    "labelUntil": "Se termine le (optionnel)",
    "unitDay": "jour",
    "unitDays": "jours",
    "unitWeek": "semaine",
    "unitWeeks": "semaines",
    "unitMonth": "mois",
    "unitMonths": "mois"
  },
  "recipes": {
    "title": "Recettes",
    "addRecipe": "Ajouter une recette",
    "editRecipe": "Modifier la recette",
    "emptyTitle": "Aucune recette pour le moment",
    "emptyDescription": "Enregistrez vos recettes préférées et réutilisez-les dans la planification des repas.",
    "titleLabel": "Titre *",
    "titlePlaceholder": "ex. Pâtes à la Carbonara",
    "notesLabel": "Notes",
    "notesPlaceholder": "Facultatif...",
    "urlLabel": "Lien de recette",
    "urlPlaceholder": "https://...",
    "ingredientsLabel": "Ingrédients",
    "addToMeals": "Ajouter au plan de repas",
    "openLink": "Ouvrir le lien de recette",
    "deleteConfirm": "Supprimer la recette \"{{title}}\" ?",
    "created": "Recette enregistrée.",
    "updated": "Recette mise à jour.",
    "deleted": "Recette supprimée.",
    "titleRequired": "Le titre est requis",
    "duplicate": "Dupliquer",
    "duplicated": "Recette dupliquée.",
    "copySuffix": "copie",
    "emptyAction": "Créer une recette"
  },
  "search": {
    "title": "Recherche",
    "open": "Ouvrir la recherche",
    "placeholder": "Rechercher…",
    "noResults": "Aucun résultat trouvé."
  },
  "birthdays": {
    "title": "Anniversaires",
    "addButton": "Ajouter un anniversaire",
    "searchPlaceholder": "Rechercher des anniversaires…",
    "upcomingTitle": "Prochains anniversaires",
    "upcomingHint": "Les prochaines célébrations, déjà synchronisées avec le calendrier.",
    "peopleTitle": "Personnes",
    "peopleHint": "Recherchez, vérifiez et modifiez tous les anniversaires enregistrés.",
    "emptyTitle": "Aucun anniversaire pour le moment",
    "emptyDescription": "Ajoutez un anniversaire pour le garder visible dans le calendrier et les rappels.",
    "newTitle": "Nouvel anniversaire",
    "editTitle": "Modifier l'anniversaire",
    "nameLabel": "Nom",
    "birthDateLabel": "Date de naissance",
    "photoLabel": "Photo de profil",
    "removePhoto": "Supprimer la photo",
    "notesLabel": "Notes",
    "notesPlaceholder": "Idées de cadeaux, gâteau préféré, notes familiales…",
    "calendarHint": "Chaque anniversaire est automatiquement ajouté au calendrier et au système de rappels.",
    "requiredFields": "Le nom et la date de naissance sont obligatoires.",
    "createdToast": "Anniversaire enregistré.",
    "updatedToast": "Anniversaire mis à jour.",
    "deletedToast": "Anniversaire supprimé.",
    "deleteConfirm": "Supprimer l'anniversaire de \"{{name}}\" ?",
    "ageNoteToday": "Fête ses {{age}} ans aujourd'hui.",
    "ageNoteTomorrow": "Fêtera ses {{age}} ans demain.",
    "ageNoteDays": "Fêtera ses {{age}} ans dans {{days}} jours."
  },
  "reminders": {
    "sectionTitle": "Rappel",
    "enableLabel": "Définir un rappel",
    "offsetLabel": "Rappeler",
    "offsetNone": "Aucun",
    "offsetAtTime": "À l'heure de début",
    "offset15min": "15 minutes avant",
    "offset1hour": "1 heure avant",
    "offset1day": "1 jour avant",
    "dateLabel": "Date",
    "timeLabel": "Heure",
    "toastTitle": "Rappel",
    "dismiss": "Ignorer",
    "pendingBadgeTitle": "{{count}} rappel en attente",
    "pendingBadgeTitlePlural": "{{count}} rappels en attente",
    "notificationPermission": "Notifications du navigateur",
    "notificationEnable": "Activer les notifications",
    "notificationEnabled": "Notifications actives",
    "notificationDenied": "Notifications bloquées",
    "notificationHint": "Recevez des notifications même lorsque l'application est ouverte.",
    "offset2days": "2 days before",
    "offset1week": "1 week before",
    "offset2weeks": "2 weeks before",
    "offsetCustom": "Custom...",
    "customAmountLabel": "Number",
    "customUnitLabel": "Unit",
    "customMinutes": "Minutes",
    "customHours": "Hours",
    "customDays": "Days",
    "customWeeks": "Weeks"
  },
  "onboarding": {
    "step1Title": "Welcome to Oikos",
    "step1Body": "Your personal family planner. Tasks, calendar, shopping and more – all in one place.",
    "step2Title": "Navigation & modules",
    "step2Body": "En bas, accédez directement au Tableau de bord et au Calendrier. Le bouton ··· ouvre d'autres modules comme Cuisine, Notes et Contacts.",
    "step3Title": "Démarrer rapidement",
    "step3Body": "Avec le bouton +, créez de nouvelles entrées n'importe où. Faites glisser les éléments de liste à gauche ou à droite pour des actions rapides.",
    "next": "Next",
    "done": "Get started",
    "skip": "Skip"
  },
  "offline": {
    "banner": "Offline – reconnecting…"
  },
  "emptyHint": {
    "recipes": "Créez des recettes et associez-les à votre planification des repas."
  },
  "documents": {
    "title": "Documents",
    "addButton": "Ajouter un document",
    "searchPlaceholder": "Rechercher des documents...",
    "gridView": "Vue en grille",
    "listView": "Vue en liste",
    "viewToggle": "Vue des documents",
    "allCategories": "Toutes les catégories",
    "emptyTitle": "Aucun document pour le moment",
    "emptyDescription": "Ajoutez des documents familiaux et contrôlez qui peut voir chaque fichier.",
    "newTitle": "Nouveau document",
    "editTitle": "Paramètres du document",
    "nameLabel": "Nom",
    "descriptionLabel": "Description",
    "categoryLabel": "Catégorie",
    "fileLabel": "Fichier",
    "fileHint": "PDF, images, texte et fichiers Office jusqu'à 5 Mo.",
    "visibilityLabel": "Visibilité",
    "statusLabel": "Statut",
    "allowedMembersLabel": "Membres autorisés",
    "uploadAction": "Téléverser",
    "downloadAction": "Télécharger",
    "editAction": "Paramètres",
    "archiveAction": "Archiver",
    "restoreAction": "Restaurer",
    "savedToast": "Document enregistré.",
    "uploadedToast": "Document téléversé.",
    "archivedToast": "Document archivé.",
    "restoredToast": "Document restauré.",
    "deletedToast": "Document supprimé.",
    "deleteConfirm": "Supprimer le document \"{{name}}\" ?",
    "fileRequired": "Sélectionnez un fichier à téléverser.",
    "fileTooLarge": "Le fichier ne peut pas dépasser 5 Mo.",
    "fileReadError": "Impossible de lire le fichier.",
    "statusActive": "Actif",
    "statusArchived": "Archivé",
    "visibility": {
      "family": "Toute la famille",
      "restricted": "Membres sélectionnés",
      "private": "Moi uniquement"
    },
    "category": {
      "medical": "Médical",
      "school": "École",
      "identity": "Identité",
      "insurance": "Assurance",
      "finance": "Finances",
      "home": "Maison",
      "vehicle": "Véhicule",
      "legal": "Juridique",
      "travel": "Voyage",
      "pets": "Animaux",
      "warranty": "Garantie",
      "taxes": "Impôts",
      "work": "Travail",
      "other": "Autre"
    },
    "dropzoneTitle": "Déposez le fichier ici ou cliquez pour choisir",
    "dropzoneHint": "Glissez un fichier dans cette zone ou utilisez le sélecteur.",
    "selectedFileLabel": "Sélectionné : {{name}}"
  },
  "shortcuts": {
    "goKitchen": "Cuisine"
  }
}