Files
HouseHub/includes/lang/fr.php
T
percoandClaude Sonnet 4.6 7272772c9f
Deploy HouseHub / deploy (push) Successful in 1s
Add PrintVault module: 3D print file manager integrated in HouseHub
- printvault.php: SPA with model grid, sidebar (categories + type filters), search
- modules/printvault/api.php: PHP proxy to PrintVault API (auth + CORS)
- modules/printvault/assets/printvault.js: model grid, upload modal, detail modal
- modules/printvault/assets/printvault.css: full light/dark theme
- Upload: drag&drop + form (name, category, tags)
- Detail modal: metadata, dimensions, GCode info, download, delete, "Voir en 3D" → PrintVault
- Integrated in header nav, home page, settings; translations fr/en/ca

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-15 10:14:03 +02:00

663 lines
35 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
// Dictionnaire Français
return [
// ==========================================
// TEST AUTO
// ==========================================
'test_running' => 'Tests en cours...',
'test_passed' => 'Test réussi',
'test_failed' => 'Test échoué',
'tests_title' => 'Laboratoire de Tests',
'tests_run_budget' => 'Tester le Budget',
'tests_run_all' => 'Lancer tous les tests',
'tests_copy_report' => 'Copier le rapport',
'tests_waiting' => 'En attente du lancement...',
'tests_report_copied' => 'Rapport copié dans le presse-papier !',
'tests_live_preview' => 'Aperçu en direct',
// ==========================================
// GLOBAL & NAVIGATION
// ==========================================
'menu_home' => 'Accueil',
'menu_calendar' => 'Calendrier',
'menu_budget' => 'Budget',
'menu_holidays' => 'Voyages',
'menu_gifts' => 'Cadeaux',
'menu_calendar_ios' => 'Calendrier iOS',
'nav_home' => 'Accueil',
'nav_calendar' => 'Calendrier',
'nav_budget' => 'Budget',
'nav_holidays' => 'Voyages',
'nav_gifts' => 'Cadeaux',
'aria_menu' => 'Menu mobile',
// Boutons et actions globales
'actions' => 'Actions',
'edit' => 'Modifier',
'delete' => 'Supprimer',
'save' => 'Enregistrer',
'cancel' => 'Annuler',
'btn_save' => 'Enregistrer',
'btn_cancel' => 'Annuler',
'btn_delete' => 'Supprimer',
'btn_close' => 'Fermer',
'btn_back' => '◀ Retour',
'btn_edit_bases' => '⚙️ Modifier les bases',
'btn_edit' => 'Modifier',
'error_occured' => 'Une erreur est survenue.',
// Mots génériques & Erreurs
'error' => 'Erreur.',
'confirm_delete' => 'Es-tu sûr de vouloir supprimer cet élément ?',
// Mois & Jours
'month_01' => 'Janvier', 'month_02' => 'Février', 'month_03' => 'Mars',
'month_04' => 'Avril', 'month_05' => 'Mai', 'month_06' => 'Juin',
'month_07' => 'Juillet', 'month_08' => 'Août', 'month_09' => 'Septembre',
'month_10' => 'Octobre', 'month_11' => 'Novembre','month_12' => 'Décembre',
'day_mon' => 'Lun', 'day_tue' => 'Mar', 'day_wed' => 'Mer',
'day_thu' => 'Jeu', 'day_fri' => 'Ven', 'day_sat' => 'Sam', 'day_sun' => 'Dim',
// ==========================================
// AUTHENTIFICATION / LOGIN
// ==========================================
'login_title' => 'Connexion - HouseHub',
'login_header' => 'Connexion',
'label_username' => 'Identifiant',
'label_password' => 'Mot de passe',
'placeholder_username' => 'ex: pacha',
'btn_login' => 'Connexion',
'btn_login_submit' => 'Se connecter',
'logout' => 'Déconnexion',
'btn_logout' => 'Déconnexion',
'error_missing_fields' => 'Champs obligatoires.',
'error_invalid_credentials' => 'Identifiants incorrects.',
'login_subtitle' => 'Veuillez vous identifier pour continuer',
// ==========================================
// ACCUEIL / INDEX
// ==========================================
'home_title' => 'HouseHub - Accueil',
'home_welcome' => 'Bienvenue sur HouseHub',
'home_subtitle' => "Centre de contrôle de l'organisation familiale.",
'home_logged_as' => 'Connecté en tant que',
'home_modules_title' => 'Modules',
'mod_calendar_name' => 'Calendrier Familial',
'mod_calendar_desc' => "Gérez les congés, les modes de garde et l'organisation hebdomadaire.",
'mod_holidays_name' => 'Vacances',
'mod_holidays_desc' => 'Planifiez vos prochaines escapades, destinations et idées de voyage.',
'mod_gifts_name' => 'Cadeaux',
'mod_gifts_desc' => 'Planifiez les cadeaux pour chaque enfant, pour Noël et les anniversaires.',
'mod_budget_name' => 'Budget',
'mod_budget_desc' => 'Suivi des dépenses fixes, revenus et équilibre du compte familial.',
'mod_garage_name' => 'Garage',
'mod_garage_desc' => 'Suivez l\'entretien de vos véhicules, les pièces utilisées et les coûts.',
'mod_memo_name' => 'Notes',
'mod_memo_desc' => 'Vos mémos, recettes, instructions et infos diverses avec Markdown et pièces jointes.',
'menu_memo' => 'Notes',
'mod_todo_name' => 'Todo',
'mod_todo_desc' => 'Gérez vos tâches, listes de courses et rappels en famille.',
'mod_calendar_ios_name' => 'Calendrier iOS',
'mod_calendar_ios_desc' => 'Synchronisez vos événements HouseHub avec votre calendrier iPhone (iCloud CalDAV).',
'menu_todo' => 'Todo',
'mod_groceries_name' => 'Courses',
'mod_groceries_desc' => 'Liste partagée : ajoutez des produits et cochez-les quand ils sont dans le caddie.',
'menu_groceries' => 'Courses',
'groceries_placeholder_add' => 'Ex : lait, pain, tomates…',
'groceries_btn_add' => 'Ajouter',
'groceries_btn_uncheck_all' => 'Tout remettre à prendre',
'groceries_btn_delete_picked' => 'Retirer du caddie (supprimer)',
'groceries_subtitle' => '{pending} à prendre · {cart} dans le caddie',
'groceries_added' => 'Ajouté',
'groceries_updated' => 'Mis à jour',
'groceries_deleted' => 'Supprimé',
'groceries_reset_next' => 'Liste prête pour la prochaine sortie',
'groceries_picked_removed' => 'Articles retirés',
'groceries_label_empty' => 'Libellé vide',
'groceries_confirm_del_title' => 'Supprimer ?',
'groceries_confirm_del_body' => 'Retirer ce produit de la liste ?',
'groceries_confirm_uncheck_title' => 'Tout remettre à prendre',
'groceries_confirm_uncheck_body' => 'Les coches « dans le caddie » seront effacées. Les produits restent dans la liste.',
'groceries_confirm_clear_title' => 'Retirer les produits du caddie',
'groceries_confirm_clear_body' => 'Tous les articles cochés seront supprimés de la liste.',
'groceries_empty' => 'Rien pour le moment. Ajoutez un produit ci-dessus.',
'groceries_aria_toggle' => 'Marquer comme dans le caddie ou à prendre',
'groceries_section_pending' => 'À prendre',
'groceries_section_cart' => 'Dans le caddie',
'groceries_prompt_edit' => 'Modifier le produit',
'groceries_btn_clear_list' => 'Vider la liste',
'groceries_confirm_empty_list_title' => 'Vider toute la liste ?',
'groceries_confirm_empty_list_body' => 'Tous les produits seront retirés. Ils resteront disponibles dans lhistorique pour les rajouter vite.',
'groceries_list_cleared' => 'Liste vidée',
'groceries_history_title' => 'Historique — un clic pour rajouter',
'groceries_history_empty' => 'Lhistorique se remplit au fur et à mesure des produits ajoutés (jusqu’à la limite définie dans les paramètres).',
'groceries_history_meta' => 'Jusqu’à {max} produits · ',
'groceries_settings_link' => 'Réglages dans Paramètres',
'groceries_settings_title' => 'Liste de courses — historique',
'groceries_settings_intro' => 'Nombre maximum de produits mémorisés dans lhistorique (sans doublon, insensible à la casse).',
'groceries_settings_history_max' => 'Taille de lhistorique',
'groceries_settings_history_hint' => 'Entre 1 et 50. Les entrées les plus anciennes sont supprimées quand la limite est dépassée.',
'groceries_settings_saved' => 'Préférences courses enregistrées.',
'groceries_settings_error' => 'Impossible denregistrer :',
'groceries_err_duplicate' => 'Ce produit est déjà dans la liste.',
'cta_open' => 'Ouvrir',
'cta_explore' => 'Explorer',
'cta_view_lists' => 'Déballer',
'cta_manage' => 'Gérer',
'cta_service' => 'Réviser',
'cta_jot' => 'Griffonner',
'cta_check' => 'Cocher',
'cta_cart' => 'Faire les courses',
'cta_sync' => 'Synchroniser',
'mod_printvault_name' => 'PrintVault',
'mod_printvault_desc' => 'Gérez vos fichiers d\'impression 3D — STL, 3MF, GCode avec viewer interactif.',
'menu_printvault' => 'PrintVault',
'cta_print' => 'Imprimer',
// ==========================================
// FAMILY CALENDAR
// ==========================================
'fc_page_title' => 'HouseHub - Calendrier',
'fc_main_header' => 'Calendrier Familial',
'fc_btn_correct_balances' => 'Corriger les soldes',
'fc_btn_school_holidays' => 'Vacances scolaires',
'fc_modal_holidays_title' => 'Vacances Scolaires (Zone C)',
'fc_modal_snap_title' => 'Ajuster un solde',
'fc_col_period' => 'Période',
'fc_col_from' => 'Du',
'fc_col_to' => 'Au',
'fc_label_person' => 'Personne',
'fc_label_leave_type' => 'Type de congé',
'fc_label_apply_date' => "Date d'application",
'fc_snap_date_hint' => "Choisissez de préférence le 1er jour d'un mois",
'fc_label_remaining_balance'=> 'Solde restant à cette date',
'fc_placeholder_balance' => 'ex: 12.5',
'fc_btn_save_snap' => 'Enregistrer le correctif',
'fc_view_1m' => '1 mois',
'fc_view_2m' => '2 mois',
'fc_view_3m' => '3 mois',
'fc_view_year' => 'Année',
'fc_weekly_planning' => 'Planning hebdomadaire',
'fc_col_month' => 'Mois',
'fc_col_week_short' => 'Sem.',
'fc_col_av' => 'Av.',
'fc_col_use' => 'Use',
'fc_legend_title' => 'Légende',
'fc_summary_title' => 'Récapitulatif',
'fc_summ_year' => 'Année',
'fc_summ_month' => 'Mois',
'fc_school_year' => 'Année scolaire',
'fc_unit_days' => 'jours',
'fc_menu_carole' => 'Congés Carole',
'fc_clear' => 'Effacer',
'fc_menu_kids_leaves' => 'Congés Enfants',
'fc_err_save_snap' => 'Erreur lors de la sauvegarde du correctif.',
'fc_err_fetch_gov' => 'Erreur lors de la connexion à l\'API gouvernementale.',
'fc_err_no_data_gov' => 'Aucune donnée trouvée sur l\'API du gouvernement pour cette année.',
'fc_err_action' => 'Erreur lors de l\'action : ',
'fc_today_short' => 'Auj.',
'fc_today_title' => "Aujourd'hui",
'leg_presence' => 'Présence Pep',
'leg_school_holidays' => 'Vacances Scolaires',
'leg_public_holiday' => 'Férié',
'leg_off_carole' => 'Off Carole',
'leg_extra_off' => 'Extra Off',
'leg_centre' => 'Centre',
'leg_avis' => 'Avis',
'leg_pep_sick' => 'Pep Malade',
'vac_toussaint' => 'Vacances de la Toussaint',
'vac_noel' => 'Vacances de Noël',
'vac_hiver' => "Vacances d'Hiver",
'vac_printemps' => 'Vacances de Printemps',
'vac_ascension' => 'Pont de l\'Ascension',
'vac_ete' => "Vacances d'Été",
'btn_off' => 'Off',
'btn_extra' => 'Extra',
'fc_alert_burn_days' => '⚠️ Risque de perte : %s j à poser avant le %s',
'fc_alert_burn_jra' => '⚠️ JRA : Seuls 2j sont reportables après février !',
// ==========================================
// HOLIDAYS (VOYAGES)
// ==========================================
'hdl_title_list' => 'HouseHub - Mes Vacances',
'hdl_title_detail' => 'HouseHub - Détail du voyage',
'hdl_main_title' => 'Mes Vacances',
'hdl_filter_all' => 'Tout afficher',
'hdl_filter_year' => 'Année',
'hdl_left_to_pay_label' => 'Reste à payer',
'hdl_btn_create' => 'Créer un voyage',
'hdl_no_active_trips' => 'Aucun voyage en cours pour cette période. Planifions quelque chose !',
'hdl_history_title' => 'Historique',
'hdl_dates_to_define' => 'Dates à définir',
'hdl_total_budget' => 'Budget Total',
'hdl_paid' => 'Payé',
'hdl_saved' => 'Financé',
'hdl_left_to_pay' => 'Reste à payer',
'hdl_status_booked' => 'Confirmé',
'hdl_status_planned' => 'Planifié',
'hdl_status_draft' => 'Brouillon',
'hdl_status_passed' => 'Terminé',
'hdl_status_archived' => 'Archivé',
'hdl_modal_title' => 'Planifier le voyage',
'hdl_label_name' => 'Nom du voyage',
'hdl_ph_name' => 'Ex: Octobre - Portugal',
'hdl_label_status' => 'Statut',
'hdl_label_period' => 'Période (Texte libre)',
'hdl_ph_period' => 'Ex: Octobre 2026',
'hdl_label_from' => 'Du',
'hdl_label_to' => 'Au',
'hdl_cat_transport' => 'Transport',
'hdl_add_transport' => 'Ajouter un transport',
'hdl_cat_accommodation' => 'Hébergement',
'hdl_add_accommodation' => 'Ajouter un hébergement',
'hdl_cat_activity' => 'Activité',
'hdl_add_activity' => 'Ajouter une activité',
'hdl_label_budget_food' => 'Budget Food & Bev (€)',
'hdl_label_budget_extras' => 'Budget Extras (€)',
'hdl_label_notes' => 'Notes',
'hdl_ph_notes' => 'Idées en vrac...',
'hdl_label_budget_food_extras' => 'Budget Food & Extras',
'hdl_map_itinerary' => 'Itinéraire',
'hdl_outbound' => 'Aller',
'hdl_return' => 'Retour',
'hdl_btn_add_step' => 'Ajouter une étape',
'hdl_step_details' => 'Détails du roadtrip',
'hdl_no_steps' => 'Aucune étape définie. Commencez par en ajouter une !',
'hdl_general_costs' => 'Frais généraux & Budgets',
'hdl_food_bev' => 'Food & Bev',
'hdl_extras' => 'Extras',
'hdl_view_planning' => 'Voir le planning',
'hdl_passing_point' => 'Point de passage (sans frais)',
'hdl_search_location' => 'Chercher un lieu',
'hdl_ph_search' => 'Ville, hôtel, adresse...',
'hdl_label_step_name' => "Nom de l'étape",
'hdl_label_arrival' => 'Arrivée',
'hdl_label_departure' => 'Départ',
'hdl_planned_expenses' => 'Dépenses prévues pour cette étape',
'hdl_btn_add_expense' => '+ Ajouter une dépense',
'hdl_save_fav' => 'Enregistrer dans mes favoris',
'hdl_planning_title' => 'Planning de l\'étape',
'hdl_to_pay' => 'À payer',
'hdl_js_search_loading' => 'Recherche en cours...',
'hdl_js_no_result' => 'Aucun résultat trouvé.',
'hdl_js_network_error' => 'Erreur de connexion au service de carte.',
'hdl_js_confirm_del_trip' => 'Es-tu sûr de vouloir supprimer ce voyage entier ?',
'hdl_js_confirm_del_step' => 'Supprimer cette étape ?',
'hdl_js_step_label' => 'Étape',
'hdl_js_ph_expense_name' => 'Ex: Hôtel, Péage...',
'hdl_quick_edit_title' => 'Modification rapide',
'hdl_js_edit_step' => 'Modifier l\'étape',
'hdl_js_missing_dates_title'=> 'Dates manquantes',
'hdl_js_missing_dates_msg' => 'Veuillez définir une date d\'arrivée et de départ pour organiser le planning.',
'hdl_to_place' => 'À placer',
'hdl_from' => 'Du',
'hdl_to' => 'Au',
'hdl_btn_add_step' => 'Ajouter une étape',
'hdl_quick_edit_title' => 'Modification rapide',
'hdl_paid' => 'Payé',
'weather_forecast' => 'Prévisions météo',
'weather_not_available' => 'Météo indisponible',
'temp_max' => 'Temp. Max',
'weather_loading' => 'Chargement météo...',
'weather_error' => 'Météo indisponible',
'weather_sunny' => 'Ensoleillé',
'weather_cloudy' => 'Nuageux',
'weather_rainy' => 'Pluvieux',
'weather_snowy' => 'Neigeux',
'weather_historical' => 'Basé sur l\'historique (estimation)',
'err_invalid_holiday_id' => 'ID de voyage invalide.',
'hdl_default_exp_name' => 'Dépense',
'hdl_select_beneficiary' => '-- Sélectionner --',
// Anciennes clés Holidays non préfixées (conservées pour compatibilité si utilisées)
'outbound_trip' => 'Aller',
'return_trip' => 'Retour',
'period' => 'Période',
'budget_food' => 'Budget Food & Extras',
'total_cost' => 'Coût Total Estimé',
'paid' => 'Payé',
'provisioned' => 'Provisionné',
'left_to_pay' => 'Reste à payer',
'map_itinerary' => '🗺️ Itinéraire',
'place_step' => '📍 Placer une étape',
'step_details' => '📝 Détail des étapes',
'no_steps' => 'Aucune étape planifiée.',
'travel_notes' => '📝 Notes du voyage',
'to_be_defined' => 'À définir',
'funded' => 'Financé (Provision)',
'view_planning' => 'Voir le planning',
'to_pay' => 'À payer',
'from_date' => 'Du',
'to_date' => 'au',
'passing_point' => 'Point de passage (Aucune dépense)',
'search_location' => 'Rechercher un lieu géographique',
'search_placeholder' => 'Ex: Paris, Ibis Barcelone...',
'step_name' => 'Nom de l\'étape',
'arrival_optional' => 'Arrivée le (Optionnel)',
'departure_optional' => 'Départ le (Optionnel)',
'planned_expenses' => 'Dépenses prévues',
'add_expense' => '+ Ajouter une dépense',
'save_favorite' => 'Sauvegarder dans mes favoris',
'planning_title' => 'Planning',
'modal_plan_trip' => 'Planifier le voyage',
'modal_quick_edit' => 'Modification rapide',
'err_modal_missing' => 'Erreur : La modale holidayModal est introuvable.',
'placeholder_title' => 'Intitulé',
'placeholder_price' => 'Prix (€)',
'already_paid' => 'Déjà payé ?',
'remove_line' => 'Retirer cette ligne',
'confirm_delete_trip' => 'Voulez-vous vraiment supprimer définitivement ce voyage ? Cette action est irréversible.',
'step_number' => 'Étape',
'place_new_step' => '📍 Placer une nouvelle étape',
'edit_step' => '✏️ Modifier l\'étape',
'search_in_progress' => 'Recherche en cours... ⏳',
'no_result_found' => 'Aucun résultat trouvé.',
'network_error' => 'Erreur réseau.',
'placeholder_label' => 'Libellé',
'placeholder_notes_link' => '🔗 Lien de réservation ou notes (Optionnel)...',
'confirm_delete_step' => 'Supprimer cette étape et toutes les dépenses associées ?',
'planning_of' => '📅 Planning : ',
'missing_dates_title' => '⚠️ Dates manquantes',
'missing_dates_msg' => 'Veuillez modifier cette étape (✏️) et renseigner sa <strong>Date d\'arrivée et de départ</strong>.',
'to_place' => '📥 À Placer',
// ==========================================
// BUDGET (GLOBAL & CATEGORIES)
// ==========================================
'budget_page_title' => 'HouseHub - Budget',
'budget_main_header' => 'Gestion du Budget',
'budget_tab_tracking' => 'Suivi Mensuel',
'budget_tab_prev' => 'Budget 2026',
'budget_tab_savings' => 'Épargne',
'budget_tab_recap' => 'Récapitulatif',
'budget_err_file_not_found' => 'Oups ! Fichier introuvable.',
'budget_err_file_detail' => 'Vérifiez que le fichier views/%s.php existe bien.',
'budget_err_not_authorized' => 'Page non autorisée.',
'cat_income' => 'Revenus',
'cat_fmcg' => 'Courses (FMCG)',
'cat_fuel' => 'Essence',
'cat_school' => 'École / Garde',
'cat_fixed' => 'Charges Fixes',
'cat_others' => 'Autres / Imprévus',
'cat_savings' => 'Épargne',
// --- BUDGET : SUIVI ---
'bud_rem_school' => 'École (Reste estimé)',
'bud_rem_fmcg' => 'Courses (Reste estimé)',
'bud_rem_fuel' => 'Essence (Reste estimé)',
'bud_closed_archived' => 'Ce mois est clôturé et archivé.',
'bud_budget_of' => 'Budget :',
'bud_confirm_close' => 'Clôturer ce mois ? Cela figera les soldes actuels et basculera le suivi par défaut sur le mois prochain.',
'bud_close_btn' => 'Clôturer',
'bud_confirm_reopen' => 'Rouvrir ce mois ? Ses soldes seront recalculés en direct.',
'bud_reopen_btn' => 'Rouvrir',
'bud_active_month_btn' => 'Mois Actif',
'bud_bank_balance' => 'Solde bancaire',
'bud_frozen' => 'Figé',
'bud_current' => 'Actuel',
'bud_update_btn' => 'MàJ',
'bud_theoretical_balance' => 'Solde théorique fin de mois',
'bud_upcoming_charges' => 'Charges à venir',
'bud_all_paid' => 'Tout est payé !',
'bud_capacity_tooltip' => 'Calcul : Report Mois Précédent (%s€) + Salaires (%s€) + Autres rentrées (%s€)',
'bud_max_capacity' => 'Capacité Max',
'bud_actual' => 'Actuel',
'bud_theoretical' => 'Théorique',
'bud_import_csv' => 'Importer CSV',
'bud_csv_file' => 'Fichier CSV (Point-virgule)',
'bud_preview' => 'Prévisualiser',
'bud_validate_import' => 'Valider l\'importation',
'bud_assign_month' => 'Imputer au mois',
'bud_op_date' => 'Date Opération',
'bud_label' => 'Libellé',
'bud_amount' => 'Montant',
'bud_category' => 'Catégorie',
'bud_ignore' => 'Ignorer',
'bud_to_define' => 'À définir',
'bud_is_charge' => 'Charge ?',
'bud_is_income' => 'Revenu ?',
'btn_import' => 'Importer',
'bud_no_lines' => 'Aucune ligne.',
'bud_confirm_delete' => 'Supprimer cette ligne ?',
'bud_new_transaction' => 'Nouvelle transaction',
'bud_assign_to_month' => 'Imputer au mois de gestion',
'bud_real_date' => 'Date réelle de l\'opération',
'bud_type' => 'Type',
'bud_type_expense' => 'Dépense',
'bud_type_income' => 'Revenu / Remboursement',
'bud_beneficiary' => 'Bénéficiaire',
'bud_fixed_charge' => 'Charge Fixe',
'bud_expected_income' => 'Revenu Attendu',
'bud_amount_eur' => 'Montant (€)',
'bud_update_balance' => 'MàJ Solde Bancaire',
'bud_balance_eur' => 'Solde (€)',
'bud_add_title' => 'Ajouter',
'bud_edit_title' => 'Modifier la transaction',
'bud_to_define_js' => 'à définir',
'bud_bar_actual' => "Actuel",
'bud_bar_theoretical' => "Théorique",
'bud_bar_max_cap' => "Capacité Max",
'bud_import_csv' => "Importer CSV",
'bud_csv_file' => "Sélectionnez le fichier de votre banque (.csv)",
'bud_preview' => "Prévisualiser",
'bud_validate_import' => "Veuillez vérifier et catégoriser les lignes avant validation.",
'bud_assign_month' => "Mois de gestion",
'bud_op_date' => "Date",
'bud_amount' => "Montant",
'bud_ignore' => "Ignorer (Crédit)",
'bud_to_define' => "À définir",
'bud_is_charge' => "Est une charge fixe...",
'bud_is_income' => "Est un revenu...",
// --- BUDGET : RECAP ---
'bud_recap_monthly_title' => 'Récapitulatif Mensuel',
'bud_recap_btn_add' => 'Ajouter un frais / revenu',
'bud_planned_amount' => 'Montant Prévu',
'bud_day' => 'Jour',
'bud_month_state' => 'État du mois',
'bud_est_short' => 'Est.',
'bud_reg_planned_in' => 'Régul. prévue en %s',
'bud_bonus' => 'Bonus',
'bud_overrun' => 'Dépassement',
'bud_remaining' => 'Reste',
'bud_exact_amount' => 'Montant exact',
'bud_per_month_short' => 'Soit',
'bud_month_short' => 'mois',
'bud_freq_mensuel' => 'Mensuel',
'bud_freq_annuel' => 'Annuel',
'bud_state_validated' => 'Validé',
'bud_state_partial' => 'Partiel',
'bud_state_waiting' => 'En attente',
'bud_total_income_smoothed' => 'Total Revenus (Lissés)',
'bud_total_expenses_smoothed'=> 'Total Dépenses (Lissées)',
'bud_theoretical_balance_recap'=> 'Équilibre théorique',
'bud_recap_footer_note' => 'L\'état de paiement se met à jour automatiquement en fonction des opérations importées dans l\'onglet "Suivi Mensuel".',
'bud_recap_modal_add' => 'Ajouter un élément',
'bud_recap_modal_edit' => 'Modifier',
'bud_label_name' => 'Nom',
'bud_ph_item_name' => 'Ex: Loyer, Salaire...',
'bud_label_keywords' => 'Mots-clés (Détection Auto)',
'bud_ph_keywords' => 'Ex: NETFLIX, PRIME VIDEO (séparés par virgule)',
'bud_help_keywords' => 'Si une dépense du mois contient ce mot, la ligne passera en "Validé".',
'bud_label_day' => 'Jour (1-31)',
'bud_cat_income' => 'Épargne',
'bud_cat_expense' => 'Dépense (Frais)',
'bud_label_frequency' => 'Fréquence',
'bud_label_amount_type' => 'Type de montant',
'bud_type_fixed' => 'Fixe (Facture)',
'bud_type_variable' => 'Variable (Estimation)',
'bud_label_regularization' => 'Régularisation',
'bud_reg_none' => 'Aucune',
'bud_recap_confirm_delete' => 'Voulez-vous vraiment supprimer cet élément ?',
'bud_err_delete' => 'Erreur lors de la suppression.',
// --- BUDGET : EPARGNE ---
'bud_sav_add_month' => 'Saisir un mois',
'bud_sav_add_one_month' => '+1 Mois',
'bud_sav_no_data' => 'Aucune donnée pour %s.',
'bud_sav_post_month' => 'Poste / Mois',
'bud_sav_from_date' => 'Dès le %s',
'bud_sav_edit_modal' => 'Modifier avec Modale',
'bud_sav_delete_month' => 'Supprimer tout le mois',
'bud_sav_total_bank' => 'Total Banque',
'bud_sav_extra' => 'Extra',
'bud_sav_modal_title_add' => 'Saisir un mois',
'bud_sav_modal_title_edit' => 'Modifier :',
'bud_sav_month_concerned' => 'Mois concerné',
'bud_sav_total_bank_eur' => 'Total en Banque (€)',
'bud_sav_ventilation' => 'Ventilation',
'bud_sav_adj_help' => 'Utilisez l\'ajustement (+/-) pour recalculer automatiquement.',
'bud_sav_add_line' => 'Ligne',
'bud_sav_current' => 'Actuel',
'bud_sav_adjust' => 'Ajust (+/-)',
'bud_sav_new' => 'Nouveau',
'bud_sav_sum_mode_title' => 'Activer l\'addition rapide',
'bud_sav_selection' => 'Sélection :',
'bud_sav_ph_name' => 'Nom (ex: Vacances)',
'bud_sav_saving' => 'Enregistrement...',
'bud_err_tech' => 'Une erreur technique est survenue.',
'bud_sav_confirm_delete_month' => 'Supprimer TOUT le mois de %m pour %o ?',
'bud_sav_prompt_duplicate' => "Voulez-vous copier les données de %s vers %t1 ?\n\nSaisissez le nouveau TOTAL en banque (€) pour %t2 :",
'bud_err_server' => 'Erreur serveur : ',
'bud_err_network_dup' => 'Erreur réseau lors de la duplication.',
// --- BUDGET : PREVISIONNEL ---
'bud_prev_incomes' => 'Revenus',
'bud_prev_person' => 'Personne',
'bud_prev_salary' => 'Salaire',
'bud_prev_monthly_payment' => 'Mensualité',
'bud_prev_joint_account' => 'Cpt Commun',
'bud_prev_func_expenses' => 'Frais Func.',
'bud_prev_perso_savings' => 'Eco Perso',
'bud_prev_family_savings' => 'Eco Family',
'bud_prev_available' => 'Dispo',
'bud_prev_perso_remaining' => 'Restant Perso',
'bud_prev_budget_alloc' => 'Répartition Budgétaire',
'bud_prev_today' => 'Auj.',
'bud_prev_new_line' => 'Nouvelle Ligne',
'bud_prev_remaining' => 'Restant',
'bud_prev_confirm_del_line' => 'Supprimer cette ligne et tout son historique ?',
'bud_prev_notes_for' => 'Notes pour',
'bud_prev_saved' => 'Enregistré',
'bud_prev_notes_ph' => 'Écrivez vos remarques, rappels ou commentaires pour ce mois ici...',
'bud_prev_save_note' => 'Enregistrer la note',
'bud_prev_transfers_to_make' => 'Virements à effectuer',
'bud_prev_destination' => 'Destination',
'bud_prev_done' => 'FAIT',
'bud_prev_validate' => 'Valider',
'bud_prev_grand_total' => 'GRAND TOTAL',
'bud_prev_new_line_title' => 'Nouvelle Ligne de Budget',
'bud_prev_edit_line_title' => 'Modifier la ligne',
'bud_prev_label_target' => 'Cible (Destination)',
'bud_prev_choose' => 'Choisir',
'bud_prev_link_holiday' => 'Lier à un voyage (Optionnel)',
'bud_prev_no_link' => 'Ne pas associer',
'bud_prev_err_no_history' => 'Impossible : pas d\'historique disponible pour copier.',
'bud_prev_confirm_copy' => "Voulez-vous copier les données de %s vers %t ?\n\n⚠️ Cela écrasera toutes les valeurs déjà présentes pour %t.",
'bud_prev_confirm_transfers' => "Confirmer que %p a bien effectué tous ses virements pour %m ?\n\nCela mettra à jour l'Épargne automatiquement.",
'bud_sav_modal_title_add' => 'Saisir un mois',
'bud_sav_ph_name' => 'Nom (ex: Vacances)',
'bud_prev_label_name' => 'Nom',
// ==========================================
// CADEAUX (GIFTS)
// ==========================================
'gift_page_title' => 'HouseHub - Liste de cadeaux',
'gift_occ_tio' => 'Tió',
'gift_occ_noel' => 'Noël',
'gift_occ_rois' => 'Rois mages',
'gift_occ_anniv' => 'Anniversaire',
'gift_occ_sant' => 'Saint',
'gift_main_title' => 'Liste de cadeaux %s',
'gift_aria_change_view' => 'Changer la vue',
'gift_view_nadal' => 'Noël',
'gift_view_anniv' => 'Anniversaires',
'gift_view_by_party' => 'Vue par fête',
'gift_no_gifts' => 'Aucun cadeau enregistré pour %s dans cette vue.',
'gift_add_gift' => 'Ajouter un cadeau',
'gift_paid_by' => 'payé par %s',
'gift_summary_title' => 'Résumé du budget',
'gift_col_adult' => 'Adulte',
'gift_col_child' => 'Enfant',
'gift_col_party' => 'Fête',
'gift_debtor' => 'Débiteur',
'gift_creditor' => 'Créancier',
'gift_liquidations' => 'Tricount',
'gift_no_debt' => 'Aucune dette en cours.',
'gift_owes' => 'doit',
'gift_to' => 'à',
'gift_detailed_list' => 'Liste détaillée des cadeaux',
'gift_col_gift' => 'Cadeau',
'gift_col_link' => 'Lien',
'gift_modal_title_add' => 'Ajouter un cadeau pour %s',
'gift_modal_title_edit' => 'Modifier le cadeau',
'gift_modal_payer' => 'Payé par',
'gift_modal_gift_name' => 'Nom du cadeau',
'gift_modal_ph_name' => 'ex: Lego Star Wars',
'gift_modal_price' => 'Prix (€)',
'gift_modal_link' => 'Lien (optionnel)',
'gift_confirm_delete' => 'Voulez-vous vraiment supprimer ce cadeau ?',
'gift_filter_all_children' => 'Tous les enfants',
'gift_filter_all_adults' => 'Tous les adultes',
'gift_empty_state_no_gifts' => 'Aucun cadeau pour le moment.',
'gift_empty_state_no_filter' => 'Aucun cadeau ne correspond au filtre.',
'gift_view_matrix' => 'Voir la matrice détaillée',
// ==========================================
// GARAGE MANAGER
// ==========================================
'menu_garage' => 'Garage',
'garage_page_title' => 'HouseHub - Garage',
'garage_stat_vehicles' => 'Véhicules',
'garage_stat_maintenances' => 'Entretiens',
'garage_stat_parts' => 'Pièces',
'garage_stat_cost' => 'Coût total',
'garage_my_vehicles' => 'Mes véhicules',
'garage_reminders' => 'Rappels & prochains entretiens',
'garage_vehicles_title' => 'Mes véhicules',
'garage_all_parts' => 'Toutes les pièces',
'garage_parts_count' => 'pièces',
'garage_maintenances' => 'Entretiens',
'garage_parts' => 'Pièces',
'garage_add' => 'Ajouter',
'garage_add_vehicle' => 'Ajouter un véhicule',
'garage_add_maintenance' => 'Ajouter un entretien',
'garage_add_part' => 'Ajouter une pièce',
'garage_vehicle_name' => 'Nom du véhicule',
'garage_brand' => 'Marque',
'garage_model' => 'Modèle',
'garage_year' => 'Année',
'garage_plate' => 'Immatriculation',
'garage_fuel' => 'Carburant',
'garage_km' => 'Kilométrage actuel',
'garage_color' => 'Couleur',
'garage_purchase_date' => 'Date d\'achat',
'garage_purchase_price' => 'Prix d\'achat (€)',
'garage_photo' => 'Photo',
'garage_notes' => 'Notes',
'garage_maint_type' => 'Type d\'entretien',
'garage_date' => 'Date',
'garage_km_at' => 'Kilométrage au moment',
'garage_labor_cost' => 'Coût main d\'œuvre (€)',
'garage_description' => 'Description',
'garage_mechanic' => 'Mécanicien',
'garage_garage' => 'Garage / Atelier',
'garage_next_reminder' => 'Prochain entretien (rappel)',
'garage_next_date' => 'Date prévue',
'garage_next_km' => 'Kilométrage prévu',
'garage_part_name' => 'Nom de la pièce',
'garage_category' => 'Catégorie',
'garage_reference' => 'Référence',
'garage_unit_price' => 'Prix unitaire (€)',
'garage_quantity' => 'Quantité',
'garage_unit' => 'Unité',
'garage_supplier' => 'Fournisseur',
'garage_change_photo' => 'Changer la photo',
'garage_new_photo' => 'Nouvelle photo',
'garage_update_photo' => 'Mettre à jour',
];