'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', 'nav_holidays' => 'Trips', 'nav_gifts' => 'Gifts', 'aria_menu' => 'Mobile menu', 'actions' => 'Actions', 'edit' => 'Edit', 'delete' => 'Delete', 'save' => 'Save', 'cancel' => 'Cancel', 'btn_save' => 'Save', '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' => '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', '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', // ========================================== // 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', 'btn_login' => 'Login', '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.', // ========================================== // 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', 'mod_holidays_desc' => 'Plan your next getaways, destinations and travel ideas.', 'mod_gifts_name' => 'Gifts', 'mod_gifts_desc' => 'Plan gifts for each child, for Christmas and birthdays.', 'mod_budget_name' => 'Budget', 'mod_budget_desc' => 'Track fixed expenses, income and family account balance.', 'mod_garage_name' => 'Garage', '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.', 'mod_todo_name' => 'Todo', 'mod_todo_desc' => 'Manage tasks, shopping lists and family reminders.', '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.', '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', 'cta_manage' => 'Manage', 'cta_service' => 'Service', 'cta_jot' => 'Jot down', 'cta_check' => 'Check off', 'cta_cart' => 'Go shopping', 'cta_sync' => 'Sync', 'cta_print' => 'Print', // ========================================== // 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', 'fc_btn_correct_balances' => 'Adjust balances', 'fc_btn_school_holidays' => 'School holidays', 'fc_modal_holidays_title' => 'School Holidays', 'fc_modal_snap_title' => 'Adjust a balance', 'fc_col_period' => 'Period', 'fc_col_from' => 'From', 'fc_col_to' => 'To', 'fc_label_person' => 'Person', 'fc_label_leave_type' => 'Leave type', 'fc_label_apply_date' => 'Application date', 'fc_snap_date_hint' => 'Preferably choose the 1st day of a month', 'fc_label_remaining_balance'=> 'Remaining balance at this date', 'fc_placeholder_balance' => 'e.g. 12.5', 'fc_btn_save_snap' => 'Save adjustment', 'fc_view_1m' => '1 month', 'fc_view_2m' => '2 months', 'fc_view_3m' => '3 months', 'fc_view_year' => 'Year', 'fc_weekly_planning' => 'Weekly planning', 'fc_col_month' => 'Month', 'fc_col_week_short' => 'Wk.', 'fc_col_week' => 'Week', 'fc_col_av' => 'Av.', 'fc_col_use' => 'Use', 'fc_legend_title' => 'Legend', 'fc_summary_title' => 'Summary', 'fc_summ_year' => 'Year', 'fc_summ_month' => 'Month', 'fc_school_year' => 'School year', 'fc_unit_days' => 'days', 'fc_menu_carole' => 'Carole\'s Leave', 'fc_clear' => 'Clear', 'fc_menu_kids_leaves' => 'Parent\'s Leave', 'fc_err_save_snap' => 'Error saving adjustment.', '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_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_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', 'leg_off_carole' => 'Carole off', 'leg_extra_off' => 'Extra off', 'leg_centre' => 'Centre', 'leg_avis' => 'Notice', 'fc_menu_sick' => 'Sick', 'care_nounou' => 'Nanny', 'care_centre' => 'Daycare', 'care_avis' => 'Grandparents', 'vac_toussaint' => 'All Saints\' holidays', 'vac_noel' => 'Christmas holidays', 'vac_hiver' => 'Winter holidays', 'vac_printemps' => 'Spring holidays', 'vac_ascension' => 'Ascension bridge', 'vac_ete' => 'Summer holidays', 'btn_off' => 'Off', 'btn_extra' => 'Extra', '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!', // ========================================== // 6. HOLIDAYS (TRIPS) // ========================================== 'hdl_title_list' => 'HouseHub - My Trips', 'hdl_title_detail' => 'HouseHub - Trip details', 'hdl_main_title' => 'My Trips', 'hdl_filter_all' => 'Show all', 'hdl_filter_year' => 'Year', 'hdl_left_to_pay_label' => 'Left to pay', 'hdl_btn_create' => 'Create a trip', 'hdl_no_active_trips' => 'No active trips for this period. Let\'s plan something!', 'hdl_history_title' => 'History', 'hdl_dates_to_define' => 'Dates to be defined', 'hdl_total_budget' => 'Total Budget', 'hdl_paid' => 'Paid', 'hdl_saved' => 'Funded', 'hdl_left_to_pay' => 'Left to pay', 'hdl_status_booked' => 'Confirmed', 'hdl_status_planned' => 'Planned', 'hdl_status_draft' => 'Draft', 'hdl_status_passed' => 'Completed', 'hdl_status_archived' => 'Archived', 'hdl_modal_title' => 'Plan the trip', 'hdl_label_name' => 'Trip name', 'hdl_ph_name' => 'e.g. October - Portugal', 'hdl_label_status' => 'Status', 'hdl_label_period' => 'Period (free text)', 'hdl_ph_period' => 'e.g. October 2026', 'hdl_label_from' => 'From', 'hdl_label_to' => 'To', 'hdl_cat_transport' => 'Transport', 'hdl_add_transport' => 'Add transport', 'hdl_cat_accommodation' => 'Accommodation', 'hdl_add_accommodation' => 'Add accommodation', 'hdl_cat_activity' => 'Activity', 'hdl_add_activity' => 'Add activity', 'hdl_label_budget_food' => 'Food & Drinks budget (€)', 'hdl_label_budget_extras' => 'Extras budget (€)', 'hdl_label_notes' => 'Notes', 'hdl_ph_notes' => 'Rough ideas...', 'hdl_label_budget_food_extras' => 'Food & Extras budget', 'hdl_map_itinerary' => 'Itinerary', 'hdl_outbound' => 'Outbound', 'hdl_return' => 'Return', 'hdl_btn_add_step' => 'Add a stop', 'hdl_step_details' => 'Road trip details', 'hdl_no_steps' => 'No stops defined yet. Start by adding one!', 'hdl_general_costs' => 'General costs & budgets', 'hdl_food_bev' => 'Food & Drinks', 'hdl_extras' => 'Extras', 'hdl_view_planning' => 'View planning', 'hdl_passing_point' => 'Passing point (no cost)', 'hdl_search_location' => 'Search a location', 'hdl_ph_search' => 'City, hotel, address...', 'hdl_label_step_name' => 'Stop name', 'hdl_label_arrival' => 'Arrival', 'hdl_label_departure' => 'Departure', 'hdl_planned_expenses' => 'Planned expenses for this stop', 'hdl_btn_add_expense' => '+ Add an expense', 'hdl_save_fav' => 'Save to favourites', 'hdl_planning_title' => 'Stop planning', 'hdl_to_pay' => 'To pay', 'hdl_js_search_loading' => 'Searching...', 'hdl_js_no_result' => 'No results found.', 'hdl_js_network_error' => 'Connection error to map service.', 'hdl_js_confirm_del_trip' => 'Are you sure you want to delete this entire trip?', 'hdl_js_confirm_del_step' => 'Delete this stop?', 'hdl_js_step_label' => 'Stop', 'hdl_js_ph_expense_name' => 'e.g. Hotel, Toll...', 'hdl_quick_edit_title' => 'Quick edit', 'hdl_js_edit_step' => 'Edit stop', 'hdl_js_missing_dates_title'=> 'Missing dates', 'hdl_js_missing_dates_msg' => 'Please set an arrival and departure date to organise the planning.', '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.', 'weather_loading' => 'Loading weather...', 'weather_error' => 'Weather unavailable', 'weather_sunny' => 'Sunny', 'weather_cloudy' => 'Cloudy', 'weather_rainy' => 'Rainy', 'weather_snowy' => 'Snowy', 'weather_historical' => 'Based on historical data (estimate)', 'err_invalid_holiday_id' => 'Invalid trip ID.', 'hdl_default_exp_name' => 'Expense', 'hdl_select_beneficiary' => '-- Select --', // Legacy holiday keys (kept for compatibility) 'outbound_trip' => 'Outbound', 'return_trip' => 'Return', 'period' => 'Period', 'budget_food' => 'Food & Extras budget', 'total_cost' => 'Total Estimated Cost', 'paid' => 'Paid', 'provisioned' => 'Provisioned', 'left_to_pay' => 'Left to pay', 'map_itinerary' => '🗺️ Itinerary', 'place_step' => '📍 Place a stop', 'step_details' => '📝 Stop details', 'no_steps' => 'No stops planned.', 'travel_notes' => '📝 Trip notes', 'to_be_defined' => 'To be defined', 'funded' => 'Funded (Provision)', 'view_planning' => 'View planning', 'to_pay' => 'To pay', 'from_date' => 'From', 'to_date' => 'to', 'passing_point' => 'Passing point (no expense)', 'search_location' => 'Search a geographical location', 'search_placeholder' => 'e.g. Paris, Hotel Barcelona...', 'step_name' => 'Stop name', 'arrival_optional' => 'Arrival (Optional)', 'departure_optional' => 'Departure (Optional)', 'planned_expenses' => 'Planned expenses', 'add_expense' => '+ Add an expense', 'save_favorite' => 'Save to favourites', 'planning_title' => 'Planning', 'modal_plan_trip' => 'Plan the trip', 'modal_quick_edit' => 'Quick edit', 'err_modal_missing' => 'Error: holidayModal not found.', 'placeholder_title' => 'Title', 'placeholder_price' => 'Price (€)', 'already_paid' => 'Already paid?', 'remove_line' => 'Remove this line', 'confirm_delete_trip' => 'Are you sure you want to permanently delete this trip? This action cannot be undone.', 'step_number' => 'Stop', 'place_new_step' => '📍 Place a new stop', 'edit_step' => '✏️ Edit stop', 'search_in_progress' => 'Searching... ⏳', 'no_result_found' => 'No results found.', 'network_error' => 'Network error.', 'placeholder_label' => 'Label', 'placeholder_notes_link' => '🔗 Booking link or notes (Optional)...', 'confirm_delete_step' => 'Delete this stop and all its associated expenses?', 'planning_of' => '📅 Planning: ', 'missing_dates_title' => '⚠️ Missing dates', 'missing_dates_msg' => 'Please edit this stop (✏️) and fill in the arrival and departure dates.', 'to_place' => '📥 To place', // ========================================== // 7. BUDGET (GLOBAL, SUIVI, PREV, EPARGNE, PROVISIONS) // ========================================== 'budget_page_title' => 'HouseHub - Budget', 'budget_main_header' => 'Budget Management', 'budget_tab_tracking' => 'Monthly tracking', '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.', 'budget_mandatory_note' => 'Tracking and Summary tabs are mandatory and always active.', // Categories (Budget) 'cat_income' => 'Income', 'cat_fmcg' => 'Groceries (FMCG)', 'cat_fuel' => 'Fuel', 'cat_school' => 'School / Childcare', 'cat_fixed' => 'Fixed costs', 'cat_others' => 'Other / Unexpected', 'cat_savings' => 'Savings', // 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', 'bs_badge_default' => 'Default', 'bs_owner' => 'Owner', 'bs_shared_account' => 'Joint Account', 'bs_empty_categories' => 'No categories configured.', 'bs_type_income' => 'Income', 'bs_type_expense' => 'Expense', 'bs_type_savings_cat' => 'Savings', 'bs_empty_rules' => 'No import rules configured.', 'bs_empty_salaries' => 'No salary defined for the year', 'bs_salaries_year_desc' => 'Configurations for the year', 'bs_salary_net' => 'Net salary', 'bs_salary_fees' => 'Monthly payment / Fees', 'bs_add_account_title' => 'Add an account', 'bs_account_name_ph' => 'Name (e.g., Baby Savings)', 'bs_confirm_delete' => 'Are you sure you want to delete this account?', 'bs_add_category_title' => '+ Add a category', 'bs_cat_code_ph' => 'Code (e.g., FOOD)', 'bs_cat_label_ph' => 'Label (e.g., Groceries)', 'bs_cat_icon_ph' => 'Icon (e.g., 🛒)', 'bs_confirm_delete_cat' => 'Are you sure you want to delete this category?', 'bs_add_rule_title' => 'Add a rule', 'bs_rule_keyword_ph' => 'Keyword (e.g., WALMART)', 'bs_confirm_delete_rule'=> 'Are you sure you want to delete this rule?', 'bs_currency_label' => 'Household Currency', 'bs_currency_desc' => 'Main currency used for displaying your accounts and budgets.', 'bs_currency_updated' => 'Currency updated successfully!', 'bud_dyn_nanny_fixed' => 'Nanny fixed salary (€)', 'bud_dyn_nanny_daily' => 'Daily maintenance fee (€)', 'bud_dyn_nanny_aid' => 'Government aid (€)', 'bud_dyn_nanny_cesu_avg' => 'Average CESU paid (€)', 'bud_dyn_school_meal' => 'School meal price (€)', 'bud_dyn_school_aftercare' => 'After-school care price (€)', 'bud_dyn_school_fullday' => 'Full day care (Wednesdays/Holidays) (€)', 'bud_dyn_pattern_title' => 'Standard school week', 'bud_audit_month' => 'Analyzed month: %02d/%d', 'bud_audit_nanny_abs' => '%s absences deducted : %dd', 'bud_audit_child' => '👦 %s :', 'bud_audit_school_fee' => 'Canteen (%dd) + Aftercare (%dd) + Center (%dd) = %.2f€', 'bud_audit_sick' => 'Sick days deducted : %dd', 'bud_audit_nanny_full' => '💼 %s : Fixed (%.2f€) + Fees (%dd x %.2f€ = %.2f€) - Aid (%.2f€) - %s (%.2f€) = %.2f€', 'bud_audit_cesu_avg' => 'CESU (Avg.)', 'bud_audit_cesu_adj' => 'CESU (Adjusted)', 'bud_dyn_cesu_overrides' => 'Specific CESU adjustments', 'bud_dyn_cesu_add' => 'Add a month', 'bud_dyn_cesu_empty' => 'No adjustments recorded.', 'bud_settings_dyn_title' => 'Care & School', 'bud_settings_dyn_desc' => 'Rates for automated childcare fee calculations.', 'bud_dyn_sub_nanny' => 'Nanny', 'bud_dyn_sub_school' => 'Afterschool & Center', // 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 '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', 'bs_onb_cat_desc' => 'Create at least one expense category.', 'bs_onb_acc_link' => 'Bank Accounts', 'bs_onb_acc_desc' => 'Add at least one checking or savings account.', 'bs_onb_sal_link' => 'Salaries', 'bs_onb_sal_desc' => 'Enter your income for the current year.', 'bs_onb_items_link' => 'Budget Items', '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', 'bud_err_delete_system_cat' => 'Cannot delete a core system category.', // Budget : Tracking 'bud_rem_school' => 'School (estimated remaining)', 'bud_rem_fmcg' => 'Groceries (estimated remaining)', 'bud_rem_fuel' => 'Fuel (estimated remaining)', 'bud_closed_archived' => 'This month is closed and archived.', 'bud_budget_of' => 'Budget:', 'bud_confirm_close' => 'Close this month? This will freeze the current balances and switch the default tracking to next month.', 'bud_close_btn' => 'Close', 'bud_confirm_reopen' => 'Reopen this month? Its balances will be recalculated live.', 'bud_reopen_btn' => 'Reopen', 'bud_active_month_btn' => 'Active month', 'bud_bank_balance' => 'Bank balance', 'bud_frozen' => 'Frozen', 'bud_current' => 'Current', 'bud_update_btn' => 'Upd.', 'bud_theoretical_balance' => 'Theoretical end-of-month balance', 'bud_upcoming_charges' => 'Upcoming charges', 'bud_all_paid' => 'All paid!', 'bud_capacity_tooltip' => 'Calculation: Previous month carry-over (%s€) + Salaries (%s€) + Other income (%s€)', 'bud_max_capacity' => 'Max capacity', 'bud_actual' => 'Actual', 'bud_theoretical' => 'Theoretical', 'bud_import_csv' => 'Import CSV', 'bud_csv_file' => 'CSV file (semicolon-separated)', 'bud_preview' => 'Preview', 'bud_validate_import' => 'Validate import', 'bud_assign_month' => 'Assign to month', 'bud_op_date' => 'Operation date', 'bud_label' => 'Label', 'bud_amount' => 'Amount', 'bud_category' => 'Category', 'bud_ignore' => 'Ignore', 'bud_to_define' => 'To define', 'bud_is_charge' => 'Fixed charge?', 'bud_is_income' => 'Income?', 'btn_import' => 'Import', 'bud_no_lines' => 'No lines.', 'bud_confirm_delete' => 'Delete this line?', 'bud_new_transaction' => 'New transaction', 'bud_assign_to_month' => 'Assign to management month', 'bud_real_date' => 'Actual operation date', 'bud_type' => 'Type', 'bud_type_expense' => 'Expense', 'bud_type_income' => 'Income / Reimbursement', 'bud_beneficiary' => 'Beneficiary', 'bud_fixed_charge' => 'Fixed charge', 'bud_expected_income' => 'Expected income', 'bud_amount_eur' => 'Amount (€)', 'bud_update_balance' => 'Update bank balance', 'bud_balance_eur' => 'Balance (€)', 'bud_add_title' => 'Add', 'bud_edit_title' => 'Edit transaction', 'bud_to_define_js' => 'to define', 'bud_bar_actual' => 'Actual', 'bud_bar_theoretical' => 'Theoretical', 'bud_bar_max_cap' => 'Max capacity', 'bud_select_beneficiary' => 'Choose an expected income', // Budget : Recap 'bud_recap_monthly_title' => 'Monthly summary', 'bud_recap_btn_add' => 'Add a cost / income', 'bud_planned_amount' => 'Planned amount', 'bud_day' => 'Day', 'bud_month_state' => 'Month status', 'bud_est_short' => 'Est.', 'bud_reg_planned_in' => 'Regularisation planned in %s', 'bud_bonus' => 'Bonus', 'bud_overrun' => 'Overrun', 'bud_remaining' => 'Remaining', 'bud_exact_amount' => 'Exact amount', 'bud_per_month_short' => 'i.e.', 'bud_month_short' => 'month', 'bud_freq_mensuel' => 'Monthly', 'bud_freq_annuel' => 'Annual', 'bud_state_validated' => 'Validated', 'bud_state_partial' => 'Partial', 'bud_state_waiting' => 'Pending', 'bud_total_income_smoothed' => 'Total income (smoothed)', 'bud_total_expenses_smoothed'=> 'Total expenses (smoothed)', 'bud_theoretical_balance_recap'=> 'Theoretical balance', 'bud_recap_footer_note' => 'Payment status updates automatically based on operations imported in the "Monthly tracking" tab.', 'bud_recap_modal_add' => 'Add an item', 'bud_recap_modal_edit' => 'Edit', 'bud_label_name' => 'Name', 'bud_ph_item_name' => 'e.g. Rent, Salary...', 'bud_label_keywords' => 'Keywords (auto-detection)', 'bud_ph_keywords' => 'e.g. NETFLIX, PRIME VIDEO (comma-separated)', 'bud_help_keywords' => 'If a monthly expense contains this word, the line will switch to "Validated".', 'bud_label_day' => 'Day (1-31)', 'bud_cat_income' => 'Savings', 'bud_cat_expense' => 'Expense (Cost)', 'bud_label_frequency' => 'Frequency', 'bud_label_amount_type' => 'Amount type', 'bud_type_fixed' => 'Fixed (Invoice)', 'bud_type_variable' => 'Variable (Estimate)', 'bud_label_regularization' => 'Regularisation', 'bud_reg_none' => 'None', 'bud_recap_confirm_delete' => 'Are you sure you want to delete this item?', 'bud_prev_monthly_target' => 'Target amount / Monthly payment (€)', 'bud_prev_transfer_dest' => 'Transfer destination', 'bud_prev_none' => 'No destination (Standard expense)', // 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 this month', 'bud_sav_delete_month' => 'Delete this month', 'bud_sav_total_bank' => 'TOTAL BANK', 'bud_sav_extra' => 'UNALLOCATED (EXTRAS)', 'bud_sav_modal_title_add' => 'Add a month', 'bud_sav_modal_title_edit' => 'Edit', 'bud_sav_month_concerned' => 'Target month', 'bud_sav_total_bank_eur' => 'Total in Bank (€)', 'bud_sav_ventilation' => 'Accounts breakdown', 'bud_sav_adj_help' => 'Enter adjustments (+/-) to auto-calculate.', 'bud_sav_add_line' => 'Add line', '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:', '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_network_dup' => 'Network error during duplication.', 'bud_sav_saving' => 'Saving...', // Budget : Forecast 'bud_prev_incomes' => 'Income', 'bud_prev_person' => 'Person', 'bud_prev_salary' => 'Salary', 'bud_prev_monthly_payment' => 'Monthly payment', 'bud_prev_joint_account' => 'Joint account', 'bud_prev_func_expenses' => 'Running costs', 'bud_prev_perso_savings' => 'Personal savings', 'bud_prev_family_savings' => 'Family savings', 'bud_prev_available' => 'Available', 'bud_prev_perso_remaining' => 'Personal remaining', 'bud_prev_budget_alloc' => 'Budget allocation', 'bud_prev_today' => 'Today', 'bud_prev_new_line' => 'New line', 'bud_prev_remaining' => 'Remaining', 'bud_prev_confirm_del_line' => 'Delete this line and all its history?', 'bud_prev_notes_for' => 'Notes for', 'bud_prev_saved' => 'Saved', 'bud_prev_notes_ph' => 'Write your remarks, reminders or comments for this month here...', 'bud_prev_save_note' => 'Save note', 'bud_prev_transfers_to_make' => 'Transfers to make', 'bud_prev_destination' => 'Destination', 'bud_prev_done' => 'DONE', 'bud_prev_validate' => 'Validate', 'bud_prev_grand_total' => 'GRAND TOTAL', 'bud_prev_new_line_title' => 'New budget line', 'bud_prev_edit_line_title' => 'Edit line', 'bud_prev_label_target' => 'Target (Destination)', 'bud_prev_choose' => 'Choose', 'bud_prev_link_holiday' => 'Link to a trip (Optional)', 'bud_prev_no_link' => 'Do not associate', 'bud_prev_err_no_history' => 'Cannot copy: no history available.', '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_prev_target_ph' => 'E.g., 150', 'bud_prev_transfer_to' => 'To', // 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!', // ========================================== // 8. GIFTS // ========================================== '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.', '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', // ========================================== // 9. GARAGE // ========================================== 'garage_page_title' => 'HouseHub - Garage', 'garage_stat_vehicles' => 'Vehicles', 'garage_stat_maintenances' => 'Services', 'garage_stat_parts' => 'Parts', 'garage_stat_cost' => 'Total cost', 'garage_my_vehicles' => 'My vehicles', 'garage_reminders' => 'Reminders & upcoming services', 'garage_vehicles_title' => 'My vehicles', 'garage_all_parts' => 'All parts', 'garage_parts_count' => 'parts', 'garage_maintenances' => 'Services', 'garage_parts' => 'Parts', 'garage_add' => 'Add', 'garage_add_vehicle' => 'Add a vehicle', 'garage_add_maintenance' => 'Add a service', 'garage_add_part' => 'Add a part', 'garage_vehicle_name' => 'Vehicle name', 'garage_brand' => 'Make', 'garage_model' => 'Model', 'garage_year' => 'Year', 'garage_plate' => 'Licence plate', 'garage_fuel' => 'Fuel type', 'garage_km' => 'Current mileage', 'garage_color' => 'Colour', 'garage_purchase_date' => 'Purchase date', 'garage_purchase_price' => 'Purchase price (€)', 'garage_photo' => 'Photo', 'garage_notes' => 'Notes', 'garage_maint_type' => 'Service type', 'garage_date' => 'Date', 'garage_km_at' => 'Mileage at the time', 'garage_labor_cost' => 'Labour cost (€)', 'garage_description' => 'Description', 'garage_mechanic' => 'Mechanic', 'garage_garage' => 'Garage / Workshop', 'garage_next_reminder' => 'Next service (reminder)', 'garage_next_date' => 'Planned date', 'garage_next_km' => 'Planned mileage', 'garage_part_name' => 'Part name', 'garage_category' => 'Category', 'garage_reference' => 'Reference', 'garage_unit_price' => 'Unit price (€)', 'garage_quantity' => 'Quantity', 'garage_unit' => 'Unit', 'garage_supplier' => 'Supplier', '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.', // --- MODULE MEALS --- 'menu_meals' => 'Meals', 'mod_meals_name' => 'Meal Plan', 'mod_meals_desc' => 'Plan weekly meals for the whole family.', 'meals_board_title' => 'Meal Planner', 'meals_copy_lunch' => 'Copy entire lunch', 'meals_copy_dinner' => 'Copy entire dinner', 'meal_lunch' => 'Lunch', 'meal_dinner' => 'Dinner', 'btn_apply_all' => 'All', 'btn_copy_to' => 'Copy to...', 'modal_copy_title' => 'Copy to...', 'source_individual' => 'Individual meal', 'source_row' => 'Full meal', 'week_current' => 'Current week', 'week_next' => 'Next week', 'meals_no_members' => 'Please configure family members in the settings.', 'day_full_mon' => 'Monday', 'day_full_tue' => 'Tuesday', 'day_full_wed' => 'Wednesday', 'day_full_thu' => 'Thursday', 'day_full_fri' => 'Friday', 'day_full_sat' => 'Saturday', 'day_full_sun' => 'Sunday', 'meal_title' => 'Meal Planner', 'meal_edit_title' => 'Edit meal', 'meal_label_name' => 'Planned menu', 'meal_ph_name' => 'E.g. Homemade lasagna', 'meal_week' => 'Week', 'meal_empty_slot' => 'To be defined...', 'meal_current_week' => 'Current week', 'meal_saved' => 'Meal saved!', 'meal_btn_import_pdf' => 'Import Menu PDF', 'meal_import_title' => 'Import canteen menu', 'meal_import_child' => 'For which person?', 'meal_select_child' => 'Sélectionner un membre :', 'meal_pdf_file' => 'PDF File', 'meal_drop_pdf' => 'Click to add PDF', 'meal_import_success' => 'Menus imported successfully!', 'mod_food_name' => 'Kitchen & Groceries', 'food_tab_meals' => 'Weekly Menu', 'food_tab_list' => 'Shopping List', 'menu_food' => 'Food', 'mod_food_desc' => 'Manage your weekly menus and shared shopping lists.', 'cta_food' => 'Cook up', 'food_err_no_views' => "No view is enabled for this module. Please check your space settings.", 'food_err_no_views_desc' => 'You have disabled all features for this module. Please visit your settings to re-enable them.', 'meal_paste_success' => 'Grid pasted successfully!', 'meal_err_filename' => 'Unrecognized file name format. Expected example: "Menus-du-28-septembre-au-4-octobre-2026.pdf".', 'offline_title' => 'Offline Mode', 'offline_heading' => 'You are offline', 'offline_message' => 'The HouseHub application cannot be reached without an internet connection at the moment.', 'offline_retry_btn' => 'Retry connection', ];