feat: map shapes, image persistence, grab tool, layer rename/delete, i18n, page metadata

This commit is contained in:
AlacrisDevs
2026-02-08 23:11:09 +02:00
parent 75a2aefadb
commit f2384bceb8
125 changed files with 22605 additions and 3902 deletions

View File

@@ -8,13 +8,14 @@
"user_menu_account_settings": "Account Settings",
"user_menu_switch_org": "Switch Organization",
"user_menu_logout": "Log Out",
"btn_new": "+ New",
"btn_new": "New",
"btn_create": "Create",
"btn_cancel": "Cancel",
"btn_save": "Save",
"btn_delete": "Delete",
"btn_edit": "Edit",
"btn_close": "Close",
"btn_creating": "Creating...",
"btn_upload": "Upload",
"btn_remove": "Remove",
"login_title": "Welcome to Root",
@@ -24,7 +25,7 @@
"login_email_label": "Email",
"login_email_placeholder": "you@example.com",
"login_password_label": "Password",
"login_password_placeholder": "••••••••",
"login_password_placeholder": "••••••••",
"login_btn_login": "Log In",
"login_btn_signup": "Sign Up",
"login_or_continue": "or continue with",
@@ -56,7 +57,7 @@
"files_context_move": "Move to...",
"files_context_delete": "Delete",
"files_context_open_tab": "Open in new tab",
"files_empty": "No files yet. Click + New to create one.",
"files_empty": "No files yet. Click New to create one.",
"files_toggle_view": "Toggle view",
"kanban_title": "Kanban",
"kanban_create_board": "Create Board",
@@ -110,6 +111,29 @@
"settings_general_leave_org": "Leave Organization",
"settings_general_leave_org_desc": "Leave this organization. You will need to be re-invited to rejoin.",
"settings_general_leave_btn": "Leave {orgName}",
"settings_social_title": "Social & Links",
"settings_social_desc": "Add your organization's website and social media links.",
"settings_social_website": "Website",
"settings_social_website_placeholder": "https://yourorg.com",
"settings_social_instagram": "Instagram",
"settings_social_instagram_placeholder": "https://instagram.com/yourorg",
"settings_social_facebook": "Facebook",
"settings_social_facebook_placeholder": "https://facebook.com/yourorg",
"settings_social_discord": "Discord",
"settings_social_discord_placeholder": "https://discord.gg/yourorg",
"settings_social_linkedin": "LinkedIn",
"settings_social_linkedin_placeholder": "https://linkedin.com/company/yourorg",
"settings_social_x": "X (Twitter)",
"settings_social_x_placeholder": "https://x.com/yourorg",
"settings_social_youtube": "YouTube",
"settings_social_youtube_placeholder": "https://youtube.com/@yourorg",
"settings_social_tiktok": "TikTok",
"settings_social_tiktok_placeholder": "https://tiktok.com/@yourorg",
"settings_social_fienta": "Fienta",
"settings_social_fienta_placeholder": "https://fienta.com/yourorg",
"settings_social_twitch": "Twitch",
"settings_social_twitch_placeholder": "https://twitch.tv/yourorg",
"settings_social_save": "Save Links",
"settings_tags_title": "Organization Tags",
"settings_tags_desc": "Manage tags that can be used across all Kanban boards.",
"settings_tags_create": "Create Tag",
@@ -118,7 +142,7 @@
"settings_members_title": "Team Members ({count})",
"settings_members_invite": "Invite Member",
"settings_members_pending": "Pending Invites",
"settings_members_invited_as": "Invited as {role} Expires {date}",
"settings_members_invited_as": "Invited as {role} • Expires {date}",
"settings_members_copy_link": "Copy Link",
"settings_members_unknown": "Unknown User",
"settings_members_no_name": "No name",
@@ -160,7 +184,7 @@
"settings_connect_cal_desc": "Paste your Google Calendar's shareable link or calendar ID. The calendar must be set to public in Google Calendar settings.",
"settings_connect_cal_how": "How to get your calendar link:",
"settings_connect_cal_step1": "Open Google Calendar",
"settings_connect_cal_step2": "Click the 3 dots next to your calendar Settings",
"settings_connect_cal_step2": "Click the 3 dots next to your calendar → Settings",
"settings_connect_cal_step3": "Under \"Access permissions\", check \"Make available to public\"",
"settings_connect_cal_step4": "Scroll to \"Integrate calendar\" and copy the Calendar ID or Public URL",
"settings_connect_cal_input_label": "Calendar URL or ID",
@@ -410,5 +434,286 @@
"dept_files_open": "Open Files",
"dept_files_desc": "Department files and documents",
"dept_quick_add": "Quick add",
"dept_modules_label": "Modules"
"dept_modules_label": "Modules",
"dept_dashboard_collapse": "Collapse",
"dept_dashboard_move_left": "Move left",
"dept_dashboard_move_right": "Move right",
"dept_dashboard_layout_1col": "1 Column",
"dept_dashboard_layout_2col": "2 Columns",
"dept_dashboard_layout_3col": "3 Columns",
"dept_dashboard_layout_grid": "2x2 Grid",
"dept_module_kanban": "Kanban",
"dept_module_files": "Files",
"dept_module_checklist": "Checklist",
"dept_module_notes": "Notes",
"dept_module_schedule": "Schedule",
"dept_module_contacts": "Contacts",
"dept_module_budget": "Budget",
"dept_module_sponsors": "Sponsors",
"dept_module_map": "Map",
"toast_error_update_layout": "Failed to update layout",
"toast_error_add_module": "Failed to add module",
"toast_error_remove_module": "Failed to remove module",
"toast_error_reorder_modules": "Failed to reorder modules",
"toast_error_add_item": "Failed to add item",
"toast_error_update_item": "Failed to update item",
"toast_error_delete_item": "Failed to delete item",
"toast_error_create_checklist": "Failed to create checklist",
"toast_error_delete_checklist": "Failed to delete checklist",
"toast_error_rename_checklist": "Failed to rename checklist",
"toast_error_delete_contact": "Failed to delete contact",
"toast_error_create_category": "Failed to create category",
"toast_error_delete_category": "Failed to delete category",
"toast_error_create_budget_item": "Failed to create budget item",
"toast_error_update_budget_item": "Failed to update budget item",
"toast_error_delete_budget_item": "Failed to delete budget item",
"toast_error_upload_receipt": "Failed to upload receipt",
"toast_success_receipt_attached": "Receipt \"{name}\" attached",
"toast_error_create_tier": "Failed to create tier",
"toast_error_delete_tier": "Failed to delete tier",
"toast_error_create_sponsor": "Failed to create sponsor",
"toast_error_update_sponsor": "Failed to update sponsor",
"toast_error_delete_sponsor": "Failed to delete sponsor",
"toast_error_create_deliverable": "Failed to create deliverable",
"toast_error_update_deliverable": "Failed to update deliverable",
"toast_error_delete_deliverable": "Failed to delete deliverable",
"checklist_rename": "Rename",
"checklist_delete": "Delete checklist",
"checklist_add_item_placeholder": "Add item...",
"checklist_name_placeholder": "Checklist name...",
"checklist_no_items": "No checklists yet",
"checklist_add": "Add checklist",
"notes_new": "New note",
"notes_title_placeholder": "Note title...",
"notes_placeholder": "Start writing...",
"notes_no_notes": "No notes yet",
"notes_select": "Select a note",
"notes_export_document": "Export as document",
"notes_delete": "Delete note",
"notes_exported": "Exported \"{title}\" as document",
"notes_export_error": "Failed to export note",
"schedule_timeline": "Timeline",
"schedule_list": "List",
"schedule_add_block": "Add Block",
"schedule_manage_stages": "Manage Stages",
"schedule_no_blocks": "No schedule blocks yet",
"schedule_add_first": "Add your first block to start building the schedule.",
"schedule_all_day": "All day",
"schedule_no_stage": "No stage",
"schedule_add_stage_title": "Add Stage / Room",
"schedule_stage_name_placeholder": "e.g. Main Stage",
"schedule_add_stage": "Add Stage",
"schedule_existing_stages": "Existing Stages",
"schedule_no_stages": "No stages yet",
"schedule_add_block_title": "Add Schedule Block",
"schedule_edit_block_title": "Edit Schedule Block",
"schedule_block_title_label": "Title",
"schedule_block_title_placeholder": "e.g. Opening Ceremony",
"schedule_block_speaker_label": "Speaker / Host",
"schedule_block_speaker_placeholder": "e.g. John Doe",
"schedule_block_start_label": "Start Time",
"schedule_block_end_label": "End Time",
"schedule_block_stage_label": "Stage / Room",
"schedule_block_no_stage": "No stage",
"schedule_block_description_label": "Description",
"schedule_block_description_placeholder": "Optional description...",
"schedule_block_color_label": "Color",
"schedule_block_delete": "Delete Block",
"contacts_search_placeholder": "Search contacts...",
"contacts_add": "Add Contact",
"contacts_no_contacts": "No contacts yet",
"contacts_add_first": "Add your first contact to build your directory.",
"contacts_no_results": "No contacts match your search",
"contacts_category_all": "All",
"contacts_category_venue": "Venue",
"contacts_category_catering": "Catering",
"contacts_category_av": "AV / Tech",
"contacts_category_security": "Security",
"contacts_category_transport": "Transport",
"contacts_category_entertainment": "Entertainment",
"contacts_category_media": "Media",
"contacts_category_sponsor": "Sponsor",
"contacts_category_other": "Other",
"contacts_add_title": "Add Contact",
"contacts_edit_title": "Edit Contact",
"contacts_name_label": "Name",
"contacts_name_placeholder": "Contact name",
"contacts_role_label": "Role / Title",
"contacts_role_placeholder": "e.g. Event Manager",
"contacts_company_label": "Company",
"contacts_company_placeholder": "Company name",
"contacts_email_label": "Email",
"contacts_email_placeholder": "email@example.com",
"contacts_phone_label": "Phone",
"contacts_phone_placeholder": "+372 ...",
"contacts_website_label": "Website",
"contacts_website_placeholder": "https://...",
"contacts_category_label": "Category",
"contacts_notes_label": "Notes",
"contacts_notes_placeholder": "Optional notes...",
"contacts_delete_confirm": "Delete this contact?",
"budget_income": "Income",
"budget_expenses": "Expenses",
"budget_planned": "Planned: {amount}",
"budget_planned_balance": "Planned Balance",
"budget_actual_balance": "Actual Balance",
"budget_view_all": "All",
"budget_view_income": "Income",
"budget_view_expenses": "Expenses",
"budget_add_category": "Category",
"budget_add_item": "Add Item",
"budget_no_items": "No budget items yet",
"budget_col_type": "Type",
"budget_col_description": "Description",
"budget_col_category": "Category",
"budget_col_planned": "Planned",
"budget_col_actual": "Actual",
"budget_col_diff": "Diff",
"budget_col_receipt": "Receipt",
"budget_uncategorized": "Uncategorized",
"budget_total": "Total",
"budget_missing_receipt": "Missing invoice/receipt - click to upload",
"budget_missing_receipt_short": "Missing invoice/receipt",
"budget_receipt_attached": "Receipt attached",
"budget_add_item_title": "Add Budget Item",
"budget_edit_item_title": "Edit Budget Item",
"budget_description_label": "Description",
"budget_description_placeholder": "e.g. Venue rental",
"budget_type_label": "Type",
"budget_type_expense": "Expense",
"budget_type_income": "Income",
"budget_category_label": "Category",
"budget_planned_amount_label": "Planned Amount",
"budget_actual_amount_label": "Actual Amount",
"budget_notes_label": "Notes",
"budget_notes_placeholder": "Optional notes...",
"budget_add_category_title": "Add Category",
"budget_category_name_label": "Name",
"budget_category_name_placeholder": "e.g. Venue",
"budget_category_color_label": "Color",
"budget_select_color": "Select color {color}",
"budget_existing_categories": "Existing Categories",
"sponsors_search_placeholder": "Search sponsors...",
"sponsors_add_tier": "Add Tier",
"sponsors_add_sponsor": "Add Sponsor",
"sponsors_no_sponsors": "No sponsors yet",
"sponsors_add_first": "Add sponsor tiers and start tracking your sponsors.",
"sponsors_no_results": "No sponsors match your filters",
"sponsors_filter_all_statuses": "All Statuses",
"sponsors_filter_all_tiers": "All Tiers",
"sponsors_status_prospect": "Prospect",
"sponsors_status_contacted": "Contacted",
"sponsors_status_confirmed": "Confirmed",
"sponsors_status_declined": "Declined",
"sponsors_status_active": "Active",
"sponsors_contact_label": "Contact",
"sponsors_amount_label": "Amount",
"sponsors_deliverables_label": "Deliverables",
"sponsors_deliverable_placeholder": "Add deliverable...",
"sponsors_no_deliverables": "No deliverables yet",
"sponsors_notes_label": "Notes",
"sponsors_add_tier_title": "Add Sponsor Tier",
"sponsors_tier_name_label": "Tier Name",
"sponsors_tier_name_placeholder": "e.g. Gold",
"sponsors_tier_amount_label": "Minimum Amount",
"sponsors_tier_color_label": "Color",
"sponsors_existing_tiers": "Existing Tiers",
"sponsors_no_tiers": "No tiers yet",
"sponsors_add_sponsor_title": "Add Sponsor",
"sponsors_edit_sponsor_title": "Edit Sponsor",
"sponsors_name_label": "Sponsor Name",
"sponsors_name_placeholder": "Company name",
"sponsors_tier_label": "Tier",
"sponsors_no_tier": "No tier",
"sponsors_status_label": "Status",
"sponsors_sponsor_amount_label": "Amount (€)",
"sponsors_sponsor_amount_placeholder": "0",
"sponsors_contact_name_label": "Contact Name",
"sponsors_contact_name_placeholder": "Contact person",
"sponsors_contact_email_label": "Contact Email",
"sponsors_contact_email_placeholder": "email@example.com",
"sponsors_contact_phone_label": "Contact Phone",
"sponsors_contact_phone_placeholder": "+372 ...",
"sponsors_website_label": "Website",
"sponsors_website_placeholder": "https://...",
"sponsors_notes_placeholder": "Optional notes...",
"sponsors_delete_confirm": "Delete this sponsor?",
"sponsors_select_color": "Select color {color}",
"files_widget_loading": "Loading files...",
"files_widget_no_folder": "Department folder not yet created",
"files_widget_empty": "No files yet",
"files_widget_full_view": "Full View",
"files_widget_create_title": "Create New",
"files_widget_type_document": "Document",
"files_widget_type_folder": "Folder",
"files_widget_type_kanban": "Kanban Board",
"files_widget_name_label": "Name",
"files_widget_doc_placeholder": "Document name",
"files_widget_folder_placeholder": "Folder name",
"files_widget_kanban_placeholder": "Board name",
"files_widget_drop_files": "Drop files to upload",
"files_widget_uploading": "Uploading {name}...",
"kanban_widget_loading": "Loading boards...",
"kanban_widget_no_folder": "Department folder not yet created",
"kanban_widget_no_boards": "No kanban boards yet",
"kanban_widget_create": "Create Board",
"kanban_widget_create_title": "Create Kanban Board",
"kanban_widget_name_label": "Board Name",
"kanban_widget_name_placeholder": "e.g. Task Tracker",
"finances_title": "Event Finances",
"finances_subtitle": "Budget overview across all departments",
"finances_total_income": "Total Income",
"finances_total_expenses": "Total Expenses",
"finances_net_balance": "Net Balance",
"finances_missing_receipts": "Missing Receipts",
"finances_items_without_receipts": "{count} items without receipts",
"finances_planned": "planned",
"finances_view_by_dept": "By Department",
"finances_view_by_category": "By Category",
"finances_filter_all": "All",
"finances_filter_income": "Income",
"finances_filter_expenses": "Expenses",
"finances_no_items": "No budget items yet",
"finances_no_items_desc": "Budget items will appear here once departments add them.",
"finances_col_description": "Description",
"finances_col_department": "Department",
"finances_col_category": "Category",
"finances_col_planned": "Planned",
"finances_col_actual": "Actual",
"finances_col_diff": "Diff",
"finances_col_receipt": "Receipt",
"finances_uncategorized": "Uncategorized",
"finances_no_department": "No Department",
"finances_group_total": "Subtotal",
"page_chat": "Chat",
"page_department": "Department",
"page_invite": "Invitation",
"map_tool_grab": "Grab",
"map_tool_select": "Select",
"map_tool_pin": "Pin",
"map_tool_polygon": "Polygon",
"map_tool_rectangle": "Rectangle",
"map_add_layer": "Add Map Layer",
"map_add_image_layer": "Add Image Map Layer",
"map_layer_name": "Layer Name",
"map_street_map": "Street Map",
"map_custom_image": "Custom Image",
"map_osm_tiles": "OpenStreetMap tiles",
"map_upload_venue": "Upload venue map",
"map_choose_image": "Choose image file",
"map_uploading": "Uploading...",
"map_image_url": "Image URL",
"map_image_desc": "Upload a venue floor plan or map image. Aspect ratio will be preserved.",
"map_objects": "Objects",
"map_no_objects": "No objects yet",
"map_export_png": "Export PNG",
"map_rename_layer": "Rename Layer",
"map_edit_pin": "Edit Pin",
"map_add_pin": "Add Pin",
"map_edit_shape": "Edit Shape",
"map_label": "Label",
"map_description": "Description",
"map_color": "Color",
"map_pen_hint_points": "{count} point(s)",
"map_pen_hint_close": "click near first point to close, or press Esc to cancel"
}