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