1<?php 2/** 3 * English language file for Calendar plugin 4 */ 5 6// Admin menu 7$lang['menu'] = 'Calendar Management'; 8 9// General 10$lang['calendar'] = 'Calendar'; 11$lang['events'] = 'Events'; 12$lang['event'] = 'Event'; 13$lang['today'] = 'Today'; 14$lang['tomorrow'] = 'Tomorrow'; 15$lang['yesterday'] = 'Yesterday'; 16 17// Event fields 18$lang['title'] = 'Title'; 19$lang['description'] = 'Description'; 20$lang['date'] = 'Date'; 21$lang['time'] = 'Time'; 22$lang['start_time'] = 'Start Time'; 23$lang['end_time'] = 'End Time'; 24$lang['end_date'] = 'End Date'; 25$lang['color'] = 'Color'; 26$lang['namespace'] = 'Namespace'; 27$lang['all_day'] = 'All Day'; 28 29// Actions 30$lang['add_event'] = 'Add Event'; 31$lang['edit_event'] = 'Edit Event'; 32$lang['delete_event'] = 'Delete Event'; 33$lang['save'] = 'Save'; 34$lang['cancel'] = 'Cancel'; 35$lang['close'] = 'Close'; 36$lang['search'] = 'Search'; 37$lang['clear'] = 'Clear'; 38 39// Task-related 40$lang['task'] = 'Task'; 41$lang['mark_as_task'] = 'Mark as Task'; 42$lang['completed'] = 'Completed'; 43$lang['past_due'] = 'Past Due'; 44 45// Recurring events 46$lang['recurring'] = 'Recurring'; 47$lang['repeat'] = 'Repeat'; 48$lang['daily'] = 'Daily'; 49$lang['weekly'] = 'Weekly'; 50$lang['monthly'] = 'Monthly'; 51$lang['yearly'] = 'Yearly'; 52$lang['every'] = 'Every'; 53$lang['days'] = 'days'; 54$lang['weeks'] = 'weeks'; 55$lang['months'] = 'months'; 56$lang['years'] = 'years'; 57$lang['repeat_on'] = 'Repeat on'; 58$lang['ends'] = 'Ends'; 59$lang['never'] = 'Never'; 60$lang['after_occurrences'] = 'After occurrences'; 61$lang['on_date'] = 'On date'; 62 63// Days of week 64$lang['sunday'] = 'Sunday'; 65$lang['monday'] = 'Monday'; 66$lang['tuesday'] = 'Tuesday'; 67$lang['wednesday'] = 'Wednesday'; 68$lang['thursday'] = 'Thursday'; 69$lang['friday'] = 'Friday'; 70$lang['saturday'] = 'Saturday'; 71$lang['sun'] = 'Sun'; 72$lang['mon'] = 'Mon'; 73$lang['tue'] = 'Tue'; 74$lang['wed'] = 'Wed'; 75$lang['thu'] = 'Thu'; 76$lang['fri'] = 'Fri'; 77$lang['sat'] = 'Sat'; 78 79// Months 80$lang['january'] = 'January'; 81$lang['february'] = 'February'; 82$lang['march'] = 'March'; 83$lang['april'] = 'April'; 84$lang['may'] = 'May'; 85$lang['june'] = 'June'; 86$lang['july'] = 'July'; 87$lang['august'] = 'August'; 88$lang['september'] = 'September'; 89$lang['october'] = 'October'; 90$lang['november'] = 'November'; 91$lang['december'] = 'December'; 92 93// Messages 94$lang['no_events'] = 'No events'; 95$lang['no_events_today'] = 'No events today'; 96$lang['no_events_this_month'] = 'No events this month'; 97$lang['no_events_found'] = 'No events match your search'; 98$lang['event_saved'] = 'Event saved successfully'; 99$lang['event_deleted'] = 'Event deleted successfully'; 100$lang['confirm_delete'] = 'Are you sure you want to delete this event?'; 101$lang['loading'] = 'Loading...'; 102$lang['searching'] = 'Searching...'; 103 104// Search 105$lang['search_this_month'] = 'Search this month'; 106$lang['search_all_dates'] = 'Search all dates'; 107$lang['found_events'] = 'Found %d event(s) across all dates'; 108 109// Sync 110$lang['sync'] = 'Sync'; 111$lang['sync_now'] = 'Sync Now'; 112$lang['last_sync'] = 'Last sync'; 113$lang['sync_successful'] = 'Sync completed successfully'; 114$lang['sync_failed'] = 'Sync failed'; 115 116// Admin sections 117$lang['manage_events'] = 'Manage Events'; 118$lang['sync_settings'] = 'Sync Settings'; 119$lang['backup_restore'] = 'Backup & Restore'; 120$lang['statistics'] = 'Statistics'; 121$lang['important_namespaces'] = 'Important Namespaces'; 122$lang['cleanup_events'] = 'Cleanup Old Events'; 123 124// Sidebar widget 125$lang['upcoming_events'] = 'Upcoming Events'; 126$lang['important_events'] = 'Important Events'; 127$lang['past_events'] = 'Past Events'; 128 129// Time conflicts 130$lang['time_conflict'] = 'Time Conflict'; 131$lang['conflicts_with'] = 'Conflicts with'; 132 133// Admin tabs 134$lang['tab_manage'] = 'Manage Events'; 135$lang['tab_update'] = 'Update Plugin'; 136$lang['tab_sync'] = 'Outlook Sync'; 137$lang['tab_themes'] = 'Themes'; 138 139// Admin manage tab sections 140$lang['event_browser'] = 'Event Browser'; 141$lang['important_namespaces'] = 'Important Namespaces'; 142$lang['cleanup_events'] = 'Cleanup Old Events'; 143$lang['backup_events'] = 'Backup Events'; 144$lang['restore_events'] = 'Restore Events'; 145 146// Admin sync tab 147$lang['outlook_sync_settings'] = 'Outlook Sync Settings'; 148$lang['sync_url'] = 'Sync URL'; 149$lang['sync_interval'] = 'Sync Interval'; 150$lang['enable_sync'] = 'Enable Sync'; 151$lang['test_connection'] = 'Test Connection'; 152 153// Admin themes tab 154$lang['theme_preview'] = 'Theme Preview'; 155$lang['select_theme'] = 'Select Theme'; 156 157// Buttons and actions 158$lang['run_now'] = 'Run Now'; 159$lang['download'] = 'Download'; 160$lang['upload'] = 'Upload'; 161$lang['delete'] = 'Delete'; 162$lang['refresh'] = 'Refresh'; 163$lang['view_log'] = 'View Log'; 164$lang['clear_log'] = 'Clear Log'; 165$lang['save'] = 'Save'; 166$lang['cancel'] = 'Cancel'; 167$lang['close'] = 'Close'; 168$lang['preview'] = 'Preview'; 169$lang['rescan'] = 'Rescan'; 170$lang['select_all'] = 'All'; 171$lang['select_none'] = 'None'; 172$lang['move_to'] = 'Move to'; 173 174// Manage Events Tab 175$lang['manage_calendar_events'] = 'Manage Calendar Events'; 176$lang['events_manager'] = 'Events Manager'; 177$lang['events_manager_desc'] = 'Scan, export, and import all calendar events across all namespaces.'; 178$lang['total_events'] = 'Total Events'; 179$lang['namespaces'] = 'Namespaces'; 180$lang['json_files'] = 'JSON Files'; 181$lang['recurring'] = 'Recurring'; 182$lang['last_scanned'] = 'Last scanned'; 183$lang['rescan_events'] = 'Re-scan Events'; 184$lang['export_all_events'] = 'Export All Events'; 185$lang['import_events'] = 'Import Events'; 186$lang['import_confirm'] = 'Import will merge with existing events. Continue?'; 187$lang['view_breakdown'] = 'View Breakdown by Namespace'; 188$lang['events_column'] = 'Events'; 189$lang['files_column'] = 'Files'; 190$lang['default_ns'] = '(default)'; 191 192// Important Namespaces 193$lang['important_namespaces'] = 'Important Namespaces'; 194$lang['important_ns_desc'] = 'Events from these namespaces will be visually highlighted throughout the calendar:'; 195$lang['visual_effects'] = 'Visual Effects'; 196$lang['effect_grid'] = 'Calendar Grid: ⭐ star icon on event bars'; 197$lang['effect_sidebar'] = 'Event Sidebar: ⭐ star + highlighted background + accent border'; 198$lang['effect_widget'] = 'Sidebar Widget: Dedicated "Important Events" section + highlighting'; 199$lang['effect_popup'] = 'Day Popup: Events shown with full details'; 200$lang['important_ns_hint'] = 'Comma-separated list of namespace names (e.g., "important,urgent,bills")'; 201 202// Cleanup Events 203$lang['cleanup_old_events'] = 'Cleanup Old Events'; 204$lang['cleanup_desc'] = 'Delete events based on criteria below. Automatic backup created before deletion.'; 205$lang['by_age'] = 'By Age'; 206$lang['by_status'] = 'By Status'; 207$lang['by_date_range'] = 'By Date Range'; 208$lang['delete_older_than'] = 'Delete events older than'; 209$lang['months'] = 'months'; 210$lang['years'] = 'years'; 211$lang['completed_tasks'] = 'Completed tasks'; 212$lang['past_events'] = 'Past events'; 213$lang['from_date'] = 'From'; 214$lang['to_date'] = 'To'; 215$lang['namespace_filter'] = 'Namespace'; 216$lang['namespace_filter_hint'] = 'Leave empty for all, or specify: work, personal, etc.'; 217$lang['backup_auto'] = 'Backup created automatically'; 218$lang['cleanup_confirm'] = 'Are you sure you want to delete these events? A backup will be created first, but this action cannot be easily undone.'; 219$lang['no_events_match'] = 'No events match the criteria. Nothing would be deleted.'; 220$lang['events_would_delete'] = 'The following %d event(s) would be deleted:'; 221$lang['loading_preview'] = 'Loading preview...'; 222$lang['error_loading'] = 'Error loading preview'; 223$lang['debug_info'] = 'Debug Info'; 224 225// Recurring Events 226$lang['recurring_events'] = 'Recurring Events'; 227$lang['trim_all_past'] = 'Trim All Past'; 228$lang['rescan'] = 'Rescan'; 229 230// Namespace Explorer 231$lang['namespace_explorer'] = 'Namespace Explorer'; 232$lang['namespace_explorer_desc'] = 'Select events and move between namespaces. Drag & drop also supported.'; 233$lang['search_events'] = 'Search events by title...'; 234$lang['type_or_select'] = 'Type or select...'; 235$lang['drop_target'] = 'Drop Target'; 236$lang['drop_here'] = 'Drop here'; 237 238// Recurring Events Table 239$lang['search_recurring'] = 'Search recurring events...'; 240$lang['no_recurring_found'] = 'No recurring events found.'; 241$lang['col_title'] = 'Title'; 242$lang['col_namespace'] = 'Namespace'; 243$lang['col_pattern'] = 'Pattern'; 244$lang['col_range'] = 'Range'; 245$lang['col_count'] = 'Count'; 246$lang['col_source'] = 'Source'; 247$lang['col_actions'] = 'Actions'; 248$lang['source_flagged'] = 'Flagged'; 249$lang['source_detected'] = 'Detected'; 250$lang['btn_edit'] = 'Edit'; 251$lang['btn_manage'] = 'Manage'; 252$lang['btn_del'] = 'Del'; 253$lang['total_series'] = 'Total: %d series'; 254 255// Recurrence patterns 256$lang['pattern_daily'] = 'Daily'; 257$lang['pattern_weekly'] = 'Weekly'; 258$lang['pattern_monthly'] = 'Monthly'; 259$lang['pattern_yearly'] = 'Yearly'; 260$lang['pattern_custom'] = 'Custom'; 261 262// Namespace Explorer control bar 263$lang['btn_move'] = 'Move'; 264$lang['new_namespace'] = 'New Namespace'; 265$lang['cleanup_empty'] = 'Cleanup'; 266$lang['x_selected'] = '%d selected'; 267$lang['zero_selected'] = '0 selected'; 268 269// Button tooltips 270$lang['tooltip_edit'] = 'Edit title, time, namespace, pattern'; 271$lang['tooltip_manage'] = 'Extend, trim, pause, change dates'; 272$lang['tooltip_delete_all'] = 'Delete all occurrences'; 273 274// JavaScript messages 275$lang['no_events_selected'] = 'No events selected'; 276$lang['delete_confirm'] = 'Delete %d selected event(s)?\n\nThis cannot be undone!'; 277$lang['delete_ns_confirm'] = 'Delete ENTIRE namespace: %s?\n\nThis will delete ALL events in this namespace!\n\nThis cannot be undone!'; 278$lang['scanning'] = 'Scanning...'; 279$lang['cleaning'] = 'Cleaning...'; 280$lang['no_empty_ns'] = 'No empty namespaces or orphan calendar folders found.'; 281$lang['found_items'] = 'Found %d item(s) to clean up'; 282$lang['proceed_cleanup'] = 'Proceed with cleanup?'; 283 284// New Namespace dialog 285$lang['enter_namespace'] = 'Enter new namespace name:\n\nExamples:\n- work\n- personal\n- projects:alpha'; 286$lang['invalid_namespace'] = 'Invalid namespace name.\n\nUse only letters, numbers, underscore, hyphen, and colon.\nExample: work:projects:alpha'; 287 288// Rename namespace dialog 289$lang['rename_namespace'] = 'Rename namespace: %s\n\nEnter new name:'; 290 291// Delete recurring series 292$lang['delete_recurring_confirm'] = 'Delete ALL occurrences of: %s (%s)?\n\nThis cannot be undone!'; 293 294// Trim recurring events 295$lang['no_past_recurring'] = 'No past recurring events found to remove.'; 296$lang['found_past_recurring'] = 'Found %d past recurring event(s) to remove.\n\nThis cannot be undone. Proceed?'; 297$lang['counting'] = 'Counting...'; 298$lang['trimming'] = 'Trimming...'; 299 300// Manage recurring dialog buttons 301$lang['btn_trim'] = 'Trim'; 302$lang['btn_change'] = 'Change'; 303$lang['btn_shift'] = 'Shift'; 304$lang['trim_confirm'] = 'Remove all occurrences before %s?'; 305$lang['respace_confirm'] = 'Respace all future occurrences?'; 306$lang['shift_confirm'] = 'Shift all occurrences to new start date?'; 307 308// Manage Recurring Dialog 309$lang['manage_recurring_title'] = 'Manage Recurring Series'; 310$lang['occurrences'] = 'occurrences'; 311$lang['extend_series'] = 'Extend Series'; 312$lang['add_occurrences'] = 'Add occurrences:'; 313$lang['days_apart'] = 'Days apart:'; 314$lang['btn_extend'] = 'Extend'; 315$lang['trim_past_events'] = 'Trim Past Events'; 316$lang['remove_before'] = 'Remove before:'; 317$lang['change_pattern'] = 'Change Pattern'; 318$lang['respace_note'] = 'Respaces future occurrences only. Past events stay in place.'; 319$lang['new_interval'] = 'New interval:'; 320$lang['change_start_date'] = 'Change Start Date'; 321$lang['shift_note'] = 'Shifts ALL occurrences by the difference between old and new start date.'; 322$lang['current_label'] = 'Current:'; 323$lang['pause_series'] = 'Pause Series'; 324$lang['resume_series'] = 'Resume Series'; 325$lang['pause_note'] = 'Adds ⏸ prefix to future occurrences. They remain in the calendar but are visually marked as paused.'; 326$lang['resume_note'] = 'Removes ⏸ prefix and paused flag from all occurrences.'; 327$lang['btn_pause'] = 'Pause'; 328$lang['btn_resume'] = 'Resume'; 329$lang['btn_close'] = 'Close'; 330 331// Interval options 332$lang['interval_daily'] = 'Daily'; 333$lang['interval_weekly'] = 'Weekly'; 334$lang['interval_biweekly'] = 'Bi-weekly'; 335$lang['interval_monthly'] = 'Monthly'; 336$lang['interval_quarterly'] = 'Quarterly'; 337$lang['interval_yearly'] = 'Yearly'; 338 339// Edit Recurring Dialog 340$lang['edit_recurring_title'] = 'Edit Recurring Event'; 341$lang['changes_apply_to'] = 'Changes apply to ALL occurrences of:'; 342$lang['field_title'] = 'TITLE'; 343$lang['field_start_time'] = 'START TIME'; 344$lang['field_end_time'] = 'END TIME'; 345$lang['field_namespace'] = 'NAMESPACE'; 346$lang['field_color'] = 'COLOR'; 347$lang['recurrence_pattern'] = 'RECURRENCE PATTERN'; 348$lang['every'] = 'Every'; 349$lang['on_days'] = 'On days:'; 350$lang['monthly_options'] = 'Monthly options:'; 351$lang['day_of_month'] = 'Day of month:'; 352$lang['ordinal_weekday'] = 'Ordinal weekday:'; 353$lang['btn_save_changes'] = 'Save Changes'; 354$lang['btn_cancel'] = 'Cancel'; 355 356// Ordinal labels 357$lang['ordinal_first'] = 'First'; 358$lang['ordinal_second'] = 'Second'; 359$lang['ordinal_third'] = 'Third'; 360$lang['ordinal_fourth'] = 'Fourth'; 361$lang['ordinal_fifth'] = 'Fifth'; 362$lang['ordinal_last'] = 'Last'; 363 364// Day names short 365$lang['day_sun'] = 'Sun'; 366$lang['day_mon'] = 'Mon'; 367$lang['day_tue'] = 'Tue'; 368$lang['day_wed'] = 'Wed'; 369$lang['day_thu'] = 'Thu'; 370$lang['day_fri'] = 'Fri'; 371$lang['day_sat'] = 'Sat'; 372 373// Day names full 374$lang['day_sunday'] = 'Sunday'; 375$lang['day_monday'] = 'Monday'; 376$lang['day_tuesday'] = 'Tuesday'; 377$lang['day_wednesday'] = 'Wednesday'; 378$lang['day_thursday'] = 'Thursday'; 379$lang['day_friday'] = 'Friday'; 380$lang['day_saturday'] = 'Saturday'; 381 382// Recurrence type labels 383$lang['rec_days'] = 'Day(s)'; 384$lang['rec_weeks'] = 'Week(s)'; 385$lang['rec_months'] = 'Month(s)'; 386$lang['rec_years'] = 'Year(s)'; 387 388// Backup Events 389$lang['backup_events'] = 'Backup Events'; 390$lang['backup_desc'] = 'Create full backups of all event data. Download or manage existing backups.'; 391$lang['create_backup'] = 'Create Backup'; 392$lang['available_backups'] = 'Available Backups'; 393$lang['no_backups'] = 'No backups found'; 394$lang['backup_date'] = 'Date'; 395$lang['backup_size'] = 'Size'; 396$lang['backup_actions'] = 'Actions'; 397$lang['delete_selected'] = 'Delete Selected'; 398$lang['confirm_delete_backups'] = 'Are you sure you want to delete the selected backups?'; 399 400// Static Calendar 401$lang['previous_month'] = 'Previous Month'; 402$lang['next_month'] = 'Next Month'; 403$lang['print_calendar'] = 'Print Calendar'; 404$lang['no_events_scheduled'] = 'No events scheduled for this month.'; 405$lang['calendar_label'] = 'Calendar'; 406$lang['details'] = 'Details'; 407 408// Google Calendar Sync (v7.0.7) 409$lang['tab_google'] = 'Google Sync'; 410$lang['google_sync'] = 'Google Calendar Sync'; 411$lang['google_status'] = 'Status'; 412$lang['google_connected'] = 'Connected'; 413$lang['google_not_configured'] = 'Not Configured'; 414$lang['google_not_authenticated'] = 'Not Authenticated'; 415$lang['google_setup_instructions'] = 'Setup Instructions'; 416$lang['google_step1'] = 'Go to Google Cloud Console'; 417$lang['google_step2'] = 'Create a new project (or select existing)'; 418$lang['google_step3'] = 'Enable the Google Calendar API'; 419$lang['google_step4'] = 'Go to Credentials → Create Credentials → OAuth 2.0 Client ID'; 420$lang['google_step5'] = 'Application type: Web application'; 421$lang['google_step6'] = 'Add Authorized redirect URI'; 422$lang['google_step7'] = 'Copy Client ID and Client Secret below'; 423$lang['google_client_id'] = 'Client ID'; 424$lang['google_client_secret'] = 'Client Secret'; 425$lang['google_save_credentials'] = 'Save Credentials'; 426$lang['google_credentials_saved'] = 'Google API credentials saved successfully!'; 427$lang['google_authentication'] = 'Authentication'; 428$lang['google_connect'] = 'Connect Google Calendar'; 429$lang['google_disconnect'] = 'Disconnect'; 430$lang['google_select_calendar'] = 'Select Calendar'; 431$lang['google_loading_calendars'] = 'Loading calendars...'; 432$lang['google_sync_events'] = 'Sync Events'; 433$lang['google_import'] = 'Import from Google'; 434$lang['google_import_desc'] = 'Import events from Google Calendar to DokuWiki.'; 435$lang['google_export'] = 'Export to Google'; 436$lang['google_export_desc'] = 'Export events from DokuWiki to Google Calendar.'; 437$lang['google_import_events'] = 'Import Events'; 438$lang['google_export_events'] = 'Export Events'; 439$lang['google_importing'] = 'Importing events...'; 440$lang['google_exporting'] = 'Exporting events...'; 441$lang['google_import_success'] = 'Imported %d events, %d skipped (duplicates)'; 442$lang['google_export_success'] = 'Exported %d events, %d skipped'; 443$lang['google_auth_success'] = 'Successfully connected to Google Calendar!'; 444$lang['google_auth_error'] = 'Authorization error'; 445$lang['google_primary'] = 'Primary'; 446$lang['google_namespace_optional'] = 'Namespace (optional)'; 447 448// Accessibility (v7.0.5, v7.0.6) 449$lang['aria_calendar_day'] = 'Calendar day'; 450$lang['aria_has_events'] = 'has events'; 451$lang['aria_event_deleted'] = 'Event deleted'; 452$lang['aria_event_created'] = 'Event created'; 453$lang['aria_event_updated'] = 'Event updated'; 454$lang['aria_task_complete'] = 'Task marked complete'; 455$lang['aria_task_incomplete'] = 'Task marked incomplete'; 456$lang['aria_navigate_prev'] = 'Previous month'; 457$lang['aria_navigate_next'] = 'Next month'; 458$lang['aria_close_dialog'] = 'Close dialog'; 459$lang['aria_event_list'] = 'Event list'; 460 461// Audit Logging (v7.0.5) 462$lang['audit_log'] = 'Audit Log'; 463$lang['audit_action'] = 'Action'; 464$lang['audit_user'] = 'User'; 465$lang['audit_timestamp'] = 'Timestamp'; 466$lang['audit_details'] = 'Details'; 467$lang['audit_create'] = 'Created'; 468$lang['audit_update'] = 'Updated'; 469$lang['audit_delete'] = 'Deleted'; 470$lang['audit_move'] = 'Moved'; 471$lang['audit_task_toggle'] = 'Task toggled'; 472$lang['audit_view_log'] = 'View Audit Log'; 473$lang['audit_clear_log'] = 'Clear Audit Log'; 474$lang['audit_no_entries'] = 'No audit entries found'; 475 476// Custom Date/Time Pickers (v7.0.2, v7.0.3) 477$lang['select_date'] = 'Select date'; 478$lang['select_time'] = 'Select time'; 479$lang['optional'] = 'Optional'; 480$lang['same_as_start'] = 'Same as start'; 481$lang['clear_end_date'] = 'Clear End Date'; 482$lang['time_morning'] = 'Morning'; 483$lang['time_afternoon'] = 'Afternoon'; 484$lang['time_evening'] = 'Evening'; 485$lang['time_night'] = 'Night'; 486 487// Error messages 488$lang['error_not_configured'] = 'Not configured'; 489$lang['error_not_authenticated'] = 'Not authenticated'; 490$lang['error_admin_required'] = 'Admin access required'; 491$lang['error_missing_fields'] = 'Missing required fields'; 492$lang['error_invalid_date'] = 'Invalid date format'; 493$lang['error_event_not_found'] = 'Event not found'; 494$lang['error_sync_failed'] = 'Sync failed'; 495$lang['error_save_failed'] = 'Save failed'; 496$lang['error_delete_failed'] = 'Delete failed'; 497