{ "app_name": "App Launcher", "app_title": "Web App Launcher", "nav.navigation": "Navigation", "nav.boards": "Boards", "nav.apps": "Apps", "nav.admin": "Admin", "nav.admin_panel": "Admin Panel", "auth.login": "Sign In", "auth.login_title": "Welcome back", "auth.login_subtitle": "Sign in to your account", "auth.login_submit": "Sign In", "auth.login_submitting": "Signing in...", "auth.register": "Register", "auth.register_title": "Create Account", "auth.register_subtitle": "Get started with App Launcher", "auth.register_submit": "Create Account", "auth.register_submitting": "Creating account...", "auth.email": "Email", "auth.email_placeholder": "you@example.com", "auth.password": "Password", "auth.password_placeholder": "Enter your password", "auth.password_placeholder_register": "At least 6 characters", "auth.display_name": "Display Name", "auth.display_name_placeholder": "Your name", "auth.logout": "Sign Out", "auth.oauth_signin": "Sign in with OAuth", "auth.or": "or", "auth.no_account": "Don't have an account?", "auth.have_account": "Already have an account?", "auth.sign_in_link": "Sign in", "auth.back_to_login": "Back to sign in", "auth.remember_me": "Keep me signed in for 30 days", "auth.forgot_password": "Forgot password?", "auth.forgot_password_title": "Reset password", "auth.forgot_password_hint": "Enter your account email. An admin will share a reset link with you.", "auth.forgot_password_submit": "Request reset link", "auth.forgot_password_submitted_title": "Request received", "auth.forgot_password_submitted_hint": "If an account exists for that email, your admin can now generate a reset link for you in the admin panel.", "auth.reset_password_title": "Choose a new password", "auth.reset_password_for": "Resetting password for", "auth.reset_password_submit": "Set new password", "auth.reset_invalid_title": "Reset link is invalid", "auth.reset_invalid_hint": "The link may have expired, already been used, or copied incorrectly. Ask your admin to issue a new one.", "auth.request_new_reset": "Request a new reset link", "auth.new_password": "New password", "auth.confirm_password": "Confirm password", "auth.invite_title": "Redeem invite", "auth.invite_hint": "Paste the invite token an admin sent you. You'll be taken to the registration page next.", "auth.invite_token": "Invite token", "auth.invite_continue": "Continue", "auth.invite_banner_admin": "You've been invited to join as an", "auth.invite_banner_user": "You've been invited to join.", "auth.invite_banner_locked": "This invite is locked to", "error.unauthorized_title": "Sign in to continue", "error.unauthorized_hint": "Your session may have expired. Sign back in to continue.", "error.forbidden_title": "You don't have access to this", "error.forbidden_hint": "Ask an admin to grant access if you believe this is a mistake.", "error.not_found_title": "Page not found", "error.not_found_hint": "The page you were looking for doesn't exist or was moved.", "error.rate_limited_title": "Too many requests", "error.rate_limited_hint": "Slow down. Try again in a moment.", "error.generic_title": "Something went wrong", "error.generic_hint": "An unexpected error occurred. Try refreshing, or head back to the dashboard.", "error.back_to_dashboard": "Back to dashboard", "error.technical_details": "Technical details", "error.board_not_found_title": "This board doesn't exist", "error.board_not_found_hint": "It may have been deleted or you have the wrong URL.", "error.board_forbidden_title": "You don't have access to this board", "error.board_forbidden_hint": "Ask the board owner or an admin to share it with you.", "error.board_generic_title": "Couldn't load this board", "error.admin_forbidden_title": "Admin access required", "error.admin_forbidden_hint": "Your account doesn't have the admin role. Ask another admin to grant access if you need it.", "error.admin_not_found_title": "Admin page not found", "error.admin_generic_title": "Couldn't load this admin page", "board.title": "Boards", "board.boards_available": "{count} board(s) available", "board.new": "New Board", "board.edit": "Edit", "board.edit_board": "Edit Board", "board.all_boards": "All Boards", "board.back_to_boards": "Back to Boards", "board.back_to_board": "Back to Board", "board.no_boards": "No boards available.", "board.sign_in_more": "Sign in to see more boards.", "board.no_sections": "This board has no sections yet.", "board.default": "Default", "board.guest": "Guest", "board.sections_count": "{count} section(s)", "board.properties": "Board Properties", "board.save": "Save Board", "board.create": "Create Board", "board.creating": "Creating...", "board.default_board": "Default board", "board.guest_accessible": "Guest accessible", "board.guest_access_title": "Guest Access", "board.guest_access_description": "When enabled, this board is visible to unauthenticated visitors without requiring sign-in.", "board.guest_access_enabled": "This board is publicly accessible", "board.guest_access_disabled": "This board is private", "board.permissions_title": "Permissions", "board.permissions_description": "Manage who can view, edit, or administer this board.", "board.access_grant": "Grant Access", "board.access_search_placeholder": "Search...", "board.access_loading": "Loading permissions...", "board.access_none": "No permissions configured for this board.", "board.access_private": "Private", "board.access_shared": "Shared", "board.share": "Share", "board.share_title": "Share \"{name}\"", "board.share_copy_link": "Copy Link", "board.share_copied": "Copied!", "board.share_guest_description": "Anyone with the link can view this board without signing in.", "board.share_add_access": "Add People or Groups", "board.share_current_access": "Current Access", "section.title_label": "Title", "section.icon_label": "Icon", "section.icon_placeholder": "Optional", "section.sections": "Sections", "section.add": "Add Section", "section.create": "Create Section", "section.order": "Order: {order}", "widget.add": "Add Widget", "widget.select_app": "Select App", "widget.choose_app": "Choose an app...", "widget.no_widgets": "No widgets in this section.", "widget.no_widgets_dnd": "No widgets. Drag widgets here or add one above.", "widget.type": "{type} widget", "widget.number": "Widget #{order}", "widget.remove": "Remove", "app.title": "App Registry", "app.apps_registered": "{count} app(s) registered", "app.add": "Add App", "app.new": "New App", "app.no_apps": "No apps registered yet.", "app.no_apps_hint": "Click \"Add App\" to register your first application.", "app.all_categories": "All", "app.name": "Name", "app.name_placeholder": "My Application", "app.url": "URL", "app.url_placeholder": "https://my-app.local:8080", "app.description": "Description", "app.description_placeholder": "Brief description of this app", "app.category": "Category", "app.category_placeholder": "e.g. Media, Monitoring, Storage", "app.tags": "Tags", "app.tags_placeholder": "Comma-separated tags", "app.icon": "Icon", "app.icon_lucide": "Lucide Icon", "app.icon_simple": "Simple Icons", "app.icon_url": "Image URL", "app.icon_emoji": "Emoji", "app.icon_lucide_placeholder": "e.g. globe, server, home", "app.icon_simple_placeholder": "e.g. github, docker", "app.icon_url_placeholder": "https://example.com/icon.png", "app.icon_emoji_placeholder": "e.g. \ud83c\udf10", "app.icon_preview": "Icon preview", "app.save": "Save App", "app.saving": "Saving...", "app.healthcheck_toggle": "Healthcheck Settings", "app.healthcheck_show": "Show", "app.healthcheck_hide": "Hide", "app.healthcheck_enabled": "Enable Healthcheck", "app.healthcheck_method": "Method", "app.healthcheck_expected_status": "Expected Status", "app.healthcheck_timeout": "Timeout (ms)", "app.healthcheck_interval": "Interval (seconds)", "app.icon_board_label": "Icon (Lucide name)", "app.uptime": "uptime", "app.history_loading": "Loading history...", "admin.panel": "Admin Panel", "admin.users": "Users", "admin.groups": "Groups", "admin.settings": "Settings", "admin.invites": "Invites", "admin.password_resets": "Password Resets", "admin.tags": "Tags", "admin.audit_log": "Audit Log", "admin.user_management": "User Management", "admin.create_user": "Create User", "admin.new_user": "New User", "admin.user_column": "User", "admin.email_column": "Email", "admin.role_column": "Role", "admin.provider_column": "Provider", "admin.groups_column": "Groups", "admin.actions_column": "Actions", "admin.role_user": "User", "admin.role_admin": "Admin", "admin.select_group": "Select group", "admin.add_to_group": "+ Add", "admin.remove_from_group": "Remove from group", "admin.no_users": "No users found.", "admin.delete_user_title": "Delete user", "admin.delete_user_message": "Are you sure you want to delete {name}? This action cannot be undone.", "admin.group_management": "Group Management", "admin.create_group": "Create Group", "admin.new_group": "New Group", "admin.name_column": "Name", "admin.description_column": "Description", "admin.members_column": "Members", "admin.default_column": "Default", "admin.default_group_hint": "Default group (auto-assign new users)", "admin.no_groups": "No groups found.", "admin.yes": "Yes", "admin.no": "No", "admin.system_settings": "System Settings", "admin.settings_description": "Configure global application settings.", "admin.authentication": "Authentication", "admin.auth_mode": "Auth Mode", "admin.auth_local": "Local", "admin.auth_oauth": "OAuth", "admin.auth_both": "Both", "admin.registration_enabled": "Allow user registration", "admin.oauth_config": "OAuth Configuration", "admin.oauth_description": "Configure your OIDC provider (e.g. Authentik, Keycloak). Set Auth Mode to \"OAuth\" or \"Both\" above to enable OAuth login.", "admin.oauth_client_id": "Client ID", "admin.oauth_client_id_placeholder": "OAuth client ID", "admin.oauth_client_secret": "Client Secret", "admin.oauth_client_secret_placeholder": "OAuth client secret", "admin.oauth_discovery_url": "Discovery URL", "admin.oauth_discovery_url_placeholder": "https://example.com/.well-known/openid-configuration", "admin.oauth_test": "Test Connection", "admin.oauth_testing": "Testing...", "admin.oauth_connected": "Connected to issuer: {issuer}", "admin.oauth_network_error": "Network error \u2014 could not reach the server", "admin.theme_defaults": "Theme Defaults", "admin.default_theme": "Default Theme", "admin.default_primary_color": "Default Primary Color", "admin.healthcheck_defaults": "Healthcheck Defaults", "admin.healthcheck_defaults_description": "JSON configuration for default healthcheck behavior (interval, timeout, method).", "admin.healthcheck_defaults_label": "Defaults (JSON)", "admin.save_settings": "Save Settings", "admin.saving_settings": "Saving...", "admin.perm_title": "Grant Permission", "admin.perm_entity_type": "Entity Type", "admin.perm_entity": "Entity", "admin.perm_target_type": "Target Type", "admin.perm_target": "Target", "admin.perm_level": "Level", "admin.perm_board": "Board", "admin.perm_app": "App", "admin.perm_user": "User", "admin.perm_group": "Group", "admin.perm_view": "View", "admin.perm_edit": "Edit", "admin.perm_admin": "Admin", "admin.perm_grant": "Grant", "admin.perm_revoke": "Revoke", "admin.perm_select": "Select...", "admin.perm_entity_column": "Entity", "admin.perm_target_column": "Target", "admin.perm_level_column": "Level", "admin.perm_action_column": "Action", "admin.perm_none": "No permissions configured.", "admin.perm_search_placeholder": "Type to search...", "admin.discovery_title": "Service Discovery", "admin.discovery_description": "Scan Docker containers and Traefik routers to automatically discover running services and register them as apps.", "admin.discovery_scan": "Scan for Services", "admin.discovery_scanning": "Scanning...", "admin.discovery_approve": "Approve Selected", "admin.discovery_approving": "Approving...", "admin.discovery_source": "Source", "admin.discovery_status": "Status", "admin.discovery_source_docker": "Docker", "admin.discovery_source_traefik": "Traefik", "admin.discovery_already_registered": "Already registered", "admin.discovery_new": "New", "admin.discovery_no_results": "No services discovered. Check your Docker socket path or Traefik API URL.", "admin.discovery_config": "Service Discovery Configuration", "admin.discovery_config_description": "Configure Docker and Traefik endpoints for automatic service discovery. These settings are used by the Discovery panel below.", "admin.discovery_docker_socket": "Docker Socket Path", "admin.discovery_docker_socket_hint": "Path to Docker socket (e.g. /var/run/docker.sock). Set via DOCKER_SOCKET_PATH env var.", "admin.discovery_traefik_url": "Traefik API URL", "admin.discovery_traefik_url_hint": "Traefik dashboard API base URL (e.g. http://traefik:8080). Set via TRAEFIK_API_URL env var.", "admin.backup_title": "Database Backup", "admin.backup_description": "Create, restore, and schedule backups of your database. Backups are full copies of the SQLite database file.", "admin.backup_create": "Create Backup", "admin.backup_creating": "Creating...", "admin.backup_create_success": "Backup created successfully.", "admin.backup_list_title": "Backups", "admin.backup_list_empty": "No backups yet. Create your first backup above.", "admin.backup_filename": "Filename", "admin.backup_size": "Size", "admin.backup_date": "Created", "admin.backup_actions": "Actions", "admin.backup_download": "Download", "admin.backup_restore": "Restore", "admin.backup_delete": "Delete", "admin.backup_restore_confirm_title": "Restore Backup", "admin.backup_restore_confirm": "Are you sure you want to restore from this backup? This will replace all current data with the backup contents. This action cannot be undone.", "admin.backup_restore_success": "Database restored successfully. Please reload the page.", "admin.backup_delete_confirm_title": "Delete Backup", "admin.backup_delete_confirm": "Are you sure you want to delete this backup? This action cannot be undone.", "admin.backup_delete_success": "Backup deleted.", "admin.backup_schedule_title": "Scheduled Backups", "admin.backup_schedule_enabled": "Enable periodic backups", "admin.backup_schedule_cron": "Schedule", "admin.backup_schedule_max_count": "Max backups to keep", "admin.backup_schedule_preset_daily": "Daily at 3 AM", "admin.backup_schedule_preset_twice_daily": "Every 12 hours", "admin.backup_schedule_preset_weekly": "Weekly (Sunday 3 AM)", "admin.backup_schedule_preset_custom": "Custom cron", "admin.backup_schedule_save": "Save Schedule", "admin.backup_schedule_saving": "Saving...", "admin.backup_schedule_saved": "Backup schedule updated.", "search.placeholder": "Search apps and boards...", "search.trigger": "Search...", "search.min_chars": "Type at least 2 characters to search", "search.no_results": "No results for \"{query}\"", "search.apps": "Apps", "search.boards": "Boards", "search.nav_hint": "navigate", "search.select_hint": "select", "search.close_hint": "close", "common.search_filter": "Filter...", "common.save": "Save", "common.cancel": "Cancel", "common.delete": "Delete", "common.create": "Create", "common.back": "Back", "common.edit": "Edit", "common.add": "Add", "common.confirm": "Confirm?", "common.yes": "Yes", "common.no": "No", "common.name": "Name", "common.description": "Description", "common.required": "*", "status.online": "Online", "status.offline": "Offline", "status.degraded": "Degraded", "status.unknown": "Unknown", "theme.dark": "Dark", "theme.light": "Light", "theme.system": "System", "theme.toggle": "Toggle theme (current: {mode})", "theme.title": "Theme: {mode}", "bg.mesh": "Mesh Gradient", "bg.particles": "Particles", "bg.aurora": "Aurora", "bg.none": "None", "bg.title": "Background effect", "bg.aria_label": "Change background effect", "sidebar.expand": "Expand sidebar", "sidebar.collapse": "Collapse sidebar", "sidebar.toggle": "Toggle sidebar", "sidebar.close": "Close sidebar", "home.welcome": "Welcome, {name}. No default board is configured yet.", "home.view_boards": "View Boards", "home.browse_apps": "Browse Apps", "language.label": "Language", "settings.title": "Settings", "settings.theme": "Theme Mode", "settings.primary_color": "Primary Color", "settings.hue": "Hue", "settings.saturation": "Saturation", "settings.background": "Background Effect", "settings.language": "Language", "settings.card_style": "Card Style", "settings.save": "Save Preferences", "settings.saving": "Saving...", "settings.saved": "Preferences saved!", "card_style.solid": "Solid", "card_style.glass": "Glass", "card_style.outline": "Outline", "offline.title": "You're Offline", "offline.description": "It looks like you've lost your internet connection. Check your network and try again.", "offline.retry": "Retry", "install.title": "Install App", "install.description": "Add Web App Launcher to your home screen for quick access.", "install.button": "Install", "install.dismiss": "Dismiss install prompt", "settings.bookmarklet_title": "Quick-Add Bookmarklet", "settings.bookmarklet_instructions": "Drag the button below to your browser's bookmarks bar. When visiting any web page, click it to quickly add that site to your App Launcher.", "settings.bookmarklet_drag": "Add to Launcher", "settings.bookmarklet_drag_hint": "Drag this to your bookmarks bar", "settings.bookmarklet_show_code": "Show bookmarklet code", "app.edit": "Edit", "app.edit_title": "Edit App", "app.update": "Update App", "app.quick_add_title": "Quick Add App", "app.quick_add_description": "Review the details below and save to add this app to your launcher.", "app.quick_add_success": "App added successfully!", "app.quick_add_view_apps": "View Apps", "app.quick_add_close": "Close Window", "board.editing": "Editing", "board.exit_edit": "Exit Edit Mode", "board.settings": "Board Settings", "board.add_section": "Add Section", "board.section_title": "Section title...", "board.no_sections_edit": "No sections yet. Click \"+\" below to add one.", "board.discard_title": "Discard Changes", "board.discard_confirm": "Are you sure you want to discard all unsaved changes?", "board.delete_section_title": "Delete Section", "board.delete_section_confirm": "Are you sure you want to delete this section and its {count} widgets?", "board.try_inline_edit": "Try the new inline edit mode!", "board.inline_edit_description": "Edit your board directly with live preview. Press Ctrl+E on the board page.", "board.open_inline_edit": "Open Inline Edit", "board.advanced": "Advanced", "board.theme_hue": "Theme Hue", "board.theme_saturation": "Saturation", "board.background": "Background", "board.card_size": "Card Size", "board.custom_css": "Custom CSS", "widget.add_widget": "Add Widget", "widget.edit_widget": "Edit Widget", "widget.select_type": "Select widget type", "widget.search_type": "Search widget types...", "widget.delete_title": "Delete Widget", "widget.resize": "Resize", "widget.width": "Width", "widget.full_width": "Full", "widget.delete_confirm": "Are you sure you want to delete this widget? This action will take effect when you save.", "widget.content": "Content", "widget.format": "Format", "widget.height": "Height", "widget.apps": "Apps", "widget.select_apps": "Select apps...", "common.done": "Done", "widget.timezone": "Timezone", "widget.style": "Style", "widget.show_weather": "Show Weather", "widget.app": "App", "common.discard": "Discard", "common.apply": "Apply", "common.search": "Search...", "common.clear": "Clear", "common.label": "Label", "common.no_results": "No results found", "common.dismiss": "Dismiss" }