{ "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", "loansTitle": "Prêts", "loansSummary": "{{count}} actifs · {{amount}} restants", "newLoan": "Nouveau prêt", "createLoan": "Créer le prêt", "editLoan": "Modifier le prêt", "deleteLoan": "Supprimer le prêt", "deleteLoanConfirm": "Supprimer le prêt \"{{title}}\" ? Les paiements déjà enregistrés dans le budget seront aussi supprimés.", "loanRemainingAmount": "Restant", "loanRemainingInstallments": "Échéances restantes", "loanPaidAmount": "Payé", "loansEmpty": "Aucun prêt actif.", "loanInstallmentMeta": "{{paid}} sur {{total}} échéances payées", "loanRemainingOf": "sur {{total}}", "loanNextDue": "Prochaine : {{month}}", "loanPaidStatus": "Payé", "markLoanPaid": "Marquer payé", "loanBorrowerLabel": "Personne *", "loanBorrowerPlaceholder": "Ex. Lais", "loanTitleLabel": "Titre du prêt", "loanTitlePlaceholder": "Ex. Prêt personnel", "loanAmountLabel": "Montant total *", "loanInstallmentsLabel": "Échéances *", "loanStartMonthLabel": "Premier mois d’échéance *", "loanNotesLabel": "Notes", "loanBorrowerRequired": "La personne est obligatoire", "loanInstallmentsRequired": "Indiquez le nombre d’échéances", "loanStartMonthRequired": "Indiquez le premier mois d’échéance", "loanAddedToast": "Prêt ajouté", "loanSavedToast": "Prêt enregistré", "loanDeletedToast": "Prêt supprimé", "loanPaymentAddedToast": "Paiement enregistré", "typeLoan": "Prêt", "tabsLabel": "Sections du budget", "budgetTab": "Budget", "loansTab": "Prêts", "filteredTransactions": "Transactions filtrées", "clearLoanFilter": "Effacer le filtre", "loanFilterActive": "Prêt : {{title}}", "filterLoanTransactions": "Afficher les transactions de ce prêt", "loansEmptyDescription": "Créez un prêt avec le bouton + puis choisissez Prêt.", "newCategoryTitle": "Nouvelle catégorie", "newCategoryPlaceholder": "Nom de la catégorie", "newSubcategoryTitle": "Nouvelle sous-catégorie", "newSubcategoryPlaceholder": "Nom de la sous-catégorie" }, "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é.", "timeFormatLabel": "Format de l'heure", "timeFormatHours": "heures", "timeFormatSavedToast": "Format de l'heure 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 appleid.apple.com → Sécurité.", "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" } }