Deploy HouseHub / deploy (push) Successful in 1s
- printvault.php: SPA with model grid, sidebar (categories + type filters), search - modules/printvault/api.php: PHP proxy to PrintVault API (auth + CORS) - modules/printvault/assets/printvault.js: model grid, upload modal, detail modal - modules/printvault/assets/printvault.css: full light/dark theme - Upload: drag&drop + form (name, category, tags) - Detail modal: metadata, dimensions, GCode info, download, delete, "Voir en 3D" → PrintVault - Integrated in header nav, home page, settings; translations fr/en/ca Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
646 lines
32 KiB
PHP
646 lines
32 KiB
PHP
<?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',
|
|
|
|
// ==========================================
|
|
// 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 <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: 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.',
|
|
|
|
// --- 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',
|
|
|
|
// ==========================================
|
|
// 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',
|
|
];
|