diff --git a/header.php b/header.php index 50280fd..c3ae2c8 100644 --- a/header.php +++ b/header.php @@ -58,6 +58,8 @@ $currentLang = $_SESSION['app_lang'] ?? 'fr'; FR | CA + | + EN diff --git a/includes/i18n.php b/includes/i18n.php index cc6b9e5..49de6c5 100644 --- a/includes/i18n.php +++ b/includes/i18n.php @@ -4,8 +4,8 @@ if (session_status() === PHP_SESSION_NONE) { session_start(); } -// 1. Changement de langue si l'utilisateur a cliqué sur un drapeau (?lang=ca ou ?lang=fr) -if (isset($_GET['lang']) && in_array($_GET['lang'], ['fr', 'ca'])) { +// 1. Changement de langue si l'utilisateur a cliqué sur un drapeau +if (isset($_GET['lang']) && in_array($_GET['lang'], ['fr', 'ca', 'en'])) { $_SESSION['app_lang'] = $_GET['lang']; } diff --git a/includes/lang/en.php b/includes/lang/en.php new file mode 100644 index 0000000..9aef620 --- /dev/null +++ b/includes/lang/en.php @@ -0,0 +1,531 @@ + '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', + '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.', + 'cta_open' => 'Open', + 'cta_explore' => 'Explore', + 'cta_view_lists' => 'View lists', + 'cta_manage' => 'Manage', + + // ========================================== + // 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 (Zone C)', + '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', + + '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', + + '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 arrival and departure dates.', + '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: 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_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.', + + // --- 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: 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', + + // ========================================== + // GIFTS + // ========================================== + 'gift_page_title' => 'HouseHub - Gift list', + 'gift_occ_tio' => 'Tió', + 'gift_occ_noel' => 'Christmas', + 'gift_occ_rois' => 'Three Kings', + 'gift_occ_anniv' => 'Birthday', + 'gift_occ_sant' => 'Name day', + 'gift_main_title' => 'Gift list %s', + 'gift_aria_change_view' => 'Change view', + 'gift_view_nadal' => 'Christmas', + 'gift_view_anniv' => 'Birthdays', + 'gift_view_by_party' => 'View by occasion', + 'gift_no_gifts' => 'No gifts recorded for %s in this view.', + 'gift_add_gift' => 'Add a gift', + 'gift_paid_by' => 'paid by %s', + 'gift_summary_title' => 'Budget summary', + 'gift_col_adult' => 'Adult', + 'gift_col_child' => 'Child', + 'gift_col_party' => 'Occasion', + 'gift_debtor' => 'Debtor', + 'gift_creditor' => 'Creditor', + 'gift_liquidations' => 'Settlement', + 'gift_no_debt' => 'No outstanding debts.', + 'gift_owes' => 'owes', + 'gift_to' => 'to', + 'gift_detailed_list' => 'Detailed gift list', + 'gift_col_gift' => 'Gift', + 'gift_col_link' => 'Link', + 'gift_modal_title_add' => 'Add a gift for %s', + 'gift_modal_title_edit' => 'Edit gift', + 'gift_modal_payer' => 'Paid by', + 'gift_modal_gift_name' => 'Gift name', + 'gift_modal_ph_name' => 'e.g. Lego Star Wars', + 'gift_modal_price' => 'Price (€)', + 'gift_modal_link' => 'Link (optional)', + 'gift_confirm_delete' => 'Are you sure you want to delete this gift?', + 'gift_filter_all_children' => 'All children', + 'gift_filter_all_adults' => 'All adults', + 'gift_empty_state_no_gifts' => 'No gifts yet.', + 'gift_empty_state_no_filter' => 'No gifts match the filter.', + 'gift_view_matrix' => 'View detailed matrix', +];