Files
HouseHub/includes/lang/en.php
FeFeClochette 20d6c9b7b0
Deploy HouseHub / deploy (push) Successful in 2s
provisions
2026-07-07 21:26:44 +02:00

968 lines
48 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
// English Dictionary
return [
// ==========================================
// TEST AUTO
// ==========================================
'test_running' => '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
// ==========================================
'menu_home' => 'Home',
'menu_calendar' => 'Calendar',
'menu_budget' => 'Budget',
'menu_holidays' => 'Trips',
'menu_gifts' => 'Gifts',
'menu_calendar_ios' => 'iOS Calendar',
'nav_home' => 'Home',
'nav_calendar' => 'Calendar',
'nav_budget' => 'Budget',
'nav_holidays' => 'Trips',
'nav_gifts' => 'Gifts',
'aria_menu' => 'Mobile menu',
// Buttons & global actions
'actions' => 'Actions',
'edit' => 'Edit',
'delete' => 'Delete',
'save' => 'Save',
'cancel' => 'Cancel',
'btn_save' => 'Save',
'btn_cancel' => 'Cancel',
'btn_delete' => 'Delete',
'btn_close' => 'Close',
'btn_back' => '◀ Back',
'btn_edit_bases' => '⚙️ Edit base values',
'btn_edit' => 'Edit',
'error_occured' => 'An error occurred.',
// Generic words & errors
'error' => 'Error.',
'confirm_delete' => 'Are you sure you want to delete this item?',
// 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',
// ==========================================
// AUTHENTICATION / LOGIN
// ==========================================
'login_title' => 'Login - HouseHub',
'login_header' => 'Login',
'label_username' => 'Username',
'label_password' => 'Password',
'placeholder_username' => 'e.g. john',
'btn_login' => 'Login',
'btn_login_submit' => 'Sign in',
'logout' => 'Logout',
'btn_logout' => 'Logout',
'error_missing_fields' => 'All fields are required.',
'error_invalid_credentials' => 'Invalid credentials.',
'login_subtitle' => 'Please sign in to continue',
// ==========================================
// HOME / INDEX
// ==========================================
'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.',
'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_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.',
'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',
'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',
// ==========================================
// 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_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' => 'Children\'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_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',
// --- 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',
// ==========================================
// 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',
'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',
'leg_pep_sick' => 'Pep 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 %s',
'fc_alert_burn_jra' => '⚠️ JRA: Only 2 days can be carried over after February!',
// ==========================================
// 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_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 <strong>arrival and departure dates</strong>.',
'to_place' => '📥 To place',
// ==========================================
// BUDGET (GLOBAL & CATEGORIES)
// ==========================================
'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_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.',
'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',
'budget_tab_kids' => 'Kids',
'budget_settings_title' => 'Budget Settings',
'bs_tab_accounts' => '💳 Accounts',
'bs_tab_categories' => '🏷️ Categories',
'bs_tab_rules' => '🤖 Import Rules',
'bs_tab_salaries' => '💼 Salaries',
'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!',
// 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.',
// 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',
'settings' => 'Settings',
// --- 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',
// --- 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_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)',
// --- 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',
'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_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',
// JS & Errors
'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.',
// --- 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_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' => '<strong>%s €</strong> are owed to <strong>%s</strong>',
'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',
// --- 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',
// ==========================================
// MODULE: GIFTS (gift-list)
// ==========================================
// 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_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',
// ==========================================
// GARAGE MANAGER
// ==========================================
'menu_garage' => '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',
];