diff --git a/frontend/templates/help.html b/frontend/templates/help.html index bfec5db0..277c654a 100644 --- a/frontend/templates/help.html +++ b/frontend/templates/help.html @@ -1,16 +1,16 @@ {% extends "base.html" %} -{% block title %}Help Center – DocuElevate{% endblock %} +{% block title %}{{ _("help.page_title") }} – DocuElevate{% endblock %} {% block head_extra %} - + - - + + @@ -63,18 +63,17 @@

- Help Center + {{ _("help.heading") }}

- Everything you need to get the most out of DocuElevate. - Browse topics below or search for what you need. + {{ _("help.subheading") }}

- Quick Start + {{ _("help.quickstart_heading") }}

@@ -84,11 +83,10 @@ -

Upload Documents

+

{{ _("help.quickstart_upload") }}

- Drag & drop files onto the Upload page or click Choose File. - DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically. + {{ _("help.quickstart_upload_desc") }}

@@ -98,11 +96,10 @@ -

Connect Storage

+

{{ _("help.quickstart_storage") }}

- Head to Settings → Integrations and link your cloud accounts. - Processed documents are automatically routed to every destination you configure. + {{ _("help.quickstart_storage_desc_full") }}

@@ -112,11 +109,10 @@ -

Automate Workflows

+

{{ _("help.quickstart_workflows") }}

- Create Pipelines to define multi-step processing and routing rules. - Combine OCR, AI extraction, format conversion, and delivery in a single flow. + {{ _("help.quickstart_workflows_desc") }}

@@ -126,39 +122,35 @@

- Sources – Getting Documents In + {{ _("help.sources_heading") }}

-

Web Upload

+

{{ _("help.sources_web_upload") }}

- The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. - Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more. + {{ _("help.sources_web_upload_desc") }}

-

Email Ingestion (IMAP)

+

{{ _("help.sources_email_ingestion") }}

- Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. - DocuElevate polls for new messages and processes attachments automatically. + {{ _("help.sources_email_ingestion_desc") }}

-

REST API

+

{{ _("help.sources_rest_api") }}

- Integrate programmatically by POST-ing files to /api/upload. - Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n. + {{ _("help.sources_rest_api_desc") }}

-

Scanner & Mobile

+

{{ _("help.sources_scanner") }}

- Point network scanners (HP, Fujitsu ScanSnap, Brother) at DocuElevate's upload endpoint or - use any mobile scanning app that supports custom HTTP destinations. + {{ _("help.sources_scanner_desc_full") }}

@@ -168,79 +160,79 @@

- Destinations – Where Documents Go + {{ _("help.destinations_heading") }}

-

Dropbox

-

OAuth-linked. Files land in your chosen folder.

+

{{ _("help.destinations_dropbox") }}

+

{{ _("help.destinations_dropbox_desc") }}

-

Google Drive

-

Service account or OAuth. Supports shared drives.

+

{{ _("help.destinations_google_drive") }}

+

{{ _("help.destinations_google_drive_desc") }}

-

OneDrive

-

Microsoft Graph API integration.

+

{{ _("help.destinations_onedrive") }}

+

{{ _("help.destinations_onedrive_desc") }}

-

Amazon S3

-

Any S3-compatible bucket (AWS, MinIO, Wasabi).

+

{{ _("help.destinations_s3") }}

+

{{ _("help.destinations_s3_desc") }}

-

Nextcloud / WebDAV

-

Self-hosted cloud storage via WebDAV.

+

{{ _("help.destinations_nextcloud") }}

+

{{ _("help.destinations_nextcloud_desc") }}

-

Paperless-ngx

-

Push documents straight into Paperless for archival.

+

{{ _("help.destinations_paperless") }}

+

{{ _("help.destinations_paperless_desc") }}

-

SFTP / FTP

-

Secure file transfer to any server.

+

{{ _("help.destinations_sftp") }}

+

{{ _("help.destinations_sftp_desc") }}

-

Email Forwarding

-

Processed files sent as SMTP attachments.

+

{{ _("help.destinations_email") }}

+

{{ _("help.destinations_email_desc") }}

-

Webhook

-

POST metadata to any external endpoint.

+

{{ _("help.destinations_webhook") }}

+

{{ _("help.destinations_webhook_desc") }}

@@ -250,32 +242,31 @@

- Workflows & Pipelines + {{ _("help.workflows_heading") }}

-

What is a Pipeline?

+

{{ _("help.workflows_what_is") }}

- 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. + {{ _("help.workflows_definition") }}

-

Typical Steps

+

{{ _("help.workflows_typical_steps") }}

    -
  1. Convert to PDF (Gotenberg)
  2. -
  3. OCR – extract text (Azure, Tesseract, Mistral …)
  4. -
  5. AI metadata extraction (OpenAI, Claude, Gemini …)
  6. -
  7. Deliver to one or more destinations
  8. +
  9. {{ _("help.workflows_step_1_full") }}
  10. +
  11. {{ _("help.workflows_step_2_full") }}
  12. +
  13. {{ _("help.workflows_step_3_full") }}
  14. +
  15. {{ _("help.workflows_step_4") }}
-

Creating a Pipeline

+

{{ _("help.workflows_creating") }}

    -
  1. Go to Pipelines in the main menu.
  2. -
  3. Click New Pipeline and give it a name.
  4. -
  5. Add the processing steps you need.
  6. -
  7. Choose one or more delivery destinations.
  8. -
  9. Save – new documents will be processed through this pipeline automatically.
  10. +
  11. {{ _("help.workflows_step_1_create") }}
  12. +
  13. {{ _("help.workflows_step_2_create") }}
  14. +
  15. {{ _("help.workflows_step_3_create") }}
  16. +
  17. {{ _("help.workflows_step_4_create") }}
  18. +
  19. {{ _("help.workflows_step_5_create") }}
@@ -285,47 +276,43 @@

- Ingesting Data with Standard Tools + {{ _("help.ingestion_heading") }}

-

cURL

-

Upload a file from any terminal:

+

{{ _("help.ingestion_curl") }}

+

{{ _("help.ingestion_curl_desc") }}

curl -X POST https://your-instance/api/upload \
   -H "Authorization: Bearer YOUR_TOKEN" \
   -F "file=@/path/to/document.pdf"
-

Watched Folders

+

{{ _("help.ingestion_watched_folders") }}

- Use inotifywait (Linux), fswatch (macOS), or any file-watcher script to - POST new files as soon as they appear in a local directory. + {{ _("help.ingestion_watched_folders_desc") }}

-

Network Scanners

+

{{ _("help.ingestion_scanners") }}

- Configure your HP, Fujitsu ScanSnap, or Brother scanner to use DocuElevate's upload URL as a - Scan-to-Network destination. Scans are processed the moment they arrive. + {{ _("help.ingestion_scanners_desc") }}

-

Mobile Scanning Apps

+

{{ _("help.ingestion_mobile") }}

- Apps like Adobe Scan, Microsoft Lens, or Genius Scan - can export to a custom HTTP endpoint. Point them at /api/upload. + {{ _("help.ingestion_mobile_desc") }}

-

Zapier / n8n / Make

+

{{ _("help.ingestion_zapier") }}

- Connect DocuElevate to thousands of other apps via integration platforms. - Use the HTTP/Webhook module to POST files to the upload API. + {{ _("help.ingestion_zapier_desc") }}

@@ -335,7 +322,7 @@

- Frequently Asked Questions + {{ _("help.faq_heading") }}

@@ -345,12 +332,11 @@ @click="open = open === 1 ? null : 1" :aria-expanded="open === 1 ? 'true' : 'false'" aria-controls="faq-1"> - How do I upload documents? + {{ _("help.faq_1_q") }}
- Navigate to the Upload page, drag-and-drop your files or click Choose File. - DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically. + {{ _("help.faq_1_a") }}
@@ -360,12 +346,11 @@ @click="open = open === 2 ? null : 2" :aria-expanded="open === 2 ? 'true' : 'false'" aria-controls="faq-2"> - Which file formats are supported? + {{ _("help.faq_2_q") }}
- PDF, JPEG, PNG, TIFF, BMP, GIF, DOCX, XLSX, PPTX, ODT, ODS, TXT, RTF, and HTML. - Non-PDF files are automatically converted to PDF before processing. + {{ _("help.faq_2_a") }}
@@ -375,12 +360,11 @@ @click="open = open === 3 ? null : 3" :aria-expanded="open === 3 ? 'true' : 'false'" aria-controls="faq-3"> - Can I ingest documents from email? + {{ _("help.faq_3_q") }}
- Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new - messages and process attachments automatically. + {{ _("help.faq_3_a") }}
@@ -390,12 +374,11 @@ @click="open = open === 4 ? null : 4" :aria-expanded="open === 4 ? 'true' : 'false'" aria-controls="faq-4"> - How do processing pipelines work? + {{ _("help.faq_4_q") }}
- Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the - result to one or more destinations. Create and manage them from the Pipelines page. + {{ _("help.faq_4_a") }}
@@ -405,12 +388,11 @@ @click="open = open === 5 ? null : 5" :aria-expanded="open === 5 ? 'true' : 'false'" aria-controls="faq-5"> - Is my data secure? + {{ _("help.faq_5_q") }}
- DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents - longer than necessary. See the Privacy Notice for full details. + {{ _("help.faq_5_a_pre") }}{{ _("help.privacy_notice") }}{{ _("help.faq_5_a_post") }}
@@ -420,7 +402,7 @@

- Contact Support + {{ _("help.support_heading") }}

@@ -428,7 +410,7 @@

- Can't find what you're looking for? Our support team is here to help. + {{ _("help.support_description") }}

{% if support_email %} @@ -441,7 +423,7 @@ {% if zammad_chat_enabled and zammad_url %}
- Live chat available – look for the chat bubble in the bottom-right corner. + {{ _("help.support_live_chat") }}
{% endif %}
@@ -450,22 +432,22 @@ {% if zammad_form_enabled and zammad_url %}

- Open a Support Ticket + {{ _("help.support_ticket_heading") }}

- Describe your issue below and we'll get back to you as soon as possible. + {{ _("help.support_ticket_desc") }}

{% elif not zammad_form_enabled and not support_email and not zammad_chat_enabled %}

- Contact your administrator for support information. + {{ _("help.support_admin_message") }}

{% endif %} diff --git a/frontend/templates/index.html b/frontend/templates/index.html index d5503540..0b259567 100644 --- a/frontend/templates/index.html +++ b/frontend/templates/index.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{% block title %}{% if multi_user_enabled and not is_logged_in %}DocuElevate – Intelligent Document Processing{% else %}Dashboard – DocuElevate{% endif %}{% endblock %} +{% block title %}{% if multi_user_enabled and not is_logged_in %}{{ _("index.page_title_public") }}{% else %}{{ _("index.page_title_dashboard") }}{% endif %}{% endblock %} {% block content %}
@@ -13,30 +13,29 @@
- Intelligent Document Processing + {{ _("index.badge_intelligent") }}

- From upload to insight — automatically. + {{ _("index.hero_heading") }}

- DocuElevate ingests your documents, runs OCR, extracts metadata with AI, and routes files to - Dropbox, Google Drive, OneDrive, S3, Nextcloud, and more — all in one seamless pipeline. + {{ _("index.hero_description") }}

@@ -44,7 +43,7 @@
-

Everything you need for smart document workflows

+

{{ _("index.feature_section_title") }}

@@ -52,8 +51,8 @@
-

OCR & Text Extraction

-

Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.

+

{{ _("index.feature_ocr") }}

+

{{ _("index.feature_ocr_desc") }}

@@ -62,8 +61,8 @@
-

AI Metadata Extraction

-

OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.

+

{{ _("index.feature_ai") }}

+

{{ _("index.feature_ai_desc") }}

@@ -72,8 +71,8 @@
-

Multi-Cloud Storage

-

Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.

+

{{ _("index.feature_cloud") }}

+

{{ _("index.feature_cloud_desc") }}

@@ -82,8 +81,8 @@
-

Email & IMAP Ingestion

-

Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.

+

{{ _("index.feature_email") }}

+

{{ _("index.feature_email_desc") }}

@@ -92,8 +91,8 @@
-

Full-Text Search

-

Instantly find any document by content, metadata, or tags across your entire archive.

+

{{ _("index.feature_search") }}

+

{{ _("index.feature_search_desc") }}

@@ -102,8 +101,8 @@
-

Custom Pipelines

-

Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.

+

{{ _("index.feature_pipelines") }}

+

{{ _("index.feature_pipelines_desc") }}

@@ -113,23 +112,23 @@
-

Ready to elevate your document workflow?

-

Join teams already automating their document processing with DocuElevate.

+

{{ _("index.cta_heading") }}

+

{{ _("index.cta_description") }}

@@ -145,16 +144,16 @@

DocuElevate

-

Intelligent document processing & management — built for teams

+

{{ _("index.dashboard_subtitle_teams") }}

@@ -162,7 +161,7 @@ {% if is_admin %} -

Platform overview

+

{{ _("index.platform_overview") }}

@@ -170,7 +169,7 @@

{{ stats.processed_files | default(0) }}

-

Total files

+

{{ _("index.stat_total_files") }}

@@ -179,7 +178,7 @@

{{ stats.files_today | default(0) }}

-

Files today

+

{{ _("index.stat_files_today") }}

@@ -188,7 +187,7 @@

{{ stats.files_month | default(0) }}

-

Files this month

+

{{ _("index.stat_files_month") }}

@@ -197,7 +196,7 @@

{{ stats.unique_users | default(0) }}

-

Active users

+

{{ _("index.stat_active_users") }}

@@ -205,7 +204,7 @@ {% if user_tier and user_usage %} -

My usage

+

{{ _("index.usage_my_usage") }}

@@ -220,16 +219,16 @@ {% elif user_tier.id == 'professional' %}fa-star {% else %}fa-building{% endif %} mr-1" aria-hidden="true"> - {{ user_tier.name }} Plan + {{ user_tier.name }} {{ _("index.tier_plan") }} {% if user_tier.id != 'business' %} - Upgrade + {{ _("index.tier_upgrade") }} {% endif %}
- View full details → + {{ _("index.tier_view_details") }} →
@@ -237,7 +236,7 @@
- Lifetime files + {{ _("index.usage_lifetime") }} {{ user_usage.lifetime }}{% if user_tier.lifetime_file_limit > 0 %} / {{ user_tier.lifetime_file_limit }}{% endif %} @@ -250,13 +249,13 @@ style="width: {{ pct }}%">
{% else %} -
Unlimited
+
{{ _("index.usage_unlimited") }}
{% endif %}
- Files today + {{ _("index.usage_today") }} {{ user_usage.today }}{% if user_tier.daily_upload_limit > 0 %} / {{ user_tier.daily_upload_limit }}{% endif %} @@ -269,13 +268,13 @@ style="width: {{ pct }}%">
{% else %} -
Unlimited
+
{{ _("index.usage_unlimited") }}
{% endif %}
- Files this month + {{ _("index.usage_month") }} {{ user_usage.month }}{% if user_tier.monthly_upload_limit > 0 %} / {{ user_tier.monthly_upload_limit }}{% endif %} @@ -288,7 +287,7 @@ style="width: {{ pct }}%">
{% else %} -
Unlimited
+
{{ _("index.usage_unlimited") }}
{% endif %} @@ -300,7 +299,7 @@

- Quick Actions + {{ _("index.quick_actions") }}

  • @@ -309,8 +308,8 @@
    -

    Upload Document

    -

    Process a new file

    +

    {{ _("index.quick_upload") }}

    +

    {{ _("index.quick_upload_desc") }}

  • @@ -320,8 +319,8 @@
    -

    My Documents

    -

    Browse your processed files

    +

    {{ _("index.quick_documents") }}

    +

    {{ _("index.quick_documents_desc") }}

    @@ -331,8 +330,8 @@
    -

    My Subscription

    -

    View plan & usage details

    +

    {{ _("index.quick_subscription") }}

    +

    {{ _("index.quick_subscription_desc") }}

    @@ -342,8 +341,8 @@
    -

    Search

    -

    Full-text search across documents

    +

    {{ _("index.quick_search") }}

    +

    {{ _("index.quick_search_desc") }}

    @@ -353,30 +352,30 @@

    - Processing Stats + {{ _("index.processing_stats") }}

    • - Total processed + {{ _("index.stat_total_processed") }} {{ stats.processed_files | default(0) }}
    • - Files with OCR + {{ _("index.stat_files_ocr") }} {{ stats.files_with_ocr | default(0) }}
    • - Today + {{ _("index.stat_today") }} {{ stats.files_today | default(0) }}
    • - This month + {{ _("index.stat_this_month") }} {{ stats.files_month | default(0) }}
    • @@ -388,39 +387,39 @@

      - Upgrade your plan + {{ _("index.upgrade_plan") }}

      - Unlock more documents, more destinations and priority support. + {{ _("index.upgrade_description") }}

        -
      • Higher daily & monthly limits
      • -
      • More storage destinations
      • -
      • More OCR pages
      • +
      • {{ _("index.upgrade_daily_limits") }}
      • +
      • {{ _("index.upgrade_destinations") }}
      • +
      • {{ _("index.upgrade_ocr_pages") }}
      - View plans & pricing + {{ _("index.upgrade_view_pricing") }}
      {% else %}

      - Integrations + {{ _("index.integrations_title") }}

      - Active integrations + {{ _("index.integrations_active") }} {{ stats.active_integrations | default(0) }}
      - Storage targets + {{ _("index.integrations_storage") }} {{ stats.storage_targets | default(0) }}
      - View system status + {{ _("index.integrations_view_status") }}
      {% endif %} @@ -435,15 +434,15 @@
      -

      DocuElevate Dashboard

      -

      Intelligent document processing & management

      +

      {{ _("index.single_user_heading") }}

      +

      {{ _("index.dashboard_subtitle") }}

      @@ -457,7 +456,7 @@

      {{ stats.processed_files | default(0) }}

      -

      Documents Processed

      +

      {{ _("index.stat_documents_processed") }}

    @@ -466,7 +465,7 @@

    {{ stats.active_integrations | default(0) }}

    -

    Active Integrations

    +

    {{ _("index.stat_active_integrations") }}

@@ -475,7 +474,7 @@

{{ stats.storage_targets | default(0) }}

-

Storage Targets

+

{{ _("index.stat_storage_targets") }}

@@ -486,7 +485,7 @@

- Quick Actions + {{ _("index.quick_actions") }}

  • @@ -495,8 +494,8 @@
    -

    Upload Document

    -

    Process a new file

    +

    {{ _("index.quick_upload") }}

    +

    {{ _("index.quick_upload_desc") }}

  • @@ -506,8 +505,8 @@
    -

    View All Files

    -

    Browse processed documents

    +

    {{ _("index.quick_view_files") }}

    +

    {{ _("index.quick_view_files_desc") }}

    @@ -517,8 +516,8 @@
    -

    System Status

    -

    Check integration health

    +

    {{ _("index.quick_system_status") }}

    +

    {{ _("index.quick_system_status_desc") }}

    @@ -528,28 +527,28 @@

    - Capabilities + {{ _("index.capabilities_title") }}

    • - OCR & metadata extraction with AI + {{ _("index.capabilities_ocr") }}
    • - Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud + {{ _("index.capabilities_cloud") }}
    • - Paperless-ngx integration for document management + {{ _("index.capabilities_paperless") }}
    • - Email & URL-based document ingestion + {{ _("index.capabilities_ingestion") }}
    • - Automated classification & routing workflows + {{ _("index.capabilities_workflows") }}
    @@ -558,25 +557,25 @@

    - Getting Started + {{ _("index.getting_started") }}

    1. 1 - Configure integrations via System Status + {{ _("index.getting_started_1_pre") }}{{ _("index.quick_system_status") }}
    2. 2 - Upload your first document + {{ _("index.button_upload") }}{{ _("index.getting_started_2_post") }}
    3. 3 - Review results in Files + {{ _("index.getting_started_3_pre") }}{{ _("index.link_files") }}
    - Learn more about DocuElevate + {{ _("index.getting_started_learn") }}
diff --git a/frontend/templates/search.html b/frontend/templates/search.html index abac2a8a..89ad5cb7 100644 --- a/frontend/templates/search.html +++ b/frontend/templates/search.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{% block title %}Search Documents - DocuElevate{% endblock %} +{% block title %}{{ _("search.page_title") }} - DocuElevate{% endblock %} {% block head_extra %} @@ -121,74 +121,74 @@ {% block content %}
-

Document Search

+

{{ _("search.heading") }}

- - + +
- - + +
- - + +
- - + +
- - + + + + +
- - + +
- - + +
-
- Saved Searches: + {{ _("search.saved_label") }}: - Loading... + {{ _("search.saved_loading") }} -
diff --git a/frontend/translations/en.json b/frontend/translations/en.json index 168c663e..b726b4e0 100644 --- a/frontend/translations/en.json +++ b/frontend/translations/en.json @@ -481,5 +481,278 @@ "language.lv": "Latviešu", "language.lt": "Lietuvių", "language.lb": "Lëtzebuergesch", - "language.ca": "Català" + "language.ca": "Català", + "auth.logo_alt": "DocuElevate Logo", + "auth.sign_in_with_username": "Sign in with username", + "auth.username_or_email": "Username or Email", + "auth.sign_in": "Sign in", + "auth.forgot_username": "Forgot username?", + "auth.or_continue_with": "Or continue with", + "auth.sign_in_sso": "Sign in with SSO", + "auth.return_home": "Return to Home", + "auth.no_account": "Don't have an account?", + "auth.create_account": "Create account", + "upload.drop_zone_aria": "File upload area. Drag and drop files here, or press Enter to browse files.", + "credentials.page_title": "Credential Audit - DocuElevate", + "credentials.title": "Credential Audit", + "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.total_credentials": "Total Credentials", + "credentials.configured": "Configured", + "credentials.not_configured": "Not Configured", + "credentials.legend_title": "Legend", + "credentials.legend_db": "Value stored in the database (encrypted at rest; overrides environment variable)", + "credentials.legend_env_before": "Value from environment variable or ", + "credentials.legend_env_after": " file", + "credentials.legend_missing": "Credential not set — integration will not work", + "credentials.legend_restart": "Restart required when this credential is rotated", + "credentials.col_credential": "Credential", + "credentials.col_source": "Source", + "credentials.col_action": "Action", + "credentials.table_for": "Credentials for", + "credentials.restart_title": "Restart required after rotating this credential", + "credentials.status_missing": "Missing", + "credentials.source_db_title": "Stored in database (encrypted)", + "credentials.source_env_title": "From environment variable", + "credentials.edit_in_settings": "Edit in Settings", + "credentials.manage_settings": "Manage Settings", + "credentials.raw_json": "Raw JSON (API)", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.title": "Audit Logs", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.refresh_label": "Refresh audit logs", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_user": "User", + "audit.filter_all_users": "All users", + "audit.filter_severity": "Severity", + "audit.filter_resource_type": "Resource Type", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filters_section_label": "Audit log filters", + "audit.col_timestamp": "Timestamp", + "audit.col_resource": "Resource", + "audit.col_ip": "IP", + "audit.table_label": "Audit log events", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.pagination_label": "Audit log pagination", + "audit.prev_label": "Previous page", + "audit.prev": "Prev", + "audit.next_label": "Next page", + "audit.next": "Next", + "audit.critical": "Critical", + "queue.page_title": "Queue Monitor", + "queue.heading": "Queue Monitor", + "queue.subtitle": "Real-time view of the document processing pipeline and Celery task queues.", + "queue.loading_stats": "Loading queue statistics…", + "queue.queued_tasks": "Queued Tasks", + "queue.active_tasks": "Active Tasks", + "queue.files_processing": "Files Processing", + "queue.workers_online": "Workers Online", + "queue.redis_queues": "Redis Queues", + "queue.col_queue": "Queue", + "queue.no_data": "No data", + "queue.processing_pipeline": "Processing Pipeline", + "queue.col_state": "State", + "queue.col_files": "Files", + "queue.col_task": "Task", + "queue.col_arguments": "Arguments", + "queue.col_task_id": "Task ID", + "queue.no_active_tasks": "No active tasks", + "queue.recently_processing": "Recently Processing Files", + "queue.col_file": "File", + "queue.col_current_step": "Current Step", + "queue.no_files_processing": "No files currently processing", + "queue.auto_refresh_1": "Auto-refreshes every", + "queue.auto_refresh_2": "seconds", + "queue.last_updated": "Last updated:", + "api_tokens.page_title": "API Tokens – DocuElevate", + "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.create_heading": "Create New Token", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.creating": "Creating…", + "api_tokens.create_token": "Create Token", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.your_tokens": "Your Tokens", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.table_aria": "API Tokens", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.col_created": "Created", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.never": "Never", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.revoke": "Revoke", + "similarity.page_title": "Document Similarity - DocuElevate", + "similarity.heading": "Document Similarity", + "similarity.subtitle": "Pairs of documents with high semantic similarity, ranked by score.", + "similarity.stat_total_files": "Total Files", + "similarity.stat_with_embedding": "With Embedding", + "similarity.stat_missing_embedding": "Missing Embedding", + "similarity.stat_embedding_model": "Embedding Model", + "similarity.files_missing_text": "file(s) have OCR text but no embedding yet.", + "similarity.backfill_auto": "The background task will compute them automatically every 5 minutes, or you can", + "similarity.trigger_now": "trigger it now", + "similarity.trigger_aria": "Trigger embedding computation for all files missing embeddings", + "similarity.min_similarity_label": "Min. similarity", + "similarity.per_page_label": "Per page", + "similarity.find_pairs_btn": "Find Pairs", + "similarity.scanning": "Scanning for similar document pairs…", + "similarity.no_pairs_heading": "No similar pairs found", + "similarity.no_pairs_detail": "No document pairs exceed the similarity threshold.", + "similarity.load_error": "Failed to load pairs.", + "similarity.pagination_aria": "Similarity pairs pagination", + "backup.page_title": "Backup Management", + "backup.heading": "Backup Management", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.confirm_title": "Confirm action", + "backup.confirm_btn": "Confirm", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.local_only": "Local only", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.type_hourly": "Hourly", + "backup.type_daily": "Daily", + "backup.type_weekly": "Weekly", + "backup.restore_heading": "Restore from File", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restoring": "Restoring…", + "backup.restore_btn": "Restore", + "backup.archives_heading": "Backup Archives", + "backup.records_label": "records", + "backup.table_aria": "Backup archives", + "backup.col_filename": "Filename", + "backup.col_type": "Type", + "backup.col_created": "Created", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.no_backups": "No backups yet.", + "backup.backup_now": "Backup Now", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "shared.page_title": "Shared Links – DocuElevate", + "shared.heading": "Shared Links", + "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.create_heading": "Create New Shared Link", + "shared.file_id_label": "File ID", + "shared.file_id_placeholder": "e.g. 42", + "shared.file_id_help_pre": "Find the file ID on the", + "shared.files_link": "Files", + "shared.file_id_help_post": "page or in the document detail URL.", + "shared.label_label": "Label", + "shared.optional": "(optional)", + "shared.label_placeholder": "e.g. Shared with Bob", + "shared.expiry_label": "Expiry", + "shared.expiry_never": "Never", + "shared.expiry_1h": "1 hour", + "shared.expiry_6h": "6 hours", + "shared.expiry_12h": "12 hours", + "shared.expiry_24h": "24 hours (1 day)", + "shared.expiry_3d": "3 days", + "shared.expiry_7d": "7 days", + "shared.expiry_14d": "14 days", + "shared.expiry_30d": "30 days", + "shared.max_downloads_label": "Max downloads", + "shared.unlimited_placeholder": "Unlimited", + "shared.password_label": "Password", + "shared.password_placeholder": "Leave blank for no password", + "shared.creating": "Creating…", + "shared.create_btn": "Create Link", + "shared.link_created": "Shared link created!", + "shared.link_created_help": "Copy and send this link to the recipient.", + "shared.copy_link_aria": "Copy link to clipboard", + "shared.your_links": "Your Shared Links", + "shared.links_count_aria": "number of links", + "shared.refresh_aria": "Refresh shared links list", + "shared.no_links": "No shared links yet. Create one above to get started.", + "shared.table_aria": "Shared links", + "shared.col_file_label": "File / Label", + "shared.col_link": "Link", + "shared.col_expiry": "Expiry", + "shared.col_views": "Views", + "shared.password_protected": "Password protected", + "shared.copy_link_title": "Copy link", + "shared.open_link_aria": "Open shared link", + "shared.open_in_new_tab": "Open in new tab", + "shared.status_revoked": "Revoked", + "shared.status_expired": "Expired", + "shared.status_limit_reached": "Limit reached", + "shared.status_active": "Active", + "shared.revoke_aria_prefix": "Revoke shared link for", + "shared.revoke_btn": "Revoke", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.heading": "Duplicate Documents", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.found_prefix": "Found", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.group_aria": "Duplicate group", + "duplicates.role_original": "Original", + "duplicates.role_duplicate": "Duplicate", + "duplicates.view_original_aria": "View original file", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.pagination_aria": "Pagination", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "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.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.max_results_label": "Max results", + "duplicates.find_btn": "Find", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "search.input_aria_label": "Search documents", + "search.filter_tags": "Tags", + "search.filter_aria_clear": "Clear all filters", + "search.saved_aria_save": "Save current search", + "help.privacy_notice": "Privacy Notice", + "help.support_ticket_heading": "Open a Support Ticket", + "help.support_ticket_button": "Submit a Ticket", + "index.dashboard_subtitle_teams": "Intelligent document processing & management — built for teams", + "index.button_upload": "Upload", + "index.button_browse_files": "Browse Files", + "index.stat_active_integrations": "Active Integrations", + "index.stat_storage_targets": "Storage Targets", + "index.quick_view_files": "View All Files", + "index.quick_view_files_desc": "Browse processed documents", + "index.quick_system_status": "System Status", + "index.quick_system_status_desc": "Check integration health", + "common.prev_page": "Previous page", + "common.next_page": "Next page", + "common.page": "Page", + "common.col_pending": "Pending" }