diff --git a/app/api/billing.py b/app/api/billing.py index 6b0f20dd..c28b6aa8 100644 --- a/app/api/billing.py +++ b/app/api/billing.py @@ -30,6 +30,7 @@ from app.auth import require_login from app.config import settings from app.database import get_db from app.models import SubscriptionPlan, UserProfile +from app.utils.i18n import translate as _translate from app.utils.user_scope import get_current_owner_id logger = logging.getLogger(__name__) @@ -37,6 +38,7 @@ router = APIRouter(prefix="/billing", tags=["billing"]) _templates_dir = pathlib.Path(__file__).parents[2] / "frontend" / "templates" _templates = Jinja2Templates(directory=str(_templates_dir)) +_templates.env.globals["_"] = lambda key, **kwargs: _translate(key, "en", **kwargs) def _get_stripe() -> stripe.StripeClient | None: diff --git a/app/api/local_auth.py b/app/api/local_auth.py index 8a8ce634..2b68003f 100644 --- a/app/api/local_auth.py +++ b/app/api/local_auth.py @@ -26,6 +26,7 @@ from starlette.responses import RedirectResponse from app.config import settings from app.database import get_db from app.models import LocalUser, UserProfile +from app.utils.i18n import translate as _translate from app.utils.local_auth import ( build_session_user, generate_token, @@ -41,6 +42,7 @@ router = APIRouter(tags=["local-auth"]) _templates_dir = pathlib.Path(__file__).parents[2] / "frontend" / "templates" templates = Jinja2Templates(directory=str(_templates_dir)) +templates.env.globals["_"] = lambda key, **kwargs: _translate(key, "en", **kwargs) DbSession = Annotated[Session, Depends(get_db)] diff --git a/app/auth.py b/app/auth.py index 3cb06465..5cb08abd 100644 --- a/app/auth.py +++ b/app/auth.py @@ -22,6 +22,7 @@ from app.middleware.audit_log import get_client_ip # Guards at call-sites ensure they are never *called* in single-user mode. from app.models import LocalUser as _LocalUser from app.models import UserProfile as _UserProfile +from app.utils.i18n import translate as _translate from app.utils.local_auth import build_session_user as _build_session_user from app.utils.local_auth import verify_password as _verify_password @@ -34,6 +35,7 @@ AUTH_ENABLED = settings.auth_enabled # Set up templates for authentication templates_dir = pathlib.Path(__file__).parents[1] / "frontend" / "templates" templates = Jinja2Templates(directory=str(templates_dir)) +templates.env.globals["_"] = lambda key, **kwargs: _translate(key, "en", **kwargs) # Configure OAuth provider if credentials are provided OAUTH_CONFIGURED = False diff --git a/frontend/templates/pipelines.html b/frontend/templates/pipelines.html index 868439c2..7b1f8e4d 100644 --- a/frontend/templates/pipelines.html +++ b/frontend/templates/pipelines.html @@ -317,8 +317,9 @@ class="px-4 py-2 text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 disabled:opacity-60 rounded-md" style="min-height:44px;" > - - + diff --git a/frontend/translations/bg.json b/frontend/translations/bg.json index 99627dc6..00c383d7 100644 --- a/frontend/translations/bg.json +++ b/frontend/translations/bg.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/ca.json b/frontend/translations/ca.json index 1309082b..b7a2727e 100644 --- a/frontend/translations/ca.json +++ b/frontend/translations/ca.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/cs.json b/frontend/translations/cs.json index ed3cbf85..dd0609b7 100644 --- a/frontend/translations/cs.json +++ b/frontend/translations/cs.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/da.json b/frontend/translations/da.json index f042d19f..bcca435e 100644 --- a/frontend/translations/da.json +++ b/frontend/translations/da.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/de.json b/frontend/translations/de.json index 9b0e1b57..2ec4bfa6 100644 --- a/frontend/translations/de.json +++ b/frontend/translations/de.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Passwort bestätigen", + "auth.create_account": "Create account", "auth.display_name_label": "Anzeigename", "auth.email_label": "E-Mail", "auth.forgot_password": "Passwort vergessen?", + "auth.forgot_username": "Forgot username?", "auth.login": "Anmelden", "auth.login_title": "Anmelden", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Abmelden", "auth.my_account": "Mein Konto", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Passwort", "auth.profile": "Profil", "auth.remember_me": "Angemeldet bleiben", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Registrieren", "auth.signup_title": "Registrieren", "auth.username_label": "Benutzername", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Aktionen", "common.active": "Aktiv", "common.all": "Alle", "common.back": "Zurück", "common.cancel": "Abbrechen", "common.close": "Schließen", + "common.col_pending": "Pending", "common.completed": "Abgeschlossen", "common.confirm": "Bestätigen", "common.copied": "Kopiert!", @@ -43,9 +214,12 @@ "common.loading": "Laden...", "common.name": "Name", "common.next": "Weiter", + "common.next_page": "Next page", "common.no": "Nein", "common.none": "Keine", + "common.page": "Page", "common.pending": "Ausstehend", + "common.prev_page": "Previous page", "common.previous": "Zurück", "common.processing": "Verarbeitung", "common.refresh": "Aktualisieren", @@ -54,6 +228,7 @@ "common.save": "Speichern", "common.search": "Suche", "common.select": "Auswählen", + "common.select_placeholder": "— select —", "common.size": "Größe", "common.status": "Status", "common.submit": "Absenden", @@ -72,6 +247,29 @@ "cookie.notice_label": "Cookie-Hinweis", "cookie.policy_link": "Cookie-Richtlinie", "cookie.privacy_link": "Datenschutzhinweis", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Aktive Integrationen", "dashboard.files_this_month": "Dateien diesen Monat", "dashboard.files_today": "Dateien heute", @@ -82,14 +280,43 @@ "dashboard.title": "Übersicht", "dashboard.total_files": "Dateien gesamt", "dashboard.welcome": "Willkommen bei DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Ups, diese Seite konnten wir nicht finden!", "error.404_home": "Zur Startseite", "error.404_message": "Es scheint, als hätte DocuElevate das gesuchte Dokument verlegt. Keine Sorge – wir helfen Ihnen weiter.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Unsere Server haben ein Problem und brauchen einen Moment.", "error.500_heading": "Ups! Etwas ist schiefgelaufen.", "error.500_home": "Zur Startseite", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Zugriff verweigert", "error.forbidden_message": "Sie haben keine Berechtigung, auf diese Seite zuzugreifen.", "error.not_found": "Seite nicht gefunden", @@ -113,43 +340,59 @@ "files.document_title": "Dokumenttitel", "files.drop_overlay_hint": "Unterstützt PDF, Office-Dokumente, Bilder, HTML, Markdown und mehr", "files.drop_overlay_title": "Dateien oder Ordner zum Hochladen hier ablegen", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "Dateigröße", "files.filename": "Dateiname", + "files.files_selected": "files selected", "files.filter_all_providers": "Alle Anbieter", "files.filter_all_statuses": "Alle Status", "files.filter_all_types": "Alle Typen", "files.filter_apply": "Filter anwenden", "files.filter_clear": "Zurücksetzen", "files.filter_date_from": "Datum von", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Datum bis", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME-Typ", "files.filter_ocr_all": "Alle Dateien", "files.filter_ocr_good": "Gute Qualität", "files.filter_ocr_poor": "Schlechte Qualität", "files.filter_ocr_quality": "OCR-Qualität", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Noch nicht bewertet", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Dateinamen eingeben...", "files.filter_storage_provider": "Speicheranbieter", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "z.B. Rechnung,Amazon", "files.fulltext_search_label": "Volltextsuche", "files.fulltext_search_placeholder": "Dokumentinhalt, Absender, Tags, Typ durchsuchen...", "files.no_files": "Keine Dateien gefunden", "files.ocr_status": "OCR-Status", "files.page_title": "Dateiübersicht", + "files.pagination_files": "files", "files.pagination_first": "Erste", "files.pagination_last": "Letzte", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Nächste", + "files.pagination_of": "of", "files.pagination_previous": "Vorherige", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Vorschau schließen", "files.preview_modal_title": "Vorschau", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "Warteschlange ansehen", "files.saved_searches_empty": "Noch keine gespeicherten Suchen", "files.saved_searches_error": "Gespeicherte Suchen konnten nicht geladen werden", "files.saved_searches_label": "Gespeicherte Suchen", "files.saved_searches_save": "Aktuelle speichern", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "Keine Ergebnisse gefunden.", "files.search_results_title": "Suchergebnisse", + "files.status_duplicate": "Duplicate", "files.table_actions": "Aktionen", + "files.table_aria": "File records", "files.table_created_at": "Erstellt am", "files.table_empty": "Keine Dateien gefunden", "files.table_id": "ID", @@ -158,6 +401,8 @@ "files.table_select_all": "Alle Dateien auf dieser Seite auswählen", "files.tags": "Tags", "files.title": "Dateien", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Dateien hochladen", "files.uploaded": "Hochgeladen", "footer.about": "Über uns", @@ -206,6 +451,7 @@ "help.getting_started": "Erste Schritte", "help.heading": "Hilfezentrum", "help.page_title": "Hilfezentrum", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Schnellstart", "help.quickstart_storage": "Speicher verbinden", "help.quickstart_storage_desc": "Gehen Sie zu Einstellungen und verknüpfen Sie Ihre Cloud-Konten. Verarbeitete Dokumente werden automatisch an jedes konfigurierte Ziel weitergeleitet.", @@ -227,6 +473,8 @@ "help.support_admin_message": "Wenden Sie sich an Ihren Administrator für Support-Informationen.", "help.support_description": "Können Sie nicht finden, was Sie suchen? Unser Support-Team hilft Ihnen gerne weiter.", "help.support_heading": "Support kontaktieren", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Hilfecenter", "help.workflows_creating": "Eine Pipeline erstellen", "help.workflows_definition": "Eine Pipeline ist eine Reihe von Verarbeitungsschritten, die automatisch ausgeführt werden, wenn ein Dokument aufgenommen wird. Jeder Schritt kann das Dokument transformieren, anreichern oder weiterleiten.", @@ -243,6 +491,8 @@ "help.workflows_typical_steps": "Typische Schritte", "help.workflows_what_is": "Was ist eine Pipeline?", "index.badge_intelligent": "Intelligente Dokumentenverarbeitung", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud-Speicher: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "E-Mail- & URL-basierte Dokumentenaufnahme", "index.capabilities_ocr": "OCR & Metadatenextraktion mit KI", @@ -254,6 +504,7 @@ "index.cta_pricing": "Preise ansehen", "index.cta_signup": "Kostenloses Konto erstellen", "index.dashboard_subtitle": "Intelligente Dokumentenverarbeitung & -verwaltung", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "KI-Metadatenextraktion", "index.feature_ai_desc": "OpenAI, Claude, Gemini und andere KI-Anbieter klassifizieren Dokumente und extrahieren wichtige Felder wie Daten, Beträge und Betreffzeilen.", "index.feature_cloud": "Multi-Cloud-Speicher", @@ -291,13 +542,19 @@ "index.quick_search_desc": "Volltextsuche über Dokumente", "index.quick_subscription": "Mein Abonnement", "index.quick_subscription_desc": "Tarif & Nutzungsdetails anzeigen", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Dokument hochladen", "index.quick_upload_desc": "Eine neue Datei verarbeiten", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligente Dokumentenverarbeitung & -verwaltung", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Aktive Benutzer", "index.stat_files_month": "Dateien diesen Monat", "index.stat_files_today": "Dateien heute", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Dateien gesamt", "index.tier_plan": "Tarif", "index.tier_upgrade": "Upgrade", @@ -425,20 +682,65 @@ "notifications.title": "Benachrichtigungen", "notifications.unread_count": "{count} ungelesene Benachrichtigungen", "pipelines.active_label": "Aktiv", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Pipeline erstellen", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Standard", "pipelines.description_label": "Beschreibung", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Deaktiviert", "pipelines.edit": "Pipeline bearbeiten", "pipelines.empty_state": "Noch keine Pipelines", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Aktiviert", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inaktiv", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Verarbeitungs-Pipelines", "pipelines.set_default": "Als meine Standard-Pipeline festlegen", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Verarbeitungs-Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Suchen", "search.error_message": "Suche ist vorübergehend nicht verfügbar. Bitte versuchen Sie es gleich erneut.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Filter zurücksetzen", "search.filter_date_from": "Datum von", "search.filter_date_to": "Datum bis", @@ -448,6 +750,7 @@ "search.filter_language_placeholder": "z.B. de", "search.filter_sender": "Absender", "search.filter_sender_placeholder": "z.B. ACME GmbH", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "z.B. Amazon", "search.filter_text_quality": "Textqualität", "search.filter_text_quality_all": "Alle", @@ -456,6 +759,7 @@ "search.filter_text_quality_medium": "Mittel", "search.filter_text_quality_no_text": "Kein Text", "search.heading": "Dokumentensuche", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Dokumente nach Inhalt, Absender, Tags, Typ suchen...", "search.loading_indicator": "Suche läuft…", "search.no_results": "Keine Ergebnisse gefunden", @@ -463,16 +767,129 @@ "search.placeholder": "Nach Dateiname, Inhalt, Tags suchen...", "search.result_empty": "Keine Dokumente gefunden, die Ihrer Suche entsprechen.", "search.results_count": "{count} Ergebnisse gefunden", + "search.saved_aria_save": "Save current search", "search.saved_button": "Aktuelle speichern", "search.saved_empty": "Noch keine gespeicherten Suchen", "search.saved_error": "Gespeicherte Suchen konnten nicht geladen werden", "search.saved_label": "Gespeicherte Suchen", "search.saved_loading": "Laden...", "search.title": "Dokumente suchen", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Möchten Sie diese Einstellung wirklich zurücksetzen?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Einstellung konnte nicht gespeichert werden", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Einstellung erfolgreich gespeichert", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Einstellungen", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App-Version", "status.build_date": "Build-Datum", "status.container_id": "Container-ID", @@ -489,6 +906,7 @@ "upload.drag_drop": "Dateien hierher ziehen oder zum Durchsuchen klicken", "upload.drop_hint_desktop": "Dateien oder Ordner hierher ziehen oder klicken, um Dateien auszuwählen.", "upload.drop_hint_mobile": "Tippen Sie, um Dateien auszuwählen, oder verwenden Sie die Kamera-Schaltfläche unten.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload fehlgeschlagen", "upload.error_invalid_url": "Ungültiges URL-Format", "upload.error_url_required": "Bitte geben Sie eine URL ein", diff --git a/frontend/translations/el.json b/frontend/translations/el.json index c993931f..bef8586b 100644 --- a/frontend/translations/el.json +++ b/frontend/translations/el.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/es.json b/frontend/translations/es.json index 64f4e640..48f3ad9a 100644 --- a/frontend/translations/es.json +++ b/frontend/translations/es.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Iniciar sesión", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Cerrar sesión", "auth.my_account": "Mi cuenta", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Perfil", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Registrarse", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Acciones", "common.active": "Activo", "common.all": "Todo", "common.back": "Atrás", "common.cancel": "Cancelar", "common.close": "Cerrar", + "common.col_pending": "Pending", "common.completed": "Completado", "common.confirm": "Confirmar", "common.copied": "¡Copiado!", @@ -41,9 +212,12 @@ "common.loading": "Cargando...", "common.name": "Nombre", "common.next": "Siguiente", + "common.next_page": "Next page", "common.no": "No", "common.none": "Ninguno", + "common.page": "Page", "common.pending": "Pendiente", + "common.prev_page": "Previous page", "common.processing": "Procesando", "common.refresh": "Actualizar", "common.reset": "Restablecer", @@ -51,6 +225,7 @@ "common.save": "Guardar", "common.search": "Buscar", "common.select": "Seleccionar", + "common.select_placeholder": "— select —", "common.size": "Tamaño", "common.status": "Estado", "common.success": "Éxito", @@ -65,6 +240,29 @@ "cookie.notice_label": "Aviso de cookies", "cookie.policy_link": "Política de cookies", "cookie.privacy_link": "Aviso de privacidad", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Integraciones activas", "dashboard.files_this_month": "Archivos este mes", "dashboard.files_today": "Archivos hoy", @@ -75,14 +273,43 @@ "dashboard.title": "Panel", "dashboard.total_files": "Total de archivos", "dashboard.welcome": "Bienvenido a DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Prohibido", "error.forbidden_message": "No tiene permiso para acceder a esta página.", "error.not_found": "Página no encontrada", @@ -106,43 +333,59 @@ "files.document_title": "Título del documento", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "Tamaño del archivo", "files.filename": "Nombre del archivo", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No se encontraron archivos", "files.ocr_status": "Estado OCR", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Etiquetas", "files.title": "Archivos", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Subido", "footer.attributions": "Atribuciones", @@ -197,6 +442,7 @@ "help.getting_started": "Primeros pasos", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Centro de ayuda", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notificaciones", "notifications.unread_count": "{count} notificaciones no leídas", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Crear pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Editar pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Pipelines de procesamiento", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No se encontraron resultados", @@ -437,16 +741,129 @@ "search.placeholder": "Buscar por nombre, contenido, etiquetas...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} resultados encontrados", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Buscar documentos", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "¿Está seguro de que desea restablecer esta configuración?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Error al guardar la configuración", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Configuración guardada con éxito", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Configuración", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Arrastre archivos aquí o haga clic para buscar", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Error al subir", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/et.json b/frontend/translations/et.json index 05fa4636..d922331a 100644 --- a/frontend/translations/et.json +++ b/frontend/translations/et.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/fi.json b/frontend/translations/fi.json index 77d284fd..cfe1710b 100644 --- a/frontend/translations/fi.json +++ b/frontend/translations/fi.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/fr.json b/frontend/translations/fr.json index 0952d94e..8be9a08a 100644 --- a/frontend/translations/fr.json +++ b/frontend/translations/fr.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Se connecter", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Se déconnecter", "auth.my_account": "Mon compte", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profil", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "S'inscrire", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Actif", "common.all": "Tout", "common.back": "Retour", "common.cancel": "Annuler", "common.close": "Fermer", + "common.col_pending": "Pending", "common.completed": "Terminé", "common.confirm": "Confirmer", "common.copied": "Copié !", @@ -41,9 +212,12 @@ "common.loading": "Chargement...", "common.name": "Nom", "common.next": "Suivant", + "common.next_page": "Next page", "common.no": "Non", "common.none": "Aucun", + "common.page": "Page", "common.pending": "En attente", + "common.prev_page": "Previous page", "common.processing": "En cours de traitement", "common.refresh": "Actualiser", "common.reset": "Réinitialiser", @@ -51,6 +225,7 @@ "common.save": "Enregistrer", "common.search": "Rechercher", "common.select": "Sélectionner", + "common.select_placeholder": "— select —", "common.size": "Taille", "common.status": "Statut", "common.success": "Succès", @@ -65,6 +240,29 @@ "cookie.notice_label": "Avis relatif aux cookies", "cookie.policy_link": "Politique de cookies", "cookie.privacy_link": "Avis de confidentialité", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Intégrations actives", "dashboard.files_this_month": "Fichiers ce mois-ci", "dashboard.files_today": "Fichiers aujourd'hui", @@ -75,14 +273,43 @@ "dashboard.title": "Tableau de bord", "dashboard.total_files": "Total des fichiers", "dashboard.welcome": "Bienvenue sur DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Interdit", "error.forbidden_message": "Vous n'avez pas la permission d'accéder à cette page.", "error.not_found": "Page non trouvée", @@ -106,43 +333,59 @@ "files.document_title": "Titre du document", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "Taille du fichier", "files.filename": "Nom du fichier", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "Aucun fichier trouvé", "files.ocr_status": "Statut OCR", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Étiquettes", "files.title": "Fichiers", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Téléversé", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Premiers pas", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Centre d'aide", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} notifications non lues", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Créer un pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Modifier le pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Pipelines de traitement", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "Aucun résultat trouvé", @@ -437,16 +741,129 @@ "search.placeholder": "Rechercher par nom, contenu, étiquettes...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} résultats trouvés", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Rechercher des documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Êtes-vous sûr de vouloir réinitialiser ce paramètre ?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Échec de l'enregistrement du paramètre", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Paramètre enregistré avec succès", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Paramètres", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Glissez-déposez vos fichiers ici ou cliquez pour parcourir", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Échec du téléversement", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/ga.json b/frontend/translations/ga.json index 9f89d27e..2731badb 100644 --- a/frontend/translations/ga.json +++ b/frontend/translations/ga.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/hr.json b/frontend/translations/hr.json index 13a1b9fa..22cd2578 100644 --- a/frontend/translations/hr.json +++ b/frontend/translations/hr.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/hu.json b/frontend/translations/hu.json index 2d912786..e10229bb 100644 --- a/frontend/translations/hu.json +++ b/frontend/translations/hu.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/is.json b/frontend/translations/is.json index 3a4b6518..708253f0 100644 --- a/frontend/translations/is.json +++ b/frontend/translations/is.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/it.json b/frontend/translations/it.json index 6bfedd85..433dea04 100644 --- a/frontend/translations/it.json +++ b/frontend/translations/it.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Accedi", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Esci", "auth.my_account": "Il mio account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profilo", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Registrati", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Azioni", "common.active": "Attivo", "common.all": "Tutto", "common.back": "Indietro", "common.cancel": "Annulla", "common.close": "Chiudi", + "common.col_pending": "Pending", "common.completed": "Completato", "common.confirm": "Conferma", "common.copied": "Copiato!", @@ -41,9 +212,12 @@ "common.loading": "Caricamento...", "common.name": "Nome", "common.next": "Avanti", + "common.next_page": "Next page", "common.no": "No", "common.none": "Nessuno", + "common.page": "Page", "common.pending": "In attesa", + "common.prev_page": "Previous page", "common.processing": "In elaborazione", "common.refresh": "Aggiorna", "common.reset": "Reimposta", @@ -51,6 +225,7 @@ "common.save": "Salva", "common.search": "Cerca", "common.select": "Seleziona", + "common.select_placeholder": "— select —", "common.size": "Dimensione", "common.status": "Stato", "common.success": "Successo", @@ -65,6 +240,29 @@ "cookie.notice_label": "Avviso sui cookie", "cookie.policy_link": "Politica sui cookie", "cookie.privacy_link": "Informativa sulla privacy", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Integrazioni attive", "dashboard.files_this_month": "File questo mese", "dashboard.files_today": "File oggi", @@ -75,14 +273,43 @@ "dashboard.title": "Cruscotto", "dashboard.total_files": "File totali", "dashboard.welcome": "Benvenuto su DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Vietato", "error.forbidden_message": "Non hai il permesso di accedere a questa pagina.", "error.not_found": "Pagina non trovata", @@ -106,43 +333,59 @@ "files.document_title": "Titolo del documento", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "Dimensione del file", "files.filename": "Nome del file", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "Nessun file trovato", "files.ocr_status": "Stato OCR", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tag", "files.title": "File", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Caricato", "footer.attributions": "Attribuzioni", @@ -197,6 +442,7 @@ "help.getting_started": "Per iniziare", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Centro assistenza", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifiche", "notifications.unread_count": "{count} notifiche non lette", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Crea pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Modifica pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Pipeline di elaborazione", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "Nessun risultato trovato", @@ -437,16 +741,129 @@ "search.placeholder": "Cerca per nome, contenuto, tag...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} risultati trovati", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Cerca documenti", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Sei sicuro di voler reimpostare questa impostazione?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Salvataggio impostazione fallito", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Impostazione salvata con successo", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Impostazioni", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Trascina i file qui o fai clic per sfogliare", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Caricamento fallito", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/lb.json b/frontend/translations/lb.json index 0eb70fc1..6ab5782e 100644 --- a/frontend/translations/lb.json +++ b/frontend/translations/lb.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/lt.json b/frontend/translations/lt.json index 964e104b..4842a453 100644 --- a/frontend/translations/lt.json +++ b/frontend/translations/lt.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/lv.json b/frontend/translations/lv.json index 4a83b95a..e4bcad5c 100644 --- a/frontend/translations/lv.json +++ b/frontend/translations/lv.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/nb.json b/frontend/translations/nb.json index 93bcfea2..2a77bd92 100644 --- a/frontend/translations/nb.json +++ b/frontend/translations/nb.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/nl.json b/frontend/translations/nl.json index e9609579..fc2b9d16 100644 --- a/frontend/translations/nl.json +++ b/frontend/translations/nl.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Inloggen", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Uitloggen", "auth.my_account": "Mijn account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profiel", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Registreren", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Acties", "common.active": "Actief", "common.all": "Alles", "common.back": "Terug", "common.cancel": "Annuleren", "common.close": "Sluiten", + "common.col_pending": "Pending", "common.completed": "Voltooid", "common.confirm": "Bevestigen", "common.copied": "Gekopieerd!", @@ -41,9 +212,12 @@ "common.loading": "Laden...", "common.name": "Naam", "common.next": "Volgende", + "common.next_page": "Next page", "common.no": "Nee", "common.none": "Geen", + "common.page": "Page", "common.pending": "In afwachting", + "common.prev_page": "Previous page", "common.processing": "Verwerken", "common.refresh": "Vernieuwen", "common.reset": "Herstellen", @@ -51,6 +225,7 @@ "common.save": "Opslaan", "common.search": "Zoeken", "common.select": "Selecteren", + "common.select_placeholder": "— select —", "common.size": "Grootte", "common.status": "Status", "common.success": "Succes", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookiemelding", "cookie.policy_link": "Cookiebeleid", "cookie.privacy_link": "Privacyverklaring", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Actieve integraties", "dashboard.files_this_month": "Bestanden deze maand", "dashboard.files_today": "Bestanden vandaag", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Totaal bestanden", "dashboard.welcome": "Welkom bij DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Verboden", "error.forbidden_message": "U heeft geen toestemming om deze pagina te openen.", "error.not_found": "Pagina niet gevonden", @@ -106,43 +333,59 @@ "files.document_title": "Documenttitel", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "Bestandsgrootte", "files.filename": "Bestandsnaam", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "Geen bestanden gevonden", "files.ocr_status": "OCR-status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Bestanden", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Geüpload", "footer.attributions": "Attributies", @@ -197,6 +442,7 @@ "help.getting_started": "Aan de slag", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Helpcentrum", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Meldingen", "notifications.unread_count": "{count} ongelezen meldingen", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Pipeline maken", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Pipeline bewerken", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Verwerkingspipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "Geen resultaten gevonden", @@ -437,16 +741,129 @@ "search.placeholder": "Zoeken op naam, inhoud, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} resultaten gevonden", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Documenten zoeken", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Weet u zeker dat u deze instelling wilt herstellen?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Instelling opslaan mislukt", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Instelling succesvol opgeslagen", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Instellingen", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Sleep bestanden hierheen of klik om te bladeren", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload mislukt", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/pl.json b/frontend/translations/pl.json index 1b352292..3356654f 100644 --- a/frontend/translations/pl.json +++ b/frontend/translations/pl.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Zaloguj się", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Wyloguj się", "auth.my_account": "Moje konto", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profil", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Zarejestruj się", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Akcje", "common.active": "Aktywny", "common.all": "Wszystko", "common.back": "Wstecz", "common.cancel": "Anuluj", "common.close": "Zamknij", + "common.col_pending": "Pending", "common.completed": "Zakończono", "common.confirm": "Potwierdź", "common.copied": "Skopiowano!", @@ -41,9 +212,12 @@ "common.loading": "Ładowanie...", "common.name": "Nazwa", "common.next": "Dalej", + "common.next_page": "Next page", "common.no": "Nie", "common.none": "Brak", + "common.page": "Page", "common.pending": "Oczekujące", + "common.prev_page": "Previous page", "common.processing": "Przetwarzanie", "common.refresh": "Odśwież", "common.reset": "Resetuj", @@ -51,6 +225,7 @@ "common.save": "Zapisz", "common.search": "Szukaj", "common.select": "Wybierz", + "common.select_placeholder": "— select —", "common.size": "Rozmiar", "common.status": "Status", "common.success": "Sukces", @@ -65,6 +240,29 @@ "cookie.notice_label": "Informacja o plikach cookie", "cookie.policy_link": "Polityka plików cookie", "cookie.privacy_link": "Informacja o prywatności", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Aktywne integracje", "dashboard.files_this_month": "Pliki w tym miesiącu", "dashboard.files_today": "Pliki dzisiaj", @@ -75,14 +273,43 @@ "dashboard.title": "Pulpit", "dashboard.total_files": "Pliki ogółem", "dashboard.welcome": "Witamy w DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Zabroniono", "error.forbidden_message": "Nie masz uprawnień do dostępu do tej strony.", "error.not_found": "Nie znaleziono strony", @@ -106,43 +333,59 @@ "files.document_title": "Tytuł dokumentu", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "Rozmiar pliku", "files.filename": "Nazwa pliku", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "Nie znaleziono plików", "files.ocr_status": "Status OCR", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tagi", "files.title": "Pliki", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Przesłano", "footer.attributions": "Atrybuty", @@ -197,6 +442,7 @@ "help.getting_started": "Pierwsze kroki", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Centrum pomocy", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Powiadomienia", "notifications.unread_count": "{count} nieprzeczytanych powiadomień", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Utwórz potok", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edytuj potok", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Potoki przetwarzania", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "Nie znaleziono wyników", @@ -437,16 +741,129 @@ "search.placeholder": "Szukaj wg nazwy, treści, tagów...", "search.result_empty": "No documents found matching your query.", "search.results_count": "Znaleziono {count} wyników", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Szukaj dokumentów", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Czy na pewno chcesz zresetować to ustawienie?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Nie udało się zapisać ustawienia", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Ustawienie zapisane pomyślnie", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Ustawienia", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Przeciągnij pliki tutaj lub kliknij, aby przeglądać", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Przesyłanie nie powiodło się", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/pt.json b/frontend/translations/pt.json index 5ec1f946..8f24c762 100644 --- a/frontend/translations/pt.json +++ b/frontend/translations/pt.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Iniciar sessão", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Terminar sessão", "auth.my_account": "A minha conta", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Perfil", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Registar", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Ações", "common.active": "Ativo", "common.all": "Tudo", "common.back": "Voltar", "common.cancel": "Cancelar", "common.close": "Fechar", + "common.col_pending": "Pending", "common.completed": "Concluído", "common.confirm": "Confirmar", "common.copied": "Copiado!", @@ -41,9 +212,12 @@ "common.loading": "A carregar...", "common.name": "Nome", "common.next": "Seguinte", + "common.next_page": "Next page", "common.no": "Não", "common.none": "Nenhum", + "common.page": "Page", "common.pending": "Pendente", + "common.prev_page": "Previous page", "common.processing": "A processar", "common.refresh": "Atualizar", "common.reset": "Repor", @@ -51,6 +225,7 @@ "common.save": "Guardar", "common.search": "Pesquisar", "common.select": "Selecionar", + "common.select_placeholder": "— select —", "common.size": "Tamanho", "common.status": "Estado", "common.success": "Sucesso", @@ -65,6 +240,29 @@ "cookie.notice_label": "Aviso de cookies", "cookie.policy_link": "Política de cookies", "cookie.privacy_link": "Aviso de privacidade", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Integrações ativas", "dashboard.files_this_month": "Ficheiros este mês", "dashboard.files_today": "Ficheiros hoje", @@ -75,14 +273,43 @@ "dashboard.title": "Painel", "dashboard.total_files": "Total de ficheiros", "dashboard.welcome": "Bem-vindo ao DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Proibido", "error.forbidden_message": "Não tem permissão para aceder a esta página.", "error.not_found": "Página não encontrada", @@ -106,43 +333,59 @@ "files.document_title": "Título do documento", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "Tamanho do ficheiro", "files.filename": "Nome do ficheiro", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "Nenhum ficheiro encontrado", "files.ocr_status": "Estado OCR", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Etiquetas", "files.title": "Ficheiros", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Carregado", "footer.attributions": "Atribuições", @@ -197,6 +442,7 @@ "help.getting_started": "Primeiros passos", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Centro de ajuda", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notificações", "notifications.unread_count": "{count} notificações por ler", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Criar pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Editar pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Pipelines de processamento", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "Nenhum resultado encontrado", @@ -437,16 +741,129 @@ "search.placeholder": "Pesquisar por nome, conteúdo, etiquetas...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} resultados encontrados", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Pesquisar documentos", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Tem a certeza de que pretende repor esta definição?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Falha ao guardar definição", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Definição guardada com sucesso", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Definições", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Arraste ficheiros para aqui ou clique para procurar", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Falha ao carregar", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/ro.json b/frontend/translations/ro.json index 37e09350..6dd0f04b 100644 --- a/frontend/translations/ro.json +++ b/frontend/translations/ro.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/ru.json b/frontend/translations/ru.json index e64194a7..4a3b999f 100644 --- a/frontend/translations/ru.json +++ b/frontend/translations/ru.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Войти", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Выйти", "auth.my_account": "Мой аккаунт", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Профиль", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Регистрация", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Действия", "common.active": "Активно", "common.all": "Все", "common.back": "Назад", "common.cancel": "Отмена", "common.close": "Закрыть", + "common.col_pending": "Pending", "common.completed": "Завершено", "common.confirm": "Подтвердить", "common.copied": "Скопировано!", @@ -41,9 +212,12 @@ "common.loading": "Загрузка...", "common.name": "Название", "common.next": "Далее", + "common.next_page": "Next page", "common.no": "Нет", "common.none": "Нет", + "common.page": "Page", "common.pending": "В ожидании", + "common.prev_page": "Previous page", "common.processing": "Обработка", "common.refresh": "Обновить", "common.reset": "Сбросить", @@ -51,6 +225,7 @@ "common.save": "Сохранить", "common.search": "Поиск", "common.select": "Выбрать", + "common.select_placeholder": "— select —", "common.size": "Размер", "common.status": "Статус", "common.success": "Успешно", @@ -65,6 +240,29 @@ "cookie.notice_label": "Уведомление о файлах cookie", "cookie.policy_link": "Политика файлов cookie", "cookie.privacy_link": "Уведомление о конфиденциальности", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Активные интеграции", "dashboard.files_this_month": "Файлы за месяц", "dashboard.files_today": "Файлы сегодня", @@ -75,14 +273,43 @@ "dashboard.title": "Панель управления", "dashboard.total_files": "Всего файлов", "dashboard.welcome": "Добро пожаловать в DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Доступ запрещён", "error.forbidden_message": "У вас нет прав для доступа к этой странице.", "error.not_found": "Страница не найдена", @@ -106,43 +333,59 @@ "files.document_title": "Название документа", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "Размер файла", "files.filename": "Имя файла", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "Файлы не найдены", "files.ocr_status": "Статус OCR", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Теги", "files.title": "Файлы", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Загружено", "footer.attributions": "Атрибуции", @@ -197,6 +442,7 @@ "help.getting_started": "Начало работы", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Центр помощи", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Уведомления", "notifications.unread_count": "{count} непрочитанных уведомлений", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Создать конвейер", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Редактировать конвейер", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Конвейеры обработки", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "Результаты не найдены", @@ -437,16 +741,129 @@ "search.placeholder": "Поиск по имени, содержимому, тегам...", "search.result_empty": "No documents found matching your query.", "search.results_count": "Найдено результатов: {count}", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Поиск документов", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Вы уверены, что хотите сбросить эту настройку?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Не удалось сохранить настройку", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Настройка сохранена", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Настройки", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Перетащите файлы сюда или нажмите для выбора", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Ошибка загрузки", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/sk.json b/frontend/translations/sk.json index b6fcd11d..a4585271 100644 --- a/frontend/translations/sk.json +++ b/frontend/translations/sk.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/sl.json b/frontend/translations/sl.json index 5ac84d66..5172ee00 100644 --- a/frontend/translations/sl.json +++ b/frontend/translations/sl.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/sv.json b/frontend/translations/sv.json index 57fb8347..c85b7db7 100644 --- a/frontend/translations/sv.json +++ b/frontend/translations/sv.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/tr.json b/frontend/translations/tr.json index 737acf84..12c4e37e 100644 --- a/frontend/translations/tr.json +++ b/frontend/translations/tr.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/uk.json b/frontend/translations/uk.json index 65b2f383..1692114c 100644 --- a/frontend/translations/uk.json +++ b/frontend/translations/uk.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "Log In", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "Log Out", "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "Profile", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "Actions", "common.active": "Active", "common.all": "All", "common.back": "Back", "common.cancel": "Cancel", "common.close": "Close", + "common.col_pending": "Pending", "common.completed": "Completed", "common.confirm": "Confirm", "common.copied": "Copied!", @@ -41,9 +212,12 @@ "common.loading": "Loading...", "common.name": "Name", "common.next": "Next", + "common.next_page": "Next page", "common.no": "No", "common.none": "None", + "common.page": "Page", "common.pending": "Pending", + "common.prev_page": "Previous page", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -51,6 +225,7 @@ "common.save": "Save", "common.search": "Search", "common.select": "Select", + "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", "common.success": "Success", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "Active Integrations", "dashboard.files_this_month": "Files This Month", "dashboard.files_today": "Files Today", @@ -75,14 +273,43 @@ "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "Forbidden", "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", @@ -106,43 +333,59 @@ "files.document_title": "Document Title", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "File Size", "files.filename": "Filename", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "Tags", "files.title": "Files", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", "footer.attributions": "Attributions", @@ -197,6 +442,7 @@ "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "Notifications", "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "Create Pipeline", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "Edit Pipeline", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "Processing Pipelines", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "No results found", @@ -437,16 +741,129 @@ "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", "search.results_count": "{count} results found", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "Search Documents", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "Are you sure you want to reset this setting?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "Failed to save setting", + "settings.save_setting_title": "Save this setting", "settings.save_success": "Setting saved successfully", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "Settings", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "Drag & drop files here or click to browse", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/frontend/translations/zh.json b/frontend/translations/zh.json index c1f41dc2..34c2680c 100644 --- a/frontend/translations/zh.json +++ b/frontend/translations/zh.json @@ -1,25 +1,196 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", "auth.display_name_label": "Display Name", "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", "auth.login": "登录", "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", "auth.logout": "退出", "auth.my_account": "我的账户", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", "auth.password_label": "Password", "auth.profile": "个人资料", "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", "auth.signup": "注册", "auth.signup_title": "Sign Up", "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", "common.actions": "操作", "common.active": "活跃", "common.all": "全部", "common.back": "返回", "common.cancel": "取消", "common.close": "关闭", + "common.col_pending": "Pending", "common.completed": "已完成", "common.confirm": "确认", "common.copied": "已复制!", @@ -41,9 +212,12 @@ "common.loading": "加载中...", "common.name": "名称", "common.next": "下一步", + "common.next_page": "Next page", "common.no": "否", "common.none": "无", + "common.page": "Page", "common.pending": "待处理", + "common.prev_page": "Previous page", "common.processing": "处理中", "common.refresh": "刷新", "common.reset": "重置", @@ -51,6 +225,7 @@ "common.save": "保存", "common.search": "搜索", "common.select": "选择", + "common.select_placeholder": "— select —", "common.size": "大小", "common.status": "状态", "common.success": "成功", @@ -65,6 +240,29 @@ "cookie.notice_label": "Cookie 通知", "cookie.policy_link": "Cookie 政策", "cookie.privacy_link": "隐私声明", + "credentials.col_action": "Action", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.configured": "Configured", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_after": " file", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.legend_title": "Legend", + "credentials.manage_settings": "Manage Settings", + "credentials.not_configured": "Not Configured", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.raw_json": "Raw JSON (API)", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.status_missing": "Missing", + "credentials.subtitle": "Overview of all sensitive credentials used by DocuElevate. No secret values are shown here — only whether each credential is configured and where it comes from.", + "credentials.table_for": "Credentials for", + "credentials.title": "Credential Audit", + "credentials.total_credentials": "Total Credentials", "dashboard.active_integrations": "活跃集成", "dashboard.files_this_month": "本月文件", "dashboard.files_today": "今日文件", @@ -75,14 +273,43 @@ "dashboard.title": "仪表盘", "dashboard.total_files": "文件总数", "dashboard.welcome": "欢迎使用 DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", "error.404_code": "404", "error.404_heading": "Oops, we couldn’t find that page!", "error.404_home": "Return Home", "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", "error.500_description": "Our servers encountered a mishap and need a moment.", "error.500_heading": "Oops! Something Went Wrong.", "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", "error.forbidden": "禁止访问", "error.forbidden_message": "您没有权限访问此页面。", "error.not_found": "页面未找到", @@ -106,43 +333,59 @@ "files.document_title": "文档标题", "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.", "files.file_size": "文件大小", "files.filename": "文件名", + "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", "files.filter_all_types": "All Types", "files.filter_apply": "Apply Filters", "files.filter_clear": "Clear", "files.filter_date_from": "Date From", + "files.filter_date_from_aria": "Filter from date", "files.filter_date_to": "Date To", + "files.filter_date_to_aria": "Filter to date", + "files.filter_form_aria": "Filter files", "files.filter_mime_type": "MIME Type", "files.filter_ocr_all": "All Files", "files.filter_ocr_good": "Good quality", "files.filter_ocr_poor": "Poor quality", "files.filter_ocr_quality": "OCR Quality", + "files.filter_ocr_quality_aria": "Filter by OCR quality score", "files.filter_ocr_unchecked": "Not yet assessed", + "files.filter_search_label": "Search Filename", "files.filter_search_placeholder": "Enter filename...", "files.filter_storage_provider": "Storage Provider", + "files.filter_tags_aria": "Filter by tags (comma-separated)", "files.filter_tags_placeholder": "e.g. invoice,amazon", "files.fulltext_search_label": "Full-Text Search", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "未找到文件", "files.ocr_status": "OCR 状态", "files.page_title": "File Records", + "files.pagination_files": "files", "files.pagination_first": "First", "files.pagination_last": "Last", + "files.pagination_nav_aria": "File list pagination", "files.pagination_next": "Next", + "files.pagination_of": "of", "files.pagination_previous": "Previous", + "files.pagination_showing": "Showing", "files.preview_modal_close": "Close preview", "files.preview_modal_title": "Preview", + "files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.", "files.queue_banner_link": "View Queue", "files.saved_searches_empty": "No saved searches yet", "files.saved_searches_error": "Could not load saved searches", "files.saved_searches_label": "Saved Searches", "files.saved_searches_save": "Save Current", + "files.saved_searches_save_aria": "Save current filters as a saved search", "files.search_results_empty": "No results found.", "files.search_results_title": "Search Results", + "files.status_duplicate": "Duplicate", "files.table_actions": "Actions", + "files.table_aria": "File records", "files.table_created_at": "Created At", "files.table_empty": "No files found", "files.table_id": "ID", @@ -151,6 +394,8 @@ "files.table_select_all": "Select all files on this page", "files.tags": "标签", "files.title": "文件", + "files.upload_modal_aria": "Upload progress", + "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "已上传", "footer.attributions": "致谢", @@ -197,6 +442,7 @@ "help.getting_started": "入门指南", "help.heading": "Help Center", "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", "help.quickstart_storage": "Connect Storage", "help.quickstart_storage_desc": "Head to Settings and link your cloud accounts. Processed documents are automatically routed to every destination you configure.", @@ -218,6 +464,8 @@ "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", "help.title": "帮助中心", "help.workflows_creating": "Creating a Pipeline", "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", @@ -234,6 +482,8 @@ "help.workflows_typical_steps": "Typical Steps", "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", + "index.button_browse_files": "Browse Files", + "index.button_upload": "Upload", "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", "index.capabilities_ingestion": "Email & URL-based document ingestion", "index.capabilities_ocr": "OCR & metadata extraction with AI", @@ -245,6 +495,7 @@ "index.cta_pricing": "See pricing", "index.cta_signup": "Create a free account", "index.dashboard_subtitle": "Intelligent document processing & management", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", "index.feature_ai": "AI Metadata Extraction", "index.feature_ai_desc": "OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.", "index.feature_cloud": "Multi-Cloud Storage", @@ -282,13 +533,19 @@ "index.quick_search_desc": "Full-text search across documents", "index.quick_subscription": "My Subscription", "index.quick_subscription_desc": "View plan & usage details", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", "index.quick_upload": "Upload Document", "index.quick_upload_desc": "Process a new file", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", "index.single_user_heading": "DocuElevate Dashboard", "index.single_user_subtitle": "Intelligent document processing & management", + "index.stat_active_integrations": "Active Integrations", "index.stat_active_users": "Active users", "index.stat_files_month": "Files this month", "index.stat_files_today": "Files today", + "index.stat_storage_targets": "Storage Targets", "index.stat_total_files": "Total files", "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", @@ -399,20 +656,65 @@ "notifications.title": "通知", "notifications.unread_count": "{count} 条未读通知", "pipelines.active_label": "Active", + "pipelines.add_step_btn": "Add Step", "pipelines.create": "创建流程", + "pipelines.custom_label_label": "Custom Label", "pipelines.default_label": "Default", "pipelines.description_label": "Description", + "pipelines.description_placeholder": "Optional description", "pipelines.disabled_label": "Disabled", "pipelines.edit": "编辑流程", "pipelines.empty_state": "No pipelines yet", + "pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.", "pipelines.enabled_label": "Enabled", + "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", "pipelines.inactive_label": "Inactive", + "pipelines.loading": "Loading pipelines…", + "pipelines.name_placeholder": "My pipeline", + "pipelines.new_pipeline_btn": "New Pipeline", + "pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.", + "pipelines.ocr_auto": "Auto (use system default)", + "pipelines.ocr_language_hint": "Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.", + "pipelines.ocr_language_label": "OCR Language", + "pipelines.optional_suffix": "(optional)", "pipelines.page_title": "Processing Pipelines", "pipelines.set_default": "Set as my default pipeline", + "pipelines.step_label_placeholder": "Override the default step name", + "pipelines.step_type_label": "Step Type", + "pipelines.subtitle_intro": "Define and manage custom document processing workflows.", + "pipelines.subtitle_system_post": "badge and are visible to all users.", + "pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a", "pipelines.system_label": "System", + "pipelines.system_pipeline_label": "System pipeline (visible to all users)", "pipelines.title": "处理流程", + "queue.active_tasks": "Active Tasks", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.col_arguments": "Arguments", + "queue.col_current_step": "Current Step", + "queue.col_file": "File", + "queue.col_files": "Files", + "queue.col_queue": "Queue", + "queue.col_state": "State", + "queue.col_task": "Task", + "queue.col_task_id": "Task ID", + "queue.files_processing": "Files Processing", + "queue.heading": "Queue Monitor", + "queue.last_updated": "Last updated:", + "queue.loading_stats": "Loading queue statistics…", + "queue.no_active_tasks": "No active tasks", + "queue.no_data": "No data", + "queue.no_files_processing": "No files currently processing", + "queue.page_title": "Queue Monitor", + "queue.processing_pipeline": "Processing Pipeline", + "queue.queued_tasks": "Queued Tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.redis_queues": "Redis Queues", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.workers_online": "Workers Online", "search.button": "Search", "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", + "search.filter_aria_clear": "Clear all filters", "search.filter_clear_button": "Clear Filters", "search.filter_date_from": "Date From", "search.filter_date_to": "Date To", @@ -422,6 +724,7 @@ "search.filter_language_placeholder": "e.g. de", "search.filter_sender": "Sender", "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_tags": "Tags", "search.filter_tags_placeholder": "e.g. amazon", "search.filter_text_quality": "Text Quality", "search.filter_text_quality_all": "All", @@ -430,6 +733,7 @@ "search.filter_text_quality_medium": "Medium", "search.filter_text_quality_no_text": "No text", "search.heading": "Document Search", + "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", "search.no_results": "未找到结果", @@ -437,16 +741,129 @@ "search.placeholder": "按文件名、内容、标签搜索...", "search.result_empty": "No documents found matching your query.", "search.results_count": "找到 {count} 个结果", + "search.saved_aria_save": "Save current search", "search.saved_button": "Save Current", "search.saved_empty": "No saved searches yet", "search.saved_error": "Could not load saved searches", "search.saved_label": "Saved Searches", "search.saved_loading": "Loading...", "search.title": "搜索文档", + "settings.audit_log_btn": "Audit Log", + "settings.autocomplete_hint": "Type to search known values, or enter any custom value.", + "settings.autocomplete_no_matches": "No matches — you can still type a custom value", + "settings.autocomplete_placeholder": "Type to search or enter a value…", + "settings.boolean_enable_prefix": "Enable", + "settings.categories_aria": "Settings categories", + "settings.categories_heading": "Categories", + "settings.db_wizard_btn": "DB Wizard", + "settings.effective_value_label": "Effective value:", + "settings.encrypted_suffix": "= encrypted at rest", + "settings.encrypted_title": "Value is encrypted at rest in database", + "settings.export_btn": "Export", + "settings.export_db_only": "DB settings only", + "settings.export_full_config": "Full effective config", + "settings.jump_to_category": "Jump to category…", + "settings.manage_config_prefix": "Manage configuration. Priority:", + "settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.", + "settings.model_picker_placeholder": "Select a common model or type a custom name…", + "settings.no_results_clear": "clear the search", + "settings.no_results_heading": "No settings found", + "settings.no_results_hint": "Try a different search term or", + "settings.page_heading": "Application Settings", + "settings.required_label": "(required)", "settings.reset_confirm": "确定要重置此设置吗?", + "settings.restart_required_suffix": "= restart required", + "settings.revert_btn": "Remove from DB", + "settings.revert_title": "Remove DB override and revert to environment variable or default", + "settings.reverting": "Reverting…", + "settings.save_all_btn": "Save All Changes", "settings.save_error": "设置保存失败", + "settings.save_setting_title": "Save this setting", "settings.save_success": "设置保存成功", + "settings.saving_state": "Saving…", + "settings.search_aria_label": "Search settings", + "settings.search_clear_aria": "Clear search", + "settings.search_placeholder": "Search settings by name, key, or description…", + "settings.settings_count_suffix": "settings", + "settings.source_db_badge": "DB", + "settings.source_default_badge": "DEFAULT", + "settings.source_env_badge": "ENV", "settings.title": "设置", + "settings.toggle_visibility_aria": "Toggle password visibility", + "settings.toggle_visibility_title": "Show/hide value", + "settings.user_autocomplete_empty": "No matching users found", + "settings.user_autocomplete_hint": "Type to search existing users by name, or enter any identifier manually.", + "settings.user_autocomplete_placeholder": "Start typing to search users…", + "settings.wizard_btn": "Wizard", + "shared.col_expiry": "Expiry", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_views": "Views", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.copy_link_title": "Copy link", + "shared.create_btn": "Create Link", + "shared.create_heading": "Create New Shared Link", + "shared.creating": "Creating…", + "shared.expiry_12h": "12 hours", + "shared.expiry_14d": "14 days", + "shared.expiry_1h": "1 hour", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_30d": "30 days", + "shared.expiry_3d": "3 days", + "shared.expiry_6h": "6 hours", + "shared.expiry_7d": "7 days", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.files_link": "Files", + "shared.heading": "Shared Links", + "shared.label_label": "Label", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.links_count_aria": "number of links", + "shared.max_downloads_label": "Max downloads", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.open_in_new_tab": "Open in new tab", + "shared.open_link_aria": "Open shared link", + "shared.optional": "(optional)", + "shared.page_title": "Shared Links – DocuElevate", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.password_protected": "Password protected", + "shared.refresh_aria": "Refresh shared links list", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "shared.status_active": "Active", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_revoked": "Revoked", + "shared.subtitle": "Share documents with anyone via a time-limited or view-limited link. Recipients do not need a DocuElevate account. Links can be password-protected and revoked at any time.", + "shared.table_aria": "Shared links", + "shared.unlimited_placeholder": "Unlimited", + "shared.your_links": "Your Shared Links", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.heading": "Document Similarity", + "similarity.load_error": "Failed to load pairs.", + "similarity.min_similarity_label": "Min. similarity", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.pagination_aria": "Similarity pairs pagination", + "similarity.per_page_label": "Per page", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.trigger_now": "trigger it now", "status.app_version": "App Version", "status.build_date": "Build Date", "status.container_id": "Container ID", @@ -463,6 +880,7 @@ "upload.drag_drop": "将文件拖放到此处或点击浏览", "upload.drop_hint_desktop": "Drag & drop files or folders here, or click to select files.", "upload.drop_hint_mobile": "Tap to select files or use the camera button below.", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", "upload.error": "上传失败", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", diff --git a/tests/test_db_wizard_api.py b/tests/test_db_wizard_api.py index 2bcf3247..ac13abaa 100644 --- a/tests/test_db_wizard_api.py +++ b/tests/test_db_wizard_api.py @@ -345,7 +345,7 @@ class TestSettingsPageWizardLink: template_path = Path(__file__).resolve().parent.parent / "frontend" / "templates" / "settings.html" content = template_path.read_text() assert "/database-wizard" in content - assert "DB Wizard" in content + assert "settings.db_wizard_btn" in content # i18n key (resolves to "DB Wizard") def test_settings_template_has_help_link_rendering(self): """Test that the settings template renders help_link metadata."""