diff --git a/includes/lang/ca.php b/includes/lang/ca.php
index 9e00a01..39059fa 100644
--- a/includes/lang/ca.php
+++ b/includes/lang/ca.php
@@ -1,28 +1,23 @@
'Proves en curs...',
- 'test_passed' => 'Prova superada',
- 'test_failed' => 'Prova fallida',
- 'tests_title' => 'Laboratori de Proves',
- 'tests_run_budget' => 'Provar el Pressupost',
- 'tests_run_all' => 'Iniciar totes les proves',
- 'tests_copy_report' => 'Copiar l\'informe',
- 'tests_waiting' => 'Esperant l\'inici...',
- 'tests_report_copied' => 'Informe copiat al porta-retalls!',
- 'tests_live_preview' => 'Previsualització en viu',
- // ==========================================
- // GLOBAL & NAVIGATION
+ // 1. GLOBAL, NAVIGATION & ACTIONS
// ==========================================
'menu_home' => 'Inici',
'menu_calendar' => 'Calendari',
'menu_budget' => 'Pressupost',
'menu_holidays' => 'Viatges',
'menu_gifts' => 'Regals',
+ 'menu_garage' => 'Garatge',
+ 'menu_memo' => 'Notes',
+ 'menu_todo' => 'Todo',
+ 'menu_liste' => 'Llistes',
+ 'menu_groceries' => 'Compra',
'menu_calendar_ios' => 'Calendari iOS',
+ 'menu_printvault' => 'PrintVault',
+ 'menu_planka' => 'Planka',
+
'nav_home' => 'Inici',
'nav_calendar' => 'Calendari',
'nav_budget' => 'Pressupost',
@@ -30,7 +25,6 @@ return [
'nav_gifts' => 'Regals',
'aria_menu' => 'Menú mòbil',
- // Boutons et actions globales
'actions' => 'Accions',
'edit' => 'Modificar',
'delete' => 'Suprimir',
@@ -40,28 +34,33 @@ return [
'btn_cancel' => 'Cancel·lar',
'btn_delete' => 'Eliminar',
'btn_close' => 'Tancar',
+ 'btn_add' => 'Afegir',
'btn_back' => '◀ Tornar',
'btn_edit_bases' => '⚙️ Modificar les bases',
'btn_edit' => 'Modificar',
- 'error_occured' => 'S\'ha produït un error.',
- // Mots génériques & Erreurs
'error' => 'Error.',
+ 'error_occured' => 'S\'ha produït un error.',
+ 'error_network' => 'Error de xarxa',
+ 'error_generic' => 'S\'ha produït un error',
'confirm_delete' => 'Estàs segur que vols suprimir aquest element?',
+ 'loading' => 'Carregant...',
+ 'date' => 'Data',
+ 'settings' => 'Configuració',
- // Mois & Jours
- 'month_01' => 'Gener', 'month_02' => 'Febrer', 'month_03' => 'Març',
- 'month_04' => 'Abril', 'month_05' => 'Maig', 'month_06' => 'Juny',
- 'month_07' => 'Juliol','month_08' => 'Agost', 'month_09' => 'Setembre',
- 'month_10' => 'Octubre','month_11' => 'Novembre','month_12' => 'Desembre',
- 'day_mon' => 'Dl', 'day_tue' => 'Dt', 'day_wed' => 'Dc',
- 'day_thu' => 'Dj', 'day_fri' => 'Dv', 'day_sat' => 'Ds', 'day_sun' => 'Dg',
+ // Mesos & Dies
+ 'month_01' => 'Gener', 'month_02' => 'Febrer', 'month_03' => 'Març', 'month_04' => 'Abril', 'month_05' => 'Maig', 'month_06' => 'Juny',
+ 'month_07' => 'Juliol','month_08' => 'Agost', 'month_09' => 'Setembre', 'month_10' => 'Octubre','month_11' => 'Novembre','month_12' => 'Desembre',
+ 'month_jan' => 'Gener', 'month_feb' => 'Febrer', 'month_mar' => 'Març', 'month_apr' => 'Abril', 'month_may' => 'Maig', 'month_jun' => 'Juny',
+ 'month_jul' => 'Juliol', 'month_aug' => 'Agost', 'month_sep' => 'Setembre', 'month_oct' => 'Octubre', 'month_nov' => 'Novembre', 'month_dec' => 'Desembre',
+ 'day_mon' => 'Dl', 'day_tue' => 'Dt', 'day_wed' => 'Dc', 'day_thu' => 'Dj', 'day_fri' => 'Dv', 'day_sat' => 'Ds', 'day_sun' => 'Dg',
// ==========================================
- // AUTHENTIFICATION / LOGIN
+ // 2. AUTHENTICATION / LOGIN
// ==========================================
'login_title' => 'Connexió - HouseHub',
'login_header' => 'Connexió',
+ 'login_subtitle' => 'Si us plau, identifiqueu-vos per continuar',
'label_username' => "Nom d'usuari",
'label_password' => 'Contrasenya',
'placeholder_username' => 'ex: pacha',
@@ -69,19 +68,19 @@ return [
'btn_login_submit' => 'Connectar-se',
'logout' => 'Tancar sessió',
'btn_logout' => 'Tancar sessió',
+ 'login_remember_me' => "Recorda'm",
'error_missing_fields' => 'Camps obligatoris.',
'error_invalid_credentials' => 'Identificadors incorrectes.',
- 'login_subtitle' => 'Si us plau, identifiqueu-vos per continuar',
- 'login_remember_me' => "Recorda'm",
// ==========================================
- // ACCUEIL / INDEX
+ // 3. HOME & DASHBOARD
// ==========================================
'home_title' => 'HouseHub - Inici',
'home_welcome' => 'Benvinguts a HouseHub',
'home_subtitle' => "Centre de control de l'organització familiar.",
'home_logged_as' => 'Connectat com a',
'home_modules_title' => 'Mòduls',
+
'mod_calendar_name' => 'Calendari Familiar',
'mod_calendar_desc' => "Gestioneu les vacances, les modalitats de cura i l'organització setmanal.",
'mod_holidays_name' => 'Vacances',
@@ -94,52 +93,19 @@ return [
'mod_garage_desc' => 'Seguiu el manteniment dels vostres vehicles, les peces i els costos.',
'mod_memo_name' => 'Notes',
'mod_memo_desc' => 'Els vostres memos, receptes, instruccions i informació diversa amb Markdown.',
- 'menu_memo' => 'Notes',
'mod_todo_name' => 'Todo',
'mod_todo_desc' => 'Gestioneu les vostres tasques, llistes de la compra i recordatoris familiars.',
- 'mod_calendar_ios_name' => 'Calendari iOS',
- 'mod_calendar_ios_desc' => 'Sincronitzeu els esdeveniments de HouseHub amb el calendari de l\'iPhone (iCloud CalDAV).',
- 'menu_todo' => 'Todo',
+ 'mod_liste_name' => 'Llistes',
+ 'mod_liste_desc' => 'Llistes compartides — compres, bricolatge, farmàcia… Tantes llistes com convingui.',
'mod_groceries_name' => 'Compra',
'mod_groceries_desc' => 'Llista compartida: afegiu productes i marqueu-los quan siguin al carretó.',
- 'menu_groceries' => 'Compra',
- 'groceries_placeholder_add' => 'Ex : llet, pa, tomàquets…',
- 'groceries_btn_add' => 'Afegir',
- 'groceries_btn_uncheck_all' => 'Tornar a marcar com a pendents',
- 'groceries_btn_delete_picked' => 'Eliminar els marcats',
- 'groceries_subtitle' => '{pending} pendents · {cart} al carretó',
- 'groceries_added' => 'Afegit',
- 'groceries_updated' => 'Actualitzat',
- 'groceries_deleted' => 'Eliminat',
- 'groceries_reset_next' => 'Llista llesta per a la propera compra',
- 'groceries_picked_removed' => 'Articles eliminats',
- 'groceries_label_empty' => 'El text no pot ser buit',
- 'groceries_confirm_del_title' => 'Eliminar?',
- 'groceries_confirm_del_body' => 'Voleu treure aquest producte de la llista?',
- 'groceries_confirm_uncheck_title' => 'Tornar a marcar com a pendents',
- 'groceries_confirm_uncheck_body' => 'Es netejaran les marques del carretó. Els productes es mantindran a la llista.',
- 'groceries_confirm_clear_title' => 'Eliminar els marcats',
- 'groceries_confirm_clear_body' => 'Tots els articles marcats se suprimiran de la llista.',
- 'groceries_empty' => 'Encara no hi ha res. Afegiu un producte a dalt.',
- 'groceries_aria_toggle' => 'Marcar com al carretó o pendent',
- 'groceries_section_pending' => 'Pendents',
- 'groceries_section_cart' => 'Al carretó',
- 'groceries_prompt_edit' => 'Editar el producte',
- 'groceries_btn_clear_list' => 'Buidar la llista',
- 'groceries_confirm_empty_list_title' => 'Buidar tota la llista?',
- 'groceries_confirm_empty_list_body' => 'Es trauran tots els productes. Romandran a l’historial per tornar-los a afegir ràpidament.',
- 'groceries_list_cleared' => 'Llista buidada',
- 'groceries_history_title' => 'Historial — un clic per afegir',
- 'groceries_history_empty' => 'L’historial es va omplint amb els productes que afegiu (fins al límit definit als paràmetres).',
- 'groceries_history_meta' => 'Fins a {max} productes · ',
- 'groceries_settings_link' => 'Paràmetres',
- 'groceries_settings_title' => 'Compra — historial',
- 'groceries_settings_intro' => 'Nombre màxim de productes recordats a l’historial (sense duplicats, sense distingir majúscules).',
- 'groceries_settings_history_max' => 'Mida de l’historial',
- 'groceries_settings_history_hint' => 'Entre 1 i 50. Les entrades més antigues se suprimeixen quan es supera el límit.',
- 'groceries_settings_saved' => 'Preferències de la compra desades.',
- 'groceries_settings_error' => 'No s’ha pogut desar:',
- 'groceries_err_duplicate' => 'Aquest producte ja és a la llista.',
+ 'mod_calendar_ios_name' => 'Calendari iOS',
+ 'mod_calendar_ios_desc' => 'Sincronitzeu els esdeveniments de HouseHub amb el calendari de l\'iPhone (iCloud CalDAV).',
+ 'mod_printvault_name'=> 'PrintVault',
+ 'mod_printvault_desc'=> 'Gestioneu els vostres fitxers d\'impressió 3D — STL, 3MF, GCode.',
+ 'mod_planka_name' => 'Planka',
+ 'mod_planka_desc' => 'Gestioneu els vostres projectes en mode Kanban amb Planka.',
+
'cta_open' => 'Obrir',
'cta_explore' => 'Explorar',
'cta_view_lists' => 'Desembolicar',
@@ -149,133 +115,123 @@ return [
'cta_check' => 'Marcar',
'cta_cart' => 'Anar a comprar',
'cta_sync' => 'Sincronitzar',
- 'mod_printvault_name' => 'PrintVault',
- 'mod_printvault_desc' => 'Gestioneu els vostres fitxers d\'impressió 3D — STL, 3MF, GCode.',
- 'menu_printvault' => 'PrintVault',
'cta_print' => 'Imprimir',
- 'mod_planka_name' => 'Planka',
- 'mod_planka_desc' => 'Gestioneu els vostres projectes en mode Kanban amb Planka.',
- 'menu_planka' => 'Planka',
-
- // --- SETTINGS : ENFANTS ---
- 'set_kids_title' => 'Nens de la llar',
- 'set_kids_desc' => 'Gestioneu la llista de nens per associar-los a l\'estalvi, als regals, etc.',
- 'set_add_kid_placeholder' => 'Nom del nen',
- 'set_btn_add_kid' => 'Afegir',
- 'set_err_kid_name' => 'El nom és obligatori.',
- 'set_confirm_del_kid' => 'Vols eliminar aquest nen? (El seu historial financer es conservarà als arxius).',
- 'set_no_kids' => 'Cap nen configurat per a aquesta llar.',
- 'set_family_config' => 'Configuració de la llar',
- 'set_global_params' => 'Paràmetres globals',
- 'set_care_modes' => 'Modalitats de cura habituals',
- 'set_add_care_mode' => 'Afegir una modalitat',
- 'btn_save' => 'Desar',
- 'settings_profile_added' => 'Perfil de %s afegit amb èxit.',
- 'settings_err_name_required' => 'El nom és obligatori.',
- 'settings_attached_profiles_title' => 'Perfils adjunts',
- 'settings_attached_profiles_desc' => 'Membres de la llar (Nens, mainaderes, familiars) sense accés directe.',
- 'settings_no_attached_profiles' => 'Cap perfil adjunt.',
- 'label_firstname' => 'Nom',
- 'placeholder_firstname_ex' => 'Ex: Pol, Carole...',
- 'label_role' => 'Rol',
- 'role_child_icon' => '👶 Nen/a',
- 'role_helper_icon' => '💼 Ajudant',
- 'role_relative_icon' => '👵 Familiar',
- 'role_unknown' => 'Desconegut',
- 'label_color' => 'Color',
- 'confirm_delete_profile' => 'Voleu eliminar definitivament aquest perfil?',
- 'change_color' => 'Canviar el color',
- 'color_updated' => 'Color actualitzat!',
- 'set_success_color_profile' => 'Color del perfil actualitzat.',
- 'set_success_color_update' => 'Color actualitzat!',
- 'set_desc_profile_color' => 'Aquest color s\'utilitzarà per a les teves graelles de pressupost, calendaris i indicadors personals.',
- 'placeholder_apple_id' => 'nom@icloud.com',
- 'placeholder_apple_pwd' => 'xxxx-xxxx-xxxx-xxxx',
-
- // --- SETTINGS ---
- 'error_csrf' => 'Sessió invàlida (CSRF). Si us plau, recarrega la pàgina.',
- 'set_err_min_module' => 'Has de mantenir almenys un mòdul actiu.',
- 'set_success_modules' => 'Mòduls actualitzats amb èxit.',
- 'set_success_lang' => 'Idioma actualitzat.',
- 'set_err_empty_name' => 'El nom no pot estar buit.',
- 'set_success_profile' => 'Perfil actualitzat amb èxit.',
- 'set_err_wrong_pwd' => 'Contrasenya actual incorrecta.',
- 'set_err_pwd_length' => 'La nova contrasenya ha de tenir almenys 6 caràcters.',
- 'set_err_pwd_match' => 'Les contrasenyes no coincideixen.',
- 'set_success_pwd' => 'Contrasenya canviada amb èxit.',
- 'set_success_family' => 'Nom de l\'espai actualitzat.',
- 'set_success_invite' => 'Nou codi d\'invitació generat.',
- 'set_err_bg_format' => 'Format no compatible (jpg, png, webp).',
- 'set_success_bg' => 'Imatge d\'inici actualitzada.',
- 'set_err_upload' => 'Error durant la càrrega.',
- 'set_success_bg_reset' => 'Imatge d\'inici restablerta.',
- 'set_err_db_unavailable' => 'Base de dades familiar no disponible.',
- 'set_err_ios_missing' => 'Si us plau, proporciona un ID d\'iCloud, contrasenya d\'aplicació i URL CalDAV.',
- 'set_success_ios' => 'Connexió de calendari iOS desada.',
- 'set_success_ios_auto' => ' URL del calendari detectada automàticament.',
- 'set_err_ios_save' => 'No es pot desar la connexió iOS: ',
- 'set_err_ios_none' => 'Cap connexió iOS configurada.',
- 'set_success_ios_test' => 'Connexió iCloud CalDAV vàlida (HTTP %s).',
- 'set_err_ios_test' => 'La prova de connexió ha fallat (HTTP %s). Revisa les teves credencials.',
- 'set_err_ios_test_fail' => 'Prova de connexió no disponible: ',
- 'set_success_ios_del' => 'Connexió iOS eliminada.',
- 'set_success_profile_add' => 'Perfil de %s afegit amb èxit.',
- 'set_err_name_required' => 'El nom és obligatori.',
- 'set_success_profile_del' => 'Perfil suprimit.',
- 'set_title_page' => '⚙️ Configuració',
- 'set_title_lang' => '🌐 Idioma',
- 'set_title_modules' => '🧩 Mòduls Actius',
- 'set_desc_modules' => 'Tria els mòduls visibles a la navegació (compartits amb tots els membres de l\'espai).',
- 'set_title_ios' => '📱 Integració de Calendari iOS (CalDAV)',
- 'set_desc_ios' => 'Configura aquí el teu calendari iCloud per sincronitzar els esdeveniments creats a HouseHub.',
- 'set_label_apple_id' => 'ID d\'Apple (correu iCloud)',
- 'set_label_apple_pwd' => 'Contrasenya d\'aplicació d\'Apple',
- 'set_label_apple_url' => 'URL del calendari CalDAV',
- 'set_btn_test_ios' => 'Prova la connexió',
- 'set_btn_disconnect_ios' => 'Desconnecta',
- 'set_title_bg' => '🖼️ Imatge d\'Inici',
- 'set_desc_bg' => 'Foto de fons mostrada a la pàgina d\'inici (compartida amb tots els membres).',
- 'set_badge_custom_bg' => 'Imatge personalitzada',
- 'set_label_new_bg' => 'Nova imatge (jpg, png, webp — màx 10 MB)',
- 'set_btn_reset_bg' => '🔄 Restableix la imatge per defecte',
- 'set_confirm_reset_bg' => 'Tornar a la imatge per defecte?',
- 'set_title_profile' => '👤 El meu Perfil',
- 'set_label_username' => 'Nom d\'usuari',
- 'set_label_display_name' => 'Nom / Àlies mostrat',
- 'set_label_profile_color' => 'Color temàtic del meu perfil',
- 'set_desc_profile_color' => 'Aquest color s\'utilitzarà per a les teves graelles de pressupost, calendaris i indicadors personals.',
- 'set_title_pwd' => '🔒 Canviar Contrasenya',
- 'set_label_cur_pwd' => 'Contrasenya actual',
- 'set_label_new_pwd' => 'Nova contrasenya',
- 'set_label_confirm_pwd' => 'Confirma',
- 'set_btn_edit' => 'Modifica',
- 'set_title_family' => '🏠 El meu Espai Familiar',
- 'set_label_family_name' => 'Nom de l\'espai',
- 'set_desc_invite' => 'Codi d\'invitació — comparteix-lo per convidar algú',
- 'set_title_copy' => 'Fes clic per copiar',
- 'set_msg_copied' => '✓ Copiat!',
- 'set_btn_new_code' => '🔄 Nou codi',
- 'set_confirm_new_code' => 'Regenerar codi? L\'antic serà invalidat.',
- 'set_desc_register_link' => 'Enllaç de registre:',
- 'set_title_members' => 'Membres',
- 'set_badge_admin' => 'Admin',
- 'set_title_attached' => '🧸 Perfils Adjunts',
- 'set_desc_attached' => 'Membres gestionats per la llar (Nens, Mainaderes, Familiars) sense accés directe.',
- 'role_unknown' => 'Desconegut',
- 'role_child' => '👶 Nen/a',
- 'role_helper' => '💼 Ajudant',
- 'role_relative' => '👵 Familiar',
- 'set_confirm_del_profile' => 'Eliminar definitivament aquest perfil?',
- 'set_empty_attached' => 'Cap perfil adjunt.',
- 'set_label_firstname' => 'Nom',
- 'set_label_role' => 'Rol',
- 'set_label_color' => 'Color',
- 'set_link_admin' => '→ Tauler d\'Administració',
- 'set_success_color' => 'Color actualitzat!',
- 'error_network' => 'Error de xarxa',
// ==========================================
- // FAMILY CALENDAR
+ // 4. SETTINGS
+ // ==========================================
+ 'set_title_page' => '⚙️ Configuració',
+ 'set_title_lang' => '🌐 Idioma',
+ 'set_title_modules' => '🧩 Mòduls Actius',
+ 'set_desc_modules' => 'Tria els mòduls visibles a la navegació (compartits amb tots els membres de l\'espai).',
+ 'set_title_ios' => '📱 Integració de Calendari iOS (CalDAV)',
+ 'set_desc_ios' => 'Configura aquí el teu calendari iCloud per sincronitzar els esdeveniments creats a HouseHub.',
+ 'set_label_apple_id' => 'ID d\'Apple (correu iCloud)',
+ 'set_label_apple_pwd' => 'Contrasenya d\'aplicació d\'Apple',
+ 'set_label_apple_url' => 'URL del calendari CalDAV',
+ 'set_btn_test_ios' => 'Prova la connexió',
+ 'set_btn_disconnect_ios' => 'Desconnecta',
+ 'set_title_bg' => '🖼️ Imatge d\'Inici',
+ 'set_desc_bg' => 'Foto de fons mostrada a la pàgina d\'inici (compartida amb tots els membres).',
+ 'set_badge_custom_bg' => 'Imatge personalitzada',
+ 'set_label_new_bg' => 'Nova imatge (jpg, png, webp — màx 10 MB)',
+ 'set_btn_reset_bg' => '🔄 Restableix la imatge per defecte',
+ 'set_confirm_reset_bg' => 'Tornar a la imatge per defecte?',
+ 'set_title_profile' => '👤 El meu Perfil',
+ 'set_label_username' => 'Nom d\'usuari',
+ 'set_label_display_name' => 'Nom / Àlies mostrat',
+ 'set_label_profile_color' => 'Color temàtic del meu perfil',
+ 'set_desc_profile_color' => 'Aquest color s\'utilitzarà per a les teves graelles de pressupost, calendaris i indicadors personals.',
+ 'set_title_pwd' => '🔒 Canviar Contrasenya',
+ 'set_label_cur_pwd' => 'Contrasenya actual',
+ 'set_label_new_pwd' => 'Nova contrasenya',
+ 'set_label_confirm_pwd' => 'Confirma',
+ 'set_btn_edit' => 'Modifica',
+ 'set_title_family' => '🏠 El meu Espai Familiar',
+ 'set_label_family_name' => 'Nom de l\'espai',
+ 'set_desc_invite' => 'Codi d\'invitació — comparteix-lo per convidar algú',
+ 'set_title_copy' => 'Fes clic per copiar',
+ 'set_msg_copied' => '✓ Copiat!',
+ 'set_btn_new_code' => '🔄 Nou codi',
+ 'set_confirm_new_code' => 'Regenerar codi? L\'antic serà invalidat.',
+ 'set_desc_register_link' => 'Enllaç de registre:',
+ 'set_title_members' => 'Membres',
+ 'set_badge_admin' => 'Admin',
+ 'set_title_attached' => '🧸 Perfils Adjunts',
+ 'set_desc_attached' => 'Membres gestionats per la llar sense accés directe.',
+ 'set_empty_attached' => 'Cap perfil adjunt.',
+ 'set_link_admin' => '→ Tauler d\'Administració',
+ 'set_kids_title' => 'Nens de la llar',
+ 'set_kids_desc' => 'Gestioneu la llista de nens per associar-los a l\'estalvi, als regals, etc.',
+ 'set_add_kid_placeholder' => 'Nom del nen',
+ 'set_btn_add_kid' => 'Afegir',
+ 'set_err_kid_name' => 'El nom és obligatori.',
+ 'set_confirm_del_kid' => 'Vols eliminar aquest nen? (El seu historial financer es conservarà als arxius).',
+ 'set_no_kids' => 'Cap nen configurat per a aquesta llar.',
+ 'set_family_config' => 'Configuració de la llar',
+ 'set_global_params' => 'Paràmetres globals',
+ 'set_care_modes' => 'Modalitats de cura habituals',
+ 'set_add_care_mode' => 'Afegir una modalitat',
+
+ // Labels Profiles
+ 'label_firstname' => 'Nom',
+ 'placeholder_firstname_ex' => 'Ex: Pol, Carole...',
+ 'label_role' => 'Rol',
+ 'role_child' => '👶 Nen/a',
+ 'role_child_icon' => '👶 Nen/a',
+ 'role_helper' => '💼 Ajudant',
+ 'role_helper_icon' => '💼 Ajudant',
+ 'role_relative' => '👵 Familiar',
+ 'role_relative_icon' => '👵 Familiar',
+ 'role_unknown' => 'Desconegut',
+ 'label_color' => 'Color',
+ 'change_color' => 'Canviar el color',
+ 'confirm_delete_profile' => 'Voleu eliminar definitivament aquest perfil?',
+
+ // Settings Messages
+ 'error_csrf' => 'Sessió invàlida (CSRF). Si us plau, recarrega la pàgina.',
+ 'set_err_min_module' => 'Has de mantenir almenys un mòdul actiu.',
+ 'set_success_modules' => 'Mòduls actualitzats amb èxit.',
+ 'set_success_lang' => 'Idioma actualitzat.',
+ 'set_err_empty_name' => 'El nom no pot estar buit.',
+ 'set_success_profile' => 'Perfil actualitzat amb èxit.',
+ 'set_err_wrong_pwd' => 'Contrasenya actual incorrecta.',
+ 'set_err_pwd_length' => 'La nova contrasenya ha de tenir almenys 6 caràcters.',
+ 'set_err_pwd_match' => 'Les contrasenyes no coincideixen.',
+ 'set_success_pwd' => 'Contrasenya canviada amb èxit.',
+ 'set_success_family' => 'Nom de l\'espai actualitzat.',
+ 'set_success_invite' => 'Nou codi d\'invitació generat.',
+ 'set_err_bg_format' => 'Format no compatible (jpg, png, webp).',
+ 'set_success_bg' => 'Imatge d\'inici actualitzada.',
+ 'set_err_upload' => 'Error durant la càrrega.',
+ 'set_success_bg_reset' => 'Imatge d\'inici restablerta.',
+ 'set_err_db_unavailable' => 'Base de dades familiar no disponible.',
+ 'set_err_ios_missing' => 'Si us plau, proporciona un ID d\'iCloud, contrasenya d\'aplicació i URL CalDAV.',
+ 'set_success_ios' => 'Connexió de calendari iOS desada.',
+ 'set_success_ios_auto' => ' URL del calendari detectada automàticament.',
+ 'set_err_ios_save' => 'No es pot desar la connexió iOS: ',
+ 'set_err_ios_none' => 'Cap connexió iOS configurada.',
+ 'set_success_ios_test' => 'Connexió iCloud CalDAV vàlida (HTTP %s).',
+ 'set_err_ios_test' => 'La prova de connexió ha fallat (HTTP %s). Revisa les teves credencials.',
+ 'set_err_ios_test_fail' => 'Prova de connexió no disponible: ',
+ 'set_success_ios_del' => 'Connexió iOS eliminada.',
+ 'set_success_profile_add' => 'Perfil de %s afegit amb èxit.',
+ 'set_err_name_required' => 'El nom és obligatori.',
+ 'set_success_profile_del' => 'Perfil suprimit.',
+ 'set_success_color' => 'Color actualitzat!',
+ 'set_success_color_profile' => 'Color del perfil actualitzat.',
+ 'set_success_color_update' => 'Color actualitzat!',
+ 'color_updated' => 'Color actualitzat!',
+ 'settings_profile_added' => 'Perfil de %s afegit amb èxit.',
+ 'settings_err_name_required' => 'El nom és obligatori.',
+ 'settings_attached_profiles_title' => 'Perfils adjunts',
+ 'settings_attached_profiles_desc' => 'Membres de la llar sense accés directe.',
+ 'settings_no_attached_profiles' => 'Cap perfil adjunt.',
+ 'placeholder_apple_id' => 'nom@icloud.com',
+ 'placeholder_apple_pwd' => 'xxxx-xxxx-xxxx-xxxx',
+
+ // ==========================================
+ // 5. FAMILY CALENDAR
// ==========================================
'fc_page_title' => 'HouseHub - Calendari',
'fc_main_header' => 'Calendari Familiar',
@@ -316,159 +272,93 @@ return [
'fc_err_fetch_gov' => 'Error en la connexió amb l\'API governamental.',
'fc_err_no_data_gov' => 'No s\'han trobat dades a l\'API del govern per a aquest any.',
'fc_err_action' => 'Error en l\'acció: ',
- 'fc_err_select_leave' => "Si us plau, selecciona un tipus de permís.",
-'fc_confirm_del_catalog' => "Voleu eliminar definitivament el permís %s del catàleg? Això també el retirarà dels membres que l'utilitzen.",
-'fc_confirm_del_member_leave' => "Estàs segur que vols retirar aquest permís per a aquest membre?",
+ 'fc_err_select_leave' => 'Si us plau, selecciona un tipus de permís.',
'fc_today_short' => 'Avui',
'fc_today_title' => 'Anar a avui',
- 'fc_tab_foyer' => '🏡 Llar',
- 'fc_tab_members' => '👥 Membres i Drets',
- 'fc_select_member' => 'Selecciona un membre de la família:',
- 'fc_role_adult' => 'Adult',
- 'fc_role_child' => 'Nen',
- 'fc_care_modes_title' => '👶 Modes de cura associats',
- 'fc_care_modes_desc' => 'Marca els modes de cura que s\'apliquen a aquest nen.',
- 'fc_no_care_mode' => 'Cap mode configurat.',
- 'fc_matrix_title' => '👨👩👦 Matriu de Drets de Permís',
- 'fc_matrix_desc' => 'Declara els codis de comptadors i les dates de renovació.',
- 'fc_matrix_code' => 'Codi',
- 'fc_matrix_date' => 'Data de Reset',
- 'fc_matrix_empty' => 'Cap comptador configurat.',
- 'fc_matrix_saved' => 'Matriu de drets actualitzada! 💼',
- 'fc_child_saved' => 'Subscripció del nen desada!',
- 'btn_add_counter' => '➕ Afegir',
- 'btn_save_rights' => '💾 Desar',
- 'fc_modal_settings_title' => 'Configuració del Calendari',
- 'fc_zone_label' => 'Zona Escolar (Vacances)',
- 'fc_zone_desc' => 'Determina el calendari automàtic de vacances escolars.',
- 'fc_care_modes_label' => 'Modes de Cura de la Llar',
- 'fc_care_modes_desc' => 'Gestiona la llista global de modes de cura possibles per a la família.',
- 'fc_add_mode_placeholder' => 'Ex: Mainadera, Casal, Avis...',
- 'fc_settings_updated' => 'Configuració actualitzada correctament!',
- 'fc_first_day' => 'Primer dia de la setmana',
- 'fc_helper_recap' => 'Resum Interventor',
- 'fc_no_helper_leaves' => 'Cap permís sol·licitat aquest mes.',
- 'fc_col_date' => 'Data',
- 'fc_col_type' => 'Tipus',
- 'fc_col_duration' => 'Durada',
- 'fc_full_year' => 'Any sencer',
- 'fc_custom_period' => 'Període específic...',
- 'fc_worked_days' => 'Treballats (Est.)',
- 'fc_presence' => 'Presència',
- 'fc_working_days' => 'Feiners',
- 'fc_absences' => 'Abs.',
- 'fc_recap_title' => 'Resum',
- 'fc_worked_est' => 'Treballats (Est.)',
- 'fc_invalid_dates' => 'Selecciona dates vàlides.',
- 'fc_no_leaves_taken' => 'Cap permís sol·licitat.',
-
- // --- CALENDARI : PARÀMETRES (MEMBRES I VISUALITZACIÓ) ---
- 'fc_tab_display' => '🖥️ Visualització',
- 'fc_display_title' => 'Ajustos de visualització',
- 'fc_display_desc' => 'Personalitza l\'aparença i el comportament predeterminat del teu calendari.',
- 'fc_default_view' => 'Vista per defecte',
- 'fc_view_month' => '1 mes',
- 'fc_view_2months' => '2 mesos',
- 'fc_view_3months' => '3 mesos',
- 'fc_working_hours' => 'Horari de cura (Per defecte)',
- 'fc_working_hours_desc' => 'Exemple: 08:30-18:00',
-
- 'fc_role_unknown' => 'Desconegut',
- 'fc_role_adult' => 'Adult',
- 'fc_role_child' => 'Nen/a',
- 'fc_role_helper' => 'Ajudant',
- 'fc_error' => 'Error: ',
-
- 'fc_care_modes_title' => 'Modes de Cura Predeterminats',
- 'fc_care_modes_desc' => 'Quins modes de cura s\'apliquen a aquest nen/a?',
- 'fc_no_care_mode' => 'No hi ha modes de cura configurats a la llar.',
- 'fc_child_saved' => 'Desat!',
-
- 'fc_matrix_title' => 'Matriu de Permisos',
- 'fc_matrix_desc' => 'Defineix les quotes i dates de renovació.',
- 'fc_matrix_empty' => 'No hi ha comptadors definits.',
- 'fc_matrix_saved' => 'Matriu desada!',
-
- 'fc_leave_obsolete' => 'Obsolet',
- 'fc_leave_code_placeholder' => 'Codi...',
- 'fc_leave_method_fixed' => 'Fix',
- 'fc_leave_method_accumulated' => 'Acumulat',
-
- 'fc_date_format_placeholder' => 'DD/MM',
- 'fc_date_format_title' => 'Format DD/MM',
-
- 'fc_table_code' => 'Codi',
- 'fc_table_method' => 'Mètode',
- 'fc_table_quota' => 'Quota',
- 'fc_table_renewal' => 'Renov.',
-
- 'btn_save_rights' => 'Guardar',
-
- 'fc_label_carry_over' => 'Inclou dies reportats (Caducables) ⚠️',
- 'fc_carry_over_note' => 'Part del saldo global que caducarà a la data límit.',
- 'fc_carry_max' => 'Màx Reportable',
- 'fc_carry_deadline' => 'Mes de Caducitat',
- 'fc_deadline_none' => 'Cap',
- 'fc_allowance_help' => 'Fix: Quota anual. Gradual: Afegit per mes.',
- 'fc_carry_max_short' => 'Report màx',
- 'fc_edit_leave' => '✏️ Modificar:',
- 'fc_not_modifiable' => 'No modificable',
- 'fc_add_leave' => '+ Afegir',
- 'fc_err_code_label' => 'El Codi i l\'Etiqueta són obligatoris.',
- 'fc_catalog_updated' => 'Catàleg actualitzat!',
- 'fc_balance_corrected' => 'Saldo corregit!',
- 'fc_no_leave_configured' => 'Cap permís configurat.',
-
- // ==========================================
-// MODAL DE CONFIGURACIÓ DEL CALENDARI
-// ==========================================
-'fc_modal_settings_title' => 'Configuració del calendari',
-'fc_tab_foyer' => 'Llar',
-'fc_tab_members' => 'Membres i Drets',
-
-// Llar: Zona escolar
-'fc_zone_label' => 'Zona escolar',
-'fc_zone_a' => 'Zona A',
-'fc_zone_b' => 'Zona B',
-'fc_zone_c' => 'Zona C',
-'fc_zone_other' => 'Altra / Fora de França',
-'fc_zone_desc' => 'Permet mostrar correctament les vacances escolars.',
-
-// Llar: Opcions de cura (Modes de garde)
-'fc_care_modes_label' => 'Modalitats de cura',
-'fc_add_mode_placeholder' => 'Ex: Mainadera, Llar d\'infants...',
-'fc_care_modes_desc' => 'Afegeix les diferents modalitats de cura per als teus fills.',
-'fc_empty_kids_msg' => 'Actualment no hi ha cap infant configurat a la teva família.',
-'fc_link_settings' => 'Anar a la configuració general',
-
-// Llar: Catàleg de permisos (Congés)
-'fc_leave_catalog_title' => 'Catàleg de permisos',
-'fc_leave_catalog_desc' => 'Defineix els tipus de permisos possibles per a tota la família.',
-'fc_add_leave_type' => 'Afegir un tipus de permís',
-'fc_col_code' => 'Codi',
-'fc_code_irreversible' => 'Irreversible',
-'fc_col_label' => 'Etiqueta',
-'fc_leave_label_ph' => 'Ex: Vacances, Assumptes propis...',
-'fc_quota_default' => 'Quota per defecte',
-'fc_reset_month' => 'Mes de renovació',
-
-// Membres
-'fc_select_member' => 'Selecciona un membre:',
-
-// Mesos
-'month_jan' => 'Gener',
-'month_feb' => 'Febrer',
-'month_mar' => 'Març',
-'month_apr' => 'Abril',
-'month_may' => 'Maig',
-'month_jun' => 'Juny',
-'month_jul' => 'Juliol',
-'month_aug' => 'Agost',
-'month_sep' => 'Setembre',
-'month_oct' => 'Octubre',
-'month_nov' => 'Novembre',
-'month_dec' => 'Desembre',
+ 'fc_tab_foyer' => '🏡 Llar',
+ 'fc_tab_members' => '👥 Membres i Drets',
+ 'fc_select_member' => 'Selecciona un membre de la família:',
+ 'fc_role_adult' => 'Adult',
+ 'fc_role_child' => 'Nen',
+ 'fc_role_helper' => 'Ajudant',
+ 'fc_role_unknown' => 'Desconegut',
+ 'fc_care_modes_title' => 'Modes de Cura Predeterminats',
+ 'fc_care_modes_desc' => 'Quins modes de cura s\'apliquen a aquest nen/a?',
+ 'fc_no_care_mode' => 'No hi ha modes de cura configurats a la llar.',
+ 'fc_matrix_title' => 'Matriu de Drets de Permís',
+ 'fc_matrix_desc' => 'Declara els codis de comptadors i les dates de renovació.',
+ 'fc_matrix_code' => 'Codi',
+ 'fc_matrix_date' => 'Data de Reset',
+ 'fc_matrix_empty' => 'No hi ha comptadors definits.',
+ 'fc_matrix_saved' => 'Matriu de drets actualitzada! 💼',
+ 'fc_child_saved' => 'Desat!',
+ 'btn_add_counter' => '➕ Afegir',
+ 'btn_save_rights' => 'Guardar',
+ 'fc_modal_settings_title' => 'Configuració del Calendari',
+ 'fc_zone_label' => 'Zona escolar',
+ 'fc_zone_a' => 'Zona A',
+ 'fc_zone_b' => 'Zona B',
+ 'fc_zone_c' => 'Zona C',
+ 'fc_zone_other' => 'Altra / Fora de França',
+ 'fc_zone_desc' => 'Permet mostrar correctament les vacances escolars.',
+ 'fc_care_modes_label' => 'Modalitats de cura',
+ 'fc_add_mode_placeholder' => 'Ex: Mainadera, Llar d\'infants...',
+ 'fc_empty_kids_msg' => 'Actualment no hi ha cap infant configurat a la teva família.',
+ 'fc_link_settings' => 'Anar a la configuració general',
+ 'fc_settings_updated' => 'Configuració actualitzada correctament!',
+ 'fc_first_day' => 'Primer dia de la setmana',
+ 'fc_helper_recap' => 'Resum Interventor',
+ 'fc_no_helper_leaves' => 'Cap permís sol·licitat aquest mes.',
+ 'fc_col_date' => 'Data',
+ 'fc_col_type' => 'Tipus',
+ 'fc_col_duration' => 'Durada',
+ 'fc_full_year' => 'Any sencer',
+ 'fc_custom_period' => 'Període específic...',
+ 'fc_worked_days' => 'Treballats (Est.)',
+ 'fc_tab_display' => '🖥️ Visualització',
+ 'fc_display_title' => 'Ajustos de visualització',
+ 'fc_display_desc' => 'Personalitza l\'aparença i el comportament predeterminat del teu calendari.',
+ 'fc_default_view' => 'Vista per defecte',
+ 'fc_working_hours' => 'Horari de cura (Per defecte)',
+ 'fc_working_hours_desc' => 'Exemple: 08:30-18:00',
+ 'fc_error' => 'Error: ',
+ 'fc_leave_catalog_title' => 'Catàleg de permisos',
+ 'fc_leave_catalog_desc' => 'Defineix els tipus de permisos possibles per a tota la família.',
+ 'fc_add_leave_type' => 'Afegir un tipus de permís',
+ 'fc_col_code' => 'Codi',
+ 'fc_code_irreversible' => 'Irreversible',
+ 'fc_col_label' => 'Etiqueta',
+ 'fc_leave_label_ph' => 'Ex: Vacances, Assumptes propis...',
+ 'fc_quota_default' => 'Quota per defecte',
+ 'fc_reset_month' => 'Mes de renovació',
+ 'fc_leave_obsolete' => 'Obsolet',
+ 'fc_leave_code_placeholder' => 'Codi...',
+ 'fc_leave_method_fixed' => 'Fix',
+ 'fc_leave_method_accumulated'=> 'Acumulat',
+ 'fc_date_format_placeholder'=> 'DD/MM',
+ 'fc_date_format_title' => 'Format DD/MM',
+ 'fc_table_code' => 'Codi',
+ 'fc_table_method' => 'Mètode',
+ 'fc_table_quota' => 'Quota',
+ 'fc_table_renewal' => 'Renov.',
+ 'fc_label_carry_over' => 'Inclou dies reportats (Caducables) ⚠️',
+ 'fc_carry_over_note' => 'Part del saldo global que caducarà a la data límit.',
+ 'fc_carry_max' => 'Màx Reportable',
+ 'fc_carry_deadline' => 'Mes de Caducitat',
+ 'fc_deadline_none' => 'Cap',
+ 'fc_allowance_help' => 'Fix: Quota anual. Gradual: Afegit per mes.',
+ 'fc_carry_max_short' => 'Report màx',
+ 'fc_edit_leave' => '✏️ Modificar:',
+ 'fc_not_modifiable' => 'No modificable',
+ 'fc_add_leave' => '+ Afegir',
+ 'fc_err_code_label' => 'El Codi i l\'Etiqueta són obligatoris.',
+ 'fc_catalog_updated' => 'Catàleg actualitzat!',
+ 'fc_balance_corrected' => 'Saldo corregit!',
+ 'fc_no_leave_configured' => 'Cap permís configurat.',
+ 'fc_confirm_del_catalog' => 'Voleu eliminar definitivament el permís %s del catàleg? Això també el retirarà dels membres que l\'utilitzen.',
+ 'fc_confirm_del_member_leave'=> 'Estàs segur que vols retirar aquest permís per a aquest membre?',
+ // Llegendes
'leg_presence' => 'Presència Pep',
'leg_school_holidays' => 'Vacances Escolars',
'leg_public_holiday' => 'Festiu',
@@ -477,10 +367,9 @@ return [
'leg_centre' => 'Casal',
'leg_avis' => 'Avís',
'fc_menu_sick' => 'Malalt',
- 'care_nounou' => 'Kangur',
- 'care_centre' => 'Casal',
- 'care_avis' => 'Avis',
-
+ 'care_nounou' => 'Kangur',
+ 'care_centre' => 'Casal',
+ 'care_avis' => 'Avis',
'vac_toussaint' => 'Vacances de Tots Sants',
'vac_noel' => 'Vacances de Nadal',
'vac_hiver' => "Vacances d'Hivern",
@@ -489,12 +378,11 @@ return [
'vac_ete' => "Vacances d'Estiu",
'btn_off' => 'Off',
'btn_extra' => 'Extra',
-
- 'fc_alert_burn_days' => '⚠️ Risc de pèrdua : %s d a gastar abans del %s',
- 'fc_alert_burn_jra' => '⚠️ JRA: Només 2d es poden reportar després de febrer!',
+ 'fc_alert_burn_days' => '⚠️ Risc de pèrdua : %s d a gastar abans del final del cicle',
+ 'fc_alert_burn_jra' => '⚠️ JRA: Només 2d es poden reportar després de febrer!',
// ==========================================
- // HOLIDAYS (VOYAGES)
+ // 6. HOLIDAYS (VOYAGES)
// ==========================================
'hdl_title_list' => 'HouseHub - Les meves vacances',
'hdl_title_detail' => 'HouseHub - Detall del viatge',
@@ -569,24 +457,21 @@ return [
'hdl_to_place' => 'Per situar',
'hdl_from' => 'Des del',
'hdl_to' => 'Fins al',
- 'hdl_btn_add_step' => 'Afegir una etapa',
- 'hdl_quick_edit_title' => 'Modificació ràpida',
- 'hdl_paid' => 'Pagat',
- 'weather_forecast' => 'Previsions meteorològiques',
- 'weather_not_available' => 'Temps no disponible',
- 'temp_max' => 'Temp. Màxima',
- 'weather_loading' => 'Carregant el temps...',
- 'weather_error' => 'Temps no disponible',
- 'weather_sunny' => 'Assolellat',
- 'weather_cloudy' => 'Ennuvolat',
- 'weather_rainy' => 'Plujós',
- 'weather_snowy' => 'Nevat',
- 'weather_historical' => 'Basat en l\'històric (estimació)',
- 'err_invalid_holiday_id' => 'ID de viatge no vàlid.',
- 'hdl_default_exp_name' => 'Despesa',
- 'hdl_select_beneficiary' => '-- Seleccionar --',
+ 'weather_forecast' => 'Previsions meteorològiques',
+ 'weather_not_available' => 'Temps no disponible',
+ 'temp_max' => 'Temp. Màxima',
+ 'weather_loading' => 'Carregant el temps...',
+ 'weather_error' => 'Temps no disponible',
+ 'weather_sunny' => 'Assolellat',
+ 'weather_cloudy' => 'Ennuvolat',
+ 'weather_rainy' => 'Plujós',
+ 'weather_snowy' => 'Nevat',
+ 'weather_historical' => 'Basat en l\'històric (estimació)',
+ 'err_invalid_holiday_id' => 'ID de viatge no vàlid.',
+ 'hdl_default_exp_name' => 'Despesa',
+ 'hdl_select_beneficiary' => '-- Seleccionar --',
- // Anciennes clés Holidays non préfixées (conservades)
+ // Anciennes clés (conservades)
'outbound_trip' => 'Anada',
'return_trip' => 'Tornada',
'period' => 'Període',
@@ -639,7 +524,7 @@ return [
'to_place' => '📥 A col·locar',
// ==========================================
- // BUDGET (GLOBAL & CATEGORIES)
+ // 7. BUDGET (GLOBAL, SUIVI, PREV, EPARGNE, PROVISIONS)
// ==========================================
'budget_page_title' => 'HouseHub - Pressupost',
'budget_main_header' => 'Gestió del Pressupost',
@@ -647,9 +532,16 @@ return [
'budget_tab_prev' => 'Pressupost 2026',
'budget_tab_savings' => 'Estalvis',
'budget_tab_recap' => 'Resum',
+ 'budget_tab_provisions' => 'Provisions',
+ 'budget_tab_kids' => 'Nens',
'budget_err_file_not_found' => 'Vaja! Fitxer no trobat.',
'budget_err_file_detail' => 'Comproveu que el fitxer views/%s.php existeix.',
'budget_err_not_authorized' => 'Pàgina no autoritzada.',
+ 'bud_err_tech' => 'S\'ha produït un error tècnic.',
+ 'bud_err_server' => 'Error del servidor: ',
+ 'bud_err_delete' => 'Error en suprimir.',
+
+ // Categories
'cat_income' => 'Ingressos',
'cat_fmcg' => 'Compres (FMCG)',
'cat_fuel' => 'Benzina',
@@ -657,12 +549,14 @@ return [
'cat_fixed' => 'Despeses Fixes',
'cat_others' => 'Altres / Imprevistos',
'cat_savings' => 'Estalvis',
- 'budget_tab_kids' => 'Nens',
+
+ // Settings
'budget_settings_title' => 'Configuració del Pressupost',
'bs_tab_accounts' => '💳 Comptes',
'bs_tab_categories' => '🏷️ Categories',
'bs_tab_rules' => '🤖 Regles d\'importació',
'bs_tab_salaries' => '💼 Salaris',
+ 'bs_tab_csv' => '📥 Importació CSV',
'bs_empty_accounts' => 'Cap compte configurat.',
'bs_type_checking' => 'Corrent',
'bs_type_savings' => 'Estalvi',
@@ -692,7 +586,8 @@ return [
'bs_currency_label' => 'Divisa de la llar',
'bs_currency_desc' => 'Divisa principal utilitzada per mostrar els vostres comptes i pressupostos.',
'bs_currency_updated' => 'Divisa actualitzada correctament!',
- // ONGLET CSV MAPPING
+
+ // CSV
'bs_csv_title' => 'Format de la importació CSV',
'bs_csv_desc' => 'Configureu aquí les columnes que corresponen a l\'exportació del vostre banc.',
'bs_csv_delimiter' => 'Separador',
@@ -713,7 +608,6 @@ return [
'bs_csv_col_ref' => 'Núm Col: Referència única (Opcional)',
'btn_save_format' => 'Desar el format',
'bs_csv_saved' => 'Format CSV desat',
- 'bs_tab_csv' => '📥 Importació CSV',
'bs_csv_settings_title' => 'Configuració del format',
'bs_csv_drop_title' => 'Arrossegueu el vostre fitxer CSV aquí',
'bs_csv_drop_desc' => 'o feu clic per cercar fitxers',
@@ -723,7 +617,22 @@ return [
'bs_csv_empty_col' => 'Buit',
'bs_csv_no_data' => 'No s\'ha trobat cap línia de transacció en aquest fitxer.',
- // --- BUDGET : SUIVI ---
+ // Onboarding
+ 'bs_onb_title' => 'Benvinguts! Configurem el teu pressupost:',
+ 'bs_onb_desc' => 'Completa aquests passos perquè l\'aplicació pugui calcular el teu pressupost disponible:',
+ 'bs_onb_cat_link' => 'Categories',
+ 'bs_onb_cat_desc' => 'Crea almenys una categoria de despeses.',
+ 'bs_onb_acc_link' => 'Comptes Bancaris',
+ 'bs_onb_acc_desc' => 'Afegeix almenys un compte corrent o d\'estalvi.',
+ 'bs_onb_sal_link' => 'Sous',
+ 'bs_onb_sal_desc' => 'Introdueix els ingressos de l\'any en curs.',
+ 'bs_onb_items_link' => 'Línies de Pressupost',
+ 'bs_onb_items_desc' => 'Ves a la pestanya Resum per llistar les teves despeses fixes (Lloguer, Assegurances...).',
+ 'bs_rule_search_ph' => '🔍 Cercar una paraula clau (ex: AUCHAN)...',
+ 'error_loading_settings' => 'Error en carregar la configuració',
+ 'bud_err_delete_system_cat' => 'Impossible de suprimir una categoria de sistema essencial.',
+
+ // Budget : Suivi
'bud_rem_school' => 'Escola (Resta estimada)',
'bud_rem_fmcg' => 'Compres (Resta estimada)',
'bud_rem_fuel' => 'Benzina (Resta estimada)',
@@ -748,16 +657,16 @@ return [
'bud_import_csv' => 'Importar CSV',
'bud_csv_file' => 'Fitxer CSV (Punt i coma)',
'bud_preview' => 'Previsualitzar',
- 'bud_validate_import' => 'Validar importació',
- 'bud_assign_month' => 'Assignar al mes',
- 'bud_op_date' => 'Data Operació',
+ 'bud_validate_import' => 'Si us plau, comproveu i categoritzeu les línies abans de validar.',
+ 'bud_assign_month' => 'Mes de gestió',
+ 'bud_op_date' => 'Data',
'bud_label' => 'Concepte',
'bud_amount' => 'Import',
'bud_category' => 'Categoria',
- 'bud_ignore' => 'Ignorar',
+ 'bud_ignore' => 'Ignorar (Crèdit)',
'bud_to_define' => 'Per definir',
- 'bud_is_charge' => 'Despesa?',
- 'bud_is_income' => 'Ingrés?',
+ 'bud_is_charge' => 'És un càrrec fix...',
+ 'bud_is_income' => 'És un ingrés...',
'btn_import' => 'Importar',
'bud_no_lines' => 'Cap línia.',
'bud_confirm_delete' => 'Suprimir aquesta línia?',
@@ -776,44 +685,12 @@ return [
'bud_add_title' => 'Afegir',
'bud_edit_title' => 'Modificar la transacció',
'bud_to_define_js' => 'per definir',
- 'bud_bar_actual' => "Actual",
- 'bud_bar_theoretical' => "Teòric",
- 'bud_bar_max_cap' => "Capacitat Màx.",
- 'bud_edit_title' => 'Modificar la transacció',
- 'bud_to_define_js' => 'per definir',
- 'bud_select_beneficiary' => 'Triar un ingrés esperat',
'bud_bar_actual' => 'Actual',
+ 'bud_bar_theoretical' => 'Teòric',
+ 'bud_bar_max_cap' => 'Capacitat Màx.',
+ 'bud_select_beneficiary' => 'Triar un ingrés esperat',
- // ONBOARDING BUDGET
- 'bs_onb_title' => 'Benvinguts! Configurem el teu pressupost:',
- 'bs_onb_desc' => 'Completa aquests passos perquè l\'aplicació pugui calcular el teu pressupost disponible:',
- 'bs_onb_cat_link' => 'Categories',
- 'bs_onb_cat_desc' => 'Crea almenys una categoria de despeses.',
- 'bs_onb_acc_link' => 'Comptes Bancaris',
- 'bs_onb_acc_desc' => 'Afegeix almenys un compte corrent o d\'estalvi.',
- 'bs_onb_sal_link' => 'Sous',
- 'bs_onb_sal_desc' => 'Introdueix els ingressos de l\'any en curs.',
- 'bs_onb_items_link' => 'Línies de Pressupost',
- 'bs_onb_items_desc' => 'Ves a la pestanya Resum per llistar les teves despeses fixes (Lloguer, Assegurances...).',
- 'bs_rule_search_ph' => '🔍 Cercar una paraula clau (ex: AUCHAN)...',
- 'error_loading_settings' => 'Error en carregar la configuració',
- 'settings' => 'Configuració',
- 'bud_err_delete_system_cat' => 'Cannot delete a core system category.',
-
- // --- MODULE BUDGET : IMPORT CSV ---
- 'bud_import_csv' => "Importar CSV",
- 'bud_csv_file' => "Seleccioneu el fitxer del vostre banc (.csv)",
- 'bud_preview' => "Previsualitzar",
- 'bud_validate_import' => "Si us plau, comproveu i categoritzeu les línies abans de validar.",
- 'bud_assign_month' => "Mes de gestió",
- 'bud_op_date' => "Data",
- 'bud_amount' => "Import",
- 'bud_ignore' => "Ignorar (Crèdit)",
- 'bud_to_define' => "Per definir",
- 'bud_is_charge' => "És un càrrec fix...",
- 'bud_is_income' => "És un ingrés...",
-
- // --- BUDGET : RECAP ---
+ // Budget : Recap
'bud_recap_monthly_title' => 'Resum Mensual',
'bud_recap_btn_add' => 'Afegir una despesa / ingrés',
'bud_planned_amount' => 'Import Previst',
@@ -853,51 +730,16 @@ return [
'bud_label_regularization' => 'Regularització',
'bud_reg_none' => 'Cap',
'bud_recap_confirm_delete' => 'Segur que vols suprimir aquest element?',
- 'bud_err_delete' => 'Error en suprimir.',
- 'bud_sav_modal_title_add' => 'Introduir un mes',
- 'bud_sav_ph_name' => 'Nom (ex: Vacances)',
- 'bud_prev_label_name' => 'Nom',
- 'bud_prev_monthly_target' => 'Import objectiu / Mensualitat (€)',
- 'bud_prev_transfer_dest' => 'Destinació de la transferència',
- 'bud_prev_none' => 'Cap destinació (Despesa estàndard)',
- 'bud_sav_new_line' => 'New line',
-'bud_sav_prompt_new_line' => 'Name of the new savings line:',
+ 'bud_prev_monthly_target' => 'Import objectiu / Mensualitat (€)',
+ 'bud_prev_transfer_dest' => 'Destinació de la transferència',
+ 'bud_prev_none' => 'Cap destinació (Despesa estàndard)',
- // --- BUDGET : EPARGNE ---
+ // Budget : Epargne
'bud_sav_add_month' => 'Introduir un mes',
'bud_sav_add_one_month' => '+1 Mes',
'bud_sav_no_data' => 'Cap dada per a %s.',
'bud_sav_post_month' => 'Concepte / Mes',
'bud_sav_from_date' => 'Des del %s',
- 'bud_sav_edit_modal' => 'Modificar amb Modal',
- 'bud_sav_delete_month' => 'Suprimir tot el mes',
- 'bud_sav_total_bank' => 'Total Banc',
- 'bud_sav_extra' => 'Extra',
- 'bud_sav_modal_title_add' => 'Introduir un mes',
- 'bud_sav_modal_title_edit' => 'Modificar:',
- 'bud_sav_month_concerned' => 'Mes afectat',
- 'bud_sav_total_bank_eur' => 'Total al Banc (€)',
- 'bud_sav_ventilation' => 'Desglossament',
- 'bud_sav_adj_help' => 'Utilitzeu l\'ajust (+/-) per recalcular automàticament.',
- 'bud_sav_add_line' => 'Línia',
- 'bud_sav_current' => 'Actual',
- 'bud_sav_adjust' => 'Ajust (+/-)',
- 'bud_sav_new' => 'Nou',
- 'bud_sav_sum_mode_title' => 'Activar la suma ràpida',
- 'bud_sav_selection' => 'Selecció:',
- 'bud_sav_ph_name' => 'Nom (ex: Vacances)',
- 'bud_sav_saving' => 'Desant...',
- 'bud_err_tech' => 'S\'ha produït un error tècnic.',
- 'bud_sav_confirm_delete_month' => 'Suprimir TOT el mes de %m per a %o?',
- 'bud_sav_prompt_duplicate' => "Vols copiar les dades de %s a %t1?\n\nIntrodueix el nou TOTAL al banc (€) per a %t2:",
- 'bud_err_server' => 'Error del servidor: ',
- 'bud_err_network_dup' => 'Error de xarxa en duplicar.',
- 'budget_tab_kids' => 'Infants 👶',
- 'bud_sav_add_one_month' => '+1 Mes',
- 'bud_sav_add_month' => 'Afegir un mes',
- 'bud_sav_no_data' => 'Cap dada d\'estalvi per a %s.',
- 'bud_sav_post_month' => 'Concepte / Mes',
- 'bud_sav_from_date' => 'Des del %s',
'bud_sav_edit_modal' => 'Editar aquest mes',
'bud_sav_delete_month' => 'Suprimir aquest mes',
'bud_sav_total_bank' => 'TOTAL BANC',
@@ -909,45 +751,20 @@ return [
'bud_sav_ventilation' => 'Desglossament de comptes',
'bud_sav_adj_help' => 'Utilitzeu l\'ajust (+/-) per recalcular automàticament.',
'bud_sav_add_line' => 'Afegir una línia',
- 'bud_category' => 'Categoria',
'bud_sav_current' => 'Actual',
'bud_sav_adjust' => 'Ajust',
'bud_sav_new' => 'Nou',
'bud_sav_sum_mode_title' => 'Activar/Desactivar la calculadora',
'bud_sav_selection' => 'Selecció:',
'bud_sav_ph_name' => 'Nom del compte',
-
-
- // --- Module Budget : Provisions & Optimisation ---
-'budget_provisions_title' => 'Provisions & Optimisation de Trésorerie',
-'btn_optimize_cashflow' => 'Optimiser mes Économies',
-'add_new_provision' => 'Anticiper une grosse dépense à venir',
-'provision_label' => 'Libellé de la dépense',
-'provision_placeholder_wood' => 'Ex: Commande de bois, Révision de l\'auto...',
-'amount' => 'Montant',
-'expected_date' => 'Date prévue',
-'btn_add' => 'Ajouter',
-'upcoming_provisions_list' => 'Dépenses prévues au calendrier',
-'optimization_assistant_title' => 'Assistant d\'Optimisation des Quinzaines',
-'error_generic' => 'Une erreur est survenue',
-'success_add_provision' => 'Dépense prévisionnelle ajoutée !',
-'no_provisions' => 'Aucune dépense prévisionnelle enregistrée pour le moment.',
-'btn_delete' => 'Supprimer',
-'savings_this_month' => 'Économies globales à placer ce mois-ci',
-'calculate' => 'Calculer la stratégie optimale',
-'date_past_warning' => 'La date sélectionnée est déjà passée !',
-'budget_tab_provisions' => 'Provisions',
-
- // JS & Errors
+ 'bud_sav_new_line' => 'Nova línia',
+ 'bud_sav_prompt_new_line' => 'Nom de la nova línia d\'estalvi:',
'bud_sav_confirm_delete_month' => 'Estàs segur que vols suprimir totes les dades de %m per a %o?',
'bud_sav_prompt_duplicate' => "Vols duplicar les dades de %s cap a %t1?\n\nIntrodueix el nou TOTAL al banc (€) per a %t2:",
- 'bud_err_tech' => 'S\'ha produït un error tècnic.',
- 'bud_err_server' => 'Error del servidor: ',
'bud_err_network_dup' => 'Error de xarxa en duplicar.',
'bud_sav_saving' => 'Desant...',
- 'bud_err_delete' => 'Error en suprimir.',
- // --- BUDGET : PREVISIONNEL ---
+ // Budget : Previsionnel
'bud_prev_incomes' => 'Ingressos',
'bud_prev_person' => 'Persona',
'bud_prev_salary' => 'Sou',
@@ -981,10 +798,11 @@ return [
'bud_prev_err_no_history' => 'Impossible: no hi ha historial disponible per copiar.',
'bud_prev_confirm_copy' => "Vols copiar les dades de %s a %t?\n\n⚠️ Això sobreescriurà tots els valors ja presents per a %t.",
'bud_prev_confirm_transfers' => "Confirmes que %p ha fet totes les transferències per a %m?\n\nAixò actualitzarà l'Estalvi automàticament.",
- 'bud_prev_target_ph' => 'Ex: 150',
- 'bud_prev_transfer_to' => 'Cap a',
+ 'bud_prev_label_name' => 'Nom',
+ 'bud_prev_target_ph' => 'Ex: 150',
+ 'bud_prev_transfer_to' => 'Cap a',
- // --- MODULE BUDGET : AVANCES & TRICOUNT ---
+ // Budget : Tricount / Avances
'bud_adv_title' => 'Avançaments i Tricount Familiar',
'bud_adv_add' => 'Afegir un avançament',
'bud_adv_edit' => 'Modificar l\'avançament',
@@ -994,7 +812,7 @@ return [
'bud_adv_cc_label' => 'al compte comú',
'bud_adv_livret_label' => 'des del seu llibre d\'estalvis',
'bud_adv_cc_balance_title' => 'Equilibri del Compte Comú',
- 'bud_adv_owed_to' => 'S\'han de pagar **%s €** a **%s**',
+ 'bud_adv_owed_to' => 'S\'han de pagar %s € a %s',
'bud_adv_balanced' => 'Els comptes estan perfectament equilibrats!',
'bud_adv_saved_badge' => 'Estalvis',
'bud_adv_already_saved' => 'Aquests diners provenen d\'un llibre d\'estalvis',
@@ -1002,59 +820,54 @@ return [
'bud_adv_confirm_resolve' => 'Confirmar el reemborsament complet d\'aquest avançament?',
'bud_adv_confirm_delete' => 'Eliminar definitivament aquest avançament?',
- // ==========================================
- // MÒDUL: REGALS (gift-list)
- // ==========================================
+ // Budget : Provisions & Optimisation
+ 'budget_provisions_title' => 'Provisions & Optimisation de Trésorerie',
+ 'btn_optimize_cashflow' => 'Optimiser mes Économies',
+ 'add_new_provision' => 'Anticiper une grosse dépense à venir',
+ 'provision_label' => 'Libellé de la dépense',
+ 'provision_placeholder_wood' => 'Ex: Commande bois de chauffage, Révision voiture...',
+ 'amount' => 'Montant',
+ 'expected_date' => 'Date prévue',
+ 'upcoming_provisions_list' => 'Dépenses prévues au calendrier',
+ 'optimization_assistant_title' => 'Assistant d\'Optimisation des Quinzaines',
+ 'success_add_provision' => 'Dépense prévisionnelle ajoutée !',
+ 'no_provisions' => 'Aucune dépense prévisionnelle enregistrée pour le moment.',
+ 'savings_this_month' => 'Économies globales à placer ce mois-ci',
+ 'calculate' => 'Calculer la stratégie optimale',
+ 'date_past_warning' => 'La date sélectionnée est déjà passée !',
- // 1. Títols i capçaleres
+ // ==========================================
+ // 8. CADEAUX (GIFTS)
+ // ==========================================
'gift_page_title' => 'Llista de Regals',
- 'gift_main_title' => 'Regals de %s', // %s serà substituït per l'any (ex: Regals de 2026)
- 'settings' => 'Configuració',
-
- // 2. Filtres
+ 'gift_main_title' => 'Regals de %s',
'gift_filter_all_children' => 'Tots els nens',
'gift_filter_all_adults' => 'Tots els adults',
-
- // 3. Contingut i estats buits
'gift_add_gift' => 'Afegir',
'gift_empty_state_no_gifts' => 'Cap regal registrat per a aquesta ocasió.',
'gift_empty_state_no_filter' => 'Cap regal coincideix amb els teus filtres.',
- 'gift_paid_by' => 'Pagat per %s', // %s serà substituït pel nom del pagador
-
- // 4. Secció Tricount (Balanç i Reemborsaments)
+ 'gift_paid_by' => 'Pagat per %s',
'gift_liquidations' => 'Balanç i Reemborsaments',
'gift_no_debt' => 'Tot està al dia, cap deute!',
'gift_owes' => 'deu',
'gift_view_matrix' => 'Veure la matriu detallada',
'gift_debtor' => 'Deutor',
'gift_creditor' => 'Creditor',
-
- // 5. Modal: Afegir/Modificar Regal
'gift_col_adult' => 'Per compte de',
'gift_modal_payer' => 'Pagat per',
'gift_modal_gift_name' => 'Descripció del regal',
'gift_modal_price' => 'Preu estimat / pagat (€)',
'gift_modal_link' => 'Enllaç del producte (URL)',
- 'gift_modal_title_add' => 'Afegir per a %s', // JS: %s = nom del nen
- 'gift_modal_title_edit' => 'Modificar el regal', // JS
- 'gift_confirm_delete' => 'Vols eliminar realment aquest regal?', // JS
-
- // 6. Modal: Configuració de les Festes
+ 'gift_modal_title_add' => 'Afegir per a %s',
+ 'gift_modal_title_edit' => 'Modificar el regal',
+ 'gift_confirm_delete' => 'Vols eliminar realment aquest regal?',
'gift_settings_title' => 'Configuració de les Festes',
'gift_settings_add_title' => '+ Afegir una ocasió',
'gift_settings_name_placeholder' => 'Nom (ex: Sant Valentí)',
'gift_settings_date_placeholder' => 'MM-DD',
'gift_settings_date_help' => 'La data (MM-DD) és opcional. Deixa en blanc per a una festa mòbil.',
- 'gift_settings_empty' => 'Cap festa configurada.', // JS
- 'gift_settings_active' => 'Actiu', // JS
-
- // 7. Botons genèrics
- 'btn_cancel' => 'Cancel·lar',
- 'btn_save' => 'Desar',
- 'btn_add' => 'Afegir',
- 'loading' => 'Carregant...', //
-
- // --- MODULE CADEAUX : SETTINGS ---
+ 'gift_settings_empty' => 'Cap festa configurada.',
+ 'gift_settings_active' => 'Actiu',
'gift_settings' => 'Configuració',
'gift_tab_occasions' => 'Festes i Ocasions',
'gift_tab_proches' => 'Familiars (Fora de la llar)',
@@ -1069,11 +882,10 @@ return [
'gift_settings_saved' => 'Configuració desada!',
'gift_settings_edit_occ' => 'Modificar la festa',
'gift_settings_edit_proche' => 'Modificar el familiar',
-
+
// ==========================================
- // GARAGE MANAGER
+ // 9. GARAGE
// ==========================================
- 'menu_garage' => 'Garatge',
'garage_page_title' => 'HouseHub - Garatge',
'garage_stat_vehicles' => 'Vehicles',
'garage_stat_maintenances' => 'Manteniments',
@@ -1082,7 +894,7 @@ return [
'garage_my_vehicles' => 'Els meus vehicles',
'garage_reminders' => 'Recordatoris i propers manteniments',
'garage_vehicles_title' => 'Els meus vehicles',
- 'garage_all_parts' => 'Totes les peces',
+ 'garage_all_parts' => 'Toutes les peces',
'garage_parts_count' => 'peces',
'garage_maintenances' => 'Manteniments',
'garage_parts' => 'Peces',
@@ -1103,7 +915,6 @@ return [
'garage_photo' => 'Foto',
'garage_notes' => 'Notes',
'garage_maint_type' => 'Tipus de manteniment',
- 'garage_date' => 'Data',
'garage_km_at' => 'Quilometratge en el moment',
'garage_labor_cost' => 'Cost mà d\'obra (€)',
'garage_description' => 'Descripció',
@@ -1122,4 +933,38 @@ return [
'garage_change_photo' => 'Canviar la foto',
'garage_new_photo' => 'Nova foto',
'garage_update_photo' => 'Actualitzar',
-];
+
+ // ==========================================
+ // 10. LISTES & COURSES
+ // ==========================================
+ 'liste_placeholder_add' => 'Afegir un article...',
+ 'liste_btn_add' => 'Afegir',
+ 'liste_btn_uncheck_all' => 'Tot desmarcar',
+ 'liste_btn_delete_picked' => 'Suprimir els marcats',
+ 'liste_btn_clear_all' => 'Buidar la llista',
+ 'liste_subtitle' => '{pending} pendents · {cart} marcats',
+ 'liste_added' => 'Afegit',
+ 'liste_updated' => 'Modificat',
+ 'liste_deleted' => 'Suprimit',
+ 'liste_already_in' => 'Ja a la llista',
+ 'liste_confirm_clear' => 'Buidar tota la llista?',
+ 'liste_confirm_delete_list' => 'Suprimir aquesta llista i tots els articles?',
+ 'liste_history_title' => 'Recents — clic per afegir',
+ 'liste_new_list' => 'Nova llista',
+ 'liste_list_name_placeholder'=> 'Nom de la llista...',
+ 'liste_create' => 'Crear',
+ 'liste_rename_list' => 'Renombrar',
+ 'liste_new_name' => 'Nou nom:',
+ 'liste_list_deleted' => 'Llista suprimida',
+ 'liste_list_created' => 'Llista creada',
+ 'liste_list_renamed' => 'Llista renombrada',
+ 'liste_edit_placeholder' => 'Modificar l\'article:',
+ 'liste_empty_state' => 'Creeu la primera llista amb el botó + de dalt.',
+ 'liste_settings_title' => 'Llistes — historial',
+ 'liste_settings_intro' => 'Nombre màxim d\'articles memoritzats a l\'historial (comú per a totes).',
+ 'liste_settings_history_max' => 'Mida de l\'historial',
+ 'liste_settings_history_hint'=> 'Entre 1 i 50.',
+ 'groceries_settings_saved' => 'Preferències desades.',
+ 'groceries_settings_error' => 'Impossible de desar:',
+ 'groceries_err_duplicate' => 'Aquest producte ja és a la llista.',
+];
\ No newline at end of file
diff --git a/includes/lang/en.php b/includes/lang/en.php
index bdc21dc..0fb75f5 100644
--- a/includes/lang/en.php
+++ b/includes/lang/en.php
@@ -1,29 +1,23 @@
'Running tests...',
- 'test_passed' => 'Test passed',
- 'test_failed' => 'Test failed',
- 'tests_title' => 'Test Lab',
- 'tests_run_budget' => 'Test Budget',
- 'tests_run_all' => 'Run all tests',
- 'tests_copy_report' => 'Copy report',
- 'tests_waiting' => 'Waiting to start...',
- 'tests_report_copied' => 'Report copied to clipboard!',
- 'tests_live_preview' => 'Live preview',
-
- // ==========================================
- // GLOBAL & NAVIGATION
+ // 1. GLOBAL, NAVIGATION & ACTIONS
// ==========================================
'menu_home' => 'Home',
'menu_calendar' => 'Calendar',
'menu_budget' => 'Budget',
'menu_holidays' => 'Trips',
'menu_gifts' => 'Gifts',
+ 'menu_garage' => 'Garage',
+ 'menu_memo' => 'Notes',
+ 'menu_todo' => 'Todo',
+ 'menu_liste' => 'Lists',
+ 'menu_groceries' => 'Groceries',
'menu_calendar_ios' => 'iOS Calendar',
+ 'menu_printvault' => 'PrintVault',
+ 'menu_planka' => 'Planka',
+
'nav_home' => 'Home',
'nav_calendar' => 'Calendar',
'nav_budget' => 'Budget',
@@ -31,7 +25,6 @@ return [
'nav_gifts' => 'Gifts',
'aria_menu' => 'Mobile menu',
- // Buttons & global actions
'actions' => 'Actions',
'edit' => 'Edit',
'delete' => 'Delete',
@@ -41,28 +34,33 @@ return [
'btn_cancel' => 'Cancel',
'btn_delete' => 'Delete',
'btn_close' => 'Close',
+ 'btn_add' => 'Add',
'btn_back' => '◀ Back',
'btn_edit_bases' => '⚙️ Edit base values',
'btn_edit' => 'Edit',
- 'error_occured' => 'An error occurred.',
-
- // Generic words & errors
+
'error' => 'Error.',
+ 'error_occured' => 'An error occurred.',
+ 'error_network' => 'Network error',
+ 'error_generic' => 'An error occurred',
'confirm_delete' => 'Are you sure you want to delete this item?',
+ 'loading' => 'Loading...',
+ 'date' => 'Date',
+ 'settings' => 'Settings',
// Months & Days
- 'month_01' => 'January', 'month_02' => 'February', 'month_03' => 'March',
- 'month_04' => 'April', 'month_05' => 'May', 'month_06' => 'June',
- 'month_07' => 'July', 'month_08' => 'August', 'month_09' => 'September',
- 'month_10' => 'October', 'month_11' => 'November', 'month_12' => 'December',
- 'day_mon' => 'Mon', 'day_tue' => 'Tue', 'day_wed' => 'Wed',
- 'day_thu' => 'Thu', 'day_fri' => 'Fri', 'day_sat' => 'Sat', 'day_sun' => 'Sun',
+ 'month_01' => 'January', 'month_02' => 'February', 'month_03' => 'March', 'month_04' => 'April', 'month_05' => 'May', 'month_06' => 'June',
+ 'month_07' => 'July', 'month_08' => 'August', 'month_09' => 'September', 'month_10' => 'October', 'month_11' => 'November', 'month_12' => 'December',
+ 'month_jan' => 'January', 'month_feb' => 'February', 'month_mar' => 'March', 'month_apr' => 'April', 'month_may' => 'May', 'month_jun' => 'June',
+ 'month_jul' => 'July', 'month_aug' => 'August', 'month_sep' => 'September', 'month_oct' => 'October', 'month_nov' => 'November', 'month_dec' => 'December',
+ 'day_mon' => 'Mon', 'day_tue' => 'Tue', 'day_wed' => 'Wed', 'day_thu' => 'Thu', 'day_fri' => 'Fri', 'day_sat' => 'Sat', 'day_sun' => 'Sun',
// ==========================================
- // AUTHENTICATION / LOGIN
+ // 2. AUTHENTICATION / LOGIN
// ==========================================
'login_title' => 'Login - HouseHub',
'login_header' => 'Login',
+ 'login_subtitle' => 'Please sign in to continue',
'label_username' => 'Username',
'label_password' => 'Password',
'placeholder_username' => 'e.g. john',
@@ -70,101 +68,19 @@ return [
'btn_login_submit' => 'Sign in',
'logout' => 'Logout',
'btn_logout' => 'Logout',
+ 'login_remember_me' => 'Remember me',
'error_missing_fields' => 'All fields are required.',
'error_invalid_credentials' => 'Invalid credentials.',
- 'login_subtitle' => 'Please sign in to continue',
- 'login_remember_me' => 'Remember me',
-
- // --- SETTINGS ---
- 'error_csrf' => 'Invalid session (CSRF). Please reload the page.',
- 'set_err_min_module' => 'You must keep at least one active module.',
- 'set_success_modules' => 'Modules successfully updated.',
- 'set_success_lang' => 'Language updated.',
- 'set_err_empty_name' => 'First name cannot be empty.',
- 'set_success_profile' => 'Profile updated successfully.',
- 'set_err_wrong_pwd' => 'Incorrect current password.',
- 'set_err_pwd_length' => 'New password must be at least 6 characters long.',
- 'set_err_pwd_match' => 'Passwords do not match.',
- 'set_success_pwd' => 'Password successfully changed.',
- 'set_success_family' => 'Space name updated.',
- 'set_success_invite' => 'New invitation code generated.',
- 'set_err_bg_format' => 'Unsupported format (jpg, png, webp).',
- 'set_success_bg' => 'Home image updated.',
- 'set_err_upload' => 'Error during upload.',
- 'set_success_bg_reset' => 'Home image reset.',
- 'set_err_db_unavailable' => 'Family database unavailable.',
- 'set_err_ios_missing' => 'Please provide an iCloud ID, app password, and CalDAV URL.',
- 'set_success_ios' => 'iOS calendar connection saved.',
- 'set_success_ios_auto' => ' Calendar URL automatically detected.',
- 'set_err_ios_save' => 'Cannot save iOS connection: ',
- 'set_err_ios_none' => 'No iOS connection configured.',
- 'set_success_ios_test' => 'Valid iCloud CalDAV connection (HTTP %s).',
- 'set_err_ios_test' => 'Connection test failed (HTTP %s). Check your credentials.',
- 'set_err_ios_test_fail' => 'Connection test unavailable: ',
- 'set_success_ios_del' => 'iOS connection removed.',
- 'set_success_profile_add' => 'Profile for %s successfully added.',
- 'set_err_name_required' => 'First name is required.',
- 'set_success_profile_del' => 'Profile deleted.',
- 'set_title_page' => '⚙️ Settings',
- 'set_title_lang' => '🌐 Language',
- 'set_title_modules' => '🧩 Active Modules',
- 'set_desc_modules' => 'Choose the modules visible in the navigation (shared with all space members).',
- 'set_title_ios' => '📱 iOS Calendar Integration (CalDAV)',
- 'set_desc_ios' => 'Configure your iCloud calendar here to sync events created in HouseHub.',
- 'set_label_apple_id' => 'Apple ID (iCloud email)',
- 'set_label_apple_pwd' => 'Apple app password',
- 'set_label_apple_url' => 'CalDAV calendar URL',
- 'set_btn_test_ios' => 'Test connection',
- 'set_btn_disconnect_ios' => 'Disconnect',
- 'set_title_bg' => '🖼️ Home Image',
- 'set_desc_bg' => 'Background photo displayed on the homepage (shared with all members).',
- 'set_badge_custom_bg' => 'Custom image',
- 'set_label_new_bg' => 'New image (jpg, png, webp — max 10 MB)',
- 'set_btn_reset_bg' => '🔄 Reset to default image',
- 'set_confirm_reset_bg' => 'Revert to default image?',
- 'set_title_profile' => '👤 My Profile',
- 'set_label_username' => 'Username',
- 'set_label_display_name' => 'First name / Display name',
- 'set_label_profile_color' => 'My profile theme color',
- 'set_desc_profile_color' => 'This color will be used for your budget grids, calendars, and personal indicators.',
- 'set_title_pwd' => '🔒 Change Password',
- 'set_label_cur_pwd' => 'Current password',
- 'set_label_new_pwd' => 'New password',
- 'set_label_confirm_pwd' => 'Confirm',
- 'set_btn_edit' => 'Edit',
- 'set_title_family' => '🏠 My Family Space',
- 'set_label_family_name' => 'Space name',
- 'set_desc_invite' => 'Invitation code — share it to invite someone',
- 'set_title_copy' => 'Click to copy',
- 'set_msg_copied' => '✓ Copied!',
- 'set_btn_new_code' => '🔄 New code',
- 'set_confirm_new_code' => 'Regenerate code? The old one will be invalidated.',
- 'set_desc_register_link' => 'Registration link:',
- 'set_title_members' => 'Members',
- 'set_badge_admin' => 'Admin',
- 'set_title_attached' => '🧸 Attached Profiles',
- 'set_desc_attached' => 'Members managed by the household (Children, Nannies, Relatives) without direct access.',
- 'role_unknown' => 'Unknown',
- 'role_child' => '👶 Child',
- 'role_helper' => '💼 Helper',
- 'role_relative' => '👵 Relative',
- 'set_confirm_del_profile' => 'Permanently delete this profile?',
- 'set_empty_attached' => 'No attached profiles.',
- 'set_label_firstname' => 'First name',
- 'set_label_role' => 'Role',
- 'set_label_color' => 'Color',
- 'set_link_admin' => '→ Administration Panel',
- 'set_success_color' => 'Color updated!',
- 'error_network' => 'Network error',
// ==========================================
- // HOME / INDEX
+ // 3. HOME & DASHBOARD
// ==========================================
'home_title' => 'HouseHub - Home',
'home_welcome' => 'Welcome to HouseHub',
'home_subtitle' => 'Family organisation control centre.',
'home_logged_as' => 'Logged in as',
'home_modules_title' => 'Modules',
+
'mod_calendar_name' => 'Family Calendar',
'mod_calendar_desc' => 'Manage leave, childcare arrangements and weekly planning.',
'mod_holidays_name' => 'Trips',
@@ -177,52 +93,19 @@ return [
'mod_garage_desc' => 'Track vehicle maintenance, parts used and costs.',
'mod_memo_name' => 'Notes',
'mod_memo_desc' => 'Your memos, recipes, instructions and miscellaneous info with Markdown and attachments.',
- 'menu_memo' => 'Notes',
'mod_todo_name' => 'Todo',
'mod_todo_desc' => 'Manage tasks, shopping lists and family reminders.',
- 'mod_calendar_ios_name' => 'iOS Calendar',
- 'mod_calendar_ios_desc' => 'Sync HouseHub events with your iPhone calendar (iCloud CalDAV).',
- 'menu_todo' => 'Todo',
+ 'mod_liste_name' => 'Lists',
+ 'mod_liste_desc' => 'Shared named lists — groceries, DIY, pharmacy… As many lists as needed.',
'mod_groceries_name' => 'Groceries',
'mod_groceries_desc' => 'Shared list: add items and check them off when they are in your cart.',
- 'menu_groceries' => 'Groceries',
- 'groceries_placeholder_add' => 'e.g. milk, bread, tomatoes…',
- 'groceries_btn_add' => 'Add',
- 'groceries_btn_uncheck_all' => 'Reset cart checks',
- 'groceries_btn_delete_picked' => 'Remove checked items',
- 'groceries_subtitle' => '{pending} to pick up · {cart} in cart',
- 'groceries_added' => 'Added',
- 'groceries_updated' => 'Updated',
- 'groceries_deleted' => 'Removed',
- 'groceries_reset_next' => 'List ready for your next trip',
- 'groceries_picked_removed' => 'Checked items removed',
- 'groceries_label_empty' => 'Label cannot be empty',
- 'groceries_confirm_del_title' => 'Delete?',
- 'groceries_confirm_del_body' => 'Remove this product from the list?',
- 'groceries_confirm_uncheck_title' => 'Reset cart checks',
- 'groceries_confirm_uncheck_body' => 'All “in cart” checkmarks will be cleared. Items stay on the list.',
- 'groceries_confirm_clear_title' => 'Remove checked items',
- 'groceries_confirm_clear_body' => 'Every checked item will be deleted from the list.',
- 'groceries_empty' => 'Nothing yet. Add a product above.',
- 'groceries_aria_toggle' => 'Mark as in cart or still to pick up',
- 'groceries_section_pending' => 'To pick up',
- 'groceries_section_cart' => 'In cart',
- 'groceries_prompt_edit' => 'Edit product',
- 'groceries_btn_clear_list' => 'Clear list',
- 'groceries_confirm_empty_list_title' => 'Clear the entire list?',
- 'groceries_confirm_empty_list_body' => 'All products will be removed. They stay in history so you can add them again quickly.',
- 'groceries_list_cleared' => 'List cleared',
- 'groceries_history_title' => 'History — click to add',
- 'groceries_history_empty' => 'History fills as you add products (up to the limit set in Settings).',
- 'groceries_history_meta' => 'Up to {max} products · ',
- 'groceries_settings_link' => 'Settings',
- 'groceries_settings_title' => 'Groceries — history',
- 'groceries_settings_intro' => 'Maximum number of products remembered in history (no duplicates, case-insensitive).',
- 'groceries_settings_history_max' => 'History size',
- 'groceries_settings_history_hint' => 'Between 1 and 50. Oldest entries are removed when the limit is exceeded.',
- 'groceries_settings_saved' => 'Grocery preferences saved.',
- 'groceries_settings_error' => 'Could not save:',
- 'groceries_err_duplicate' => 'This product is already on the list.',
+ 'mod_calendar_ios_name' => 'iOS Calendar',
+ 'mod_calendar_ios_desc' => 'Sync HouseHub events with your iPhone calendar (iCloud CalDAV).',
+ 'mod_printvault_name'=> 'PrintVault',
+ 'mod_printvault_desc'=> 'Manage your 3D print files — STL, 3MF, GCode with interactive viewer.',
+ 'mod_planka_name' => 'Planka',
+ 'mod_planka_desc' => 'Manage your projects in Kanban mode with Planka.',
+
'cta_open' => 'Open',
'cta_explore' => 'Explore',
'cta_view_lists' => 'Unwrap',
@@ -232,51 +115,123 @@ return [
'cta_check' => 'Check off',
'cta_cart' => 'Go shopping',
'cta_sync' => 'Sync',
- 'mod_printvault_name' => 'PrintVault',
- 'mod_printvault_desc' => 'Manage your 3D print files — STL, 3MF, GCode with interactive viewer.',
- 'menu_printvault' => 'PrintVault',
'cta_print' => 'Print',
- 'mod_planka_name' => 'Planka',
- 'mod_planka_desc' => 'Manage your projects in Kanban mode with Planka.',
- 'menu_planka' => 'Planka',
-
- // --- SETTINGS : KIDS ---
- 'set_kids_title' => 'Household Kids',
- 'set_kids_desc' => 'Manage the list of kids to associate them with savings, gifts, etc.',
- 'set_add_kid_placeholder' => 'Kid\'s first name',
- 'set_btn_add_kid' => 'Add',
- 'set_err_kid_name' => 'The first name is required.',
- 'set_confirm_del_kid' => 'Delete this kid? (Their financial history will remain visible in the archives).',
- 'set_no_kids' => 'No kids configured for this household.',
- 'set_family_config' => 'Family Structure',
- 'set_global_params' => 'Global settings',
- 'set_care_modes' => 'Common childcare arrangements',
- 'set_add_care_mode' => 'Ajouter un modeAdd a mode',
- 'btn_save' => 'Save',
- 'settings_profile_added' => 'Profile of %s added successfully.',
- 'settings_err_name_required' => 'First name is required.',
- 'settings_attached_profiles_title' => 'Attached Profiles',
- 'settings_attached_profiles_desc' => 'Household members (Children, Nannies, Relatives) without direct access.',
- 'settings_no_attached_profiles' => 'No attached profiles.',
- 'label_firstname' => 'First Name',
- 'placeholder_firstname_ex' => 'e.g., Pol, Carole...',
- 'label_role' => 'Role',
- 'role_child_icon' => '👶 Child',
- 'role_helper_icon' => '💼 Helper',
- 'role_relative_icon' => '👵 Relative',
- 'role_unknown' => 'Unknown',
- 'label_color' => 'Color',
- 'confirm_delete_profile' => 'Permanently delete this profile?',
- 'change_color' => 'Change color',
- 'color_updated' => 'Color updated!',
- 'set_success_color_profile' => 'Profile color updated.',
- 'set_success_color_update' => 'Color updated!',
- 'set_desc_profile_color' => 'This color will be used for your budget grids, calendars, and personal indicators.',
- 'placeholder_apple_id' => 'name@icloud.com',
- 'placeholder_apple_pwd' => 'xxxx-xxxx-xxxx-xxxx',
// ==========================================
- // FAMILY CALENDAR
+ // 4. SETTINGS
+ // ==========================================
+ 'set_title_page' => '⚙️ Settings',
+ 'set_title_lang' => '🌐 Language',
+ 'set_title_modules' => '🧩 Active Modules',
+ 'set_desc_modules' => 'Choose the modules visible in the navigation.',
+ 'set_title_ios' => '📱 iOS Calendar Integration (CalDAV)',
+ 'set_desc_ios' => 'Configure your iCloud calendar here to sync events.',
+ 'set_label_apple_id' => 'Apple ID (iCloud email)',
+ 'set_label_apple_pwd' => 'Apple app password',
+ 'set_label_apple_url' => 'CalDAV calendar URL',
+ 'set_btn_test_ios' => 'Test connection',
+ 'set_btn_disconnect_ios' => 'Disconnect',
+ 'set_title_bg' => '🖼️ Home Image',
+ 'set_desc_bg' => 'Background photo displayed on the homepage.',
+ 'set_badge_custom_bg' => 'Custom image',
+ 'set_label_new_bg' => 'New image (jpg, png, webp — max 10 MB)',
+ 'set_btn_reset_bg' => '🔄 Reset to default image',
+ 'set_confirm_reset_bg' => 'Revert to default image?',
+ 'set_title_profile' => '👤 My Profile',
+ 'set_label_username' => 'Username',
+ 'set_label_display_name' => 'First name / Display name',
+ 'set_label_profile_color' => 'My profile theme color',
+ 'set_desc_profile_color' => 'This color will be used for your budget grids, calendars, and personal indicators.',
+ 'set_title_pwd' => '🔒 Change Password',
+ 'set_label_cur_pwd' => 'Current password',
+ 'set_label_new_pwd' => 'New password',
+ 'set_label_confirm_pwd' => 'Confirm',
+ 'set_btn_edit' => 'Edit',
+ 'set_title_family' => '🏠 My Family Space',
+ 'set_label_family_name' => 'Space name',
+ 'set_desc_invite' => 'Invitation code — share it to invite someone',
+ 'set_title_copy' => 'Click to copy',
+ 'set_msg_copied' => '✓ Copied!',
+ 'set_btn_new_code' => '🔄 New code',
+ 'set_confirm_new_code' => 'Regenerate code? The old one will be invalidated.',
+ 'set_desc_register_link' => 'Registration link:',
+ 'set_title_members' => 'Members',
+ 'set_badge_admin' => 'Admin',
+ 'set_title_attached' => '🧸 Attached Profiles',
+ 'set_desc_attached' => 'Household members without direct access.',
+ 'set_empty_attached' => 'No attached profiles.',
+ 'set_link_admin' => '→ Administration Panel',
+ 'set_kids_title' => 'Household Kids',
+ 'set_kids_desc' => 'Manage the list of kids to associate them with savings, gifts, etc.',
+ 'set_add_kid_placeholder' => 'Kid\'s first name',
+ 'set_btn_add_kid' => 'Add',
+ 'set_err_kid_name' => 'The first name is required.',
+ 'set_confirm_del_kid' => 'Delete this kid? (Their financial history will remain visible in the archives).',
+ 'set_no_kids' => 'No kids configured for this household.',
+ 'set_family_config' => 'Family Structure',
+ 'set_global_params' => 'Global settings',
+ 'set_care_modes' => 'Common childcare arrangements',
+ 'set_add_care_mode' => 'Add a mode',
+
+ // Labels Profiles
+ 'label_firstname' => 'First Name',
+ 'placeholder_firstname_ex' => 'e.g., Pol, Carole...',
+ 'label_role' => 'Role',
+ 'role_child' => '👶 Child',
+ 'role_child_icon' => '👶 Child',
+ 'role_helper' => '💼 Helper',
+ 'role_helper_icon' => '💼 Helper',
+ 'role_relative' => '👵 Relative',
+ 'role_relative_icon' => '👵 Relative',
+ 'role_unknown' => 'Unknown',
+ 'label_color' => 'Color',
+ 'change_color' => 'Change color',
+ 'confirm_delete_profile' => 'Permanently delete this profile?',
+
+ // Settings Messages
+ 'error_csrf' => 'Invalid session (CSRF). Please reload the page.',
+ 'set_err_min_module' => 'You must keep at least one active module.',
+ 'set_success_modules' => 'Modules successfully updated.',
+ 'set_success_lang' => 'Language updated.',
+ 'set_err_empty_name' => 'First name cannot be empty.',
+ 'set_success_profile' => 'Profile updated successfully.',
+ 'set_err_wrong_pwd' => 'Incorrect current password.',
+ 'set_err_pwd_length' => 'New password must be at least 6 characters long.',
+ 'set_err_pwd_match' => 'Passwords do not match.',
+ 'set_success_pwd' => 'Password successfully changed.',
+ 'set_success_family' => 'Space name updated.',
+ 'set_success_invite' => 'New invitation code generated.',
+ 'set_err_bg_format' => 'Unsupported format (jpg, png, webp).',
+ 'set_success_bg' => 'Home image updated.',
+ 'set_err_upload' => 'Error during upload.',
+ 'set_success_bg_reset' => 'Home image reset.',
+ 'set_err_db_unavailable' => 'Family database unavailable.',
+ 'set_err_ios_missing' => 'Please provide an iCloud ID, app password, and CalDAV URL.',
+ 'set_success_ios' => 'iOS calendar connection saved.',
+ 'set_success_ios_auto' => ' Calendar URL automatically detected.',
+ 'set_err_ios_save' => 'Cannot save iOS connection: ',
+ 'set_err_ios_none' => 'No iOS connection configured.',
+ 'set_success_ios_test' => 'Valid iCloud CalDAV connection (HTTP %s).',
+ 'set_err_ios_test' => 'Connection test failed (HTTP %s). Check your credentials.',
+ 'set_err_ios_test_fail' => 'Connection test unavailable: ',
+ 'set_success_ios_del' => 'iOS connection removed.',
+ 'set_success_profile_add' => 'Profile for %s successfully added.',
+ 'set_err_name_required' => 'First name is required.',
+ 'set_success_profile_del' => 'Profile deleted.',
+ 'set_success_color' => 'Color updated!',
+ 'set_success_color_profile' => 'Profile color updated.',
+ 'set_success_color_update' => 'Color updated!',
+ 'color_updated' => 'Color updated!',
+ 'settings_profile_added' => 'Profile of %s added successfully.',
+ 'settings_err_name_required' => 'First name is required.',
+ 'settings_attached_profiles_title' => 'Attached Profiles',
+ 'settings_attached_profiles_desc' => 'Household members without direct access.',
+ 'settings_no_attached_profiles' => 'No attached profiles.',
+ 'placeholder_apple_id' => 'name@icloud.com',
+ 'placeholder_apple_pwd' => 'xxxx-xxxx-xxxx-xxxx',
+
+ // ==========================================
+ // 5. FAMILY CALENDAR
// ==========================================
'fc_page_title' => 'HouseHub - Calendar',
'fc_main_header' => 'Family Calendar',
@@ -317,159 +272,93 @@ return [
'fc_err_fetch_gov' => 'Error connecting to the government API.',
'fc_err_no_data_gov' => 'No data found on the government API for this year.',
'fc_err_action' => 'Error during action: ',
- 'fc_err_select_leave' => "Please select a leave type.",
-'fc_confirm_del_catalog' => "Permanently delete leave %s from the catalog? This will also remove it from members using it.",
-'fc_confirm_del_member_leave' => "Do you really want to remove this leave for this member?",
+ 'fc_err_select_leave' => 'Please select a leave type.',
'fc_today_short' => 'Today',
'fc_today_title' => 'Today',
- 'fc_tab_foyer' => '🏡 Household',
- 'fc_tab_members' => '👥 Members & Rights',
- 'fc_select_member' => 'Select a family member:',
- 'fc_role_adult' => 'Adult',
- 'fc_role_child' => 'Child',
- 'fc_care_modes_title' => 'Associated Care Modes',
- 'fc_care_modes_desc' => 'Check the care modes that apply to this child.',
- 'fc_no_care_mode' => 'No care mode configured.',
- 'fc_matrix_title' => '👨👩👦 Leave Rights Matrix',
- 'fc_matrix_desc' => 'Declare your counter codes and renewal dates.',
- 'fc_matrix_code' => 'Code',
- 'fc_matrix_date' => 'Reset Date',
- 'fc_matrix_empty' => 'No counter configured.',
- 'fc_matrix_saved' => 'Rights matrix updated successfully! 💼',
- 'fc_child_saved' => 'Child subscription saved!',
- 'btn_add_counter' => '➕ Add',
- 'btn_save_rights' => '💾 Save',
- 'fc_modal_settings_title' => 'Calendar Settings',
- 'fc_zone_label' => 'School Zone (Holidays)',
- 'fc_zone_desc' => 'Determines the automatic school holiday calendar.',
- 'fc_care_modes_label' => 'Household Care Modes',
- 'fc_care_modes_desc' => 'Manage the global list of possible care modes for the family.',
- 'fc_add_mode_placeholder' => 'E.g., Nanny, Center, Grandparents...',
- 'fc_settings_updated' => 'Settings updated successfully!',
- 'fc_first_day' => 'First day of the week',
- 'fc_helper_recap' => 'Helper Summary',
- 'fc_no_helper_leaves' => 'No leaves taken this month.',
- 'fc_col_date' => 'Date',
- 'fc_col_type' => 'Type',
- 'fc_col_duration' => 'Duration',
- 'fc_full_year' => 'Full year',
- 'fc_custom_period' => 'Custom period...',
- 'fc_worked_days' => 'Worked (Est.)',
- 'fc_presence' => 'Presence',
- 'fc_working_days' => 'Working days',
- 'fc_absences' => 'Abs.',
- 'fc_recap_title' => 'Summary',
- 'fc_worked_est' => 'Worked (Est.)',
- 'fc_invalid_dates' => 'Please select valid dates.',
- 'fc_no_leaves_taken' => 'No leave taken.',
-
- // --- CALENDAR: SETTINGS (MEMBERS & DISPLAY) ---
- 'fc_tab_display' => '🖥️ Display',
- 'fc_display_title' => 'Display Settings',
- 'fc_display_desc' => 'Customize the default appearance and behavior of your calendar.',
- 'fc_default_view' => 'Default View',
- 'fc_view_month' => '1 month',
- 'fc_view_2months' => '2 months',
- 'fc_view_3months' => '3 months',
- 'fc_working_hours' => 'Default Care Hours',
- 'fc_working_hours_desc' => 'Example: 08:30-18:00',
-
- 'fc_role_unknown' => 'Unknown',
- 'fc_role_adult' => 'Adult',
- 'fc_role_child' => 'Child',
- 'fc_role_helper' => 'Helper',
- 'fc_error' => 'Error: ',
-
- 'fc_care_modes_title' => 'Default Care Modes',
- 'fc_care_modes_desc' => 'Which care modes apply to this child?',
- 'fc_no_care_mode' => 'No care mode configured for this household.',
- 'fc_child_saved' => 'Saved!',
-
- 'fc_matrix_title' => 'Leave Matrix',
- 'fc_matrix_desc' => 'Define quotas and renewal dates.',
- 'fc_matrix_empty' => 'No counters defined.',
- "fc_matrix_saved" => "Matrix saved!",
-
- 'fc_leave_obsolete' => 'Obsolete',
- 'fc_leave_code_placeholder' => 'Code...',
- 'fc_leave_method_fixed' => 'Fixed',
- 'fc_leave_method_accumulated' => 'Accrued',
-
- 'fc_date_format_placeholder' => 'DD/MM',
- 'fc_date_format_title' => 'DD/MM Format',
-
- 'fc_table_code' => 'Code',
- 'fc_table_method' => 'Method',
- 'fc_table_quota' => 'Quota',
- 'fc_table_renewal' => 'Renewal',
-
- 'btn_save_rights' => 'Save',
-
- 'fc_label_carry_over' => 'Incl. carried over days (Expiring) ⚠️',
- 'fc_carry_over_note' => 'Portion of the overall balance that will expire on the deadline.',
- 'fc_carry_max' => 'Max Carry Over',
- 'fc_carry_deadline' => 'Expiration Month',
- 'fc_deadline_none' => 'None',
- 'fc_allowance_help' => 'Fixed: Annual quota. Accrued: Added per month.',
- 'fc_carry_max_short' => 'Max carry-over',
- 'fc_edit_leave' => '✏️ Edit:',
- 'fc_not_modifiable' => 'Not modifiable',
- 'fc_add_leave' => '+ Add',
- 'fc_err_code_label' => 'Code and Label are required.',
- 'fc_catalog_updated' => 'Catalog updated!',
- 'fc_balance_corrected' => 'Balance corrected!',
- 'fc_no_leave_configured' => 'No leave configured.',
-
- // ==========================================
-// CALENDAR SETTINGS MODAL
-// ==========================================
-'fc_modal_settings_title' => 'Calendar Settings',
-'fc_tab_foyer' => 'Household',
-'fc_tab_members' => 'Members & Rights',
-
-// Household: School Zone
-'fc_zone_label' => 'School zone',
-'fc_zone_a' => 'Zone A',
-'fc_zone_b' => 'Zone B',
-'fc_zone_c' => 'Zone C',
-'fc_zone_other' => 'Other / Outside France',
-'fc_zone_desc' => 'Used to accurately display school holidays.',
-
-// Household: Care Modes
-'fc_care_modes_label' => 'Childcare options',
-'fc_add_mode_placeholder' => 'Ex: Nanny, Daycare...',
-'fc_care_modes_desc' => 'Add the different childcare options for your children.',
-'fc_empty_kids_msg' => 'No children are configured in your household yet.',
-'fc_link_settings' => 'Go to general settings',
-
-// Household: Leave Catalog
-'fc_leave_catalog_title' => 'Leave Catalog',
-'fc_leave_catalog_desc' => 'Define the possible leave types for the whole family.',
-'fc_add_leave_type' => 'Add a leave type',
-'fc_col_code' => 'Code',
-'fc_code_irreversible' => 'Irreversible',
-'fc_col_label' => 'Label',
-'fc_leave_label_ph' => 'Ex: PTO, Sick leave...',
-'fc_quota_default' => 'Default quota',
-'fc_reset_month' => 'Reset month',
-
-// Members
-'fc_select_member' => 'Select a member:',
-
-// Months
-'month_jan' => 'January',
-'month_feb' => 'February',
-'month_mar' => 'March',
-'month_apr' => 'April',
-'month_may' => 'May',
-'month_jun' => 'June',
-'month_jul' => 'July',
-'month_aug' => 'August',
-'month_sep' => 'September',
-'month_oct' => 'October',
-'month_nov' => 'November',
-'month_dec' => 'December',
+ 'fc_tab_foyer' => '🏡 Household',
+ 'fc_tab_members' => '👥 Members & Rights',
+ 'fc_select_member' => 'Select a family member:',
+ 'fc_role_adult' => 'Adult',
+ 'fc_role_child' => 'Child',
+ 'fc_role_helper' => 'Helper',
+ 'fc_role_unknown' => 'Unknown',
+ 'fc_care_modes_title' => 'Associated Care Modes',
+ 'fc_no_care_mode' => 'No care mode configured.',
+ 'fc_matrix_title' => '👨👩👦 Leave Rights Matrix',
+ 'fc_matrix_desc' => 'Declare your counter codes and renewal dates.',
+ 'fc_matrix_code' => 'Code',
+ 'fc_matrix_date' => 'Reset Date',
+ 'fc_matrix_empty' => 'No counter configured.',
+ 'fc_matrix_saved' => 'Rights matrix updated successfully! 💼',
+ 'fc_child_saved' => 'Child subscription saved!',
+ 'btn_add_counter' => '➕ Add',
+ 'btn_save_rights' => '💾 Save',
+ 'fc_modal_settings_title' => 'Calendar Settings',
+ 'fc_zone_label' => 'School Zone (Holidays)',
+ 'fc_zone_a' => 'Zone A',
+ 'fc_zone_b' => 'Zone B',
+ 'fc_zone_c' => 'Zone C',
+ 'fc_zone_other' => 'Other / Outside France',
+ 'fc_zone_desc' => 'Determines the automatic school holiday calendar.',
+ 'fc_care_modes_label' => 'Household Care Modes',
+ 'fc_care_modes_desc' => 'Manage the global list of possible care modes for the family.',
+ 'fc_add_mode_placeholder' => 'E.g., Nanny, Center, Grandparents...',
+ 'fc_empty_kids_msg' => 'No children are configured in your household yet.',
+ 'fc_link_settings' => 'Go to general settings',
+ 'fc_settings_updated' => 'Settings updated successfully!',
+ 'fc_first_day' => 'First day of the week',
+ 'fc_helper_recap' => 'Helper Summary',
+ 'fc_no_helper_leaves' => 'No leaves taken this month.',
+ 'fc_col_date' => 'Date',
+ 'fc_col_type' => 'Type',
+ 'fc_col_duration' => 'Duration',
+ 'fc_full_year' => 'Full year',
+ 'fc_custom_period' => 'Custom period...',
+ 'fc_worked_days' => 'Worked (Est.)',
+ 'fc_tab_display' => '🖥️ Display',
+ 'fc_display_title' => 'Display Settings',
+ 'fc_display_desc' => 'Customize the default appearance and behavior of your calendar.',
+ 'fc_default_view' => 'Default View',
+ 'fc_working_hours' => 'Default Care Hours',
+ 'fc_working_hours_desc' => 'Example: 08:30-18:00',
+ 'fc_error' => 'Error: ',
+ 'fc_leave_catalog_title' => 'Leave Catalog',
+ 'fc_leave_catalog_desc' => 'Define the possible leave types for the whole family.',
+ 'fc_add_leave_type' => 'Add a leave type',
+ 'fc_col_code' => 'Code',
+ 'fc_code_irreversible' => 'Irreversible',
+ 'fc_col_label' => 'Label',
+ 'fc_leave_label_ph' => 'Ex: PTO, Sick leave...',
+ 'fc_quota_default' => 'Default quota',
+ 'fc_reset_month' => 'Reset month',
+ 'fc_leave_obsolete' => 'Obsolete',
+ 'fc_leave_code_placeholder' => 'Code...',
+ 'fc_leave_method_fixed' => 'Fixed',
+ 'fc_leave_method_accumulated'=> 'Accrued',
+ 'fc_date_format_placeholder'=> 'DD/MM',
+ 'fc_date_format_title' => 'DD/MM Format',
+ 'fc_table_code' => 'Code',
+ 'fc_table_method' => 'Method',
+ 'fc_table_quota' => 'Quota',
+ 'fc_table_renewal' => 'Renewal',
+ 'fc_label_carry_over' => 'Incl. carried over days (Expiring) ⚠️',
+ 'fc_carry_over_note' => 'Portion of the overall balance that will expire on the deadline.',
+ 'fc_carry_max' => 'Max Carry Over',
+ 'fc_carry_deadline' => 'Expiration Month',
+ 'fc_deadline_none' => 'None',
+ 'fc_allowance_help' => 'Fixed: Annual quota. Accrued: Added per month.',
+ 'fc_carry_max_short' => 'Max carry-over',
+ 'fc_edit_leave' => '✏️ Edit:',
+ 'fc_not_modifiable' => 'Not modifiable',
+ 'fc_add_leave' => '+ Add',
+ 'fc_err_code_label' => 'Code and Label are required.',
+ 'fc_catalog_updated' => 'Catalog updated!',
+ 'fc_balance_corrected' => 'Balance corrected!',
+ 'fc_no_leave_configured' => 'No leave configured.',
+ 'fc_confirm_del_catalog' => 'Permanently delete leave %s from the catalog? This will also remove it from members using it.',
+ 'fc_confirm_del_member_leave'=> 'Do you really want to remove this leave for this member?',
+ // Calendar Legends
'leg_presence' => 'Pep presence',
'leg_school_holidays' => 'School holidays',
'leg_public_holiday' => 'Public holiday',
@@ -478,10 +367,9 @@ return [
'leg_centre' => 'Centre',
'leg_avis' => 'Notice',
'fc_menu_sick' => 'Sick',
- 'care_nounou' => 'Nanny',
- 'care_centre' => 'Daycare',
- 'care_avis' => 'Grandparents',
-
+ 'care_nounou' => 'Nanny',
+ 'care_centre' => 'Daycare',
+ 'care_avis' => 'Grandparents',
'vac_toussaint' => 'All Saints\' holidays',
'vac_noel' => 'Christmas holidays',
'vac_hiver' => 'Winter holidays',
@@ -490,12 +378,11 @@ return [
'vac_ete' => 'Summer holidays',
'btn_off' => 'Off',
'btn_extra' => 'Extra',
-
- 'fc_alert_burn_days' => '⚠️ Risk of losing: %s d to take before %s',
- 'fc_alert_burn_jra' => '⚠️ JRA: Only 2 days can be carried over after February!',
+ 'fc_alert_burn_days' => '⚠️ Risk of losing: %s d to take before end of cycle',
+ 'fc_alert_burn_jra' => '⚠️ Alert: Carried over days expire at the end of this month!',
// ==========================================
- // HOLIDAYS (TRIPS)
+ // 6. HOLIDAYS (TRIPS)
// ==========================================
'hdl_title_list' => 'HouseHub - My Trips',
'hdl_title_detail' => 'HouseHub - Trip details',
@@ -570,6 +457,8 @@ return [
'hdl_to_place' => 'To place',
'hdl_from' => 'From',
'hdl_to' => 'To',
+
+ // Weather & Holidays specific
'weather_forecast' => 'Weather forecast',
'weather_not_available' => 'Weather unavailable',
'temp_max' => 'Max temp.',
@@ -637,7 +526,7 @@ return [
'to_place' => '📥 To place',
// ==========================================
- // BUDGET (GLOBAL & CATEGORIES)
+ // 7. BUDGET (GLOBAL, SUIVI, PREV, EPARGNE, PROVISIONS)
// ==========================================
'budget_page_title' => 'HouseHub - Budget',
'budget_main_header' => 'Budget Management',
@@ -645,9 +534,16 @@ return [
'budget_tab_prev' => 'Budget 2026',
'budget_tab_savings' => 'Savings',
'budget_tab_recap' => 'Summary',
+ 'budget_tab_provisions' => 'Provisions',
+ 'budget_tab_kids' => 'Kids',
'budget_err_file_not_found' => 'Oops! File not found.',
'budget_err_file_detail' => 'Check that the file views/%s.php exists.',
'budget_err_not_authorized' => 'Page not authorised.',
+ 'bud_err_tech' => 'A technical error occurred.',
+ 'bud_err_server' => 'Server error: ',
+ 'bud_err_delete' => 'Error while deleting.',
+
+ // Categories (Budget)
'cat_income' => 'Income',
'cat_fmcg' => 'Groceries (FMCG)',
'cat_fuel' => 'Fuel',
@@ -655,12 +551,14 @@ return [
'cat_fixed' => 'Fixed costs',
'cat_others' => 'Other / Unexpected',
'cat_savings' => 'Savings',
- 'budget_tab_kids' => 'Kids',
+
+ // Settings (Budget)
'budget_settings_title' => 'Budget Settings',
'bs_tab_accounts' => '💳 Accounts',
'bs_tab_categories' => '🏷️ Categories',
'bs_tab_rules' => '🤖 Import Rules',
'bs_tab_salaries' => '💼 Salaries',
+ 'bs_tab_csv' => '📥 CSV Import',
'bs_empty_accounts' => 'No accounts configured.',
'bs_type_checking' => 'Checking',
'bs_type_savings' => 'Savings',
@@ -690,38 +588,38 @@ return [
'bs_currency_label' => 'Household Currency',
'bs_currency_desc' => 'Main currency used for displaying your accounts and budgets.',
'bs_currency_updated' => 'Currency updated successfully!',
- // ONGLET CSV MAPPING
- 'bs_csv_title' => 'CSV Import Format',
- 'bs_csv_desc' => 'Configure the columns that match your bank\'s export file.',
- 'bs_csv_delimiter' => 'Delimiter',
- 'bs_csv_delim_semi' => 'Semicolon (;)',
- 'bs_csv_delim_comma' => 'Comma (,)',
- 'bs_csv_delim_tab' => 'Tab',
- 'bs_csv_date_format' => 'Date Format',
- 'bs_csv_col_index' => 'Column Indexes',
- 'bs_csv_col_index_help' => '(Note: the 1st column is Number 0)',
- 'bs_csv_col_date' => 'Col #: Date',
- 'bs_csv_col_label' => 'Col #: Label / Description',
- 'bs_csv_amount_mgmt' => 'Amount Management',
- 'bs_csv_amount_single' => 'Single column (Positive = Income, Negative = Expense)',
- 'bs_csv_amount_split' => 'Two separate columns (Debit / Credit)',
- 'bs_csv_col_amount' => 'Col #: Amount',
- 'bs_csv_col_debit' => 'Col #: Debit',
- 'bs_csv_col_credit' => 'Col #: Credit',
- 'bs_csv_col_ref' => 'Col #: Unique Reference (Optional)',
- 'btn_save_format' => 'Save format',
- 'bs_csv_saved' => 'CSV format saved',
- 'bs_tab_csv' => '📥 CSV Import',
- 'bs_csv_settings_title' => 'Format Configuration',
- 'bs_csv_drop_title' => 'Drop your CSV file here',
- 'bs_csv_drop_desc' => 'or click to browse your files',
- 'bs_csv_err_type' => 'Error: Only .csv files are allowed.',
- 'bs_csv_file_ok' => 'File loaded',
- 'bs_csv_preview_title' => 'Columns Preview',
- 'bs_csv_empty_col' => 'Empty',
- 'bs_csv_no_data' => 'No transaction row found in this file.',
+
+ // CSV Mapping (Budget)
+ 'bs_csv_title' => 'CSV Import Format',
+ 'bs_csv_desc' => 'Configure the columns that match your bank\'s export file.',
+ 'bs_csv_delimiter' => 'Delimiter',
+ 'bs_csv_delim_semi' => 'Semicolon (;)',
+ 'bs_csv_delim_comma' => 'Comma (,)',
+ 'bs_csv_delim_tab' => 'Tab',
+ 'bs_csv_date_format' => 'Date Format',
+ 'bs_csv_col_index' => 'Column Indexes',
+ 'bs_csv_col_index_help' => '(Note: the 1st column is Number 0)',
+ 'bs_csv_col_date' => 'Col #: Date',
+ 'bs_csv_col_label' => 'Col #: Label / Description',
+ 'bs_csv_amount_mgmt' => 'Amount Management',
+ 'bs_csv_amount_single' => 'Single column (Positive = Income, Negative = Expense)',
+ 'bs_csv_amount_split' => 'Two separate columns (Debit / Credit)',
+ 'bs_csv_col_amount' => 'Col #: Amount',
+ 'bs_csv_col_debit' => 'Col #: Debit',
+ 'bs_csv_col_credit' => 'Col #: Credit',
+ 'bs_csv_col_ref' => 'Col #: Unique Reference (Optional)',
+ 'btn_save_format' => 'Save format',
+ 'bs_csv_saved' => 'CSV format saved',
+ 'bs_csv_settings_title' => 'Format Configuration',
+ 'bs_csv_drop_title' => 'Drop your CSV file here',
+ 'bs_csv_drop_desc' => 'or click to browse your files',
+ 'bs_csv_err_type' => 'Error: Only .csv files are allowed.',
+ 'bs_csv_file_ok' => 'File loaded',
+ 'bs_csv_preview_title' => 'Columns Preview',
+ 'bs_csv_empty_col' => 'Empty',
+ 'bs_csv_no_data' => 'No transaction row found in this file.',
- // ONBOARDING BUDGET
+ // Onboarding Budget
'bs_onb_title' => 'Welcome! Let\'s set up your budget:',
'bs_onb_desc' => 'Complete these steps so the app can calculate your remaining budget:',
'bs_onb_cat_link' => 'Categories',
@@ -734,9 +632,9 @@ return [
'bs_onb_items_desc' => 'Go to the Summary tab to list your fixed expenses (Rent, Insurance...).',
'bs_rule_search_ph' => '🔍 Search for a keyword (e.g. WALMART)...',
'error_loading_settings' => 'Error loading settings',
- 'settings' => 'Settings',
+ 'bud_err_delete_system_cat' => 'Cannot delete a core system category.',
- // --- BUDGET: TRACKING ---
+ // Budget : Tracking
'bud_rem_school' => 'School (estimated remaining)',
'bud_rem_fmcg' => 'Groceries (estimated remaining)',
'bud_rem_fuel' => 'Fuel (estimated remaining)',
@@ -792,8 +690,9 @@ return [
'bud_bar_actual' => 'Actual',
'bud_bar_theoretical' => 'Theoretical',
'bud_bar_max_cap' => 'Max capacity',
+ 'bud_select_beneficiary' => 'Choose an expected income',
- // --- BUDGET: RECAP ---
+ // Budget : Recap
'bud_recap_monthly_title' => 'Monthly summary',
'bud_recap_btn_add' => 'Add a cost / income',
'bud_planned_amount' => 'Planned amount',
@@ -833,46 +732,16 @@ return [
'bud_label_regularization' => 'Regularisation',
'bud_reg_none' => 'None',
'bud_recap_confirm_delete' => 'Are you sure you want to delete this item?',
- 'bud_err_delete' => 'Error while deleting.',
- 'bud_prev_monthly_target' => 'Target amount / Monthly payment (€)',
- 'bud_prev_transfer_dest' => 'Transfer destination',
- 'bud_prev_none' => 'No destination (Standard expense)',
+ 'bud_prev_monthly_target' => 'Target amount / Monthly payment (€)',
+ 'bud_prev_transfer_dest' => 'Transfer destination',
+ 'bud_prev_none' => 'No destination (Standard expense)',
- // --- BUDGET: SAVINGS ---
+ // Budget : Savings
'bud_sav_add_month' => 'Enter a month',
'bud_sav_add_one_month' => '+1 Month',
'bud_sav_no_data' => 'No data for %s.',
'bud_sav_post_month' => 'Category / Month',
'bud_sav_from_date' => 'From %s',
- 'bud_sav_edit_modal' => 'Edit with modal',
- 'bud_sav_delete_month' => 'Delete entire month',
- 'bud_sav_total_bank' => 'Total bank',
- 'bud_sav_extra' => 'Extra',
- 'bud_sav_modal_title_add' => 'Enter a month',
- 'bud_sav_modal_title_edit' => 'Edit:',
- 'bud_sav_month_concerned' => 'Month concerned',
- 'bud_sav_total_bank_eur' => 'Total in bank (€)',
- 'bud_sav_ventilation' => 'Breakdown',
- 'bud_sav_adj_help' => 'Use the adjustment (+/-) to recalculate automatically.',
- 'bud_sav_add_line' => 'Line',
- 'bud_sav_current' => 'Current',
- 'bud_sav_adjust' => 'Adj. (+/-)',
- 'bud_sav_new' => 'New',
- 'bud_sav_sum_mode_title' => 'Enable quick addition',
- 'bud_sav_selection' => 'Selection:',
- 'bud_sav_ph_name' => 'Name (e.g. Holidays)',
- 'bud_sav_saving' => 'Saving...',
- 'bud_err_tech' => 'A technical error occurred.',
- 'bud_sav_confirm_delete_month' => 'Delete ALL of month %m for %o?',
- 'bud_sav_prompt_duplicate' => "Do you want to copy data from %s to %t1?\n\nEnter the new TOTAL bank balance (€) for %t2:",
- 'bud_err_server' => 'Server error: ',
- 'bud_err_network_dup' => 'Network error during duplication.',
- 'budget_tab_kids' => 'Kids 👶',
- 'bud_sav_add_one_month' => '+1 Month',
- 'bud_sav_add_month' => 'Add a month',
- 'bud_sav_no_data' => 'No savings data for %s.',
- 'bud_sav_post_month' => 'Item / Month',
- 'bud_sav_from_date' => 'From %s',
'bud_sav_edit_modal' => 'Edit this month',
'bud_sav_delete_month' => 'Delete this month',
'bud_sav_total_bank' => 'TOTAL BANK',
@@ -884,27 +753,20 @@ return [
'bud_sav_ventilation' => 'Accounts breakdown',
'bud_sav_adj_help' => 'Enter adjustments (+/-) to auto-calculate.',
'bud_sav_add_line' => 'Add line',
- 'bud_category' => 'Category',
'bud_sav_current' => 'Current',
'bud_sav_adjust' => 'Adjustment',
'bud_sav_new' => 'New',
'bud_sav_sum_mode_title' => 'Toggle calculator',
'bud_sav_selection' => 'Selection:',
'bud_sav_ph_name' => 'Account name',
- 'bud_sav_new_line' => 'New line',
-'bud_sav_prompt_new_line' => 'Name of the new savings line:',
-
- // JS & Errors
+ 'bud_sav_new_line' => 'New line',
+ 'bud_sav_prompt_new_line' => 'Name of the new savings line:',
'bud_sav_confirm_delete_month' => 'Are you sure you want to delete all data of %m for %o?',
'bud_sav_prompt_duplicate' => "Do you want to duplicate data from %s to %t1?\n\nEnter the new BANK TOTAL (€) for %t2:",
- 'bud_err_tech' => 'A technical error occurred.',
- 'bud_err_server' => 'Server error: ',
'bud_err_network_dup' => 'Network error during duplication.',
'bud_sav_saving' => 'Saving...',
- 'bud_err_delete' => 'Error during deletion.',
- 'bud_err_delete_system_cat' => 'Cannot delete a core system category.',
- // --- BUDGET: FORECAST ---
+ // Budget : Forecast
'bud_prev_incomes' => 'Income',
'bud_prev_person' => 'Person',
'bud_prev_salary' => 'Salary',
@@ -939,125 +801,93 @@ return [
'bud_prev_confirm_copy' => "Do you want to copy data from %s to %t?\n\n⚠️ This will overwrite all values already present for %t.",
'bud_prev_confirm_transfers' => "Confirm that %p has made all their transfers for %m?\n\nThis will automatically update Savings.",
'bud_prev_label_name' => 'Name',
- 'bud_adv_title' => 'Advances & Family Tricount',
- 'bud_adv_add' => 'Add an Advance',
- 'bud_adv_edit' => 'Edit Advance',
- 'bud_adv_who_paid' => 'Who paid?',
- 'bud_adv_payer' => 'Payer',
- 'bud_adv_has_advanced' => '%s advanced:',
- 'bud_adv_cc_label' => 'on the joint account',
- 'bud_adv_livret_label' => 'from their savings account',
- 'bud_adv_cc_balance_title' => 'Joint Account Balance',
- 'bud_adv_owed_to' => '%s € are owed to %s',
- 'bud_adv_balanced' => 'Accounts are perfectly balanced!',
- 'bud_adv_saved_badge' => 'Savings',
- 'bud_adv_already_saved' => 'This money comes from a savings account',
- 'bud_adv_ph_desc' => 'e.g., Groceries, Electricity bill...',
- 'bud_adv_confirm_resolve' => 'Confirm the complete reimbursement of this advance?',
- 'bud_adv_confirm_delete' => 'Permanently delete this advance?',
- 'date' => 'Date',
- 'bud_label_name' => 'Description',
- 'bud_amount' => 'Amount',
- 'actions' => 'Actions',
- 'edit' => 'Edit',
- 'delete' => 'Delete',
- 'btn_cancel' => 'Cancel',
- 'btn_save' => 'Save',
- 'bud_prev_target_ph' => 'E.g., 150',
- 'bud_prev_transfer_to' => 'To',
+ 'bud_prev_target_ph' => 'E.g., 150',
+ 'bud_prev_transfer_to' => 'To',
- // --- Module Budget : Provisions & Optimisation ---
-'budget_provisions_title' => 'Provisions & Cashflow Optimization',
-'btn_optimize_cashflow' => 'Optimize My Savings',
-'add_new_provision' => 'Anticipate an upcoming major expense',
-'provision_label' => 'Expense description',
-'provision_placeholder_wood' => 'E.g., Firewood order, Car service...',
-'amount' => 'Amount',
-'expected_date' => 'Expected date',
-'btn_add' => 'Add',
-'upcoming_provisions_list' => 'Scheduled expenses',
-'optimization_assistant_title' => 'Fortnightly Interest Optimization Assistant',
-'error_generic' => 'An error occurred',
-'success_add_provision' => 'Forecasted expense added successfully!',
-'no_provisions' => 'No forecasted expenses registered at the moment.',
-'btn_delete' => 'Delete',
-'savings_this_month' => 'Total savings to allocate this month',
-'calculate' => 'Calculate optimal strategy',
-'date_past_warning' => 'The selected date has already passed!',
-'budget_tab_provisions' => 'Forecasts',
+ // Budget : Tricount / Advances
+ 'bud_adv_title' => 'Advances & Family Tricount',
+ 'bud_adv_add' => 'Add an Advance',
+ 'bud_adv_edit' => 'Edit Advance',
+ 'bud_adv_who_paid' => 'Who paid?',
+ 'bud_adv_payer' => 'Payer',
+ 'bud_adv_has_advanced' => '%s advanced:',
+ 'bud_adv_cc_label' => 'on the joint account',
+ 'bud_adv_livret_label' => 'from their savings account',
+ 'bud_adv_cc_balance_title' => 'Joint Account Balance',
+ 'bud_adv_owed_to' => '%s € are owed to %s',
+ 'bud_adv_balanced' => 'Accounts are perfectly balanced!',
+ 'bud_adv_saved_badge' => 'Savings',
+ 'bud_adv_already_saved' => 'This money comes from a savings account',
+ 'bud_adv_ph_desc' => 'e.g., Groceries, Electricity bill...',
+ 'bud_adv_confirm_resolve' => 'Confirm the complete reimbursement of this advance?',
+ 'bud_adv_confirm_delete' => 'Permanently delete this advance?',
+
+ // Budget : Provisions & Optimization
+ 'budget_provisions_title' => 'Provisions & Cashflow Optimization',
+ 'btn_optimize_cashflow' => 'Optimize My Savings',
+ 'add_new_provision' => 'Anticipate an upcoming major expense',
+ 'provision_label' => 'Expense description',
+ 'provision_placeholder_wood' => 'E.g., Firewood order, Car service...',
+ 'amount' => 'Amount',
+ 'expected_date' => 'Expected date',
+ 'upcoming_provisions_list' => 'Scheduled expenses',
+ 'optimization_assistant_title' => 'Fortnightly Interest Optimization Assistant',
+ 'success_add_provision' => 'Forecasted expense added successfully!',
+ 'no_provisions' => 'No forecasted expenses registered at the moment.',
+ 'savings_this_month' => 'Total savings to allocate this month',
+ 'calculate' => 'Calculate optimal strategy',
+ 'date_past_warning' => 'The selected date has already passed!',
// ==========================================
- // MODULE: GIFTS (gift-list)
+ // 8. GIFTS
// ==========================================
-
- // 1. Titles and headers
- 'gift_page_title' => 'Gift List',
- 'gift_main_title' => 'Gifts of %s', // %s will be replaced by the year (e.g., Gifts of 2026)
- 'settings' => 'Settings',
-
- // 2. Filters
- 'gift_filter_all_children' => 'All children',
- 'gift_filter_all_adults' => 'All adults',
-
- // 3. Content and empty states
- 'gift_add_gift' => 'Add',
- 'gift_empty_state_no_gifts' => 'No gifts recorded for this occasion.',
- 'gift_empty_state_no_filter' => 'No gifts match your filters.',
- 'gift_paid_by' => 'Paid by %s', // %s will be replaced by the payer's name
-
- // 4. Tricount Section (Balance & Refunds)
- 'gift_liquidations' => 'Balance & Refunds',
- 'gift_no_debt' => 'Everything is settled, no debts!',
- 'gift_owes' => 'owes',
- 'gift_view_matrix' => 'View detailed matrix',
- 'gift_debtor' => 'Debtor',
- 'gift_creditor' => 'Creditor',
-
- // 5. Modal: Add/Edit Gift
- 'gift_col_adult' => 'On behalf of',
- 'gift_modal_payer' => 'Paid by',
- 'gift_modal_gift_name' => 'Gift description',
- 'gift_modal_price' => 'Estimated / paid price (€)',
- 'gift_modal_link' => 'Product link (URL)',
- 'gift_modal_title_add' => 'Add for %s', // JS: %s = child's name
- 'gift_modal_title_edit' => 'Edit gift', // JS
- 'gift_confirm_delete' => 'Are you sure you want to delete this gift?', // JS
-
- // 6. Modal: Occasions Settings
+ 'gift_page_title' => 'Gift List',
+ 'gift_main_title' => 'Gifts of %s',
+ 'gift_filter_all_children' => 'All children',
+ 'gift_filter_all_adults' => 'All adults',
+ 'gift_add_gift' => 'Add',
+ 'gift_empty_state_no_gifts' => 'No gifts recorded for this occasion.',
+ 'gift_empty_state_no_filter' => 'No gifts match your filters.',
+ 'gift_paid_by' => 'Paid by %s',
+ 'gift_liquidations' => 'Balance & Refunds',
+ 'gift_no_debt' => 'Everything is settled, no debts!',
+ 'gift_owes' => 'owes',
+ 'gift_view_matrix' => 'View detailed matrix',
+ 'gift_debtor' => 'Debtor',
+ 'gift_creditor' => 'Creditor',
+ 'gift_col_adult' => 'On behalf of',
+ 'gift_modal_payer' => 'Paid by',
+ 'gift_modal_gift_name' => 'Gift description',
+ 'gift_modal_price' => 'Estimated / paid price (€)',
+ 'gift_modal_link' => 'Product link (URL)',
+ 'gift_modal_title_add' => 'Add for %s',
+ 'gift_modal_title_edit' => 'Edit gift',
+ 'gift_confirm_delete' => 'Are you sure you want to delete this gift?',
'gift_settings_title' => 'Occasions Settings',
'gift_settings_add_title' => '+ Add an occasion',
'gift_settings_name_placeholder' => 'Name (e.g. Valentine\'s Day)',
'gift_settings_date_placeholder' => 'MM-DD',
'gift_settings_date_help' => 'Date (MM-DD) is optional. Leave empty for a floating date.',
- 'gift_settings_empty' => 'No occasion configured.', // JS
- 'gift_settings_active' => 'Active', // JS
-
- // 7. Generic buttons
- 'btn_cancel' => 'Cancel',
- 'btn_save' => 'Save',
- 'btn_add' => 'Add',
- 'loading' => 'Loading...',
-
- // --- MODULE CADEAUX : SETTINGS ---
- 'gift_settings' => 'Settings',
- 'gift_tab_occasions' => 'Occasions & Events',
- 'gift_tab_proches' => 'Relatives (Outside household)',
- 'gift_settings_icon' => 'Icon',
- 'gift_settings_date' => 'Date (MM-DD)',
- 'gift_settings_add_occ' => 'Add an occasion',
- 'gift_settings_add_proche'=> 'Add a relative',
- 'gift_role_proche_adulte'=> 'Adult (Uncle, friend...)',
- 'gift_role_proche_enfant'=> 'Child (Nephew, niece...)',
- 'gift_ph_proche_name' => 'First name',
- 'gift_role_label' => 'Role',
- 'gift_settings_saved' => 'Settings saved!',
- 'gift_settings_edit_occ' => 'Edit occasion',
- 'gift_settings_edit_proche' => 'Edit relative',
+ 'gift_settings_empty' => 'No occasion configured.',
+ 'gift_settings_active' => 'Active',
+ 'gift_settings' => 'Settings',
+ 'gift_tab_occasions' => 'Occasions & Events',
+ 'gift_tab_proches' => 'Relatives (Outside household)',
+ 'gift_settings_icon' => 'Icon',
+ 'gift_settings_date' => 'Date (MM-DD)',
+ 'gift_settings_add_occ' => 'Add an occasion',
+ 'gift_settings_add_proche' => 'Add a relative',
+ 'gift_role_proche_adulte' => 'Adult (Uncle, friend...)',
+ 'gift_role_proche_enfant' => 'Child (Nephew, niece...)',
+ 'gift_ph_proche_name' => 'First name',
+ 'gift_role_label' => 'Role',
+ 'gift_settings_saved' => 'Settings saved!',
+ 'gift_settings_edit_occ' => 'Edit occasion',
+ 'gift_settings_edit_proche' => 'Edit relative',
// ==========================================
- // GARAGE MANAGER
+ // 9. GARAGE
// ==========================================
- 'menu_garage' => 'Garage',
'garage_page_title' => 'HouseHub - Garage',
'garage_stat_vehicles' => 'Vehicles',
'garage_stat_maintenances' => 'Services',
@@ -1106,4 +936,38 @@ return [
'garage_change_photo' => 'Change photo',
'garage_new_photo' => 'New photo',
'garage_update_photo' => 'Update',
-];
+
+ // ==========================================
+ // 10. LISTS & GROCERIES
+ // ==========================================
+ 'liste_placeholder_add' => 'Add an item...',
+ 'liste_btn_add' => 'Add',
+ 'liste_btn_uncheck_all' => 'Uncheck all',
+ 'liste_btn_delete_picked' => 'Delete checked items',
+ 'liste_btn_clear_all' => 'Clear list',
+ 'liste_subtitle' => '{pending} to do · {cart} checked',
+ 'liste_added' => 'Added',
+ 'liste_updated' => 'Updated',
+ 'liste_deleted' => 'Deleted',
+ 'liste_already_in' => 'Already in the list',
+ 'liste_confirm_clear' => 'Clear the entire list?',
+ 'liste_confirm_delete_list' => 'Delete this list and all its items?',
+ 'liste_history_title' => 'Recently used — click to add',
+ 'liste_new_list' => 'New list',
+ 'liste_list_name_placeholder'=> 'List name...',
+ 'liste_create' => 'Create',
+ 'liste_rename_list' => 'Rename',
+ 'liste_new_name' => 'New name:',
+ 'liste_list_deleted' => 'List deleted',
+ 'liste_list_created' => 'List created',
+ 'liste_list_renamed' => 'List renamed',
+ 'liste_edit_placeholder' => 'Edit item:',
+ 'liste_empty_state' => 'Create your first list using the + button above.',
+ 'liste_settings_title' => 'Lists — history',
+ 'liste_settings_intro' => 'Maximum number of items remembered in history (shared across lists).',
+ 'liste_settings_history_max' => 'History size',
+ 'liste_settings_history_hint'=> 'Between 1 and 50.',
+ 'groceries_settings_saved' => 'Preferences saved.',
+ 'groceries_settings_error' => 'Could not save:',
+ 'groceries_err_duplicate' => 'This product is already on the list.',
+];
\ No newline at end of file
diff --git a/includes/lang/fr.php b/includes/lang/fr.php
index 25db5a7..1b1a9d5 100644
--- a/includes/lang/fr.php
+++ b/includes/lang/fr.php
@@ -1,41 +1,30 @@
'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
+ // 1. GLOBAL, NAVIGATION & ACTIONS
// ==========================================
'menu_home' => 'Accueil',
'menu_calendar' => 'Calendrier',
'menu_budget' => 'Budget',
'menu_holidays' => 'Voyages',
'menu_gifts' => 'Cadeaux',
+ 'menu_garage' => 'Garage',
+ 'menu_memo' => 'Notes',
+ 'menu_todo' => 'Todo',
+ 'menu_liste' => 'Listes',
+ 'menu_groceries' => 'Courses',
'menu_calendar_ios' => 'Calendrier iOS',
+ 'menu_printvault' => 'PrintVault',
+ 'menu_planka' => 'Planka',
+
'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',
@@ -45,28 +34,33 @@ return [
'btn_cancel' => 'Annuler',
'btn_delete' => 'Supprimer',
'btn_close' => 'Fermer',
+ 'btn_add' => 'Ajouter',
'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.',
+ 'error_occured' => 'Une erreur est survenue.',
+ 'error_network' => 'Erreur réseau',
+ 'error_generic' => 'Une erreur est survenue',
'confirm_delete' => 'Es-tu sûr de vouloir supprimer cet élément ?',
+ 'loading' => 'Chargement...',
+ 'date' => 'Date',
+ 'settings' => 'Paramètres',
// 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',
+ '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',
+ 'month_jan' => 'Janvier', 'month_feb' => 'Février', 'month_mar' => 'Mars', 'month_apr' => 'Avril', 'month_may' => 'Mai', 'month_jun' => 'Juin',
+ 'month_jul' => 'Juillet', 'month_aug' => 'Août', 'month_sep' => 'Septembre', 'month_oct' => 'Octobre', 'month_nov' => 'Novembre', 'month_dec' => '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
+ // 2. AUTHENTIFICATION / LOGIN
// ==========================================
'login_title' => 'Connexion - HouseHub',
'login_header' => 'Connexion',
+ 'login_subtitle' => 'Veuillez vous identifier pour continuer',
'label_username' => 'Identifiant',
'label_password' => 'Mot de passe',
'placeholder_username' => 'ex: pacha',
@@ -74,19 +68,19 @@ return [
'btn_login_submit' => 'Se connecter',
'logout' => 'Déconnexion',
'btn_logout' => 'Déconnexion',
+ 'login_remember_me' => 'Se souvenir de moi',
'error_missing_fields' => 'Champs obligatoires.',
'error_invalid_credentials' => 'Identifiants incorrects.',
- 'login_subtitle' => 'Veuillez vous identifier pour continuer',
- 'login_remember_me' => 'Se souvenir de moi',
// ==========================================
- // ACCUEIL / INDEX
+ // 3. ACCUEIL & DASHBOARD
// ==========================================
'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',
@@ -99,49 +93,19 @@ return [
'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',
- // Module Liste (remplace Courses)
'mod_liste_name' => 'Listes',
'mod_liste_desc' => 'Listes partagées nommées — courses, bricolage, pharmacie… Autant de listes que nécessaire.',
- 'menu_liste' => 'Listes',
- 'liste_placeholder_add' => 'Ajouter un article…',
- 'liste_btn_add' => 'Ajouter',
- 'liste_btn_uncheck_all' => 'Tout décocher',
- 'liste_btn_delete_picked' => 'Supprimer les cochés',
- 'liste_btn_clear_all' => 'Vider la liste',
- 'liste_subtitle' => '{pending} à faire · {cart} cochés',
- 'liste_added' => 'Ajouté',
- 'liste_updated' => 'Modifié',
- 'liste_deleted' => 'Supprimé',
- 'liste_already_in' => 'Déjà dans la liste',
- 'liste_confirm_clear' => 'Vider toute la liste ?',
- 'liste_confirm_delete_list' => 'Supprimer cette liste et tous ses articles ?',
- 'liste_history_title' => 'Récemment utilisés — clic pour rajouter',
- 'liste_new_list' => 'Nouvelle liste',
- 'liste_list_name_placeholder'=> 'Nom de la liste…',
- 'liste_create' => 'Créer',
- 'liste_rename_list' => 'Renommer',
- 'liste_new_name' => 'Nouveau nom :',
- 'liste_list_deleted' => 'Liste supprimée',
- 'liste_list_created' => 'Liste créée',
- 'liste_list_renamed' => 'Liste renommée',
- 'liste_edit_placeholder' => 'Modifier l\'article :',
- 'liste_empty_state' => 'Créez votre première liste avec le bouton + ci-dessus.',
- 'liste_settings_title' => 'Listes — historique',
- 'liste_settings_intro' => 'Nombre maximum d\'articles mémorisés dans l\'historique (commun à toutes les listes).',
- 'liste_settings_history_max' => 'Taille de l\'historique',
- 'liste_settings_history_hint'=> 'Entre 1 et 50.',
- 'groceries_settings_saved' => 'Préférences enregistrées.',
- 'groceries_settings_error' => 'Impossible d\'enregistrer :',
- 'groceries_err_duplicate' => 'Ce produit est déjà dans la liste.',
+ 'mod_groceries_name' => 'Courses',
+ 'mod_groceries_desc' => 'Liste partagée : ajoutez des produits et cochez-les quand ils sont dans le caddie.',
+ 'mod_calendar_ios_name' => 'Calendrier iOS',
+ 'mod_calendar_ios_desc' => 'Synchronisez vos événements HouseHub avec votre calendrier iPhone (iCloud CalDAV).',
+ 'mod_printvault_name'=> 'PrintVault',
+ 'mod_printvault_desc'=> 'Gérez vos fichiers d\'impression 3D — STL, 3MF, GCode avec viewer interactif.',
+ 'mod_planka_name' => 'Planka',
+ 'mod_planka_desc' => 'Gérez vos projets en mode Kanban avec Planka.',
+
'cta_open' => 'Ouvrir',
'cta_explore' => 'Explorer',
'cta_view_lists' => 'Déballer',
@@ -151,133 +115,124 @@ return [
'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',
- 'mod_planka_name' => 'Planka',
- 'mod_planka_desc' => 'Gérez vos projets en mode Kanban avec Planka.',
- 'menu_planka' => 'Planka',
-
- // --- SETTINGS : ENFANTS ---
- 'set_kids_title' => 'Enfants du foyer',
- 'set_kids_desc' => 'Gérez la liste des enfants pour les associer à l\'épargne, aux cadeaux, etc.',
- 'set_add_kid_placeholder' => 'Prénom de l\'enfant',
- 'set_btn_add_kid' => 'Ajouter',
- 'set_err_kid_name' => 'Le prénom est requis.',
- 'set_confirm_del_kid' => 'Supprimer cet enfant ? (Son historique financier restera visible dans les archives).',
- 'set_no_kids' => 'Aucun enfant configuré pour ce foyer.',
- 'set_family_config' => 'Configuration du foyer',
- 'set_global_params' => 'Paramètres globaux',
- 'set_care_modes' => 'Modes de garde usuels',
- 'set_add_care_mode' => 'Ajouter un mode',
- 'btn_save_config' => 'Enregistrer',
- 'settings_profile_added' => 'Profil de %s ajouté avec succès.',
- 'settings_err_name_required' => 'Le prénom est obligatoire.',
- 'settings_attached_profiles_title' => 'Profils rattachés',
- 'settings_attached_profiles_desc' => 'Membres gérés par le foyer (Enfants, Nounous, Proches) n\'ayant pas d\'accès direct.',
- 'settings_no_attached_profiles' => 'Aucun profil rattaché.',
- 'label_firstname' => 'Prénom',
- 'placeholder_firstname_ex' => 'Ex: Pol, Carole...',
- 'label_role' => 'Rôle',
- 'role_child_icon' => '👶 Enfant',
- 'role_helper_icon' => '💼 Intervenant',
- 'role_relative_icon' => '👵 Proche',
- 'role_unknown' => 'Inconnu',
- 'label_color' => 'Couleur',
- 'confirm_delete_profile' => 'Supprimer définitivement ce profil ?',
- 'change_color' => 'Changer la couleur',
- 'color_updated' => 'Couleur mise à jour !',
- 'set_success_color_profile' => 'Couleur du profil mise à jour.',
- 'set_success_color_update' => 'Couleur mise à jour !',
- 'set_desc_profile_color' => 'Cette couleur sera utilisée pour vos grilles de budget, calendriers et indicateurs personnels.',
- 'placeholder_apple_id' => 'nom@icloud.com',
- 'placeholder_apple_pwd' => 'xxxx-xxxx-xxxx-xxxx',
-
- // Fichier : includes/lang/fr.php
-'error_csrf' => 'Session invalide (CSRF). Rechargez la page.',
-'set_err_min_module' => 'Vous devez garder au moins un module actif.',
-'set_success_modules' => 'Modules mis à jour avec succès.',
-'set_success_lang' => 'Langue mise à jour.',
-'set_err_empty_name' => 'Le prénom ne peut pas être vide.',
-'set_success_profile' => 'Profil mis à jour avec succès.',
-'set_err_wrong_pwd' => 'Mot de passe actuel incorrect.',
-'set_err_pwd_length' => 'Le nouveau mot de passe doit faire au moins 6 caractères.',
-'set_err_pwd_match' => 'Les mots de passe ne correspondent pas.',
-'set_success_pwd' => 'Mot de passe modifié avec succès.',
-'set_success_family' => 'Nom de l\'espace mis à jour.',
-'set_success_invite' => 'Nouveau code d\'invitation généré.',
-'set_err_bg_format' => 'Format non supporté (jpg, png, webp).',
-'set_success_bg' => 'Image d\'accueil mise à jour.',
-'set_err_upload' => 'Erreur lors de l\'upload.',
-'set_success_bg_reset' => 'Image d\'accueil réinitialisée.',
-'set_err_db_unavailable' => 'Base famille indisponible.',
-'set_err_ios_missing' => 'Merci de renseigner identifiant iCloud, mot de passe d\'app et URL CalDAV.',
-'set_success_ios' => 'Connexion calendrier iOS enregistrée.',
-'set_success_ios_auto' => ' URL du calendrier détectée automatiquement.',
-'set_err_ios_save' => 'Impossible d\'enregistrer la connexion iOS : ',
-'set_err_ios_none' => 'Aucune connexion iOS configurée.',
-'set_success_ios_test' => 'Connexion iCloud CalDAV valide (HTTP %s).',
-'set_err_ios_test' => 'Test connexion échoué (HTTP %s). Vérifiez vos identifiants.',
-'set_err_ios_test_fail' => 'Test connexion impossible : ',
-'set_success_ios_del' => 'Connexion iOS supprimée.',
-'set_success_profile_add' => 'Profil de %s ajouté avec succès.',
-'set_err_name_required' => 'Le prénom est obligatoire.',
-'set_success_profile_del' => 'Profil supprimé.',
-'set_title_page' => '⚙️ Paramètres',
-'set_title_lang' => '🌐 Langue / Language',
-'set_title_modules' => '🧩 Modules actifs',
-'set_desc_modules' => 'Choisissez les modules visibles dans la navigation (partagé avec tous les membres de l\'espace).',
-'set_title_ios' => '📱 Intégration Calendrier iOS (CalDAV)',
-'set_desc_ios' => 'Configurez ici votre calendrier iCloud pour synchroniser les événements créés dans HouseHub.',
-'set_label_apple_id' => 'Identifiant Apple (email iCloud)',
-'set_label_apple_pwd' => 'Mot de passe d\'app Apple',
-'set_label_apple_url' => 'URL du calendrier CalDAV',
-'set_btn_test_ios' => 'Tester la connexion',
-'set_btn_disconnect_ios' => 'Déconnecter',
-'set_title_bg' => '🖼️ Image d\'accueil',
-'set_desc_bg' => 'Photo de fond affichée sur la page d\'accueil (partagée avec tous les membres).',
-'set_badge_custom_bg' => 'Image personnalisée',
-'set_label_new_bg' => 'Nouvelle image (jpg, png, webp — max 10 Mo)',
-'set_btn_reset_bg' => '🔄 Remettre l\'image par défaut',
-'set_confirm_reset_bg' => 'Revenir à l\'image par défaut ?',
-'set_title_profile' => '👤 Mon profil',
-'set_label_username' => 'Nom d\'utilisateur',
-'set_label_display_name' => 'Prénom / Pseudo affiché',
-'set_label_profile_color' => 'Couleur thématique de mon profil',
-'set_desc_profile_color' => 'Cette couleur sera utilisée pour vos grilles de budget, calendriers et indicateurs personnels.',
-'set_title_pwd' => '🔒 Changer le mot de passe',
-'set_label_cur_pwd' => 'Mot de passe actuel',
-'set_label_new_pwd' => 'Nouveau mot de passe',
-'set_label_confirm_pwd' => 'Confirmer',
-'set_btn_edit' => 'Modifier',
-'set_title_family' => '🏠 Mon espace familial',
-'set_label_family_name' => 'Nom de l\'espace',
-'set_desc_invite' => 'Code d\'invitation — partagez-le pour inviter quelqu\'un',
-'set_title_copy' => 'Cliquer pour copier',
-'set_msg_copied' => '✓ Copié !',
-'set_btn_new_code' => '🔄 Nouveau code',
-'set_confirm_new_code' => 'Regénérer le code ? L\'ancien sera invalidé.',
-'set_desc_register_link' => 'Lien d\'inscription :',
-'set_title_members' => 'Membres',
-'set_badge_admin' => 'Admin',
-'set_title_attached' => '🧸 Profils rattachés',
-'set_desc_attached' => 'Membres gérés par le foyer (Enfants, Nounous, Proches) n\'ayant pas d\'accès direct.',
-'role_unknown' => 'Inconnu',
-'role_child' => '👶 Enfant',
-'role_helper' => '💼 Intervenant',
-'role_relative' => '👵 Proche',
-'set_confirm_del_profile' => 'Supprimer définitivement ce profil ?',
-'set_empty_attached' => 'Aucun profil rattaché.',
-'set_label_firstname' => 'Prénom',
-'set_label_role' => 'Rôle',
-'set_label_color' => 'Couleur',
-'set_link_admin' => '→ Panneau d\'administration',
-'set_success_color' => 'Couleur mise à jour !',
-'error_network' => 'Erreur réseau',
// ==========================================
- // FAMILY CALENDAR
+ // 4. PARAMÈTRES (SETTINGS)
+ // ==========================================
+ 'set_title_page' => '⚙️ Paramètres',
+ 'set_title_lang' => '🌐 Langue / Language',
+ 'set_title_modules' => '🧩 Modules actifs',
+ 'set_desc_modules' => 'Choisissez les modules visibles dans la navigation.',
+ 'set_title_ios' => '📱 Intégration Calendrier iOS (CalDAV)',
+ 'set_desc_ios' => 'Configurez ici votre calendrier iCloud pour synchroniser les événements.',
+ 'set_label_apple_id' => 'Identifiant Apple (email iCloud)',
+ 'set_label_apple_pwd' => 'Mot de passe d\'app Apple',
+ 'set_label_apple_url' => 'URL du calendrier CalDAV',
+ 'set_btn_test_ios' => 'Tester la connexion',
+ 'set_btn_disconnect_ios' => 'Déconnecter',
+ 'set_title_bg' => '🖼️ Image d\'accueil',
+ 'set_desc_bg' => 'Photo de fond affichée sur la page d\'accueil.',
+ 'set_badge_custom_bg' => 'Image personnalisée',
+ 'set_label_new_bg' => 'Nouvelle image (jpg, png, webp — max 10 Mo)',
+ 'set_btn_reset_bg' => '🔄 Remettre l\'image par défaut',
+ 'set_confirm_reset_bg' => 'Revenir à l\'image par défaut ?',
+ 'set_title_profile' => '👤 Mon profil',
+ 'set_label_username' => 'Nom d\'utilisateur',
+ 'set_label_display_name' => 'Prénom / Pseudo affiché',
+ 'set_label_profile_color' => 'Couleur thématique de mon profil',
+ 'set_desc_profile_color' => 'Cette couleur sera utilisée pour vos grilles de budget, calendriers et indicateurs personnels.',
+ 'set_title_pwd' => '🔒 Changer le mot de passe',
+ 'set_label_cur_pwd' => 'Mot de passe actuel',
+ 'set_label_new_pwd' => 'Nouveau mot de passe',
+ 'set_label_confirm_pwd' => 'Confirmer',
+ 'set_btn_edit' => 'Modifier',
+ 'set_title_family' => '🏠 Mon espace familial',
+ 'set_label_family_name' => 'Nom de l\'espace',
+ 'set_desc_invite' => 'Code d\'invitation — partagez-le pour inviter quelqu\'un',
+ 'set_title_copy' => 'Cliquer pour copier',
+ 'set_msg_copied' => '✓ Copié !',
+ 'set_btn_new_code' => '🔄 Nouveau code',
+ 'set_confirm_new_code' => 'Regénérer le code ? L\'ancien sera invalidé.',
+ 'set_desc_register_link' => 'Lien d\'inscription :',
+ 'set_title_members' => 'Membres',
+ 'set_badge_admin' => 'Admin',
+ 'set_title_attached' => '🧸 Profils rattachés',
+ 'set_desc_attached' => 'Membres gérés par le foyer n\'ayant pas d\'accès direct.',
+ 'set_empty_attached' => 'Aucun profil rattaché.',
+ 'set_link_admin' => '→ Panneau d\'administration',
+ 'set_kids_title' => 'Enfants du foyer',
+ 'set_kids_desc' => 'Gérez la liste des enfants pour les associer à l\'épargne, aux cadeaux, etc.',
+ 'set_add_kid_placeholder' => 'Prénom de l\'enfant',
+ 'set_btn_add_kid' => 'Ajouter',
+ 'set_err_kid_name' => 'Le prénom est requis.',
+ 'set_confirm_del_kid' => 'Supprimer cet enfant ? (Son historique financier restera visible dans les archives).',
+ 'set_no_kids' => 'Aucun enfant configuré pour ce foyer.',
+ 'set_family_config' => 'Configuration du foyer',
+ 'set_global_params' => 'Paramètres globaux',
+ 'set_care_modes' => 'Modes de garde usuels',
+ 'set_add_care_mode' => 'Ajouter un mode',
+ 'btn_save_config' => 'Enregistrer',
+
+ // Labels Profils
+ 'label_firstname' => 'Prénom',
+ 'placeholder_firstname_ex' => 'Ex: Pol, Carole...',
+ 'label_role' => 'Rôle',
+ 'role_child' => '👶 Enfant',
+ 'role_child_icon' => '👶 Enfant',
+ 'role_helper' => '💼 Intervenant',
+ 'role_helper_icon' => '💼 Intervenant',
+ 'role_relative' => '👵 Proche',
+ 'role_relative_icon' => '👵 Proche',
+ 'role_unknown' => 'Inconnu',
+ 'label_color' => 'Couleur',
+ 'change_color' => 'Changer la couleur',
+ 'confirm_delete_profile' => 'Supprimer définitivement ce profil ?',
+
+ // Messages Settings
+ 'error_csrf' => 'Session invalide (CSRF). Rechargez la page.',
+ 'set_err_min_module' => 'Vous devez garder au moins un module actif.',
+ 'set_success_modules' => 'Modules mis à jour avec succès.',
+ 'set_success_lang' => 'Langue mise à jour.',
+ 'set_err_empty_name' => 'Le prénom ne peut pas être vide.',
+ 'set_success_profile' => 'Profil mis à jour avec succès.',
+ 'set_err_wrong_pwd' => 'Mot de passe actuel incorrect.',
+ 'set_err_pwd_length' => 'Le nouveau mot de passe doit faire au moins 6 caractères.',
+ 'set_err_pwd_match' => 'Les mots de passe ne correspondent pas.',
+ 'set_success_pwd' => 'Mot de passe modifié avec succès.',
+ 'set_success_family' => 'Nom de l\'espace mis à jour.',
+ 'set_success_invite' => 'Nouveau code d\'invitation généré.',
+ 'set_err_bg_format' => 'Format non supporté (jpg, png, webp).',
+ 'set_success_bg' => 'Image d\'accueil mise à jour.',
+ 'set_err_upload' => 'Erreur lors de l\'upload.',
+ 'set_success_bg_reset' => 'Image d\'accueil réinitialisée.',
+ 'set_err_db_unavailable' => 'Base famille indisponible.',
+ 'set_err_ios_missing' => 'Merci de renseigner identifiant iCloud, mot de passe d\'app et URL CalDAV.',
+ 'set_success_ios' => 'Connexion calendrier iOS enregistrée.',
+ 'set_success_ios_auto' => ' URL du calendrier détectée automatiquement.',
+ 'set_err_ios_save' => 'Impossible d\'enregistrer la connexion iOS : ',
+ 'set_err_ios_none' => 'Aucune connexion iOS configurée.',
+ 'set_success_ios_test' => 'Connexion iCloud CalDAV valide (HTTP %s).',
+ 'set_err_ios_test' => 'Test connexion échoué (HTTP %s). Vérifiez vos identifiants.',
+ 'set_err_ios_test_fail' => 'Test connexion impossible : ',
+ 'set_success_ios_del' => 'Connexion iOS supprimée.',
+ 'set_success_profile_add' => 'Profil de %s ajouté avec succès.',
+ 'set_err_name_required' => 'Le prénom est obligatoire.',
+ 'set_success_profile_del' => 'Profil supprimé.',
+ 'set_success_color' => 'Couleur mise à jour !',
+ 'set_success_color_profile' => 'Couleur du profil mise à jour.',
+ 'set_success_color_update' => 'Couleur mise à jour !',
+ 'color_updated' => 'Couleur mise à jour !',
+ 'settings_profile_added' => 'Profil de %s ajouté avec succès.',
+ 'settings_err_name_required' => 'Le prénom est obligatoire.',
+ 'settings_attached_profiles_title' => 'Profils rattachés',
+ 'settings_attached_profiles_desc' => 'Membres gérés par le foyer (Enfants, Nounous, Proches) n\'ayant pas d\'accès direct.',
+ 'settings_no_attached_profiles' => 'Aucun profil rattaché.',
+ 'placeholder_apple_id' => 'nom@icloud.com',
+ 'placeholder_apple_pwd' => 'xxxx-xxxx-xxxx-xxxx',
+
+ // ==========================================
+ // 5. CALENDRIER FAMILIAL
// ==========================================
'fc_page_title' => 'HouseHub - Calendrier',
'fc_main_header' => 'Calendrier Familial',
@@ -318,163 +273,91 @@ return [
'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_err_select_leave' => "Veuillez sélectionner un type de congé.",
-'fc_confirm_del_catalog' => "Supprimer définitivement le congé %s du catalogue ? Cela le retirera également des membres qui l'utilisent.",
-'fc_confirm_del_member_leave' => "Voulez-vous vraiment retirer ce congé pour ce membre ?",
+ 'fc_err_select_leave' => 'Veuillez sélectionner un type de congé.',
'fc_today_short' => 'Auj.',
'fc_today_title' => "Aujourd'hui",
- 'care_nounou' => 'Nounou',
- 'care_centre' => 'Centre de loisirs',
- 'care_avis' => 'Avis',
- 'fc_tab_foyer' => '🏡 Foyer',
- 'fc_tab_members' => '👥 Membres & Droits',
- 'fc_select_member' => 'Sélectionner un membre de la famille :',
- 'fc_role_adult' => 'Adulte',
- 'fc_role_child' => 'Enfant',
- 'fc_care_modes_title' => 'Modes de garde associés',
- 'fc_care_modes_desc' => 'Cochez les modes de garde qui concernent cet enfant.',
- 'fc_no_care_mode' => 'Aucun mode configuré.',
- 'fc_matrix_title' => '👨👩👦 Matrice des Droits aux Congés',
- 'fc_matrix_desc' => 'Déclarez les codes de compteurs et dates de renouvellement.',
- 'fc_matrix_code' => 'Code',
- 'fc_matrix_date' => 'Date Reset',
- 'fc_matrix_empty' => 'Aucun compteur configuré.',
- 'fc_matrix_saved' => 'Matrice des droits mise à jour ! 💼',
- 'fc_child_saved' => 'Abonnement enfant enregistré !',
- 'btn_add_counter' => '➕ Ajouter',
- 'btn_save_rights' => '💾 Enregistrer',
- 'fc_modal_settings_title' => 'Paramètres du Calendrier',
- 'fc_zone_label' => 'Zone Scolaire (Vacances)',
- 'fc_zone_desc' => 'Détermine le calendrier automatique des vacances scolaires.',
- 'fc_care_modes_label' => 'Modes de Garde du Foyer',
- 'fc_care_modes_desc' => 'Gérez la liste globale des modes de garde possibles pour la famille.',
- 'fc_add_mode_placeholder' => 'Ex: Nounou, Casal, Grands-parents...',
- 'fc_settings_updated' => 'Paramètres mis à jour avec succès !',
- 'fc_first_day' => 'Premier jour de la semaine',
- 'fc_helper_recap' => 'Récapitulatif Intervenant',
- 'fc_no_helper_leaves' => 'Aucun congé posé ce mois-ci.',
- 'fc_col_date' => 'Date',
- 'fc_col_type' => 'Type',
- 'fc_col_duration' => 'Durée',
- 'fc_full_year' => 'Année complète',
- 'fc_custom_period' => 'Période spécifique...',
- 'fc_worked_days' => 'Travaillés (Est.)',
- 'fc_presence' => 'Présence',
- 'fc_working_days' => 'J. Ouvrés',
- 'fc_absences' => 'Abs.',
- 'fc_recap_title' => 'Récapitulatif',
- 'fc_worked_est' => 'Travaillés (Est.)',
- 'fc_invalid_dates' => 'Sélectionnez des dates valides.',
- 'fc_no_leaves_taken' => 'Aucun congé posé.',
-
- // --- CALENDRIER : PARAMÈTRES (MEMBRES & AFFICHAGE) ---
-'fc_tab_display' => '🖥️ Affichage',
- 'fc_display_title' => 'Paramètres d\'affichage',
- 'fc_display_desc' => 'Personnalisez l\'apparence et le comportement par défaut de votre calendrier.',
- 'fc_default_view' => 'Vue par défaut',
- 'fc_view_month' => '1 mois',
- 'fc_view_2months' => '2 mois',
- 'fc_view_3months' => '3 mois',
- 'fc_working_hours' => 'Horaires de garde (Défaut)',
- 'fc_working_hours_desc' => 'Exemple : 08:30-18:00',
-
- 'fc_role_unknown' => 'Inconnu',
- 'fc_role_adult' => 'Adulte',
- 'fc_role_child' => 'Enfant',
- 'fc_role_helper' => 'Intervenant',
- 'fc_error' => 'Erreur : ',
-
- 'fc_care_modes_title' => 'Modes de Garde Par Défaut',
- 'fc_care_modes_desc' => 'Quels modes de garde s\'appliquent à cet enfant ?',
- 'fc_no_care_mode' => 'Aucun mode de garde configuré dans le foyer.',
- 'fc_child_saved' => 'Sauvegardé !',
-
- 'fc_matrix_title' => 'Matrice des Congés',
- 'fc_matrix_desc' => 'Définissez les quotas et la date de renouvellement.',
- 'fc_matrix_empty' => 'Aucun compteur défini.',
- 'fc_matrix_saved' => 'Matrice enregistrée !',
-
- 'fc_leave_obsolete' => 'Obsolète',
- 'fc_leave_code_placeholder' => 'Code...',
- 'fc_leave_method_fixed' => 'Fixe',
- 'fc_leave_method_accumulated' => 'Cumul',
-
- 'fc_date_format_placeholder' => 'JJ/MM',
- 'fc_date_format_title' => 'Format JJ/MM',
-
- 'fc_table_code' => 'Code',
- 'fc_table_method' => 'Méthode',
- 'fc_table_quota' => 'Quota',
- 'fc_table_renewal' => 'Renouv.',
-
- 'btn_save_rights' => 'Enregistrer',
-
- 'fc_label_carry_over' => 'Dont jours reportés (Périssables) ⚠️',
- 'fc_carry_over_note' => 'Partie du solde global qui expirera à la date butoir définie.',
- 'fc_carry_max' => 'Max Reportable',
- 'fc_carry_deadline' => 'Mois Expiration',
- 'fc_deadline_none' => 'Aucune',
- 'fc_allowance_help' => 'Fixe: Quota annuel. Graduel: Ajout par mois.',
- 'fc_carry_max_short' => 'Report max',
- 'fc_edit_leave' => '✏️ Modifier :',
- 'fc_not_modifiable' => 'Non modifiable',
- 'fc_add_leave' => '+ Ajouter',
- 'fc_err_code_label' => 'Le code et le libellé sont obligatoires.',
- 'fc_catalog_updated' => 'Catalogue mis à jour !',
- 'fc_balance_corrected' => 'Solde corrigé !',
- 'fc_no_leave_configured' => 'Aucun congé configuré.',
-
- // ==========================================
-// MODALE PARAMÈTRES CALENDRIER
-// ==========================================
-'fc_modal_settings_title' => 'Paramètres du calendrier',
-'fc_tab_foyer' => 'Foyer',
-'fc_tab_members' => 'Membres & Droits',
-
-// Foyer : Zone scolaire
-'fc_zone_label' => 'Zone scolaire',
-'fc_zone_a' => 'Zone A',
-'fc_zone_b' => 'Zone B',
-'fc_zone_c' => 'Zone C',
-'fc_zone_other' => 'Autre / Hors France',
-'fc_zone_desc' => 'Permet d\'afficher correctement les vacances scolaires.',
-
-// Foyer : Modes de garde
-'fc_care_modes_label' => 'Modes de garde',
-'fc_add_mode_placeholder' => 'Ex: Nounou, Crèche...',
-'fc_care_modes_desc' => 'Ajoutez les différents modes de garde pour vos enfants.',
-'fc_empty_kids_msg' => 'Aucun enfant n\'est configuré dans votre famille pour le moment.',
-'fc_link_settings' => 'Aller aux paramètres généraux',
-
-// Foyer : Catalogue des congés
-'fc_leave_catalog_title' => 'Catalogue des congés',
-'fc_leave_catalog_desc' => 'Définissez les types de congés possibles pour toute la famille.',
-'fc_add_leave_type' => 'Ajouter un type de congé',
-'fc_col_code' => 'Code',
-'fc_code_irreversible' => 'Irréversible',
-'fc_col_label' => 'Label',
-'fc_leave_label_ph' => 'Ex: RTT, Récup...',
-'fc_quota_default' => 'Quota par défaut',
-'fc_reset_month' => 'Mois de renouv.',
-
-// Membres
-'fc_select_member' => 'Sélectionner un membre :',
-
-// Mois (S'ils n'existent pas déjà dans ton système)
-'month_jan' => 'Janvier',
-'month_feb' => 'Février',
-'month_mar' => 'Mars',
-'month_apr' => 'Avril',
-'month_may' => 'Mai',
-'month_jun' => 'Juin',
-'month_jul' => 'Juillet',
-'month_aug' => 'Août',
-'month_sep' => 'Septembre',
-'month_oct' => 'Octobre',
-'month_nov' => 'Novembre',
-'month_dec' => 'Décembre',
-
+ 'fc_tab_foyer' => '🏡 Foyer',
+ 'fc_tab_members' => '👥 Membres & Droits',
+ 'fc_select_member' => 'Sélectionner un membre :',
+ 'fc_role_adult' => 'Adulte',
+ 'fc_role_child' => 'Enfant',
+ 'fc_role_helper' => 'Intervenant',
+ 'fc_role_unknown' => 'Inconnu',
+ 'fc_care_modes_title' => 'Modes de Garde Par Défaut',
+ 'fc_care_modes_desc' => 'Quels modes de garde s\'appliquent à cet enfant ?',
+ 'fc_no_care_mode' => 'Aucun mode de garde configuré dans le foyer.',
+ 'fc_matrix_title' => 'Matrice des Congés',
+ 'fc_matrix_desc' => 'Définissez les quotas et la date de renouvellement.',
+ 'fc_matrix_code' => 'Code',
+ 'fc_matrix_date' => 'Date Reset',
+ 'fc_matrix_empty' => 'Aucun compteur défini.',
+ 'fc_matrix_saved' => 'Matrice enregistrée !',
+ 'fc_child_saved' => 'Sauvegardé !',
+ 'fc_modal_settings_title' => 'Paramètres du calendrier',
+ 'fc_zone_label' => 'Zone scolaire',
+ 'fc_zone_a' => 'Zone A',
+ 'fc_zone_b' => 'Zone B',
+ 'fc_zone_c' => 'Zone C',
+ 'fc_zone_other' => 'Autre / Hors France',
+ 'fc_zone_desc' => 'Permet d\'afficher correctement les vacances scolaires.',
+ 'fc_care_modes_label' => 'Modes de garde',
+ 'fc_add_mode_placeholder' => 'Ex: Nounou, Crèche...',
+ 'fc_empty_kids_msg' => 'Aucun enfant n\'est configuré dans votre famille pour le moment.',
+ 'fc_link_settings' => 'Aller aux paramètres généraux',
+ 'fc_settings_updated' => 'Paramètres mis à jour avec succès !',
+ 'fc_first_day' => 'Premier jour de la semaine',
+ 'fc_helper_recap' => 'Récapitulatif Intervenant',
+ 'fc_no_helper_leaves' => 'Aucun congé posé ce mois-ci.',
+ 'fc_col_date' => 'Date',
+ 'fc_col_type' => 'Type',
+ 'fc_col_duration' => 'Durée',
+ 'fc_full_year' => 'Année complète',
+ 'fc_custom_period' => 'Période spécifique...',
+ 'fc_worked_days' => 'Travaillés (Est.)',
+ 'fc_tab_display' => '🖥️ Affichage',
+ 'fc_display_title' => 'Paramètres d\'affichage',
+ 'fc_display_desc' => 'Personnalisez l\'apparence et le comportement par défaut de votre calendrier.',
+ 'fc_default_view' => 'Vue par défaut',
+ 'fc_working_hours' => 'Horaires de garde (Défaut)',
+ 'fc_working_hours_desc' => 'Exemple : 08:30-18:00',
+ 'fc_error' => 'Erreur : ',
+ 'fc_leave_catalog_title' => 'Catalogue des congés',
+ 'fc_leave_catalog_desc' => 'Définissez les types de congés possibles pour toute la famille.',
+ 'fc_add_leave_type' => 'Ajouter un type de congé',
+ 'fc_col_code' => 'Code',
+ 'fc_code_irreversible' => 'Irréversible',
+ 'fc_col_label' => 'Label',
+ 'fc_leave_label_ph' => 'Ex: RTT, Récup...',
+ 'fc_quota_default' => 'Quota par défaut',
+ 'fc_reset_month' => 'Mois de renouv.',
+ 'fc_leave_obsolete' => 'Obsolète',
+ 'fc_leave_code_placeholder' => 'Code...',
+ 'fc_leave_method_fixed' => 'Fixe',
+ 'fc_leave_method_accumulated'=> 'Cumul',
+ 'fc_date_format_placeholder'=> 'JJ/MM',
+ 'fc_date_format_title' => 'Format JJ/MM',
+ 'fc_table_code' => 'Code',
+ 'fc_table_method' => 'Méthode',
+ 'fc_table_quota' => 'Quota',
+ 'fc_table_renewal' => 'Renouv.',
+ 'fc_label_carry_over' => 'Dont jours reportés (Périssables) ⚠️',
+ 'fc_carry_over_note' => 'Partie du solde global qui expirera à la date butoir définie.',
+ 'fc_carry_max' => 'Max Reportable',
+ 'fc_carry_deadline' => 'Mois Expiration',
+ 'fc_deadline_none' => 'Aucune',
+ 'fc_allowance_help' => 'Fixe: Quota annuel. Graduel: Ajout par mois.',
+ 'fc_carry_max_short' => 'Report max',
+ 'fc_edit_leave' => '✏️ Modifier :',
+ 'fc_not_modifiable' => 'Non modifiable',
+ 'fc_add_leave' => '+ Ajouter',
+ 'fc_err_code_label' => 'Le code et le libellé sont obligatoires.',
+ 'fc_catalog_updated' => 'Catalogue mis à jour !',
+ 'fc_balance_corrected' => 'Solde corrigé !',
+ 'fc_no_leave_configured' => 'Aucun congé configuré.',
+ 'fc_confirm_del_catalog' => 'Supprimer définitivement le congé %s du catalogue ? Cela le retirera également des membres qui l\'utilisent.',
+ 'fc_confirm_del_member_leave'=> 'Voulez-vous vraiment retirer ce congé pour ce membre ?',
+ // Légendes Calendrier
'leg_presence' => 'Présence Pep',
'leg_school_holidays' => 'Vacances Scolaires',
'leg_public_holiday' => 'Férié',
@@ -483,6 +366,9 @@ return [
'leg_centre' => 'Centre',
'leg_avis' => 'Avis',
'fc_menu_sick' => 'Malade',
+ 'care_nounou' => 'Nounou',
+ 'care_centre' => 'Centre de loisirs',
+ 'care_avis' => 'Avis',
'vac_toussaint' => 'Vacances de la Toussaint',
'vac_noel' => 'Vacances de Noël',
@@ -492,12 +378,11 @@ return [
'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 !',
+ 'fc_alert_burn_days' => '⚠️ Risque de perte : %s j à poser avant la fin de cycle',
+ 'fc_alert_burn_jra' => '⚠️ Alerte : Jours reportés expirent à la fin de ce mois !',
// ==========================================
- // HOLIDAYS (VOYAGES)
+ // 6. VOYAGES (HOLIDAYS)
// ==========================================
'hdl_title_list' => 'HouseHub - Mes Vacances',
'hdl_title_detail' => 'HouseHub - Détail du voyage',
@@ -572,24 +457,23 @@ return [
'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 --',
+
+ // Météo et spécifiques Holidays
+ '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)
+ // Anciennes clés (conservées au cas où)
'outbound_trip' => 'Aller',
'return_trip' => 'Retour',
'period' => 'Période',
@@ -642,7 +526,7 @@ return [
'to_place' => '📥 À Placer',
// ==========================================
- // BUDGET (GLOBAL & CATEGORIES)
+ // 7. BUDGET (GLOBAL, SUIVI, PREV, EPARGNE, PROVISIONS)
// ==========================================
'budget_page_title' => 'HouseHub - Budget',
'budget_main_header' => 'Gestion du Budget',
@@ -650,9 +534,16 @@ return [
'budget_tab_prev' => 'Budget 2026',
'budget_tab_savings' => 'Épargne',
'budget_tab_recap' => 'Récapitulatif',
+ 'budget_tab_provisions' => 'Provisions',
+ 'budget_tab_kids' => 'Enfants',
'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.',
+ 'bud_err_tech' => 'Une erreur technique est survenue.',
+ 'bud_err_server' => 'Erreur serveur : ',
+ 'bud_err_delete' => 'Erreur lors de la suppression.',
+
+ // Catégories (Budget)
'cat_income' => 'Revenus',
'cat_fmcg' => 'Courses (FMCG)',
'cat_fuel' => 'Essence',
@@ -660,12 +551,14 @@ return [
'cat_fixed' => 'Charges Fixes',
'cat_others' => 'Autres / Imprévus',
'cat_savings' => 'Épargne',
- 'budget_tab_kids' => 'Enfants',
+
+ // Paramètres (Budget Settings)
'budget_settings_title' => 'Paramètres du Budget',
'bs_tab_accounts' => '💳 Comptes',
'bs_tab_categories' => '🏷️ Catégories',
'bs_tab_rules' => '🤖 Règles d\'import',
'bs_tab_salaries' => '💼 Salaires',
+ 'bs_tab_csv' => '📥 Import CSV',
'bs_empty_accounts' => 'Aucun compte configuré.',
'bs_type_checking' => 'Courant',
'bs_type_savings' => 'Épargne',
@@ -681,52 +574,67 @@ return [
'bs_salaries_year_desc' => 'Configurations pour l\'année',
'bs_salary_net' => 'Salaire net',
'bs_salary_fees' => 'Mensualité / Frais',
- 'bs_add_account_title' => '+ Ajouter un compte',
- 'bs_account_name_ph' => 'Nom (ex: Livret A Bébé)',
- 'bs_confirm_delete' => 'Voulez-vous vraiment supprimer ce compte ?',
+ 'bs_add_account_title' => '+ Ajouter un compte',
+ 'bs_account_name_ph' => 'Nom (ex: Livret A Bébé)',
+ 'bs_confirm_delete' => 'Voulez-vous vraiment supprimer ce compte ?',
'bs_add_category_title' => '+ Ajouter une catégorie',
'bs_cat_code_ph' => 'Code (ex: FOOD)',
'bs_cat_label_ph' => 'Libellé (ex: Courses)',
'bs_cat_icon_ph' => 'Icône (ex: 🛒)',
'bs_confirm_delete_cat' => 'Voulez-vous vraiment supprimer cette catégorie ?',
- 'bs_add_rule_title' => 'Ajouter une règle',
- 'bs_rule_keyword_ph' => 'Mot-clé (ex: AUCHAN)',
- 'bs_confirm_delete_rule' => 'Voulez-vous vraiment supprimer cette règle ?',
- 'bs_currency_label' => 'Devise du Foyer',
- 'bs_currency_desc' => 'Devise principale utilisée pour l\'affichage de vos comptes et budgets.',
- 'bs_currency_updated' => 'Devise mise à jour avec succès !',
- // ONGLET CSV MAPPING
- 'bs_csv_title' => 'Format de l\'import CSV',
- 'bs_csv_desc' => 'Configurez ici les colonnes correspondantes à l\'export de votre banque.',
- 'bs_csv_delimiter' => 'Séparateur',
- 'bs_csv_delim_semi' => 'Point-virgule (;)',
- 'bs_csv_delim_comma' => 'Virgule (,)',
- 'bs_csv_delim_tab' => 'Tabulation',
- 'bs_csv_date_format' => 'Format de la Date',
- 'bs_csv_col_index' => 'Index des colonnes',
- 'bs_csv_col_index_help' => '(Attention : la 1ère colonne est la Numéro 0)',
- 'bs_csv_col_date' => 'N° Col : Date',
- 'bs_csv_col_label' => 'N° Col : Libellé / Motif',
- 'bs_csv_amount_mgmt' => 'Gestion des montants',
- 'bs_csv_amount_single' => 'Une seule colonne (Positif = Revenu, Négatif = Dépense)',
- 'bs_csv_amount_split' => 'Deux colonnes séparées (Débit / Crédit)',
- 'bs_csv_col_amount' => 'N° Col : Montant',
- 'bs_csv_col_debit' => 'N° Col : Débit',
- 'bs_csv_col_credit' => 'N° Col : Crédit',
- 'bs_csv_col_ref' => 'N° Col : Référence unique (Optionnel)',
- 'btn_save_format' => 'Enregistrer le format',
- 'bs_csv_saved' => 'Format CSV enregistré',
- 'bs_tab_csv' => '📥 Import CSV',
- 'bs_csv_settings_title' => 'Configuration du format',
- 'bs_csv_drop_title' => 'Glissez votre fichier CSV ici',
- 'bs_csv_drop_desc' => 'ou cliquez pour parcourir vos fichiers',
- 'bs_csv_err_type' => 'Erreur : Seuls les fichiers .csv sont autorisés.',
- 'bs_csv_file_ok' => 'Fichier chargé',
- 'bs_csv_preview_title' => 'Aperçu de vos colonnes',
- 'bs_csv_empty_col' => 'Vide',
- 'bs_csv_no_data' => 'Aucune ligne de transaction trouvée dans ce fichier.',
+ 'bs_add_rule_title' => 'Ajouter une règle',
+ 'bs_rule_keyword_ph' => 'Mot-clé (ex: AUCHAN)',
+ 'bs_confirm_delete_rule'=> 'Voulez-vous vraiment supprimer cette règle ?',
+ 'bs_currency_label' => 'Devise du Foyer',
+ 'bs_currency_desc' => 'Devise principale utilisée pour l\'affichage de vos comptes et budgets.',
+ 'bs_currency_updated' => 'Devise mise à jour avec succès !',
- // --- BUDGET : SUIVI ---
+ // CSV Mapping (Budget)
+ 'bs_csv_title' => 'Format de l\'import CSV',
+ 'bs_csv_desc' => 'Configurez ici les colonnes correspondantes à l\'export de votre banque.',
+ 'bs_csv_delimiter' => 'Séparateur',
+ 'bs_csv_delim_semi' => 'Point-virgule (;)',
+ 'bs_csv_delim_comma' => 'Virgule (,)',
+ 'bs_csv_delim_tab' => 'Tabulation',
+ 'bs_csv_date_format' => 'Format de la Date',
+ 'bs_csv_col_index' => 'Index des colonnes',
+ 'bs_csv_col_index_help' => '(Attention : la 1ère colonne est la Numéro 0)',
+ 'bs_csv_col_date' => 'N° Col : Date',
+ 'bs_csv_col_label' => 'N° Col : Libellé / Motif',
+ 'bs_csv_amount_mgmt' => 'Gestion des montants',
+ 'bs_csv_amount_single' => 'Une seule colonne (Positif = Revenu, Négatif = Dépense)',
+ 'bs_csv_amount_split' => 'Deux colonnes séparées (Débit / Crédit)',
+ 'bs_csv_col_amount' => 'N° Col : Montant',
+ 'bs_csv_col_debit' => 'N° Col : Débit',
+ 'bs_csv_col_credit' => 'N° Col : Crédit',
+ 'bs_csv_col_ref' => 'N° Col : Référence unique (Optionnel)',
+ 'btn_save_format' => 'Enregistrer le format',
+ 'bs_csv_saved' => 'Format CSV enregistré',
+ 'bs_csv_settings_title' => 'Configuration du format',
+ 'bs_csv_drop_title' => 'Glissez votre fichier CSV ici',
+ 'bs_csv_drop_desc' => 'ou cliquez pour parcourir vos fichiers',
+ 'bs_csv_err_type' => 'Erreur : Seuls les fichiers .csv sont autorisés.',
+ 'bs_csv_file_ok' => 'Fichier chargé',
+ 'bs_csv_preview_title' => 'Aperçu de vos colonnes',
+ 'bs_csv_empty_col' => 'Vide',
+ 'bs_csv_no_data' => 'Aucune ligne de transaction trouvée dans ce fichier.',
+
+ // Onboarding Budget
+ 'bs_onb_title' => 'Bienvenue ! Configurons votre budget :',
+ 'bs_onb_desc' => 'Complétez ces étapes pour que l\'application puisse calculer votre Reste à Vivre :',
+ 'bs_onb_cat_link' => 'Catégories',
+ 'bs_onb_cat_desc' => 'Créez au moins une catégorie de dépenses.',
+ 'bs_onb_acc_link' => 'Comptes Bancaires',
+ 'bs_onb_acc_desc' => 'Ajoutez au moins un compte courant ou épargne.',
+ 'bs_onb_sal_link' => 'Salaires',
+ 'bs_onb_sal_desc' => 'Renseignez les rentrées d\'argent de l\'année en cours.',
+ 'bs_onb_items_link' => 'Lignes de Budget',
+ 'bs_onb_items_desc' => 'Rendez-vous dans l\'onglet Récapitulatif pour lister vos charges fixes (Loyer, Assurances...).',
+ 'bs_rule_search_ph' => '🔍 Rechercher un mot-clé (ex: AUCHAN)...',
+ 'error_loading_settings' => 'Erreur lors du chargement des paramètres',
+ 'bud_err_delete_system_cat' => 'Impossible de supprimer une catégorie système essentielle.',
+
+ // Budget : Suivi
'bud_rem_school' => 'École (Reste estimé)',
'bud_rem_fmcg' => 'Courses (Reste estimé)',
'bud_rem_fuel' => 'Essence (Reste estimé)',
@@ -779,42 +687,12 @@ return [
'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...",
- 'bud_edit_title' => 'Modifier la transaction',
- 'bud_to_define_js' => 'à définir',
- 'bud_select_beneficiary' => 'Choisir un revenu attendu',
'bud_bar_actual' => 'Actuel',
-
- // ONBOARDING BUDGET
- 'bs_onb_title' => 'Bienvenue ! Configurons votre budget :',
- 'bs_onb_desc' => 'Complétez ces étapes pour que l\'application puisse calculer votre Reste à Vivre :',
- 'bs_onb_cat_link' => 'Catégories',
- 'bs_onb_cat_desc' => 'Créez au moins une catégorie de dépenses.',
- 'bs_onb_acc_link' => 'Comptes Bancaires',
- 'bs_onb_acc_desc' => 'Ajoutez au moins un compte courant ou épargne.',
- 'bs_onb_sal_link' => 'Salaires',
- 'bs_onb_sal_desc' => 'Renseignez les rentrées d\'argent de l\'année en cours.',
- 'bs_onb_items_link' => 'Lignes de Budget',
- 'bs_onb_items_desc' => 'Rendez-vous dans l\'onglet Récapitulatif pour lister vos charges fixes (Loyer, Assurances...).',
- 'bs_rule_search_ph' => '🔍 Rechercher un mot-clé (ex: AUCHAN)...',
- 'error_loading_settings' => 'Erreur lors du chargement des paramètres',
- 'settings' => 'Paramètres',
- 'bud_err_delete_system_cat' => 'Impossible de supprimer une catégorie système essentielle.',
+ 'bud_bar_theoretical' => 'Théorique',
+ 'bud_bar_max_cap' => 'Capacité Max',
+ 'bud_select_beneficiary' => 'Choisir un revenu attendu',
- // --- BUDGET : RECAP ---
+ // Budget : Récapitulatif
'bud_recap_monthly_title' => 'Récapitulatif Mensuel',
'bud_recap_btn_add' => 'Ajouter un frais / revenu',
'bud_planned_amount' => 'Montant Prévu',
@@ -854,44 +732,10 @@ return [
'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.',
- 'bud_prev_monthly_target' => 'Montant cible / Mensualité (€)',
- 'bud_prev_transfer_dest' => 'Destination du virement',
- 'bud_prev_none' => 'Aucune destination (Charge standard)',
-
- // --- 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_tab_kids' => 'Enfants 👶',
- 'bud_sav_add_one_month' => '+1 Mois',
+ // Budget : Épargne
'bud_sav_add_month' => 'Ajouter un mois',
+ 'bud_sav_add_one_month' => '+1 Mois',
'bud_sav_no_data' => 'Aucune donnée d\'épargne pour %s.',
'bud_sav_post_month' => 'Poste / Mois',
'bud_sav_from_date' => 'Dès le %s',
@@ -906,55 +750,20 @@ return [
'bud_sav_ventilation' => 'Ventilation des comptes',
'bud_sav_adj_help' => 'Saisissez les ajustements (+/-) pour recalculer automatiquement.',
'bud_sav_add_line' => 'Ajouter une ligne',
- 'bud_category' => 'Catégorie',
'bud_sav_current' => 'Actuel',
'bud_sav_adjust' => 'Ajustement',
'bud_sav_new' => 'Nouveau',
'bud_sav_sum_mode_title' => 'Activer/Désactiver la calculatrice',
'bud_sav_selection' => 'Sélection :',
'bud_sav_ph_name' => 'Nom du compte',
- 'bud_sav_new_line' => 'Nouvelle ligne',
-'bud_sav_prompt_new_line' => 'Nom de la nouvelle ligne d\'épargne :',
-
-
- // --- BUDGET : PREVISION ---
-
- 'budget_provisions_title' => 'Provisions & Optimisation de Trésorerie',
-'btn_optimize_cashflow' => 'Optimiser mes Économies',
-'add_new_provision' => 'Anticiper une grosse dépense à venir',
-'provision_label' => 'Libellé de la dépense',
-'provision_placeholder_wood' => 'Ex: Commande bois de chauffage, Révision voiture...',
-'amount' => 'Montant',
-'expected_date' => 'Date prévue',
-'btn_add' => 'Ajouter',
-'upcoming_provisions_list' => 'Dépenses prévues au calendrier',
-'optimization_assistant_title' => 'Assistant d\'Optimisation des Quinzaines',
-'error_generic' => 'Une erreur est survenue',
-'success_add_provision' => 'Dépense prévisionnelle ajoutée !',
-'no_provisions' => 'Aucune dépense prévisionnelle enregistrée pour le moment.',
-'btn_delete' => 'Supprimer',
-'savings_this_month' => 'Économies globales à placer ce mois-ci',
-'calculate' => 'Calculer la stratégie optimale',
-'date_past_warning' => 'La date sélectionnée est déjà passée !',
-'budget_tab_provisions' => 'Provisions',
-'budget_opti_base' => 'Base',
-'budget_opti_debt' => 'Dette compensée',
-'budget_opti_no_config' => 'Aucune configuration de salaire trouvée pour cette année.',
-'budget_opti_recap_apports' => 'Résumé des apports (Clearing) :',
-'budget_opti_total_disp' => 'Total disponible pour l\'optimisation :',
-'budget_opti_must_pay' => 'doit verser',
-
-
- // JS & Erreurs
+ 'bud_sav_new_line' => 'Nouvelle ligne',
+ 'bud_sav_prompt_new_line' => 'Nom de la nouvelle ligne d\'épargne :',
'bud_sav_confirm_delete_month' => 'Voulez-vous vraiment supprimer toutes les données de %m pour %o ?',
'bud_sav_prompt_duplicate' => "Voulez-vous dupliquer les données de %s vers %t1 ?\n\nSaisissez le nouveau TOTAL en banque (€) pour %t2 :",
- 'bud_err_tech' => 'Une erreur technique est survenue.',
- 'bud_err_server' => 'Erreur serveur : ',
'bud_err_network_dup' => 'Erreur réseau lors de la duplication.',
'bud_sav_saving' => 'Sauvegarde en cours...',
- 'bud_err_delete' => 'Erreur lors de la suppression.',
- // --- BUDGET : PREVISIONNEL ---
+ // Budget : Prévisionnel
'bud_prev_incomes' => 'Revenus',
'bud_prev_person' => 'Personne',
'bud_prev_salary' => 'Salaire',
@@ -988,100 +797,94 @@ return [
'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',
- 'bud_adv_title' => 'Avances & Tricount Familial',
- 'bud_adv_add' => 'Ajouter une avance',
- 'bud_adv_edit' => 'Modifier l\'avance',
- 'bud_adv_who_paid' => 'Qui a payé ?',
- 'bud_adv_payer' => 'Payeur',
- 'bud_adv_has_advanced' => '%s a avancé :',
- 'bud_adv_cc_label' => 'sur le compte commun',
- 'bud_adv_livret_label' => 'depuis son livret d\'épargne',
- 'bud_adv_cc_balance_title' => 'Équilibre du Compte Commun',
- 'bud_adv_owed_to' => '%s € sont dus à %s',
- 'bud_adv_balanced' => 'Les comptes sont parfaitement équilibrés !',
- 'bud_adv_saved_badge' => 'Épargne',
- 'bud_adv_already_saved' => 'Cet argent provient d\'un livret d\'épargne',
- 'bud_adv_ph_desc' => 'Ex: Courses, Facture Électricité...',
- 'bud_adv_confirm_resolve' => 'Confirmer le remboursement complet de cette avance ?',
- 'bud_adv_confirm_delete' => 'Supprimer définitivement cette avance ?',
- 'bud_prev_target_ph' => 'Ex: 150',
- 'bud_prev_transfer_to' => 'Vers',
+ 'bud_prev_label_name' => 'Nom',
+ 'bud_prev_target_ph' => 'Ex: 150',
+ 'bud_prev_transfer_to' => 'Vers',
+
+ // Budget : Tricount / Avances
+ 'bud_adv_title' => 'Avances & Tricount Familial',
+ 'bud_adv_add' => 'Ajouter une avance',
+ 'bud_adv_edit' => 'Modifier l\'avance',
+ 'bud_adv_who_paid' => 'Qui a payé ?',
+ 'bud_adv_payer' => 'Payeur',
+ 'bud_adv_has_advanced' => '%s a avancé :',
+ 'bud_adv_cc_label' => 'sur le compte commun',
+ 'bud_adv_livret_label' => 'depuis son livret d\'épargne',
+ 'bud_adv_cc_balance_title' => 'Équilibre du Compte Commun',
+ 'bud_adv_owed_to' => '%s € sont dus à %s',
+ 'bud_adv_balanced' => 'Les comptes sont parfaitement équilibrés !',
+ 'bud_adv_saved_badge' => 'Épargne',
+ 'bud_adv_already_saved' => 'Cet argent provient d\'un livret d\'épargne',
+ 'bud_adv_ph_desc' => 'Ex: Courses, Facture Électricité...',
+ 'bud_adv_confirm_resolve' => 'Confirmer le remboursement complet de cette avance ?',
+ 'bud_adv_confirm_delete' => 'Supprimer définitivement cette avance ?',
+
+ // Budget : Provisions & Optimisation
+ 'budget_provisions_title' => 'Provisions & Optimisation de Trésorerie',
+ 'btn_optimize_cashflow' => 'Optimiser mes Économies',
+ 'add_new_provision' => 'Anticiper une grosse dépense à venir',
+ 'provision_label' => 'Libellé de la dépense',
+ 'provision_placeholder_wood' => 'Ex: Commande bois de chauffage, Révision voiture...',
+ 'amount' => 'Montant',
+ 'expected_date' => 'Date prévue',
+ 'upcoming_provisions_list' => 'Dépenses prévues au calendrier',
+ 'optimization_assistant_title' => 'Assistant d\'Optimisation des Quinzaines',
+ 'success_add_provision' => 'Dépense prévisionnelle ajoutée !',
+ 'no_provisions' => 'Aucune dépense prévisionnelle enregistrée pour le moment.',
+ 'savings_this_month' => 'Économies globales à placer ce mois-ci',
+ 'calculate' => 'Calculer la stratégie optimale',
+ 'date_past_warning' => 'La date sélectionnée est déjà passée !',
// ==========================================
- // MODULE : CADEAUX (gift-list)
+ // 8. CADEAUX (GIFTS)
// ==========================================
-
- // 1. Titres et en-têtes
- 'gift_page_title' => 'Liste des Cadeaux',
- 'gift_main_title' => 'Cadeaux de %s', // %s sera remplacé par l'année (ex: Cadeaux de 2026)
- 'settings' => 'Paramètres',
-
- // 2. Filtres
- 'gift_filter_all_children' => 'Tous les enfants',
- 'gift_filter_all_adults' => 'Tous les adultes',
-
- // 3. Contenu et états vides
- 'gift_add_gift' => 'Ajouter',
- 'gift_empty_state_no_gifts' => 'Aucun cadeau enregistré pour cette fête.',
- 'gift_empty_state_no_filter' => 'Aucun cadeau ne correspond à vos filtres.',
- 'gift_paid_by' => 'Payé par %s', // %s sera remplacé par le nom du payeur
-
- // 4. Section Tricount (Bilan & Remboursements)
- 'gift_liquidations' => 'Bilan & Remboursements',
- 'gift_no_debt' => 'Tout est à jour, aucune dette !',
- 'gift_owes' => 'doit',
- 'gift_view_matrix' => 'Voir la matrice détaillée',
- 'gift_debtor' => 'Débiteur',
- 'gift_creditor' => 'Créancier',
-
- // 5. Modale : Ajout/Modification de Cadeau
- 'gift_col_adult' => 'Pour le compte de',
- 'gift_modal_payer' => 'Payé par',
- 'gift_modal_gift_name' => 'Description du cadeau',
- 'gift_modal_price' => 'Prix estimé / payé (€)',
- 'gift_modal_link' => 'Lien du produit (URL)',
- 'gift_modal_title_add' => 'Ajouter pour %s', // JS : %s = nom de l'enfant
- 'gift_modal_title_edit' => 'Modifier le cadeau', // JS
- 'gift_confirm_delete' => 'Voulez-vous vraiment supprimer ce cadeau ?', // JS
-
- // 6. Modale : Paramètres des Fêtes (Nouveau !)
+ 'gift_page_title' => 'Liste des Cadeaux',
+ 'gift_main_title' => 'Cadeaux de %s',
+ 'gift_filter_all_children' => 'Tous les enfants',
+ 'gift_filter_all_adults' => 'Tous les adultes',
+ 'gift_add_gift' => 'Ajouter',
+ 'gift_empty_state_no_gifts' => 'Aucun cadeau enregistré pour cette fête.',
+ 'gift_empty_state_no_filter' => 'Aucun cadeau ne correspond à vos filtres.',
+ 'gift_paid_by' => 'Payé par %s',
+ 'gift_liquidations' => 'Bilan & Remboursements',
+ 'gift_no_debt' => 'Tout est à jour, aucune dette !',
+ 'gift_owes' => 'doit',
+ 'gift_view_matrix' => 'Voir la matrice détaillée',
+ 'gift_debtor' => 'Débiteur',
+ 'gift_creditor' => 'Créancier',
+ 'gift_col_adult' => 'Pour le compte de',
+ 'gift_modal_payer' => 'Payé par',
+ 'gift_modal_gift_name' => 'Description du cadeau',
+ 'gift_modal_price' => 'Prix estimé / payé (€)',
+ 'gift_modal_link' => 'Lien du produit (URL)',
+ 'gift_modal_title_add' => 'Ajouter pour %s',
+ 'gift_modal_title_edit' => 'Modifier le cadeau',
+ 'gift_confirm_delete' => 'Voulez-vous vraiment supprimer ce cadeau ?',
'gift_settings_title' => 'Configuration des Fêtes',
'gift_settings_add_title' => '+ Ajouter une occasion',
'gift_settings_name_placeholder' => 'Nom (ex: Saint Valentin)',
'gift_settings_date_placeholder' => 'MM-JJ',
'gift_settings_date_help' => 'La date (MM-JJ) est optionnelle. Laissez vide pour une fête mobile.',
- 'gift_settings_empty' => 'Aucune fête configurée.', // JS
- 'gift_settings_active' => 'Actif', // JS
+ 'gift_settings_empty' => 'Aucune fête configurée.',
+ 'gift_settings_active' => 'Actif',
+ 'gift_settings' => 'Configuration',
+ 'gift_tab_occasions' => 'Fêtes & Occasions',
+ 'gift_tab_proches' => 'Proches (Hors foyer)',
+ 'gift_settings_icon' => 'Icône',
+ 'gift_settings_date' => 'Date (MM-JJ)',
+ 'gift_settings_add_occ' => 'Ajouter une fête',
+ 'gift_settings_add_proche' => 'Ajouter un proche',
+ 'gift_role_proche_adulte' => 'Adulte (Oncle, ami...)',
+ 'gift_role_proche_enfant' => 'Enfant (Neveu, nièce...)',
+ 'gift_ph_proche_name' => 'Prénom',
+ 'gift_role_label' => 'Rôle',
+ 'gift_settings_saved' => 'Paramètres enregistrés !',
+ 'gift_settings_edit_occ' => 'Modifier la fête',
+ 'gift_settings_edit_proche' => 'Modifier le proche',
- // 7. Boutons génériques (si tu ne les as pas déjà en global)
- 'btn_cancel' => 'Annuler',
- 'btn_save' => 'Enregistrer',
- 'btn_add' => 'Ajouter',
- 'loading' => 'Chargement...',
-
- // --- MODULE CADEAUX : SETTINGS ---
- 'gift_settings' => 'Configuration',
- 'gift_tab_occasions' => 'Fêtes & Occasions',
- 'gift_tab_proches' => 'Proches (Hors foyer)',
- 'gift_settings_icon' => 'Icône',
- 'gift_settings_date' => 'Date (MM-JJ)',
- 'gift_settings_add_occ' => 'Ajouter une fête',
- 'gift_settings_add_proche'=> 'Ajouter un proche',
- 'gift_role_proche_adulte'=> 'Adulte (Oncle, ami...)',
- 'gift_role_proche_enfant'=> 'Enfant (Neveu, nièce...)',
- 'gift_ph_proche_name' => 'Prénom',
- 'gift_role_label' => 'Rôle',
- 'gift_settings_saved' => 'Paramètres enregistrés !',
- 'gift_settings_edit_occ' => 'Modifier la fête',
- 'gift_settings_edit_proche' => 'Modifier le proche',
-
// ==========================================
- // GARAGE MANAGER
+ // 9. GARAGE
// ==========================================
- 'menu_garage' => 'Garage',
'garage_page_title' => 'HouseHub - Garage',
'garage_stat_vehicles' => 'Véhicules',
'garage_stat_maintenances' => 'Entretiens',
@@ -1111,7 +914,6 @@ return [
'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',
@@ -1130,4 +932,38 @@ return [
'garage_change_photo' => 'Changer la photo',
'garage_new_photo' => 'Nouvelle photo',
'garage_update_photo' => 'Mettre à jour',
-];
+
+ // ==========================================
+ // 10. LISTES & COURSES
+ // ==========================================
+ 'liste_placeholder_add' => 'Ajouter un article…',
+ 'liste_btn_add' => 'Ajouter',
+ 'liste_btn_uncheck_all' => 'Tout décocher',
+ 'liste_btn_delete_picked' => 'Supprimer les cochés',
+ 'liste_btn_clear_all' => 'Vider la liste',
+ 'liste_subtitle' => '{pending} à faire · {cart} cochés',
+ 'liste_added' => 'Ajouté',
+ 'liste_updated' => 'Modifié',
+ 'liste_deleted' => 'Supprimé',
+ 'liste_already_in' => 'Déjà dans la liste',
+ 'liste_confirm_clear' => 'Vider toute la liste ?',
+ 'liste_confirm_delete_list' => 'Supprimer cette liste et tous ses articles ?',
+ 'liste_history_title' => 'Récemment utilisés — clic pour rajouter',
+ 'liste_new_list' => 'Nouvelle liste',
+ 'liste_list_name_placeholder'=> 'Nom de la liste…',
+ 'liste_create' => 'Créer',
+ 'liste_rename_list' => 'Renommer',
+ 'liste_new_name' => 'Nouveau nom :',
+ 'liste_list_deleted' => 'Liste supprimée',
+ 'liste_list_created' => 'Liste créée',
+ 'liste_list_renamed' => 'Liste renommée',
+ 'liste_edit_placeholder' => 'Modifier l\'article :',
+ 'liste_empty_state' => 'Créez votre première liste avec le bouton + ci-dessus.',
+ 'liste_settings_title' => 'Listes — historique',
+ 'liste_settings_intro' => 'Nombre maximum d\'articles mémorisés dans l\'historique (commun à toutes les listes).',
+ 'liste_settings_history_max' => 'Taille de l\'historique',
+ 'liste_settings_history_hint'=> 'Entre 1 et 50.',
+ 'groceries_settings_saved' => 'Préférences enregistrées.',
+ 'groceries_settings_error' => 'Impossible d\'enregistrer :',
+ 'groceries_err_duplicate' => 'Ce produit est déjà dans la liste.',
+];
\ No newline at end of file