Merge pull request #596 from christianlouis/copilot/refactor-template-localization

fix(i18n): wire _ into all Jinja2 instances, sync translation files, fix pipelines.html orphan tag
This commit is contained in:
Christian Krakau-Louis
2026-03-12 14:08:26 +01:00
committed by GitHub
56 changed files with 13740 additions and 823 deletions
+2
View File
@@ -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:
+2
View File
@@ -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)]
+2
View File
@@ -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
+5 -5
View File
@@ -1,16 +1,16 @@
{% extends "base.html" %}
{% block title %}404 - Not Found{% endblock %}
{% block title %}{{ _("error.404_title") }}{% endblock %}
{% block content %}
<div class="flex flex-col items-center justify-center text-center px-4 py-16">
<div class="max-w-xl">
<h1 class="text-7xl font-extrabold text-blue-600 mb-6">404</h1>
<h2 class="text-3xl font-bold text-gray-800 mb-4">Oops, we couldnt find that page!</h2>
<h1 class="text-7xl font-extrabold text-blue-600 mb-6">{{ _("error.404_code") }}</h1>
<h2 class="text-3xl font-bold text-gray-800 mb-4">{{ _("error.404_heading") }}</h2>
<p class="text-gray-600 mb-8">
It seems DocuElevate has misplaced the document you were looking for. Dont worry weve got your back.
{{ _("error.404_message") }}
</p>
<a href="/" class="inline-block bg-blue-500 hover:bg-blue-600 text-white font-semibold py-3 px-6 rounded-lg transition-colors">
&larr; Return Home
&larr; {{ _("error.404_home") }}
</a>
</div>
</div>
+8 -8
View File
@@ -1,5 +1,5 @@
{% extends "base.html" %}
{% block title %}Server Error - DocuElevate{% endblock %}
{% block title %}{{ _("error.500_title") }}{% endblock %}
{% block content %}
<div class="relative isolate px-6 pt-14 lg:px-8">
@@ -7,27 +7,27 @@
<div class="mx-auto max-w-3xl py-12">
<img
src="/static/explosion.jpg"
alt="Illustration of a server error"
alt="{{ _('error.500_img_alt') }}"
class="mx-auto rounded-xl shadow-xl h-[300px] w-full object-cover"
/>
</div>
<div class="mx-auto max-w-3xl text-center">
<h1 class="text-7xl font-bold text-red-500">500</h1>
<h1 class="text-7xl font-bold text-red-500">{{ _("error.500_code") }}</h1>
<p class="mt-4 text-4xl font-semibold tracking-tight text-gray-900">
Oops! Something Went Wrong.
{{ _("error.500_heading") }}
</p>
<p class="mt-4 text-lg leading-8 text-gray-600">
Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?
{{ _("error.500_message1") }}
</p>
<p class="mt-2 text-lg leading-8 text-gray-600">
We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.
{{ _("error.500_message2") }}
</p>
{% if exc %}
<details class="mt-8 bg-gray-100 rounded-lg p-4 text-left shadow-md">
<summary class="cursor-pointer font-medium text-blue-600 hover:text-blue-700">
Show Debug Info
{{ _("error.500_debug_info") }}
</summary>
<pre class="mt-4 text-sm text-gray-700 overflow-auto">{{ exc }}</pre>
</details>
@@ -35,7 +35,7 @@
<div class="mt-10">
<a href="/" class="inline-block bg-blue-600 px-6 py-3 rounded-md text-white font-semibold shadow-md hover:bg-blue-700 transition-colors">
&larr; Go Home
&larr; {{ _("error.500_home") }}
</a>
</div>
</div>
+41 -47
View File
@@ -1,69 +1,63 @@
{% extends "base.html" %}
{% block title %}About DocuElevate{% endblock %}
{% block title %}{{ _("about.page_title") }}{% endblock %}
{% block content %}
<div class="container mx-auto px-4 py-8">
<h1 class="text-4xl font-bold mb-4">About DocuElevate</h1>
<h1 class="text-4xl font-bold mb-4">{{ _("about.heading") }}</h1>
<p class="text-gray-700 mb-6 leading-relaxed">
Welcome to <strong>DocuElevate</strong> 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") }}<strong>{{ _("app.name") }}</strong>{{ _("about.intro_post") }}
</p>
<!-- Our Story Section -->
<section class="bg-white shadow rounded p-6 mb-8">
<h2 class="text-2xl font-semibold mb-2">Our Story</h2>
<h2 class="text-2xl font-semibold mb-2">{{ _("about.story_heading") }}</h2>
<p class="text-gray-600 mb-4">
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_p1") }}
</p>
<p class="text-gray-600">
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.
{{ _("about.story_p2") }}
</p>
</section>
<!-- Key Features Section - Updated with more comprehensive features -->
<section class="bg-white shadow rounded p-6 mb-8">
<h2 class="text-2xl font-semibold mb-2">Key Features</h2>
<h2 class="text-2xl font-semibold mb-2">{{ _("about.features_heading") }}</h2>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<h3 class="font-medium text-lg text-gray-800">Document Processing</h3>
<h3 class="font-medium text-lg text-gray-800">{{ _("about.features_processing_heading") }}</h3>
<ul class="list-disc list-inside text-gray-600 ml-2">
<li>Simple and secure file uploads with drag & drop support</li>
<li>OCR powered by Azure Document Intelligence</li>
<li>Automated metadata extraction using a pluggable AI provider</li>
<li>PDF conversion for various file formats via Gotenberg</li>
<li>Intelligent document classification and date extraction</li>
<li>{{ _("about.features_processing_upload") }}</li>
<li>{{ _("about.features_processing_ocr") }}</li>
<li>{{ _("about.features_processing_metadata") }}</li>
<li>{{ _("about.features_processing_pdf") }}</li>
<li>{{ _("about.features_processing_classification") }}</li>
</ul>
</div>
<div>
<h3 class="font-medium text-lg text-gray-800">Integration & Storage</h3>
<h3 class="font-medium text-lg text-gray-800">{{ _("about.features_integration_heading") }}</h3>
<ul class="list-disc list-inside text-gray-600 ml-2">
<li>Multi-destination support (store documents in multiple locations)</li>
<li>Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3</li>
<li>Self-hosted options: Nextcloud, Paperless NGX, WebDAV</li>
<li>Transfer protocols: FTP, SFTP, Email forwarding</li>
<li>{{ _("about.features_integration_multi_dest") }}</li>
<li>{{ _("about.features_integration_cloud") }}</li>
<li>{{ _("about.features_integration_selfhosted") }}</li>
<li>{{ _("about.features_integration_protocols") }}</li>
</ul>
</div>
<div>
<h3 class="font-medium text-lg text-gray-800">Automation</h3>
<h3 class="font-medium text-lg text-gray-800">{{ _("about.features_automation_heading") }}</h3>
<ul class="list-disc list-inside text-gray-600 ml-2">
<li>IMAP inbox polling from multiple sources</li>
<li>Gmail and generic email account integration</li>
<li>Automated document ingestion from various inputs</li>
<li>Background processing with Redis and Celery</li>
<li>{{ _("about.features_automation_imap") }}</li>
<li>{{ _("about.features_automation_gmail") }}</li>
<li>{{ _("about.features_automation_ingestion") }}</li>
<li>{{ _("about.features_automation_background") }}</li>
</ul>
</div>
<div>
<h3 class="font-medium text-lg text-gray-800">Administration</h3>
<h3 class="font-medium text-lg text-gray-800">{{ _("about.features_admin_heading") }}</h3>
<ul class="list-disc list-inside text-gray-600 ml-2">
<li>Powerful REST API for programmatic access</li>
<li>OAuth2 authentication support with Authentik</li>
<li>Highly configurable via environment variables</li>
<li>Docker-ready for easy deployment and scaling</li>
<li>{{ _("about.features_admin_api") }}</li>
<li>{{ _("about.features_admin_oauth2") }}</li>
<li>{{ _("about.features_admin_config") }}</li>
<li>{{ _("about.features_admin_docker") }}</li>
</ul>
</div>
</div>
@@ -71,43 +65,43 @@
<!-- Meet the Creator Section -->
<section class="bg-white shadow rounded p-6 mb-8">
<h2 class="text-2xl font-semibold mb-2">Meet the Creator</h2>
<h2 class="text-2xl font-semibold mb-2">{{ _("about.creator_heading") }}</h2>
<p class="text-gray-600">
DocuElevate is passionately developed by
<a href="https://www.christianlouis.de" target="_blank" class="text-blue-600 hover:underline">Christian Krakau-Louis</a>.
{{ _("about.creator_pre") }}
<a href="https://www.christianlouis.de" target="_blank" class="text-blue-600 hover:underline">{{ _("about.creator_name") }}</a>.
</p>
</section>
<!-- Privacy & Legal Section -->
<section class="bg-white shadow rounded p-6 mb-8">
<h2 class="text-2xl font-semibold mb-2">Privacy & Legal</h2>
<h2 class="text-2xl font-semibold mb-2">{{ _("about.legal_heading") }}</h2>
<p class="text-gray-600 mb-4">
We care about your privacy and data security. Please review our:
{{ _("about.legal_description") }}
</p>
<div class="flex space-x-4">
<a href="/privacy" class="text-blue-600 hover:underline">Privacy Notice</a>
<a href="/license" class="text-blue-600 hover:underline">License Information</a>
<a href="/privacy" class="text-blue-600 hover:underline">{{ _("about.legal_privacy") }}</a>
<a href="/license" class="text-blue-600 hover:underline">{{ _("about.legal_license") }}</a>
</div>
</section>
<!-- Links Section -->
<section class="bg-white shadow rounded p-6">
<h2 class="text-2xl font-semibold mb-2">Get Involved</h2>
<h2 class="text-2xl font-semibold mb-2">{{ _("about.involved_heading") }}</h2>
<p class="text-gray-600 mb-4">
Want to dive into the code, contribute ideas, or learn more about DocuElevate?
{{ _("about.involved_description") }}
</p>
<div class="flex flex-col space-y-3">
<a href="https://github.com/christianlouis/DocuElevate" target="_blank" class="flex items-center space-x-2 text-blue-600 hover:text-blue-800">
<img src="https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png" alt="GitHub Logo" class="h-6 w-6" />
<span>View DocuElevate on GitHub</span>
<img src="https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png" alt="{{ _('about.github_logo_alt') }}" class="h-6 w-6" />
<span>{{ _("about.involved_github") }}</span>
</a>
<a href="https://www.docuelevate.org" target="_blank" class="flex items-center space-x-2 text-blue-600 hover:text-blue-800">
<i class="fas fa-globe h-6 w-6"></i>
<span>Visit DocuElevate Website</span>
<span>{{ _("about.involved_website") }}</span>
</a>
<a href="https://docuelevate.readthedocs.io" target="_blank" class="flex items-center space-x-2 text-blue-600 hover:text-blue-800">
<i class="fas fa-book h-6 w-6"></i>
<span>Read the Documentation</span>
<span>{{ _("about.involved_docs") }}</span>
</a>
</div>
</section>
+31 -33
View File
@@ -1,32 +1,30 @@
{% extends "base.html" %}
{% block title %}API Tokens DocuElevate{% endblock %}
{% block title %}{{ _("api_tokens.page_title") }}{% endblock %}
{% block content %}
<div x-data="apiTokens()" x-init="loadTokens()" class="container mx-auto px-4 py-8 max-w-4xl">
<header class="mb-8">
<h1 class="text-2xl font-bold text-gray-900 dark:text-white flex items-center gap-2">
<i class="fas fa-key text-yellow-500" aria-hidden="true"></i>
API Tokens
{{ _("api_tokens.heading") }}
</h1>
<p class="mt-2 text-gray-600 dark:text-gray-400 text-sm leading-relaxed max-w-2xl">
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.intro") }}
</p>
</header>
<!-- Create token section -->
<section class="bg-white dark:bg-gray-800 shadow rounded-lg p-6 mb-6" aria-labelledby="create-token-heading">
<h2 id="create-token-heading" class="text-lg font-semibold text-gray-900 dark:text-white mb-4">Create New Token</h2>
<h2 id="create-token-heading" class="text-lg font-semibold text-gray-900 dark:text-white mb-4">{{ _("api_tokens.create_heading") }}</h2>
<form @submit.prevent="createToken()" class="flex flex-col sm:flex-row gap-3">
<div class="flex-1">
<label for="token-name" class="sr-only">Token name</label>
<label for="token-name" class="sr-only">{{ _("api_tokens.token_name_label") }}</label>
<input
id="token-name"
type="text"
x-model="newTokenName"
placeholder="e.g. CI Pipeline, Webhook Upload, My Script"
placeholder="{{ _('api_tokens.token_name_placeholder') }}"
required
minlength="1"
maxlength="255"
@@ -44,7 +42,7 @@
style="min-height:40px; min-width:44px;"
>
<i class="fas fa-plus mr-2" aria-hidden="true"></i>
<span x-text="creating ? 'Creating…' : 'Create Token'"></span>
<span x-text="creating ? '{{ _('api_tokens.creating') }}' : '{{ _('api_tokens.create_token') }}'"></span>
</button>
</form>
@@ -54,9 +52,9 @@
<div class="flex items-start gap-3">
<i class="fas fa-check-circle text-green-600 dark:text-green-400 mt-0.5 text-lg" aria-hidden="true"></i>
<div class="flex-1">
<p class="font-semibold text-green-800 dark:text-green-200 text-sm">Token created successfully!</p>
<p class="font-semibold text-green-800 dark:text-green-200 text-sm">{{ _("api_tokens.token_created") }}</p>
<p class="text-green-700 dark:text-green-300 text-xs mt-1">
Copy this token now — it will <strong>not be shown again</strong>.
{{ _("api_tokens.copy_warning_1") }} <strong>{{ _("api_tokens.copy_warning_2") }}</strong>.
</p>
<div class="mt-3 flex items-center gap-2">
<code
@@ -72,10 +70,10 @@
hover:bg-gray-200 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-indigo-500
transition-colors"
style="min-height:40px; min-width:44px;"
:aria-label="copied ? 'Copied!' : 'Copy token to clipboard'"
:aria-label="copied ? '{{ _('common.copied') }}' : '{{ _('api_tokens.copy_to_clipboard') }}'"
>
<i :class="copied ? 'fas fa-check text-green-600' : 'fas fa-copy'" aria-hidden="true"></i>
<span class="ml-1 hidden sm:inline" x-text="copied ? 'Copied!' : 'Copy'"></span>
<span class="ml-1 hidden sm:inline" x-text="copied ? '{{ _('common.copied') }}' : '{{ _('common.copy') }}'"></span>
</button>
</div>
</div>
@@ -88,11 +86,11 @@
<section class="bg-white dark:bg-gray-800 shadow rounded-lg p-6 mb-6" aria-labelledby="usage-heading">
<h2 id="usage-heading" class="text-lg font-semibold text-gray-900 dark:text-white mb-3">
<i class="fas fa-code text-blue-500 mr-2" aria-hidden="true"></i>
Usage Example
{{ _("api_tokens.usage_heading") }}
</h2>
<p class="text-gray-600 dark:text-gray-400 text-sm mb-3">
Use your API token in the <code class="bg-gray-100 dark:bg-gray-700 px-1 rounded text-xs">Authorization</code>
header with any API request:
{{ _("api_tokens.usage_intro_pre") }} <code class="bg-gray-100 dark:bg-gray-700 px-1 rounded text-xs">Authorization</code>
{{ _("api_tokens.usage_intro_post") }}
</p>
<div class="relative">
<pre class="bg-gray-900 text-green-400 rounded-lg p-4 text-sm overflow-x-auto font-mono leading-relaxed"><code>curl -X POST "<span x-text="baseUrl"></span>/api/files/ui-upload" \
@@ -104,7 +102,7 @@
class="absolute top-2 right-2 px-2 py-1 bg-gray-700 text-gray-300 rounded text-xs hover:bg-gray-600
focus:outline-none focus:ring-2 focus:ring-indigo-500 transition-colors"
style="min-height:30px; min-width:30px;"
aria-label="Copy upload example to clipboard"
aria-label="{{ _('api_tokens.copy_upload_example') }}"
>
<i class="fas fa-copy" aria-hidden="true"></i>
</button>
@@ -114,14 +112,14 @@
<!-- Tokens list -->
<section class="bg-white dark:bg-gray-800 shadow rounded-lg overflow-hidden" aria-labelledby="tokens-heading">
<div class="px-6 py-4 border-b border-gray-200 dark:border-gray-700">
<h2 id="tokens-heading" class="text-lg font-semibold text-gray-900 dark:text-white">Your Tokens</h2>
<h2 id="tokens-heading" class="text-lg font-semibold text-gray-900 dark:text-white">{{ _("api_tokens.your_tokens") }}</h2>
</div>
<!-- Loading state -->
<template x-if="loading">
<div class="p-8 text-center text-gray-500 dark:text-gray-400">
<i class="fas fa-spinner fa-spin text-2xl mb-2" aria-hidden="true"></i>
<p class="text-sm">Loading tokens</p>
<p class="text-sm">{{ _("api_tokens.loading_tokens") }}</p>
</div>
</template>
@@ -129,24 +127,24 @@
<template x-if="!loading && tokens.length === 0">
<div class="p-8 text-center text-gray-500 dark:text-gray-400">
<i class="fas fa-key text-4xl mb-3 text-gray-300 dark:text-gray-600" aria-hidden="true"></i>
<p class="font-medium">No API tokens yet</p>
<p class="text-sm mt-1">Create your first token above to get started.</p>
<p class="font-medium">{{ _("api_tokens.no_tokens_heading") }}</p>
<p class="text-sm mt-1">{{ _("api_tokens.no_tokens_help") }}</p>
</div>
</template>
<!-- Tokens table -->
<template x-if="!loading && tokens.length > 0">
<div class="overflow-x-auto">
<table class="w-full text-sm" aria-label="API Tokens">
<table class="w-full text-sm" aria-label="{{ _('api_tokens.table_aria') }}">
<thead>
<tr class="bg-gray-50 dark:bg-gray-750 text-left">
<th scope="col" class="px-6 py-3 font-medium text-gray-500 dark:text-gray-400 uppercase text-xs tracking-wider">Name</th>
<th scope="col" class="px-6 py-3 font-medium text-gray-500 dark:text-gray-400 uppercase text-xs tracking-wider">Token Prefix</th>
<th scope="col" class="px-6 py-3 font-medium text-gray-500 dark:text-gray-400 uppercase text-xs tracking-wider">Created</th>
<th scope="col" class="px-6 py-3 font-medium text-gray-500 dark:text-gray-400 uppercase text-xs tracking-wider">Last Used</th>
<th scope="col" class="px-6 py-3 font-medium text-gray-500 dark:text-gray-400 uppercase text-xs tracking-wider">Last IP</th>
<th scope="col" class="px-6 py-3 font-medium text-gray-500 dark:text-gray-400 uppercase text-xs tracking-wider">Status</th>
<th scope="col" class="px-6 py-3 font-medium text-gray-500 dark:text-gray-400 uppercase text-xs tracking-wider sr-only">Actions</th>
<th scope="col" class="px-6 py-3 font-medium text-gray-500 dark:text-gray-400 uppercase text-xs tracking-wider">{{ _("api_tokens.col_name") }}</th>
<th scope="col" class="px-6 py-3 font-medium text-gray-500 dark:text-gray-400 uppercase text-xs tracking-wider">{{ _("api_tokens.col_prefix") }}</th>
<th scope="col" class="px-6 py-3 font-medium text-gray-500 dark:text-gray-400 uppercase text-xs tracking-wider">{{ _("api_tokens.col_created") }}</th>
<th scope="col" class="px-6 py-3 font-medium text-gray-500 dark:text-gray-400 uppercase text-xs tracking-wider">{{ _("api_tokens.col_last_used") }}</th>
<th scope="col" class="px-6 py-3 font-medium text-gray-500 dark:text-gray-400 uppercase text-xs tracking-wider">{{ _("api_tokens.col_last_ip") }}</th>
<th scope="col" class="px-6 py-3 font-medium text-gray-500 dark:text-gray-400 uppercase text-xs tracking-wider">{{ _("common.status") }}</th>
<th scope="col" class="px-6 py-3 font-medium text-gray-500 dark:text-gray-400 uppercase text-xs tracking-wider sr-only">{{ _("common.actions") }}</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200 dark:divide-gray-700">
@@ -159,7 +157,7 @@
<code class="bg-gray-100 dark:bg-gray-700 px-2 py-1 rounded text-xs font-mono" x-text="token.token_prefix + '…'"></code>
</td>
<td class="px-6 py-4 whitespace-nowrap text-gray-500 dark:text-gray-400" x-text="formatDate(token.created_at)"></td>
<td class="px-6 py-4 whitespace-nowrap text-gray-500 dark:text-gray-400" x-text="token.last_used_at ? formatDate(token.last_used_at) : 'Never'"></td>
<td class="px-6 py-4 whitespace-nowrap text-gray-500 dark:text-gray-400" x-text="token.last_used_at ? formatDate(token.last_used_at) : '{{ _('api_tokens.never') }}'"></td>
<td class="px-6 py-4 whitespace-nowrap text-gray-500 dark:text-gray-400">
<code x-show="token.last_used_ip" class="bg-gray-100 dark:bg-gray-700 px-2 py-0.5 rounded text-xs font-mono" x-text="token.last_used_ip"></code>
<span x-show="!token.last_used_ip" class="text-gray-400"></span>
@@ -168,7 +166,7 @@
<span
class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium"
:class="token.is_active ? 'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-400' : 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-400'"
x-text="token.is_active ? 'Active' : 'Revoked'"
x-text="token.is_active ? '{{ _('api_tokens.status_active') }}' : '{{ _('api_tokens.status_revoked') }}'"
></span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-right">
@@ -181,10 +179,10 @@
dark:text-red-400 dark:hover:text-red-300 hover:bg-red-50 dark:hover:bg-red-900/20 rounded-md
focus:outline-none focus:ring-2 focus:ring-red-500 disabled:opacity-50 transition-colors"
style="min-height:36px; min-width:44px;"
:aria-label="'Revoke token ' + token.name"
:aria-label="'{{ _('api_tokens.revoke_prefix') }} ' + token.name"
>
<i :class="revoking === token.id ? 'fas fa-spinner fa-spin' : 'fas fa-trash-alt'" class="mr-1" aria-hidden="true"></i>
Revoke
{{ _("api_tokens.revoke") }}
</button>
</td>
</tr>
+37 -37
View File
@@ -1,6 +1,6 @@
{% extends "base.html" %}
{% block title %}Audit Logs - DocuElevate{% endblock %}
{% block title %}{{ _("audit.page_title") }}{% endblock %}
{% block content %}
<div x-data="auditLogs()" x-init="fetchLogs()" class="container mx-auto px-4 py-8 max-w-7xl">
@@ -9,69 +9,69 @@
<div class="flex flex-col md:flex-row md:items-center md:justify-between mb-6">
<div>
<h1 class="text-2xl font-bold text-gray-900 dark:text-white">
<i class="fas fa-shield-halved mr-2 text-indigo-600" aria-hidden="true"></i>Audit Logs
<i class="fas fa-shield-halved mr-2 text-indigo-600" aria-hidden="true"></i>{{ _("audit.title") }}
</h1>
<p class="text-sm text-gray-500 dark:text-gray-400 mt-1">
Comprehensive, append-only record of all significant actions.
{{ _("audit.subtitle") }}
</p>
</div>
<div class="mt-3 md:mt-0 flex items-center gap-3">
{% if siem_enabled %}
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800 dark:bg-green-800 dark:text-green-100"
title="Events are being forwarded to {{ siem_transport|upper }}">
title="{{ _('audit.siem_enabled_title') ~ (siem_transport|upper) }}">
<i class="fas fa-tower-broadcast mr-1" aria-hidden="true"></i>SIEM: {{ siem_transport|upper }}
</span>
{% else %}
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-300"
title="SIEM forwarding is disabled">
<i class="fas fa-tower-broadcast mr-1" aria-hidden="true"></i>SIEM: Off
title="{{ _('audit.siem_disabled_title') }}">
<i class="fas fa-tower-broadcast mr-1" aria-hidden="true"></i>{{ _("audit.siem_off") }}
</span>
{% endif %}
<button @click="fetchLogs()" class="inline-flex items-center px-3 py-1.5 border border-gray-300 rounded-md text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 dark:bg-gray-700 dark:text-gray-200 dark:border-gray-600 dark:hover:bg-gray-600 min-h-[44px] min-w-[44px]"
aria-label="Refresh audit logs">
<i class="fas fa-arrows-rotate mr-1" aria-hidden="true"></i>Refresh
aria-label="{{ _('audit.refresh_label') }}">
<i class="fas fa-arrows-rotate mr-1" aria-hidden="true"></i>{{ _("common.refresh") }}
</button>
</div>
</div>
<!-- Filters -->
<section class="bg-white dark:bg-gray-800 shadow rounded-lg p-4 mb-6" aria-label="Audit log filters">
<section class="bg-white dark:bg-gray-800 shadow rounded-lg p-4 mb-6" aria-label="{{ _('audit.filters_section_label') }}">
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4">
<div>
<label for="filter-action" class="block text-xs font-medium text-gray-500 dark:text-gray-400 mb-1">Action</label>
<label for="filter-action" class="block text-xs font-medium text-gray-500 dark:text-gray-400 mb-1">{{ _("audit.filter_action") }}</label>
<select id="filter-action" x-model="filters.action" @change="fetchLogs()"
class="w-full rounded-md border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-white text-sm">
<option value="">All actions</option>
<option value="">{{ _("audit.filter_all_actions") }}</option>
<template x-for="a in distinctActions" :key="a">
<option :value="a" x-text="a"></option>
</template>
</select>
</div>
<div>
<label for="filter-user" class="block text-xs font-medium text-gray-500 dark:text-gray-400 mb-1">User</label>
<label for="filter-user" class="block text-xs font-medium text-gray-500 dark:text-gray-400 mb-1">{{ _("audit.filter_user") }}</label>
<select id="filter-user" x-model="filters.user" @change="fetchLogs()"
class="w-full rounded-md border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-white text-sm">
<option value="">All users</option>
<option value="">{{ _("audit.filter_all_users") }}</option>
<template x-for="u in distinctUsers" :key="u">
<option :value="u" x-text="u"></option>
</template>
</select>
</div>
<div>
<label for="filter-severity" class="block text-xs font-medium text-gray-500 dark:text-gray-400 mb-1">Severity</label>
<label for="filter-severity" class="block text-xs font-medium text-gray-500 dark:text-gray-400 mb-1">{{ _("audit.filter_severity") }}</label>
<select id="filter-severity" x-model="filters.severity" @change="fetchLogs()"
class="w-full rounded-md border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-white text-sm">
<option value="">All</option>
<option value="info">Info</option>
<option value="warning">Warning</option>
<option value="error">Error</option>
<option value="critical">Critical</option>
<option value="">{{ _("common.all") }}</option>
<option value="info">{{ _("common.info") }}</option>
<option value="warning">{{ _("common.warning") }}</option>
<option value="error">{{ _("common.error") }}</option>
<option value="critical">{{ _("audit.critical") }}</option>
</select>
</div>
<div>
<label for="filter-resource" class="block text-xs font-medium text-gray-500 dark:text-gray-400 mb-1">Resource Type</label>
<label for="filter-resource" class="block text-xs font-medium text-gray-500 dark:text-gray-400 mb-1">{{ _("audit.filter_resource_type") }}</label>
<input id="filter-resource" type="text" x-model.debounce.300ms="filters.resource_type" @input="fetchLogs()"
placeholder="e.g. document, user"
placeholder="{{ _('audit.filter_resource_placeholder') }}"
class="w-full rounded-md border-gray-300 dark:border-gray-600 dark:bg-gray-700 dark:text-white text-sm min-h-[44px]">
</div>
</div>
@@ -80,22 +80,22 @@
<!-- Results summary -->
<div class="flex items-center justify-between mb-3 text-sm text-gray-500 dark:text-gray-400" aria-live="polite">
<span x-show="!loading" x-text="total + ' event' + (total !== 1 ? 's' : '') + ' found'"></span>
<span x-show="loading"><i class="fas fa-spinner fa-spin mr-1" aria-hidden="true"></i>Loading</span>
<span x-show="loading"><i class="fas fa-spinner fa-spin mr-1" aria-hidden="true"></i>{{ _("common.loading") }}</span>
</div>
<!-- Table -->
<div class="bg-white dark:bg-gray-800 shadow rounded-lg overflow-hidden">
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200 dark:divide-gray-700" aria-label="Audit log events">
<table class="min-w-full divide-y divide-gray-200 dark:divide-gray-700" aria-label="{{ _('audit.table_label') }}">
<thead class="bg-gray-50 dark:bg-gray-700">
<tr>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">Timestamp</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">Severity</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">User</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">Action</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">Resource</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">IP</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">Details</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">{{ _("audit.col_timestamp") }}</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">{{ _("audit.filter_severity") }}</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">{{ _("audit.filter_user") }}</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">{{ _("audit.filter_action") }}</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">{{ _("audit.col_resource") }}</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">{{ _("audit.col_ip") }}</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-300 uppercase tracking-wider">{{ _("common.details") }}</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200 dark:divide-gray-700">
@@ -118,8 +118,8 @@
<tr x-show="!loading && entries.length === 0">
<td colspan="7" class="px-4 py-8 text-center text-gray-400 dark:text-gray-500">
<i class="fas fa-inbox text-3xl mb-2" aria-hidden="true"></i>
<p class="text-lg">No audit events recorded yet.</p>
<p class="text-sm mt-1">Significant actions (logins, document operations, settings changes) will appear here.</p>
<p class="text-lg">{{ _("audit.no_events") }}</p>
<p class="text-sm mt-1">{{ _("audit.no_events_hint") }}</p>
</td>
</tr>
</tbody>
@@ -128,17 +128,17 @@
</div>
<!-- Pagination -->
<nav class="flex items-center justify-between mt-4" aria-label="Audit log pagination" x-show="total > filters.limit">
<nav class="flex items-center justify-between mt-4" aria-label="{{ _('audit.pagination_label') }}" x-show="total > filters.limit">
<button @click="prevPage()" :disabled="filters.offset === 0"
class="px-3 py-1.5 rounded-md text-sm border border-gray-300 dark:border-gray-600 disabled:opacity-50 min-h-[44px] min-w-[44px]"
aria-label="Previous page">
<i class="fas fa-chevron-left mr-1" aria-hidden="true"></i>Prev
aria-label="{{ _('audit.prev_label') }}">
<i class="fas fa-chevron-left mr-1" aria-hidden="true"></i>{{ _("audit.prev") }}
</button>
<span class="text-sm text-gray-500 dark:text-gray-400" x-text="'Page ' + currentPage + ' of ' + totalPages"></span>
<button @click="nextPage()" :disabled="filters.offset + filters.limit >= total"
class="px-3 py-1.5 rounded-md text-sm border border-gray-300 dark:border-gray-600 disabled:opacity-50 min-h-[44px] min-w-[44px]"
aria-label="Next page">
Next<i class="fas fa-chevron-right ml-1" aria-hidden="true"></i>
aria-label="{{ _('audit.next_label') }}">
{{ _("audit.next") }}<i class="fas fa-chevron-right ml-1" aria-hidden="true"></i>
</button>
</nav>
+56 -57
View File
@@ -1,5 +1,5 @@
{% extends "base.html" %}
{% block title %}Backup Management{% endblock %}
{% block title %}{{ _("backup.page_title") }}{% endblock %}
{% block content %}
<div class="container mx-auto px-4 py-8" x-data="backupDashboard()">
@@ -9,10 +9,10 @@
<div>
<h1 class="text-3xl font-bold text-gray-900">
<i class="fas fa-database mr-2 text-blue-600" aria-hidden="true"></i>
Backup Management
{{ _("backup.heading") }}
</h1>
<p class="mt-1 text-sm text-gray-500">
Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).
{{ _("backup.subtitle") }}
</p>
</div>
<div class="flex gap-2 flex-wrap">
@@ -21,26 +21,26 @@
:disabled="triggering"
type="button"
class="inline-flex items-center px-3 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 disabled:opacity-50 min-h-[44px]">
<i class="fas fa-clock mr-1 text-blue-500" aria-hidden="true"></i> Backup Now (Hourly)
<i class="fas fa-clock mr-1 text-blue-500" aria-hidden="true"></i> {{ _("backup.trigger_hourly") }}
</button>
<button @click="triggerBackup('daily')"
:disabled="triggering"
type="button"
class="inline-flex items-center px-3 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 disabled:opacity-50 min-h-[44px]">
<i class="fas fa-calendar-day mr-1 text-green-500" aria-hidden="true"></i> Backup Now (Daily)
<i class="fas fa-calendar-day mr-1 text-green-500" aria-hidden="true"></i> {{ _("backup.trigger_daily") }}
</button>
<button @click="triggerBackup('weekly')"
:disabled="triggering"
type="button"
class="inline-flex items-center px-3 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 disabled:opacity-50 min-h-[44px]">
<i class="fas fa-calendar-week mr-1 text-purple-500" aria-hidden="true"></i> Backup Now (Weekly)
<i class="fas fa-calendar-week mr-1 text-purple-500" aria-hidden="true"></i> {{ _("backup.trigger_weekly") }}
</button>
<button @click="runCleanup()"
:disabled="triggering"
type="button"
class="inline-flex items-center px-3 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 disabled:opacity-50 min-h-[44px]"
title="Run retention cleanup now">
<i class="fas fa-broom mr-1 text-orange-400" aria-hidden="true"></i> Clean Up
title="{{ _('backup.cleanup_title') }}">
<i class="fas fa-broom mr-1 text-orange-400" aria-hidden="true"></i> {{ _("backup.clean_up") }}
</button>
</div>
</div>
@@ -60,18 +60,18 @@
role="dialog" aria-modal="true" :aria-labelledby="'confirmTitle'">
<div class="bg-white rounded-lg shadow-xl max-w-sm w-full p-6"
@keydown.escape.window="confirmOpen = false">
<h2 id="confirmTitle" class="text-lg font-semibold text-gray-900 mb-2">Confirm action</h2>
<h2 id="confirmTitle" class="text-lg font-semibold text-gray-900 mb-2">{{ _("backup.confirm_title") }}</h2>
<p class="text-sm text-gray-600 mb-4" x-text="confirmMsg"></p>
<div class="flex justify-end gap-3">
<button @click="confirmOpen = false; confirmResolve(false)"
type="button"
class="px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 min-h-[44px]">
Cancel
{{ _("common.cancel") }}
</button>
<button @click="confirmOpen = false; confirmResolve(true)"
type="button"
class="px-4 py-2 text-sm font-medium text-white bg-red-600 border border-transparent rounded-md hover:bg-red-700 min-h-[44px]">
Confirm
{{ _("backup.confirm_btn") }}
</button>
</div>
</div>
@@ -81,36 +81,36 @@
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-8">
<!-- Backup enabled -->
<div class="bg-white shadow rounded-lg p-4">
<p class="text-xs text-gray-500 uppercase tracking-wider">Auto-backup</p>
<p class="text-xs text-gray-500 uppercase tracking-wider">{{ _("backup.config_auto_backup") }}</p>
<p class="mt-1 text-lg font-semibold {% if backup_enabled %}text-green-600{% else %}text-red-600{% endif %}">
{% if backup_enabled %}<i class="fas fa-check-circle mr-1" aria-hidden="true"></i> Enabled
{% else %}<i class="fas fa-times-circle mr-1" aria-hidden="true"></i> Disabled{% endif %}
{% if backup_enabled %}<i class="fas fa-check-circle mr-1" aria-hidden="true"></i> {{ _("common.enabled") }}
{% else %}<i class="fas fa-times-circle mr-1" aria-hidden="true"></i> {{ _("common.disabled") }}{% endif %}
</p>
</div>
<!-- Remote destination -->
<div class="bg-white shadow rounded-lg p-4">
<p class="text-xs text-gray-500 uppercase tracking-wider">Remote destination</p>
<p class="text-xs text-gray-500 uppercase tracking-wider">{{ _("backup.config_remote_dest") }}</p>
<p class="mt-1 text-lg font-semibold text-gray-800">
{% if backup_remote_destination %}
<i class="fas fa-cloud-upload-alt mr-1 text-blue-500" aria-hidden="true"></i>
{{ backup_remote_destination }}
{% else %}
<span class="text-gray-400"><i class="fas fa-hdd mr-1" aria-hidden="true"></i> Local only</span>
<span class="text-gray-400"><i class="fas fa-hdd mr-1" aria-hidden="true"></i> {{ _("backup.local_only") }}</span>
{% endif %}
</p>
</div>
<!-- Retention hourly -->
<div class="bg-white shadow rounded-lg p-4">
<p class="text-xs text-gray-500 uppercase tracking-wider">Retention</p>
<p class="text-xs text-gray-500 uppercase tracking-wider">{{ _("backup.config_retention") }}</p>
<p class="mt-1 text-sm text-gray-700">
<span class="font-semibold">{{ backup_retain_hourly }}</span> hourly &middot;
<span class="font-semibold">{{ backup_retain_daily }}</span> daily &middot;
<span class="font-semibold">{{ backup_retain_weekly }}</span> weekly
<span class="font-semibold">{{ backup_retain_hourly }}</span> {{ _("backup.type_hourly") }} &middot;
<span class="font-semibold">{{ backup_retain_daily }}</span> {{ _("backup.type_daily") }} &middot;
<span class="font-semibold">{{ backup_retain_weekly }}</span> {{ _("backup.type_weekly") }}
</p>
</div>
<!-- Total backup size -->
<div class="bg-white shadow rounded-lg p-4">
<p class="text-xs text-gray-500 uppercase tracking-wider">Total local size</p>
<p class="text-xs text-gray-500 uppercase tracking-wider">{{ _("backup.config_total_size") }}</p>
<p class="mt-1 text-lg font-semibold text-gray-800" id="totalSize">
{{ (total_size / 1048576) | round(2) }} MB
</p>
@@ -120,17 +120,17 @@
<!-- Upload restore section -->
<div class="bg-white shadow rounded-lg p-6 mb-8">
<h2 class="text-lg font-semibold text-gray-900 mb-1">
<i class="fas fa-upload mr-2 text-yellow-500" aria-hidden="true"></i>Restore from File
<i class="fas fa-upload mr-2 text-yellow-500" aria-hidden="true"></i>{{ _("backup.restore_heading") }}
</h2>
<p class="text-sm text-gray-500 mb-4">
Upload a <code>.db.gz</code> backup archive to restore the database.
<strong class="text-red-600">This will overwrite all current data.</strong>
{{ _("backup.restore_desc_pre") }} <code>.db.gz</code> {{ _("backup.restore_desc_mid") }}
<strong class="text-red-600">{{ _("backup.restore_desc_warning") }}</strong>
</p>
<form id="restoreForm" @submit.prevent="submitRestore" enctype="multipart/form-data">
<input type="hidden" name="csrf_token" value="{{ csrf_token }}">
<div class="flex flex-col sm:flex-row gap-3 items-start sm:items-end">
<div>
<label for="restoreFile" class="block text-sm font-medium text-gray-700 mb-1">Backup archive (.db.gz)</label>
<label for="restoreFile" class="block text-sm font-medium text-gray-700 mb-1">{{ _("backup.restore_file_label") }}</label>
<input type="file" id="restoreFile" name="file" accept=".gz"
required
class="block w-full text-sm text-gray-700 file:mr-4 file:py-2 file:px-4 file:rounded-md file:border-0 file:text-sm file:font-medium file:bg-blue-50 file:text-blue-700 hover:file:bg-blue-100">
@@ -139,7 +139,7 @@
:disabled="restoring"
class="inline-flex items-center px-4 py-2 bg-yellow-500 hover:bg-yellow-600 text-white text-sm font-medium rounded-md disabled:opacity-50 min-h-[44px]">
<i class="fas fa-undo mr-2" aria-hidden="true"></i>
<span x-text="restoring ? 'Restoring…' : 'Restore'"></span>
<span x-text="restoring ? '{{ _('backup.restoring') }}' : '{{ _('backup.restore_btn') }}'"></span>
</button>
</div>
</form>
@@ -149,30 +149,30 @@
<div class="bg-white shadow rounded-lg overflow-hidden">
<div class="px-6 py-4 border-b border-gray-200 flex items-center justify-between">
<h2 class="text-lg font-semibold text-gray-900">
<i class="fas fa-list mr-2 text-gray-500" aria-hidden="true"></i>Backup Archives
<span class="ml-2 text-sm font-normal text-gray-400">({{ records | length }} records)</span>
<i class="fas fa-list mr-2 text-gray-500" aria-hidden="true"></i>{{ _("backup.archives_heading") }}
<span class="ml-2 text-sm font-normal text-gray-400">({{ records | length }} {{ _("backup.records_label") }})</span>
</h2>
<!-- Tier filter -->
<div class="flex gap-2 text-sm">
<button @click="filterType = ''" :class="filterType === '' ? 'bg-gray-200 font-semibold' : 'hover:bg-gray-100'" class="px-2 py-1 rounded">All</button>
<button @click="filterType = 'hourly'" :class="filterType === 'hourly' ? 'bg-blue-200 font-semibold' : 'hover:bg-gray-100'" class="px-2 py-1 rounded">Hourly</button>
<button @click="filterType = 'daily'" :class="filterType === 'daily' ? 'bg-green-200 font-semibold' : 'hover:bg-gray-100'" class="px-2 py-1 rounded">Daily</button>
<button @click="filterType = 'weekly'" :class="filterType === 'weekly' ? 'bg-purple-200 font-semibold' : 'hover:bg-gray-100'" class="px-2 py-1 rounded">Weekly</button>
<button @click="filterType = ''" :class="filterType === '' ? 'bg-gray-200 font-semibold' : 'hover:bg-gray-100'" class="px-2 py-1 rounded">{{ _("common.all") }}</button>
<button @click="filterType = 'hourly'" :class="filterType === 'hourly' ? 'bg-blue-200 font-semibold' : 'hover:bg-gray-100'" class="px-2 py-1 rounded">{{ _("backup.type_hourly") }}</button>
<button @click="filterType = 'daily'" :class="filterType === 'daily' ? 'bg-green-200 font-semibold' : 'hover:bg-gray-100'" class="px-2 py-1 rounded">{{ _("backup.type_daily") }}</button>
<button @click="filterType = 'weekly'" :class="filterType === 'weekly' ? 'bg-purple-200 font-semibold' : 'hover:bg-gray-100'" class="px-2 py-1 rounded">{{ _("backup.type_weekly") }}</button>
</div>
</div>
{% if records %}
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200" aria-label="Backup archives">
<table class="min-w-full divide-y divide-gray-200" aria-label="{{ _('backup.table_aria') }}">
<thead class="bg-gray-50">
<tr>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Filename</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Type</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Created</th>
<th scope="col" class="px-4 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider">Size</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Status</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Storage</th>
<th scope="col" class="px-4 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider">Actions</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">{{ _("backup.col_filename") }}</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">{{ _("backup.col_type") }}</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">{{ _("backup.col_created") }}</th>
<th scope="col" class="px-4 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider">{{ _("backup.col_size") }}</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">{{ _("common.status") }}</th>
<th scope="col" class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">{{ _("backup.col_storage") }}</th>
<th scope="col" class="px-4 py-3 text-right text-xs font-medium text-gray-500 uppercase tracking-wider">{{ _("common.actions") }}</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
@@ -186,15 +186,15 @@
<td class="px-4 py-3 text-sm">
{% if r.backup_type == 'hourly' %}
<span class="inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-blue-100 text-blue-800">
<i class="fas fa-clock mr-1" aria-hidden="true"></i> hourly
<i class="fas fa-clock mr-1" aria-hidden="true"></i> {{ _("backup.type_hourly") }}
</span>
{% elif r.backup_type == 'daily' %}
<span class="inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-green-100 text-green-800">
<i class="fas fa-calendar-day mr-1" aria-hidden="true"></i> daily
<i class="fas fa-calendar-day mr-1" aria-hidden="true"></i> {{ _("backup.type_daily") }}
</span>
{% else %}
<span class="inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-purple-100 text-purple-800">
<i class="fas fa-calendar-week mr-1" aria-hidden="true"></i> weekly
<i class="fas fa-calendar-week mr-1" aria-hidden="true"></i> {{ _("backup.type_weekly") }}
</span>
{% endif %}
</td>
@@ -209,7 +209,7 @@
<td class="px-4 py-3 text-sm">
{% if r.status == 'ok' %}
<span class="inline-flex items-center text-green-700">
<i class="fas fa-check-circle mr-1" aria-hidden="true"></i> ok
<i class="fas fa-check-circle mr-1" aria-hidden="true"></i> {{ _("backup.status_ok") }}
</span>
{% else %}
<span class="inline-flex items-center text-red-600">
@@ -220,7 +220,7 @@
<td class="px-4 py-3 text-sm text-gray-600">
{% if r.local_path %}
<span class="inline-flex items-center" title="{{ r.local_path }}">
<i class="fas fa-hdd mr-1 text-gray-400" aria-hidden="true"></i> local
<i class="fas fa-hdd mr-1 text-gray-400" aria-hidden="true"></i> {{ _("backup.storage_local") }}
</span>
{% endif %}
{% if r.remote_destination %}
@@ -236,15 +236,15 @@
{% if r.local_path %}
<a href="/api/admin/backup/{{ r.id }}/download"
class="inline-flex items-center px-2 py-1 text-xs border border-gray-300 rounded hover:bg-gray-50 text-gray-700 min-h-[32px]"
aria-label="Download backup {{ r.filename }}">
<i class="fas fa-download mr-1" aria-hidden="true"></i> Download
aria-label="{{ _('common.download') }} {{ r.filename }}">
<i class="fas fa-download mr-1" aria-hidden="true"></i> {{ _("common.download") }}
</a>
{% endif %}
<button @click="deleteBackup({{ r.id }}, '{{ r.filename }}')"
type="button"
class="inline-flex items-center px-2 py-1 text-xs border border-red-300 rounded hover:bg-red-50 text-red-600 ml-1 min-h-[32px]"
aria-label="Delete backup {{ r.filename }}">
<i class="fas fa-trash-alt mr-1" aria-hidden="true"></i> Delete
aria-label="{{ _('common.delete') }} {{ r.filename }}">
<i class="fas fa-trash-alt mr-1" aria-hidden="true"></i> {{ _("common.delete") }}
</button>
</td>
</tr>
@@ -255,8 +255,8 @@
{% else %}
<div class="px-6 py-12 text-center text-gray-400">
<i class="fas fa-database text-4xl mb-3" aria-hidden="true"></i>
<p class="text-lg font-medium">No backups yet.</p>
<p class="text-sm">Click <em>Backup Now</em> to create your first backup.</p>
<p class="text-lg font-medium">{{ _("backup.no_backups") }}</p>
<p class="text-sm">{{ _("backup.no_backups_hint_pre") }}<em>{{ _("backup.backup_now") }}</em>{{ _("backup.no_backups_hint_post") }}</p>
</div>
{% endif %}
</div>
@@ -264,16 +264,15 @@
<!-- Retention explanation -->
<div class="mt-8 bg-gray-50 border border-gray-200 rounded-lg p-5">
<h3 class="text-sm font-semibold text-gray-700 mb-2">
<i class="fas fa-info-circle mr-1 text-blue-400" aria-hidden="true"></i> Retention policy
<i class="fas fa-info-circle mr-1 text-blue-400" aria-hidden="true"></i> {{ _("backup.retention_heading") }}
</h3>
<ul class="text-sm text-gray-600 space-y-1 list-disc list-inside">
<li><strong>Hourly</strong> kept for 4 days ({{ backup_retain_hourly }} snapshots)</li>
<li><strong>Daily</strong> kept for 3 weeks ({{ backup_retain_daily }} snapshots)</li>
<li><strong>Weekly</strong> kept for ~3 months ({{ backup_retain_weekly }} snapshots)</li>
<li><strong>{{ _("backup.type_hourly") }}</strong> {{ _("backup.retention_hourly_detail") }} ({{ backup_retain_hourly }} {{ _("backup.snapshots") }})</li>
<li><strong>{{ _("backup.type_daily") }}</strong> {{ _("backup.retention_daily_detail") }} ({{ backup_retain_daily }} {{ _("backup.snapshots") }})</li>
<li><strong>{{ _("backup.type_weekly") }}</strong> {{ _("backup.retention_weekly_detail") }} ({{ backup_retain_weekly }} {{ _("backup.snapshots") }})</li>
</ul>
<p class="text-xs text-gray-400 mt-2">
Backups beyond these limits are automatically pruned after each new backup is created.
Use the <em>Clean Up</em> button to apply retention manually.
{{ _("backup.retention_note_pre") }}<em>{{ _("backup.clean_up") }}</em>{{ _("backup.retention_note_post") }}
</p>
</div>
+6 -6
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DocuElevate - Subscription Activated</title>
<title>{{ _("billing.success_page_title") }}</title>
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA=="
@@ -12,7 +12,7 @@
<body class="bg-gray-100 min-h-screen flex items-center justify-center py-8">
<main class="bg-white rounded-lg shadow-lg p-8 max-w-md w-full text-center" role="main">
<div class="flex justify-center mb-6">
<img src="/static/images/logo_writing.svg" alt="DocuElevate Logo" class="h-16">
<img src="/static/images/logo_writing.svg" alt="{{ _('auth.logo_alt') }}" class="h-16">
</div>
<div class="flex justify-center mb-4">
@@ -21,9 +21,9 @@
</div>
</div>
<h1 class="text-2xl font-bold text-gray-800 mb-2">You're all set!</h1>
<h1 class="text-2xl font-bold text-gray-800 mb-2">{{ _("billing.success_heading") }}</h1>
<p class="text-gray-600 mb-8">
Your subscription has been activated. Thank you for choosing DocuElevate!
{{ _("billing.success_message") }}
</p>
<div class="space-y-3">
@@ -31,13 +31,13 @@
class="block w-full py-3 px-4 rounded-lg border-2 border-indigo-600 text-indigo-600 font-semibold hover:bg-indigo-50 transition focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500"
style="min-height:44px;display:flex;align-items:center;justify-content:center;"
>
<i class="fas fa-credit-card mr-2" aria-hidden="true"></i>Manage subscription
<i class="fas fa-credit-card mr-2" aria-hidden="true"></i>{{ _("billing.manage_subscription") }}
</a>
<a href="/upload"
class="block w-full py-3 px-4 rounded-lg bg-indigo-600 text-white font-semibold hover:bg-indigo-700 transition focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500"
style="min-height:44px;display:flex;align-items:center;justify-content:center;"
>
<i class="fas fa-arrow-right mr-2" aria-hidden="true"></i>Go to dashboard
<i class="fas fa-arrow-right mr-2" aria-hidden="true"></i>{{ _("billing.go_to_dashboard") }}
</a>
</div>
</main>
+28 -29
View File
@@ -1,5 +1,5 @@
{% extends "base.html" %}
{% block title %}Credential Audit - DocuElevate{% endblock %}
{% block title %}{{ _("credentials.page_title") }}{% endblock %}
{% block content %}
<div class="container mx-auto px-4 py-8">
@@ -8,11 +8,10 @@
<div class="mb-8">
<div class="flex items-center gap-3 mb-2">
<i class="fas fa-key text-yellow-500 text-2xl" aria-hidden="true"></i>
<h1 class="text-3xl font-bold">Credential Audit</h1>
<h1 class="text-3xl font-bold">{{ _("credentials.title") }}</h1>
</div>
<p class="text-gray-600">
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.subtitle") }}
</p>
</div>
@@ -24,7 +23,7 @@
</span>
<div>
<div class="text-2xl font-bold text-gray-800">{{ total }}</div>
<div class="text-sm text-gray-500">Total Credentials</div>
<div class="text-sm text-gray-500">{{ _("credentials.total_credentials") }}</div>
</div>
</div>
<div class="bg-white rounded-lg shadow p-5 flex items-center gap-4">
@@ -33,7 +32,7 @@
</span>
<div>
<div class="text-2xl font-bold text-green-700">{{ configured_count }}</div>
<div class="text-sm text-gray-500">Configured</div>
<div class="text-sm text-gray-500">{{ _("credentials.configured") }}</div>
</div>
</div>
<div class="bg-white rounded-lg shadow p-5 flex items-center gap-4">
@@ -42,32 +41,32 @@
</span>
<div>
<div class="text-2xl font-bold text-gray-600">{{ unconfigured_count }}</div>
<div class="text-sm text-gray-500">Not Configured</div>
<div class="text-sm text-gray-500">{{ _("credentials.not_configured") }}</div>
</div>
</div>
</div>
<!-- Legend -->
<div class="bg-blue-50 border-l-4 border-blue-500 text-blue-800 p-4 mb-6 rounded-r-md">
<p class="font-semibold mb-2"><i class="fas fa-circle-info mr-1" aria-hidden="true"></i> Legend</p>
<p class="font-semibold mb-2"><i class="fas fa-circle-info mr-1" aria-hidden="true"></i> {{ _("credentials.legend_title") }}</p>
<div class="flex flex-wrap gap-4 text-sm">
<span>
<span class="inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-green-100 text-green-800 mr-1">DB</span>
Value stored in the database (encrypted at rest; overrides environment variable)
{{ _("credentials.legend_db") }}
</span>
<span>
<span class="inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-blue-100 text-blue-800 mr-1">ENV</span>
Value from environment variable or <code>.env</code> file
{{ _("credentials.legend_env_before") }}<code>.env</code>{{ _("credentials.legend_env_after") }}
</span>
<span>
<span class="inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-red-100 text-red-700 mr-1">
<i class="fas fa-circle-exclamation mr-0.5 text-xs"></i> Missing
<i class="fas fa-circle-exclamation mr-0.5 text-xs"></i> {{ _("credentials.status_missing") }}
</span>
Credential not set — integration will not work
{{ _("credentials.legend_missing") }}
</span>
<span>
<span class="text-orange-500 mr-1"><i class="fas fa-rotate"></i></span>
Restart required when this credential is rotated
{{ _("credentials.legend_restart") }}
</span>
</div>
</div>
@@ -79,29 +78,29 @@
<div class="bg-gray-100 px-6 py-3 border-b border-gray-200 flex items-center justify-between">
<h2 class="text-lg font-semibold text-gray-800">{{ category }}</h2>
<span class="text-sm text-gray-500">
{{ creds | selectattr('configured') | list | length }} / {{ creds | length }} configured
{{ creds | selectattr('configured') | list | length }} / {{ creds | length }} {{ _("credentials.configured") }}
</span>
</div>
<!-- Credentials Table -->
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200" aria-label="Credentials for {{ category }}">
<table class="min-w-full divide-y divide-gray-200" aria-label="{{ _('credentials.table_for') ~ ' ' ~ category }}">
<thead class="bg-gray-50">
<tr>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider w-56">
Credential
{{ _("credentials.col_credential") }}
</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
Description
{{ _("common.description") }}
</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider w-32">
Status
{{ _("common.status") }}
</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider w-24">
Source
{{ _("credentials.col_source") }}
</th>
<th scope="col" class="px-6 py-3 text-center text-xs font-medium text-gray-500 uppercase tracking-wider w-20">
Action
{{ _("credentials.col_action") }}
</th>
</tr>
</thead>
@@ -114,7 +113,7 @@
<div class="flex items-center gap-1">
<code class="text-sm font-mono text-gray-800">{{ cred.key }}</code>
{% if cred.restart_required %}
<span title="Restart required after rotating this credential">
<span title="{{ _('credentials.restart_title') }}">
<i class="fas fa-rotate text-orange-400 text-xs"></i>
</span>
{% endif %}
@@ -130,11 +129,11 @@
<td class="px-6 py-4 whitespace-nowrap">
{% if cred.configured %}
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-semibold bg-green-100 text-green-800">
<i class="fas fa-check mr-1" aria-hidden="true"></i> Configured
<i class="fas fa-check mr-1" aria-hidden="true"></i> {{ _("credentials.configured") }}
</span>
{% else %}
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-semibold bg-red-100 text-red-700">
<i class="fas fa-circle-exclamation mr-1" aria-hidden="true"></i> Missing
<i class="fas fa-circle-exclamation mr-1" aria-hidden="true"></i> {{ _("credentials.status_missing") }}
</span>
{% endif %}
</td>
@@ -142,11 +141,11 @@
<!-- Source badge -->
<td class="px-6 py-4 whitespace-nowrap">
{% if cred.source == 'db' %}
<span class="inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-green-100 text-green-800" title="Stored in database (encrypted)">
<span class="inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-green-100 text-green-800" title="{{ _('credentials.source_db_title') }}">
<i class="fas fa-database mr-1 text-xs" aria-hidden="true"></i> DB
</span>
{% elif cred.source == 'env' %}
<span class="inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-blue-100 text-blue-800" title="From environment variable">
<span class="inline-flex items-center px-2 py-0.5 rounded text-xs font-medium bg-blue-100 text-blue-800" title="{{ _('credentials.source_env_title') }}">
<i class="fas fa-terminal mr-1 text-xs" aria-hidden="true"></i> ENV
</span>
{% else %}
@@ -157,8 +156,8 @@
<!-- Quick-edit link -->
<td class="px-6 py-4 whitespace-nowrap text-center">
<a href="/settings#{{ cred.key }}"
title="Edit in Settings"
aria-label="Edit {{ cred.key }}"
title="{{ _('credentials.edit_in_settings') }}"
aria-label="{{ _('common.edit') ~ ' ' ~ cred.key }}"
class="inline-flex items-center justify-center w-7 h-7 rounded text-gray-400 hover:text-blue-600 hover:bg-blue-50 transition-colors"
>
<i class="fas fa-pen-to-square text-sm" aria-hidden="true"></i>
@@ -178,13 +177,13 @@
<a href="/settings"
class="inline-flex items-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 text-sm font-medium"
>
<i class="fas fa-cog" aria-hidden="true"></i> Manage Settings
<i class="fas fa-cog" aria-hidden="true"></i> {{ _("credentials.manage_settings") }}
</a>
<a href="/api/settings/credentials"
target="_blank"
class="inline-flex items-center gap-2 px-4 py-2 border border-gray-300 text-gray-700 rounded-md hover:bg-gray-50 text-sm font-medium"
>
<i class="fas fa-code" aria-hidden="true"></i> Raw JSON (API)
<i class="fas fa-code" aria-hidden="true"></i> {{ _("credentials.raw_json") }}
</a>
</div>
+37 -50
View File
@@ -1,5 +1,5 @@
{% extends "base.html" %}
{% block title %}Duplicate Documents - DocuElevate{% endblock %}
{% block title %}{{ _("duplicates.page_title") }}{% endblock %}
{% block head_extra %}
<style>
@@ -88,22 +88,20 @@
{% block content %}
<main id="main-content" class="dup-container px-4 py-8">
<h1 class="text-2xl font-bold mb-2">Duplicate Documents</h1>
<h1 class="text-2xl font-bold mb-2">{{ _("duplicates.heading") }}</h1>
<p class="text-gray-500 mb-6 text-sm">
Documents with identical content (same SHA-256 hash) are shown as
<span class="dup-badge dup-badge-exact">exact duplicates</span>.
Use the <strong>Near-Duplicate Finder</strong> tab to detect documents with the
same scanned content but different hashes — for example, a document scanned
twice.
{{ _("duplicates.subtitle_1") }}
<span class="dup-badge dup-badge-exact">{{ _("duplicates.exact_duplicates_badge") }}</span>.
{{ _("duplicates.subtitle_2_pre") }} <strong>{{ _("duplicates.tab_near") }}</strong> {{ _("duplicates.subtitle_2_post") }}
</p>
<!-- Tabs -->
<div class="tabs" role="tablist" aria-label="Duplicate detection tabs">
<div class="tabs" role="tablist" aria-label="{{ _('duplicates.tabs_aria') }}">
<button class="tab-btn active" role="tab" aria-selected="true"
aria-controls="tab-exact" id="btn-exact"
onclick="switchTab('exact')">
<i class="fas fa-clone mr-1" aria-hidden="true"></i>
Exact Duplicates
{{ _("duplicates.tab_exact") }}
{% if total_groups is defined %}
<span class="ml-1 text-xs bg-red-100 text-red-700 font-bold px-1.5 rounded-full">
{{ total_groups }}
@@ -114,7 +112,7 @@
aria-controls="tab-near" id="btn-near"
onclick="switchTab('near')">
<i class="fas fa-layer-group mr-1" aria-hidden="true"></i>
Near-Duplicate Finder
{{ _("duplicates.tab_near") }}
</button>
</div>
@@ -123,12 +121,12 @@
{% if groups %}
<p class="text-sm text-gray-500 mb-4">
Found <strong>{{ total_groups }}</strong> duplicate group(s) with
<strong>{{ total_duplicate_files }}</strong> duplicate file(s) total.
{{ _("duplicates.found_prefix") }} <strong>{{ total_groups }}</strong> {{ _("duplicates.found_groups") }}
<strong>{{ total_duplicate_files }}</strong> {{ _("duplicates.found_files") }}
</p>
{% for group in groups %}
<section class="dup-group" aria-label="Duplicate group {{ loop.index }}">
<section class="dup-group" aria-label="{{ _('duplicates.group_aria') }} {{ loop.index }}">
<div class="dup-group-header">
<i class="fas fa-fingerprint text-gray-400" aria-hidden="true"></i>
<span class="text-xs font-mono text-gray-500" title="SHA-256 hash">
@@ -136,14 +134,14 @@
</span>
<span class="dup-badge dup-badge-exact">
<i class="fas fa-copy" aria-hidden="true"></i>
{{ group.duplicate_count }} duplicate{{ 's' if group.duplicate_count != 1 else '' }}
{{ group.duplicate_count }} {{ _("duplicates.dup_singular") if group.duplicate_count == 1 else _("duplicates.dup_plural") }}
</span>
</div>
<!-- Original file -->
{% if group.original %}
<div class="dup-file-row original">
<span class="dup-role-tag tag-original">Original</span>
<span class="dup-role-tag tag-original">{{ _("duplicates.role_original") }}</span>
<div class="flex-1 min-w-0">
<div class="dup-filename">
<a href="/files/{{ group.original.id }}"
@@ -164,8 +162,8 @@
<div class="dup-actions">
<a href="/files/{{ group.original.id }}"
class="text-sm text-blue-600 hover:underline"
aria-label="View original file {{ group.original.original_filename }}">
<i class="fas fa-external-link-alt" aria-hidden="true"></i> View
aria-label="{{ _('duplicates.view_original_aria') }} {{ group.original.original_filename }}">
<i class="fas fa-external-link-alt" aria-hidden="true"></i> {{ _("common.view") }}
</a>
</div>
</div>
@@ -174,7 +172,7 @@
<!-- Duplicate files -->
{% for dup in group.duplicates %}
<div class="dup-file-row duplicate">
<span class="dup-role-tag tag-duplicate">Duplicate</span>
<span class="dup-role-tag tag-duplicate">{{ _("duplicates.role_duplicate") }}</span>
<div class="flex-1 min-w-0">
<div class="dup-filename">
<a href="/files/{{ dup.id }}" class="hover:text-blue-600">
@@ -194,8 +192,8 @@
<div class="dup-actions">
<a href="/files/{{ dup.id }}"
class="text-sm text-blue-600 hover:underline"
aria-label="View duplicate file {{ dup.original_filename }}">
<i class="fas fa-external-link-alt" aria-hidden="true"></i> View
aria-label="{{ _('duplicates.view_dup_aria') }} {{ dup.original_filename }}">
<i class="fas fa-external-link-alt" aria-hidden="true"></i> {{ _("common.view") }}
</a>
</div>
</div>
@@ -205,23 +203,23 @@
<!-- Pagination -->
{% if pagination.pages > 1 %}
<nav class="pagination" aria-label="Pagination">
<nav class="pagination" aria-label="{{ _('duplicates.pagination_aria') }}">
<button class="page-btn" onclick="changePage({{ pagination.page - 1 }})"
{% if pagination.page <= 1 %}disabled{% endif %}
aria-label="Previous page">
aria-label="{{ _('common.prev_page') }}">
<i class="fas fa-chevron-left" aria-hidden="true"></i>
</button>
{% for p in range(1, pagination.pages + 1) %}
<button class="page-btn {% if p == pagination.page %}current{% endif %}"
onclick="changePage({{ p }})"
aria-label="Page {{ p }}"
aria-label="{{ _('common.page') }} {{ p }}"
{% if p == pagination.page %}aria-current="page"{% endif %}>
{{ p }}
</button>
{% endfor %}
<button class="page-btn" onclick="changePage({{ pagination.page + 1 }})"
{% if pagination.page >= pagination.pages %}disabled{% endif %}
aria-label="Next page">
aria-label="{{ _('common.next_page') }}">
<i class="fas fa-chevron-right" aria-hidden="true"></i>
</button>
</nav>
@@ -230,11 +228,9 @@
{% else %}
<div class="empty-state">
<i class="fas fa-check-circle text-green-400" aria-hidden="true"></i>
<p class="font-semibold text-lg text-gray-700">No exact duplicates found</p>
<p class="font-semibold text-lg text-gray-700">{{ _("duplicates.no_exact_heading") }}</p>
<p class="text-sm mt-1">
Every file in the system has a unique SHA-256 hash.
Use the <strong>Near-Duplicate Finder</strong> tab to check for
re-scanned documents.
{{ _("duplicates.no_exact_detail_pre") }} <strong>{{ _("duplicates.tab_near") }}</strong> {{ _("duplicates.no_exact_detail_post") }}
</p>
</div>
{% endif %}
@@ -246,32 +242,29 @@
<div class="near-dup-search">
<h3>
<i class="fas fa-search mr-1 text-yellow-500" aria-hidden="true"></i>
Find Near-Duplicates for a Document
{{ _("duplicates.near_dup_heading") }}
</h3>
<p class="text-sm text-gray-500 mb-4">
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. Similarity is computed from OCR text embeddings;
documents without extracted text cannot be compared.
{{ _("duplicates.near_dup_desc") }}
</p>
<form id="nearDupForm" onsubmit="findNearDups(event)">
<div class="nd-form">
<div class="flex flex-col gap-1">
<label for="ndFileId">File ID</label>
<label for="ndFileId">{{ _("duplicates.file_id_label") }}</label>
<input type="number" id="ndFileId" name="file_id" min="1"
placeholder="e.g. 42" required
placeholder="{{ _('duplicates.file_id_placeholder') }}" required
style="min-height:44px;">
</div>
<div class="flex flex-col gap-1">
<label for="ndThreshold">Similarity threshold</label>
<label for="ndThreshold">{{ _("duplicates.threshold_label") }}</label>
<input type="number" id="ndThreshold" name="threshold"
min="0" max="1" step="0.05"
value="{{ near_duplicate_threshold }}"
style="min-height:44px;">
</div>
<div class="flex flex-col gap-1">
<label for="ndLimit">Max results</label>
<label for="ndLimit">{{ _("duplicates.max_results_label") }}</label>
<select id="ndLimit" name="limit" style="min-height:44px;">
<option value="5" selected>5</option>
<option value="10">10</option>
@@ -282,7 +275,7 @@
class="bg-yellow-500 hover:bg-yellow-600 text-white font-bold
px-5 rounded-lg transition-colors"
style="min-height:44px;">
<i class="fas fa-search mr-1" aria-hidden="true"></i> Find
<i class="fas fa-search mr-1" aria-hidden="true"></i> {{ _("duplicates.find_btn") }}
</button>
</div>
</form>
@@ -296,20 +289,14 @@
<div class="bg-blue-50 border border-blue-200 rounded-lg p-4 text-sm text-blue-800">
<p class="font-semibold mb-1">
<i class="fas fa-info-circle mr-1" aria-hidden="true"></i>
How near-duplicate detection works
{{ _("duplicates.how_it_works_heading") }}
</p>
<ul class="list-disc ml-5 space-y-1">
<li>After OCR processes a document, its text is converted to a numeric
<em>embedding vector</em> using an AI language model.</li>
<li>Near-duplicate detection compares these vectors using <em>cosine
similarity</em>: a score of 1.0 means identical content, 0.0 means
completely different.</li>
<li>A threshold of <strong>{{ near_duplicate_threshold }}</strong> means
documents must share at least
{{ (near_duplicate_threshold * 100)|round|int }}% semantic similarity
to be flagged.</li>
<li>Documents scanned twice (even with slight differences) will typically
score <strong>&gt; 0.90</strong>.</li>
<li>{{ _("duplicates.how_step1_pre") }} <em>{{ _("duplicates.embedding_vector") }}</em> {{ _("duplicates.how_step1_post") }}</li>
<li>{{ _("duplicates.how_step2_pre") }} <em>{{ _("duplicates.cosine_similarity") }}</em>{{ _("duplicates.how_step2_post") }}</li>
<li>{{ _("duplicates.how_step3_pre") }} <strong>{{ near_duplicate_threshold }}</strong> {{ _("duplicates.how_step3_mid") }}
{{ (near_duplicate_threshold * 100)|round|int }}% {{ _("duplicates.how_step3_post") }}</li>
<li>{{ _("duplicates.how_step4") }} <strong>&gt; 0.90</strong>.</li>
</ul>
</div>
</div><!-- /tab-near -->
+78 -79
View File
@@ -1,5 +1,5 @@
{% extends "base.html" %}
{% block title %}File Records{% endblock %}
{% block title %}{{ _("files.page_title") }}{% endblock %}
{% block head_extra %}
<script src="/static/js/common.js"></script>
@@ -427,16 +427,16 @@
<div id="dropOverlay" class="drop-overlay" aria-hidden="true">
<div class="drop-message">
<i class="fas fa-cloud-upload-alt" aria-hidden="true"></i>
<p>Drop files or folders anywhere to upload</p>
<div class="drop-hint">Supports PDF, Office docs, images, HTML, Markdown, and more folders are processed recursively</div>
<p>{{ _("files.drop_overlay_title") }}</p>
<div class="drop-hint">{{ _("files.drop_overlay_hint") }}</div>
</div>
</div>
<!-- Upload progress modal -->
<div id="uploadModal" class="upload-modal" role="dialog" aria-modal="true" aria-label="Upload progress">
<div id="uploadModal" class="upload-modal" role="dialog" aria-modal="true" aria-label="{{ _('files.upload_modal_aria') }}">
<div class="upload-modal-header">
<span><i class="fas fa-upload" aria-hidden="true"></i> Uploading Files</span>
<button class="close-modal-btn" onclick="closeUploadModal()" aria-label="Close upload progress">
<span><i class="fas fa-upload" aria-hidden="true"></i> {{ _("files.upload_modal_header") }}</span>
<button class="close-modal-btn" onclick="closeUploadModal()" aria-label="{{ _('files.upload_modal_close') }}">
<i class="fas fa-times" aria-hidden="true"></i>
</button>
</div>
@@ -447,7 +447,7 @@
</div>
<div class="container mx-auto px-4 py-8">
<h2 class="text-3xl font-bold mb-6">File Records</h2>
<h2 class="text-3xl font-bold mb-6">{{ _("files.page_title") }}</h2>
<!-- Queue pending banner (populated via JS) -->
<div id="queueBanner" class="hidden bg-blue-50 border-l-4 border-blue-400 text-blue-800 p-4 mb-6 rounded-r-lg" role="status">
@@ -455,36 +455,35 @@
<div class="flex items-center">
<i class="fas fa-spinner fa-spin mr-3 text-blue-500" aria-hidden="true"></i>
<span>
<strong id="queueBannerCount">0</strong> item(s) are currently queued or being processed.
Files will appear here once processing completes.
<strong id="queueBannerCount">0</strong> {{ _("files.queue_banner_items") }}
</span>
</div>
<a href="/admin/queue" class="text-blue-600 hover:text-blue-800 text-sm font-medium whitespace-nowrap ml-4"
id="queueBannerLink" style="display:none;">
<i class="fas fa-external-link-alt mr-1" aria-hidden="true"></i>View Queue
<i class="fas fa-external-link-alt mr-1" aria-hidden="true"></i>{{ _("files.queue_banner_link") }}
</a>
</div>
</div>
{% if error %}
<div class="error-message">
<p><strong>Error:</strong> {{ error }}</p>
<p class="mt-2">This might be due to a configuration or import issue. Please check the server logs.</p>
<p><strong>{{ _("common.error") }}:</strong> {{ error }}</p>
<p class="mt-2">{{ _("files.error_hint") }}</p>
</div>
{% endif %}
<!-- Filters Section -->
<div class="filters-section">
<form method="get" action="/files" class="filter-group" role="search" aria-label="Filter files">
<form method="get" action="/files" class="filter-group" role="search" aria-label="{{ _('files.filter_form_aria') }}">
<div class="filter-item">
<label for="search">Search Filename</label>
<input type="text" id="search" name="search" value="{{ search }}" placeholder="Enter filename...">
<label for="search">{{ _("files.filter_search_label") }}</label>
<input type="text" id="search" name="search" value="{{ search }}" placeholder="{{ _('files.filter_search_placeholder') }}">
</div>
<div class="filter-item">
<label for="mime_type">MIME Type</label>
<label for="mime_type">{{ _("files.filter_mime_type") }}</label>
<select id="mime_type" name="mime_type">
<option value="">All Types</option>
<option value="">{{ _("files.filter_all_types") }}</option>
{% for mt in mime_types %}
<option value="{{ mt }}" {% if mt == mime_type %}selected{% endif %}>{{ mt }}</option>
{% endfor %}
@@ -492,31 +491,31 @@
</div>
<div class="filter-item">
<label for="status">Status</label>
<label for="status">{{ _("common.status") }}</label>
<select id="status" name="status">
<option value="">All Statuses</option>
<option value="pending" {% if status == "pending" %}selected{% endif %}>Pending</option>
<option value="processing" {% if status == "processing" %}selected{% endif %}>Processing</option>
<option value="completed" {% if status == "completed" %}selected{% endif %}>Completed</option>
<option value="failed" {% if status == "failed" %}selected{% endif %}>Failed</option>
<option value="duplicate" {% if status == "duplicate" %}selected{% endif %}>Duplicate</option>
<option value="">{{ _("files.filter_all_statuses") }}</option>
<option value="pending" {% if status == "pending" %}selected{% endif %}>{{ _("common.pending") }}</option>
<option value="processing" {% if status == "processing" %}selected{% endif %}>{{ _("common.processing") }}</option>
<option value="completed" {% if status == "completed" %}selected{% endif %}>{{ _("common.completed") }}</option>
<option value="failed" {% if status == "failed" %}selected{% endif %}>{{ _("common.failed") }}</option>
<option value="duplicate" {% if status == "duplicate" %}selected{% endif %}>{{ _("files.status_duplicate") }}</option>
</select>
</div>
<div class="filter-item">
<label for="date_from">Date From</label>
<input type="date" id="date_from" name="date_from" value="{{ date_from }}" aria-label="Filter from date">
<label for="date_from">{{ _("files.filter_date_from") }}</label>
<input type="date" id="date_from" name="date_from" value="{{ date_from }}" aria-label="{{ _('files.filter_date_from_aria') }}">
</div>
<div class="filter-item">
<label for="date_to">Date To</label>
<input type="date" id="date_to" name="date_to" value="{{ date_to }}" aria-label="Filter to date">
<label for="date_to">{{ _("files.filter_date_to") }}</label>
<input type="date" id="date_to" name="date_to" value="{{ date_to }}" aria-label="{{ _('files.filter_date_to_aria') }}">
</div>
<div class="filter-item">
<label for="storage_provider">Storage Provider</label>
<label for="storage_provider">{{ _("files.filter_storage_provider") }}</label>
<select id="storage_provider" name="storage_provider">
<option value="">All Providers</option>
<option value="">{{ _("files.filter_all_providers") }}</option>
<option value="dropbox" {% if storage_provider == "dropbox" %}selected{% endif %}>Dropbox</option>
<option value="google_drive" {% if storage_provider == "google_drive" %}selected{% endif %}>Google Drive</option>
<option value="onedrive" {% if storage_provider == "onedrive" %}selected{% endif %}>OneDrive</option>
@@ -530,28 +529,28 @@
</div>
<div class="filter-item">
<label for="tags">Tags</label>
<input type="text" id="tags" name="tags" value="{{ tags }}" placeholder="e.g. invoice,amazon" aria-label="Filter by tags (comma-separated)">
<label for="tags">{{ _("files.tags") }}</label>
<input type="text" id="tags" name="tags" value="{{ tags }}" placeholder="{{ _('files.filter_tags_placeholder') }}" aria-label="{{ _('files.filter_tags_aria') }}">
</div>
<div class="filter-item">
<label for="ocr_quality">OCR Quality</label>
<select id="ocr_quality" name="ocr_quality" aria-label="Filter by OCR quality score">
<option value="">All Files</option>
<option value="poor" {% if ocr_quality == "poor" %}selected{% endif %} aria-label="Poor quality, score less than {{ ocr_quality_threshold }}">Poor (score &lt; {{ ocr_quality_threshold }})</option>
<option value="good" {% if ocr_quality == "good" %}selected{% endif %} aria-label="Good quality, score at least {{ ocr_quality_threshold }}">Good (score &ge; {{ ocr_quality_threshold }})</option>
<option value="unchecked" {% if ocr_quality == "unchecked" %}selected{% endif %} aria-label="Not yet assessed">Not yet assessed</option>
<label for="ocr_quality">{{ _("files.filter_ocr_quality") }}</label>
<select id="ocr_quality" name="ocr_quality" aria-label="{{ _('files.filter_ocr_quality_aria') }}">
<option value="">{{ _("files.filter_ocr_all") }}</option>
<option value="poor" {% if ocr_quality == "poor" %}selected{% endif %} aria-label="Poor quality, score less than {{ ocr_quality_threshold }}">{{ _("files.filter_ocr_poor") }} (score &lt; {{ ocr_quality_threshold }})</option>
<option value="good" {% if ocr_quality == "good" %}selected{% endif %} aria-label="Good quality, score at least {{ ocr_quality_threshold }}">{{ _("files.filter_ocr_good") }} (score &ge; {{ ocr_quality_threshold }})</option>
<option value="unchecked" {% if ocr_quality == "unchecked" %}selected{% endif %} aria-label="Not yet assessed">{{ _("files.filter_ocr_unchecked") }}</option>
</select>
</div>
<div class="filter-item">
<label>&nbsp;</label>
<button type="submit">Apply Filters</button>
<button type="submit">{{ _("files.filter_apply") }}</button>
</div>
<div class="filter-item">
<label>&nbsp;</label>
<button type="button" class="clear" onclick="clearFilters()">Clear</button>
<button type="button" class="clear" onclick="clearFilters()">{{ _("files.filter_clear") }}</button>
</div>
<!-- Hidden fields to preserve sort order -->
@@ -565,13 +564,13 @@
<div class="filters-section" style="margin-top: 0.5rem;">
<div style="display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; width: 100%;">
<label style="font-weight: 600; font-size: 0.85rem; white-space: nowrap;">
<i class="fas fa-bookmark" aria-hidden="true"></i> Saved Searches:
<i class="fas fa-bookmark" aria-hidden="true"></i> {{ _("files.saved_searches_label") }}
</label>
<div id="saved-searches-list" style="display: flex; gap: 0.25rem; flex-wrap: wrap;" aria-live="polite">
<span style="color: var(--text-muted); font-size: 0.85rem;">Loading...</span>
<span style="color: var(--text-muted); font-size: 0.85rem;">{{ _("common.loading") }}</span>
</div>
<button type="button" onclick="saveCurrentFilters()" class="btn-save-search" style="margin-left: auto; font-size: 0.8rem; padding: 0.25rem 0.5rem; cursor: pointer;" aria-label="Save current filters as a saved search">
<i class="fas fa-plus" aria-hidden="true"></i> Save Current
<button type="button" onclick="saveCurrentFilters()" class="btn-save-search" style="margin-left: auto; font-size: 0.8rem; padding: 0.25rem 0.5rem; cursor: pointer;" aria-label="{{ _('files.saved_searches_save_aria') }}">
<i class="fas fa-plus" aria-hidden="true"></i> {{ _("files.saved_searches_save") }}
</button>
</div>
</div>
@@ -580,13 +579,13 @@
<div class="filters-section" style="margin-top: 0.75rem;">
<div style="width: 100%;">
<label for="fulltext-search" style="font-weight: 600; display: block; margin-bottom: 0.4rem;">
<i class="fas fa-search" aria-hidden="true"></i> Full-Text Search (OCR text, metadata, tags)
<i class="fas fa-search" aria-hidden="true"></i> {{ _("files.fulltext_search_label") }}
</label>
<div style="display: flex; gap: 0.5rem; align-items: center; flex-wrap: wrap;">
<input
type="text"
id="fulltext-search"
placeholder="Search document content, sender, tags, type..."
placeholder="{{ _('files.fulltext_search_placeholder') }}"
style="flex: 1; min-width: 220px; padding: 0.5rem 0.75rem; border: 1px solid #d1d5db; border-radius: 0.375rem; font-size: 0.875rem;"
oninput="debounceSearch(this.value)"
>
@@ -595,14 +594,14 @@
onclick="runFullTextSearch()"
style="padding: 0.5rem 1rem; background-color: #3182ce; color: white; border: none; border-radius: 0.375rem; cursor: pointer; font-size: 0.875rem; white-space: nowrap;"
>
Search
{{ _("common.search") }}
</button>
<button
type="button"
onclick="clearFullTextSearch()"
style="padding: 0.5rem 1rem; background-color: #6b7280; color: white; border: none; border-radius: 0.375rem; cursor: pointer; font-size: 0.875rem; white-space: nowrap;"
>
Clear
{{ _("files.filter_clear") }}
</button>
</div>
</div>
@@ -621,23 +620,23 @@
<div id="bulkActionsBar" class="filters-section" style="display: none; background-color: #e6f3ff;">
<div class="flex flex-col sm:flex-row sm:justify-between sm:items-center gap-3">
<div>
<strong id="selectedCount">0</strong> files selected
<strong id="selectedCount">0</strong> {{ _("files.files_selected") }}
</div>
<div class="flex flex-wrap gap-2">
<button type="button" onclick="bulkReprocess()" style="padding: 0.5rem 1rem; background-color: #3182ce; color: white; border: none; border-radius: 0.25rem; cursor: pointer; font-weight: 600; min-height: 44px;">
<i class="fas fa-sync" aria-hidden="true"></i> Reprocess Selected
<i class="fas fa-sync" aria-hidden="true"></i> {{ _("files.bulk_reprocess") }}
</button>
<button type="button" onclick="bulkReprocessCloudOcr()" style="padding: 0.5rem 1rem; background-color: #805ad5; color: white; border: none; border-radius: 0.25rem; cursor: pointer; font-weight: 600; min-height: 44px;">
<i class="fas fa-cloud" aria-hidden="true"></i> Re-run Cloud OCR
<i class="fas fa-cloud" aria-hidden="true"></i> {{ _("files.bulk_cloud_ocr") }}
</button>
<button type="button" onclick="bulkDownload()" style="padding: 0.5rem 1rem; background-color: #38a169; color: white; border: none; border-radius: 0.25rem; cursor: pointer; font-weight: 600; min-height: 44px;">
<i class="fas fa-file-archive" aria-hidden="true"></i> Download as ZIP
<i class="fas fa-file-archive" aria-hidden="true"></i> {{ _("files.bulk_download") }}
</button>
<button type="button" onclick="bulkDelete()" style="padding: 0.5rem 1rem; background-color: #e53e3e; color: white; border: none; border-radius: 0.25rem; cursor: pointer; font-weight: 600; min-height: 44px;">
<i class="fas fa-trash" aria-hidden="true"></i> Delete Selected
<i class="fas fa-trash" aria-hidden="true"></i> {{ _("files.bulk_delete") }}
</button>
<button type="button" onclick="clearSelection()" style="padding: 0.5rem 1rem; background-color: #718096; color: white; border: none; border-radius: 0.25rem; cursor: pointer; font-weight: 600; min-height: 44px;">
Clear Selection
{{ _("files.bulk_clear_selection") }}
</button>
</div>
</div>
@@ -645,14 +644,14 @@
<!-- File table (desktop) -->
<div class="hidden md:block overflow-x-auto">
<table class="file-table" id="fileTable" aria-label="File records">
<table class="file-table" id="fileTable" aria-label="{{ _('files.table_aria') }}">
<thead>
<tr>
<th scope="col" style="width: 40px;">
<input type="checkbox" id="selectAll" onclick="toggleSelectAll()" title="Select all files on this page" aria-label="Select all files on this page">
<input type="checkbox" id="selectAll" onclick="toggleSelectAll()" title="{{ _('files.table_select_all') }}" aria-label="{{ _('files.table_select_all') }}">
</th>
<th scope="col" class="sortable" onclick="sortTable('id')" role="columnheader" aria-sort="{% if sort_by == 'id' %}{% if sort_order == 'asc' %}ascending{% else %}descending{% endif %}{% else %}none{% endif %}">
ID
{{ _("files.table_id") }}
<span class="sort-indicator {% if sort_by == 'id' %}active{% endif %}">
{% if sort_by == 'id' %}
{% if sort_order == 'asc' %}▲{% else %}▼{% endif %}
@@ -662,7 +661,7 @@
</span>
</th>
<th scope="col" class="sortable" onclick="sortTable('original_filename')">
Original Filename
{{ _("files.table_original_filename") }}
<span class="sort-indicator {% if sort_by == 'original_filename' %}active{% endif %}">
{% if sort_by == 'original_filename' %}
{% if sort_order == 'asc' %}▲{% else %}▼{% endif %}
@@ -672,7 +671,7 @@
</span>
</th>
<th scope="col" class="sortable" onclick="sortTable('file_size')">
File Size
{{ _("files.file_size") }}
<span class="sort-indicator {% if sort_by == 'file_size' %}active{% endif %}">
{% if sort_by == 'file_size' %}
{% if sort_order == 'asc' %}▲{% else %}▼{% endif %}
@@ -682,7 +681,7 @@
</span>
</th>
<th scope="col" class="sortable" onclick="sortTable('mime_type')">
MIME Type
{{ _("files.table_mime_type") }}
<span class="sort-indicator {% if sort_by == 'mime_type' %}active{% endif %}">
{% if sort_by == 'mime_type' %}
{% if sort_order == 'asc' %}▲{% else %}▼{% endif %}
@@ -691,9 +690,9 @@
{% endif %}
</span>
</th>
<th scope="col">Status</th>
<th scope="col">{{ _("common.status") }}</th>
<th scope="col" class="sortable" onclick="sortTable('created_at')">
Created At
{{ _("files.table_created_at") }}
<span class="sort-indicator {% if sort_by == 'created_at' %}active{% endif %}">
{% if sort_by == 'created_at' %}
{% if sort_order == 'asc' %}▲{% else %}▼{% endif %}
@@ -702,7 +701,7 @@
{% endif %}
</span>
</th>
<th scope="col">Actions</th>
<th scope="col">{{ _("files.table_actions") }}</th>
</tr>
</thead>
<tbody>
@@ -737,7 +736,7 @@
</tr>
{% else %}
<tr>
<td colspan="8" class="text-center py-4">No files found</td>
<td colspan="8" class="text-center py-4">{{ _("files.table_empty") }}</td>
</tr>
{% endfor %}
</tbody>
@@ -779,33 +778,33 @@
</div>
</div>
{% else %}
<p class="text-center py-4 text-gray-500">No files found</p>
<p class="text-center py-4 text-gray-500">{{ _("files.table_empty") }}</p>
{% endfor %}
</div>
<!-- Pagination -->
{% if pagination.pages > 1 %}
<nav class="pagination flex-wrap gap-2" aria-label="File list pagination">
<nav class="pagination flex-wrap gap-2" aria-label="{{ _('files.pagination_nav_aria') }}">
<div class="pagination-info" aria-live="polite">
Showing {{ ((pagination.page - 1) * pagination.per_page + 1) }} -
{{ _("files.pagination_showing") }} {{ ((pagination.page - 1) * pagination.per_page + 1) }} -
{{ min(pagination.page * pagination.per_page, pagination.total) }}
of {{ pagination.total }} files
{{ _("files.pagination_of") }} {{ pagination.total }} {{ _("files.pagination_files") }}
</div>
<div class="pagination-buttons flex-wrap">
{% if pagination.page > 1 %}
<button class="pagination-button" onclick="goToPage(1)" aria-label="Go to first page" style="min-height:44px;">First</button>
<button class="pagination-button" onclick="goToPage({{ pagination.page - 1 }})" aria-label="Go to previous page" style="min-height:44px;">Previous</button>
<button class="pagination-button" onclick="goToPage(1)" aria-label="{{ _('files.pagination_first') }}" style="min-height:44px;">{{ _("files.pagination_first") }}</button>
<button class="pagination-button" onclick="goToPage({{ pagination.page - 1 }})" aria-label="{{ _('files.pagination_previous') }}" style="min-height:44px;">{{ _("files.pagination_previous") }}</button>
{% endif %}
{% for p in range(max(1, pagination.page - 2), min(pagination.pages + 1, pagination.page + 3)) %}
<button class="pagination-button {% if p == pagination.page %}active{% endif %}" onclick="goToPage({{ p }})" aria-label="Page {{ p }}" {% if p == pagination.page %}aria-current="page"{% endif %} style="min-height:44px;">
<button class="pagination-button {% if p == pagination.page %}active{% endif %}" onclick="goToPage({{ p }})" aria-label="{{ _('common.page') }} {{ p }}" {% if p == pagination.page %}aria-current="page"{% endif %} style="min-height:44px;">
{{ p }}
</button>
{% endfor %}
{% if pagination.page < pagination.pages %}
<button class="pagination-button" onclick="goToPage({{ pagination.page + 1 }})" aria-label="Go to next page" style="min-height:44px;">Next</button>
<button class="pagination-button" onclick="goToPage({{ pagination.pages }})" aria-label="Go to last page" style="min-height:44px;">Last</button>
<button class="pagination-button" onclick="goToPage({{ pagination.page + 1 }})" aria-label="{{ _('files.pagination_next') }}" style="min-height:44px;">{{ _("files.pagination_next") }}</button>
<button class="pagination-button" onclick="goToPage({{ pagination.pages }})" aria-label="{{ _('files.pagination_last') }}" style="min-height:44px;">{{ _("files.pagination_last") }}</button>
{% endif %}
</div>
</nav>
@@ -814,11 +813,11 @@
<!-- Delete confirmation modal -->
<div id="deleteModal" class="modal" role="dialog" aria-modal="true" aria-labelledby="deleteModalTitle">
<div class="modal-content">
<div class="modal-title" id="deleteModalTitle">Confirm Deletion</div>
<p>Are you sure you want to delete this file?</p>
<div class="modal-title" id="deleteModalTitle">{{ _("files.delete_modal_title") }}</div>
<p>{{ _("files.delete_modal_message") }}</p>
<div class="modal-buttons">
<button id="cancelDelete" class="modal-btn modal-btn-cancel" style="min-height:44px;min-width:80px;">Cancel</button>
<button id="confirmDelete" class="modal-btn modal-btn-delete" style="min-height:44px;min-width:80px;">Delete</button>
<button id="cancelDelete" class="modal-btn modal-btn-cancel" style="min-height:44px;min-width:80px;">{{ _("files.delete_modal_cancel") }}</button>
<button id="confirmDelete" class="modal-btn modal-btn-delete" style="min-height:44px;min-width:80px;">{{ _("files.delete_modal_confirm") }}</button>
</div>
</div>
</div>
@@ -827,8 +826,8 @@
<div id="previewOverlay" class="preview-overlay" role="dialog" aria-modal="true" aria-labelledby="previewTitle">
<div class="preview-panel">
<div class="preview-panel-header">
<h3 id="previewTitle">Preview</h3>
<button class="preview-panel-close" onclick="closePreviewModal()" aria-label="Close preview">
<h3 id="previewTitle">{{ _("files.preview_modal_title") }}</h3>
<button class="preview-panel-close" onclick="closePreviewModal()" aria-label="{{ _('files.preview_modal_close') }}">
<i class="fas fa-times" aria-hidden="true"></i>
</button>
</div>
+84 -102
View File
@@ -1,16 +1,16 @@
{% extends "base.html" %}
{% block title %}Help Center DocuElevate{% endblock %}
{% block title %}{{ _("help.page_title") }} DocuElevate{% endblock %}
{% block head_extra %}
<!-- SEO meta tags -->
<meta name="description" content="DocuElevate Help Center learn how to upload, process, and route your documents automatically. Get started with sources, destinations, workflows, and integrations.">
<meta name="description" content="{{ _('help.meta_description') }}">
<meta name="keywords" content="DocuElevate, help, support, document processing, OCR, cloud storage, workflow automation, SaaS">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://{{ external_hostname }}/help">
<!-- Open Graph -->
<meta property="og:title" content="Help Center DocuElevate">
<meta property="og:description" content="Everything you need to get started with DocuElevate: upload documents, automate workflows, and connect your favourite cloud storage.">
<meta property="og:title" content="{{ _('help.page_title') }} DocuElevate">
<meta property="og:description" content="{{ _('help.og_description') }}">
<meta property="og:type" content="website">
<meta property="og:url" content="https://{{ external_hostname }}/help">
@@ -63,18 +63,17 @@
<!-- ═══════════════════════ Hero Section ═══════════════════════ -->
<header class="text-center mb-14">
<h1 class="text-4xl md:text-5xl font-extrabold text-gray-900 mb-4">
<i class="fas fa-life-ring text-blue-500 mr-2" aria-hidden="true"></i>Help Center
<i class="fas fa-life-ring text-blue-500 mr-2" aria-hidden="true"></i>{{ _("help.heading") }}
</h1>
<p class="text-lg md:text-xl text-gray-600 max-w-2xl mx-auto leading-relaxed">
Everything you need to get the most out of DocuElevate.
Browse topics below or search for what you need.
{{ _("help.subheading") }}
</p>
</header>
<!-- ═══════════════════════ Quick-start Cards ═══════════════════════ -->
<section aria-labelledby="quickstart-heading" class="mb-16">
<h2 id="quickstart-heading" class="text-2xl font-bold text-gray-800 mb-6">
<i class="fas fa-rocket text-blue-500 mr-2" aria-hidden="true"></i>Quick Start
<i class="fas fa-rocket text-blue-500 mr-2" aria-hidden="true"></i>{{ _("help.quickstart_heading") }}
</h2>
<div class="grid gap-6 sm:grid-cols-2 lg:grid-cols-3">
@@ -84,11 +83,10 @@
<span class="flex items-center justify-center w-10 h-10 rounded-full bg-blue-100 text-blue-600 mr-3" aria-hidden="true">
<i class="fas fa-cloud-arrow-up"></i>
</span>
<h3 class="text-lg font-semibold text-gray-800">Upload Documents</h3>
<h3 class="text-lg font-semibold text-gray-800">{{ _("help.quickstart_upload") }}</h3>
</div>
<p class="text-gray-600 text-sm leading-relaxed">
Drag &amp; drop files onto the <strong>Upload</strong> page or click <em>Choose File</em>.
DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.
{{ _("help.quickstart_upload_desc") }}
</p>
</article>
@@ -98,11 +96,10 @@
<span class="flex items-center justify-center w-10 h-10 rounded-full bg-green-100 text-green-600 mr-3" aria-hidden="true">
<i class="fas fa-plug"></i>
</span>
<h3 class="text-lg font-semibold text-gray-800">Connect Storage</h3>
<h3 class="text-lg font-semibold text-gray-800">{{ _("help.quickstart_storage") }}</h3>
</div>
<p class="text-gray-600 text-sm leading-relaxed">
Head to <strong>Settings → Integrations</strong> and link your cloud accounts.
Processed documents are automatically routed to every destination you configure.
{{ _("help.quickstart_storage_desc_full") }}
</p>
</article>
@@ -112,11 +109,10 @@
<span class="flex items-center justify-center w-10 h-10 rounded-full bg-purple-100 text-purple-600 mr-3" aria-hidden="true">
<i class="fas fa-wand-magic-sparkles"></i>
</span>
<h3 class="text-lg font-semibold text-gray-800">Automate Workflows</h3>
<h3 class="text-lg font-semibold text-gray-800">{{ _("help.quickstart_workflows") }}</h3>
</div>
<p class="text-gray-600 text-sm leading-relaxed">
Create <strong>Pipelines</strong> to define multi-step processing and routing rules.
Combine OCR, AI extraction, format conversion, and delivery in a single flow.
{{ _("help.quickstart_workflows_desc") }}
</p>
</article>
@@ -126,39 +122,35 @@
<!-- ═══════════════════════ Sources ═══════════════════════ -->
<section aria-labelledby="sources-heading" class="mb-16">
<h2 id="sources-heading" class="text-2xl font-bold text-gray-800 mb-6">
<i class="fas fa-arrow-right-to-bracket text-blue-500 mr-2" aria-hidden="true"></i>Sources Getting Documents In
<i class="fas fa-arrow-right-to-bracket text-blue-500 mr-2" aria-hidden="true"></i>{{ _("help.sources_heading") }}
</h2>
<div class="grid gap-6 sm:grid-cols-2">
<article class="bg-white shadow rounded-lg p-6">
<h3 class="font-semibold text-gray-800 mb-2"><i class="fas fa-upload mr-2 text-gray-400" aria-hidden="true"></i>Web Upload</h3>
<h3 class="font-semibold text-gray-800 mb-2"><i class="fas fa-upload mr-2 text-gray-400" aria-hidden="true"></i>{{ _("help.sources_web_upload") }}</h3>
<p class="text-gray-600 text-sm">
The fastest way to get started. Open the <strong>Upload</strong> 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") }}
</p>
</article>
<article class="bg-white shadow rounded-lg p-6">
<h3 class="font-semibold text-gray-800 mb-2"><i class="fas fa-envelope-open-text mr-2 text-gray-400" aria-hidden="true"></i>Email Ingestion (IMAP)</h3>
<h3 class="font-semibold text-gray-800 mb-2"><i class="fas fa-envelope-open-text mr-2 text-gray-400" aria-hidden="true"></i>{{ _("help.sources_email_ingestion") }}</h3>
<p class="text-gray-600 text-sm">
Forward documents to a dedicated mailbox. Under <strong>Email Ingestion</strong>, add one or more IMAP accounts.
DocuElevate polls for new messages and processes attachments automatically.
{{ _("help.sources_email_ingestion_desc") }}
</p>
</article>
<article class="bg-white shadow rounded-lg p-6">
<h3 class="font-semibold text-gray-800 mb-2"><i class="fas fa-code mr-2 text-gray-400" aria-hidden="true"></i>REST API</h3>
<h3 class="font-semibold text-gray-800 mb-2"><i class="fas fa-code mr-2 text-gray-400" aria-hidden="true"></i>{{ _("help.sources_rest_api") }}</h3>
<p class="text-gray-600 text-sm">
Integrate programmatically by <code class="bg-gray-100 px-1 rounded text-xs">POST</code>-ing files to <code class="bg-gray-100 px-1 rounded text-xs">/api/upload</code>.
Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.
{{ _("help.sources_rest_api_desc") }}
</p>
</article>
<article class="bg-white shadow rounded-lg p-6">
<h3 class="font-semibold text-gray-800 mb-2"><i class="fas fa-print mr-2 text-gray-400" aria-hidden="true"></i>Scanner &amp; Mobile</h3>
<h3 class="font-semibold text-gray-800 mb-2"><i class="fas fa-print mr-2 text-gray-400" aria-hidden="true"></i>{{ _("help.sources_scanner") }}</h3>
<p class="text-gray-600 text-sm">
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") }}
</p>
</article>
@@ -168,79 +160,79 @@
<!-- ═══════════════════════ Destinations ═══════════════════════ -->
<section aria-labelledby="destinations-heading" class="mb-16">
<h2 id="destinations-heading" class="text-2xl font-bold text-gray-800 mb-6">
<i class="fas fa-arrow-right-from-bracket text-blue-500 mr-2" aria-hidden="true"></i>Destinations Where Documents Go
<i class="fas fa-arrow-right-from-bracket text-blue-500 mr-2" aria-hidden="true"></i>{{ _("help.destinations_heading") }}
</h2>
<div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
<div class="flex items-start bg-white shadow rounded-lg p-5">
<i class="fab fa-dropbox text-blue-500 text-xl mr-3 mt-0.5" aria-hidden="true"></i>
<div>
<h3 class="font-semibold text-gray-800 text-sm">Dropbox</h3>
<p class="text-gray-500 text-xs">OAuth-linked. Files land in your chosen folder.</p>
<h3 class="font-semibold text-gray-800 text-sm">{{ _("help.destinations_dropbox") }}</h3>
<p class="text-gray-500 text-xs">{{ _("help.destinations_dropbox_desc") }}</p>
</div>
</div>
<div class="flex items-start bg-white shadow rounded-lg p-5">
<i class="fab fa-google-drive text-green-500 text-xl mr-3 mt-0.5" aria-hidden="true"></i>
<div>
<h3 class="font-semibold text-gray-800 text-sm">Google Drive</h3>
<p class="text-gray-500 text-xs">Service account or OAuth. Supports shared drives.</p>
<h3 class="font-semibold text-gray-800 text-sm">{{ _("help.destinations_google_drive") }}</h3>
<p class="text-gray-500 text-xs">{{ _("help.destinations_google_drive_desc") }}</p>
</div>
</div>
<div class="flex items-start bg-white shadow rounded-lg p-5">
<i class="fab fa-microsoft text-blue-600 text-xl mr-3 mt-0.5" aria-hidden="true"></i>
<div>
<h3 class="font-semibold text-gray-800 text-sm">OneDrive</h3>
<p class="text-gray-500 text-xs">Microsoft Graph API integration.</p>
<h3 class="font-semibold text-gray-800 text-sm">{{ _("help.destinations_onedrive") }}</h3>
<p class="text-gray-500 text-xs">{{ _("help.destinations_onedrive_desc") }}</p>
</div>
</div>
<div class="flex items-start bg-white shadow rounded-lg p-5">
<i class="fab fa-aws text-yellow-600 text-xl mr-3 mt-0.5" aria-hidden="true"></i>
<div>
<h3 class="font-semibold text-gray-800 text-sm">Amazon S3</h3>
<p class="text-gray-500 text-xs">Any S3-compatible bucket (AWS, MinIO, Wasabi).</p>
<h3 class="font-semibold text-gray-800 text-sm">{{ _("help.destinations_s3") }}</h3>
<p class="text-gray-500 text-xs">{{ _("help.destinations_s3_desc") }}</p>
</div>
</div>
<div class="flex items-start bg-white shadow rounded-lg p-5">
<i class="fas fa-cloud text-blue-400 text-xl mr-3 mt-0.5" aria-hidden="true"></i>
<div>
<h3 class="font-semibold text-gray-800 text-sm">Nextcloud / WebDAV</h3>
<p class="text-gray-500 text-xs">Self-hosted cloud storage via WebDAV.</p>
<h3 class="font-semibold text-gray-800 text-sm">{{ _("help.destinations_nextcloud") }}</h3>
<p class="text-gray-500 text-xs">{{ _("help.destinations_nextcloud_desc") }}</p>
</div>
</div>
<div class="flex items-start bg-white shadow rounded-lg p-5">
<i class="fas fa-leaf text-green-600 text-xl mr-3 mt-0.5" aria-hidden="true"></i>
<div>
<h3 class="font-semibold text-gray-800 text-sm">Paperless-ngx</h3>
<p class="text-gray-500 text-xs">Push documents straight into Paperless for archival.</p>
<h3 class="font-semibold text-gray-800 text-sm">{{ _("help.destinations_paperless") }}</h3>
<p class="text-gray-500 text-xs">{{ _("help.destinations_paperless_desc") }}</p>
</div>
</div>
<div class="flex items-start bg-white shadow rounded-lg p-5">
<i class="fas fa-server text-gray-500 text-xl mr-3 mt-0.5" aria-hidden="true"></i>
<div>
<h3 class="font-semibold text-gray-800 text-sm">SFTP / FTP</h3>
<p class="text-gray-500 text-xs">Secure file transfer to any server.</p>
<h3 class="font-semibold text-gray-800 text-sm">{{ _("help.destinations_sftp") }}</h3>
<p class="text-gray-500 text-xs">{{ _("help.destinations_sftp_desc") }}</p>
</div>
</div>
<div class="flex items-start bg-white shadow rounded-lg p-5">
<i class="fas fa-envelope text-red-400 text-xl mr-3 mt-0.5" aria-hidden="true"></i>
<div>
<h3 class="font-semibold text-gray-800 text-sm">Email Forwarding</h3>
<p class="text-gray-500 text-xs">Processed files sent as SMTP attachments.</p>
<h3 class="font-semibold text-gray-800 text-sm">{{ _("help.destinations_email") }}</h3>
<p class="text-gray-500 text-xs">{{ _("help.destinations_email_desc") }}</p>
</div>
</div>
<div class="flex items-start bg-white shadow rounded-lg p-5">
<i class="fas fa-link text-indigo-500 text-xl mr-3 mt-0.5" aria-hidden="true"></i>
<div>
<h3 class="font-semibold text-gray-800 text-sm">Webhook</h3>
<p class="text-gray-500 text-xs">POST metadata to any external endpoint.</p>
<h3 class="font-semibold text-gray-800 text-sm">{{ _("help.destinations_webhook") }}</h3>
<p class="text-gray-500 text-xs">{{ _("help.destinations_webhook_desc") }}</p>
</div>
</div>
@@ -250,32 +242,31 @@
<!-- ═══════════════════════ Workflows / Pipelines ═══════════════════════ -->
<section aria-labelledby="workflows-heading" class="mb-16">
<h2 id="workflows-heading" class="text-2xl font-bold text-gray-800 mb-6">
<i class="fas fa-diagram-project text-blue-500 mr-2" aria-hidden="true"></i>Workflows &amp; Pipelines
<i class="fas fa-diagram-project text-blue-500 mr-2" aria-hidden="true"></i>{{ _("help.workflows_heading") }}
</h2>
<div class="bg-white shadow rounded-lg p-6">
<div class="grid gap-6 md:grid-cols-2">
<div>
<h3 class="font-semibold text-gray-800 mb-2">What is a Pipeline?</h3>
<h3 class="font-semibold text-gray-800 mb-2">{{ _("help.workflows_what_is") }}</h3>
<p class="text-gray-600 text-sm leading-relaxed mb-4">
A <strong>Pipeline</strong> 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") }}
</p>
<h3 class="font-semibold text-gray-800 mb-2">Typical Steps</h3>
<h3 class="font-semibold text-gray-800 mb-2">{{ _("help.workflows_typical_steps") }}</h3>
<ol class="list-decimal list-inside text-gray-600 text-sm space-y-1">
<li>Convert to PDF (Gotenberg)</li>
<li>OCR extract text (Azure, Tesseract, Mistral …)</li>
<li>AI metadata extraction (OpenAI, Claude, Gemini …)</li>
<li>Deliver to one or more destinations</li>
<li>{{ _("help.workflows_step_1_full") }}</li>
<li>{{ _("help.workflows_step_2_full") }}</li>
<li>{{ _("help.workflows_step_3_full") }}</li>
<li>{{ _("help.workflows_step_4") }}</li>
</ol>
</div>
<div>
<h3 class="font-semibold text-gray-800 mb-2">Creating a Pipeline</h3>
<h3 class="font-semibold text-gray-800 mb-2">{{ _("help.workflows_creating") }}</h3>
<ol class="list-decimal list-inside text-gray-600 text-sm space-y-2 leading-relaxed">
<li>Go to <strong>Pipelines</strong> in the main menu.</li>
<li>Click <em>New Pipeline</em> and give it a name.</li>
<li>Add the processing steps you need.</li>
<li>Choose one or more delivery destinations.</li>
<li>Save new documents will be processed through this pipeline automatically.</li>
<li>{{ _("help.workflows_step_1_create") }}</li>
<li>{{ _("help.workflows_step_2_create") }}</li>
<li>{{ _("help.workflows_step_3_create") }}</li>
<li>{{ _("help.workflows_step_4_create") }}</li>
<li>{{ _("help.workflows_step_5_create") }}</li>
</ol>
</div>
</div>
@@ -285,47 +276,43 @@
<!-- ═══════════════════════ Data Ingestion Tools ═══════════════════════ -->
<section aria-labelledby="ingestion-heading" class="mb-16">
<h2 id="ingestion-heading" class="text-2xl font-bold text-gray-800 mb-6">
<i class="fas fa-toolbox text-blue-500 mr-2" aria-hidden="true"></i>Ingesting Data with Standard Tools
<i class="fas fa-toolbox text-blue-500 mr-2" aria-hidden="true"></i>{{ _("help.ingestion_heading") }}
</h2>
<div class="bg-white shadow rounded-lg p-6 space-y-6">
<article>
<h3 class="font-semibold text-gray-800 mb-1"><i class="fas fa-terminal mr-2 text-gray-400" aria-hidden="true"></i>cURL</h3>
<p class="text-gray-600 text-sm mb-2">Upload a file from any terminal:</p>
<h3 class="font-semibold text-gray-800 mb-1"><i class="fas fa-terminal mr-2 text-gray-400" aria-hidden="true"></i>{{ _("help.ingestion_curl") }}</h3>
<p class="text-gray-600 text-sm mb-2">{{ _("help.ingestion_curl_desc") }}</p>
<pre class="bg-gray-50 text-sm rounded p-3 overflow-x-auto"><code>curl -X POST https://your-instance/api/upload \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "file=@/path/to/document.pdf"</code></pre>
</article>
<article>
<h3 class="font-semibold text-gray-800 mb-1"><i class="fas fa-folder-open mr-2 text-gray-400" aria-hidden="true"></i>Watched Folders</h3>
<h3 class="font-semibold text-gray-800 mb-1"><i class="fas fa-folder-open mr-2 text-gray-400" aria-hidden="true"></i>{{ _("help.ingestion_watched_folders") }}</h3>
<p class="text-gray-600 text-sm">
Use <strong>inotifywait</strong> (Linux), <strong>fswatch</strong> (macOS), or any file-watcher script to
<code class="bg-gray-100 px-1 rounded text-xs">POST</code> new files as soon as they appear in a local directory.
{{ _("help.ingestion_watched_folders_desc") }}
</p>
</article>
<article>
<h3 class="font-semibold text-gray-800 mb-1"><i class="fas fa-print mr-2 text-gray-400" aria-hidden="true"></i>Network Scanners</h3>
<h3 class="font-semibold text-gray-800 mb-1"><i class="fas fa-print mr-2 text-gray-400" aria-hidden="true"></i>{{ _("help.ingestion_scanners") }}</h3>
<p class="text-gray-600 text-sm">
Configure your HP, Fujitsu ScanSnap, or Brother scanner to use DocuElevate's upload URL as a
<em>Scan-to-Network</em> destination. Scans are processed the moment they arrive.
{{ _("help.ingestion_scanners_desc") }}
</p>
</article>
<article>
<h3 class="font-semibold text-gray-800 mb-1"><i class="fas fa-mobile-screen-button mr-2 text-gray-400" aria-hidden="true"></i>Mobile Scanning Apps</h3>
<h3 class="font-semibold text-gray-800 mb-1"><i class="fas fa-mobile-screen-button mr-2 text-gray-400" aria-hidden="true"></i>{{ _("help.ingestion_mobile") }}</h3>
<p class="text-gray-600 text-sm">
Apps like <strong>Adobe Scan</strong>, <strong>Microsoft Lens</strong>, or <strong>Genius Scan</strong>
can export to a custom HTTP endpoint. Point them at <code class="bg-gray-100 px-1 rounded text-xs">/api/upload</code>.
{{ _("help.ingestion_mobile_desc") }}
</p>
</article>
<article>
<h3 class="font-semibold text-gray-800 mb-1"><i class="fas fa-shuffle mr-2 text-gray-400" aria-hidden="true"></i>Zapier / n8n / Make</h3>
<h3 class="font-semibold text-gray-800 mb-1"><i class="fas fa-shuffle mr-2 text-gray-400" aria-hidden="true"></i>{{ _("help.ingestion_zapier") }}</h3>
<p class="text-gray-600 text-sm">
Connect DocuElevate to thousands of other apps via integration platforms.
Use the HTTP/Webhook module to <code class="bg-gray-100 px-1 rounded text-xs">POST</code> files to the upload API.
{{ _("help.ingestion_zapier_desc") }}
</p>
</article>
@@ -335,7 +322,7 @@
<!-- ═══════════════════════ FAQ ═══════════════════════ -->
<section aria-labelledby="faq-heading" class="mb-16">
<h2 id="faq-heading" class="text-2xl font-bold text-gray-800 mb-6">
<i class="fas fa-circle-question text-blue-500 mr-2" aria-hidden="true"></i>Frequently Asked Questions
<i class="fas fa-circle-question text-blue-500 mr-2" aria-hidden="true"></i>{{ _("help.faq_heading") }}
</h2>
<div class="space-y-4" x-data="{ open: null }">
@@ -345,12 +332,11 @@
@click="open = open === 1 ? null : 1"
:aria-expanded="open === 1 ? 'true' : 'false'"
aria-controls="faq-1">
<span>How do I upload documents?</span>
<span>{{ _("help.faq_1_q") }}</span>
<i class="fas fa-chevron-down text-gray-400 transition-transform" :class="{ 'rotate-180': open === 1 }" aria-hidden="true"></i>
</button>
<div id="faq-1" x-show="open === 1" x-collapse class="px-6 pb-4 text-gray-600 text-sm leading-relaxed">
Navigate to the <strong>Upload</strong> page, drag-and-drop your files or click <em>Choose File</em>.
DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.
{{ _("help.faq_1_a") }}
</div>
</div>
@@ -360,12 +346,11 @@
@click="open = open === 2 ? null : 2"
:aria-expanded="open === 2 ? 'true' : 'false'"
aria-controls="faq-2">
<span>Which file formats are supported?</span>
<span>{{ _("help.faq_2_q") }}</span>
<i class="fas fa-chevron-down text-gray-400 transition-transform" :class="{ 'rotate-180': open === 2 }" aria-hidden="true"></i>
</button>
<div id="faq-2" x-show="open === 2" x-collapse class="px-6 pb-4 text-gray-600 text-sm leading-relaxed">
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") }}
</div>
</div>
@@ -375,12 +360,11 @@
@click="open = open === 3 ? null : 3"
:aria-expanded="open === 3 ? 'true' : 'false'"
aria-controls="faq-3">
<span>Can I ingest documents from email?</span>
<span>{{ _("help.faq_3_q") }}</span>
<i class="fas fa-chevron-down text-gray-400 transition-transform" :class="{ 'rotate-180': open === 3 }" aria-hidden="true"></i>
</button>
<div id="faq-3" x-show="open === 3" x-collapse class="px-6 pb-4 text-gray-600 text-sm leading-relaxed">
Yes. Go to <strong>Email Ingestion</strong>, add an IMAP account, and DocuElevate will poll for new
messages and process attachments automatically.
{{ _("help.faq_3_a") }}
</div>
</div>
@@ -390,12 +374,11 @@
@click="open = open === 4 ? null : 4"
:aria-expanded="open === 4 ? 'true' : 'false'"
aria-controls="faq-4">
<span>How do processing pipelines work?</span>
<span>{{ _("help.faq_4_q") }}</span>
<i class="fas fa-chevron-down text-gray-400 transition-transform" :class="{ 'rotate-180': open === 4 }" aria-hidden="true"></i>
</button>
<div id="faq-4" x-show="open === 4" x-collapse class="px-6 pb-4 text-gray-600 text-sm leading-relaxed">
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 <strong>Pipelines</strong> page.
{{ _("help.faq_4_a") }}
</div>
</div>
@@ -405,12 +388,11 @@
@click="open = open === 5 ? null : 5"
:aria-expanded="open === 5 ? 'true' : 'false'"
aria-controls="faq-5">
<span>Is my data secure?</span>
<span>{{ _("help.faq_5_q") }}</span>
<i class="fas fa-chevron-down text-gray-400 transition-transform" :class="{ 'rotate-180': open === 5 }" aria-hidden="true"></i>
</button>
<div id="faq-5" x-show="open === 5" x-collapse class="px-6 pb-4 text-gray-600 text-sm leading-relaxed">
DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents
longer than necessary. See the <a href="/privacy" class="text-blue-600 hover:underline">Privacy Notice</a> for full details.
{{ _("help.faq_5_a_pre") }}<a href="/privacy" class="text-blue-600 hover:underline">{{ _("help.privacy_notice") }}</a>{{ _("help.faq_5_a_post") }}
</div>
</div>
@@ -420,7 +402,7 @@
<!-- ═══════════════════════ Contact / Support ═══════════════════════ -->
<section aria-labelledby="support-heading" class="mb-10">
<h2 id="support-heading" class="text-2xl font-bold text-gray-800 mb-6">
<i class="fas fa-headset text-blue-500 mr-2" aria-hidden="true"></i>Contact Support
<i class="fas fa-headset text-blue-500 mr-2" aria-hidden="true"></i>{{ _("help.support_heading") }}
</h2>
<div class="grid gap-6 md:grid-cols-2">
@@ -428,7 +410,7 @@
<!-- Left column: info -->
<div class="bg-white shadow rounded-lg p-6 space-y-4">
<p class="text-gray-600 text-sm leading-relaxed">
Can't find what you're looking for? Our support team is here to help.
{{ _("help.support_description") }}
</p>
{% if support_email %}
@@ -441,7 +423,7 @@
{% if zammad_chat_enabled and zammad_url %}
<div class="flex items-center text-sm text-gray-700">
<i class="fas fa-comments text-blue-500 mr-2" aria-hidden="true"></i>
<span>Live chat available look for the chat bubble in the bottom-right corner.</span>
<span>{{ _("help.support_live_chat") }}</span>
</div>
{% endif %}
</div>
@@ -450,22 +432,22 @@
{% if zammad_form_enabled and zammad_url %}
<div class="bg-white shadow rounded-lg p-6">
<h3 class="font-semibold text-gray-800 mb-3">
<i class="fas fa-ticket mr-2 text-gray-400" aria-hidden="true"></i>Open a Support Ticket
<i class="fas fa-ticket mr-2 text-gray-400" aria-hidden="true"></i>{{ _("help.support_ticket_heading") }}
</h3>
<p class="text-gray-600 text-sm mb-4">
Describe your issue below and we'll get back to you as soon as possible.
{{ _("help.support_ticket_desc") }}
</p>
<button id="zammad-feedback-form"
type="button"
class="inline-flex items-center bg-blue-600 hover:bg-blue-700 text-white font-semibold py-2 px-5 rounded-lg transition-colors focus:outline-none focus:ring-2 focus:ring-blue-400 min-h-[44px]">
<i class="fas fa-paper-plane mr-2" aria-hidden="true"></i>Submit a Ticket
<i class="fas fa-paper-plane mr-2" aria-hidden="true"></i>{{ _("help.support_ticket_button") }}
</button>
</div>
{% elif not zammad_form_enabled and not support_email and not zammad_chat_enabled %}
<div class="bg-white shadow rounded-lg p-6 flex flex-col items-center justify-center text-center">
<i class="fas fa-info-circle text-blue-400 text-2xl mb-2" aria-hidden="true"></i>
<p class="text-gray-500 text-sm">
Contact your administrator for support information.
{{ _("help.support_admin_message") }}
</p>
</div>
{% endif %}
+92 -93
View File
@@ -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 %}
<div class="{% if multi_user_enabled and not is_logged_in %}bg-gray-50 min-h-screen{% else %}container mx-auto px-4 py-8{% endif %}">
@@ -13,30 +13,29 @@
<div class="bg-gradient-to-br from-blue-700 via-indigo-700 to-purple-700 text-white py-20 px-4">
<div class="max-w-4xl mx-auto text-center">
<span class="inline-block bg-white/20 text-white text-xs font-semibold uppercase tracking-widest px-3 py-1 rounded-full mb-4">
Intelligent Document Processing
{{ _("index.badge_intelligent") }}
</span>
<h1 class="text-4xl sm:text-5xl font-extrabold mb-4 leading-tight">
From upload to insight — automatically.
{{ _("index.hero_heading") }}
</h1>
<p class="text-indigo-100 text-lg max-w-2xl mx-auto mb-8">
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") }}
</p>
<div class="flex flex-wrap justify-center gap-4">
{% if allow_signup %}
<a href="/signup"
class="bg-white text-indigo-700 hover:bg-indigo-50 font-bold py-3 px-8 rounded-xl shadow-lg transition duration-200 flex items-center min-h-[44px]">
<i class="fas fa-user-plus mr-2" aria-hidden="true"></i> Get Started — it's free
<i class="fas fa-user-plus mr-2" aria-hidden="true"></i> {{ _("index.hero_signup") }}
</a>
{% else %}
<a href="/login"
class="bg-white text-indigo-700 hover:bg-indigo-50 font-bold py-3 px-8 rounded-xl shadow-lg transition duration-200 flex items-center min-h-[44px]">
<i class="fas fa-sign-in-alt mr-2" aria-hidden="true"></i> Log In
<i class="fas fa-sign-in-alt mr-2" aria-hidden="true"></i> {{ _("index.hero_login") }}
</a>
{% endif %}
<a href="/pricing"
class="bg-transparent border-2 border-white text-white hover:bg-white hover:text-indigo-700 font-bold py-3 px-8 rounded-xl transition duration-200 flex items-center min-h-[44px]">
<i class="fas fa-tags mr-2" aria-hidden="true"></i> View Plans &amp; Pricing
<i class="fas fa-tags mr-2" aria-hidden="true"></i> {{ _("index.hero_pricing") }}
</a>
</div>
</div>
@@ -44,7 +43,7 @@
<!-- Feature grid -->
<div class="max-w-6xl mx-auto px-4 py-16">
<h2 class="text-2xl font-bold text-center text-gray-800 mb-10">Everything you need for smart document workflows</h2>
<h2 class="text-2xl font-bold text-center text-gray-800 mb-10">{{ _("index.feature_section_title") }}</h2>
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8">
<div class="bg-white rounded-2xl shadow p-6 flex gap-4">
@@ -52,8 +51,8 @@
<i class="fas fa-file-alt text-blue-600 text-xl" aria-hidden="true"></i>
</div>
<div>
<h3 class="font-semibold text-gray-800 mb-1">OCR &amp; Text Extraction</h3>
<p class="text-gray-500 text-sm">Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.</p>
<h3 class="font-semibold text-gray-800 mb-1">{{ _("index.feature_ocr") }}</h3>
<p class="text-gray-500 text-sm">{{ _("index.feature_ocr_desc") }}</p>
</div>
</div>
@@ -62,8 +61,8 @@
<i class="fas fa-brain text-indigo-600 text-xl" aria-hidden="true"></i>
</div>
<div>
<h3 class="font-semibold text-gray-800 mb-1">AI Metadata Extraction</h3>
<p class="text-gray-500 text-sm">OpenAI, Claude, Gemini, and other pluggable AI providers classify documents and pull out key fields like dates, amounts, and subjects.</p>
<h3 class="font-semibold text-gray-800 mb-1">{{ _("index.feature_ai") }}</h3>
<p class="text-gray-500 text-sm">{{ _("index.feature_ai_desc") }}</p>
</div>
</div>
@@ -72,8 +71,8 @@
<i class="fas fa-cloud-upload-alt text-green-600 text-xl" aria-hidden="true"></i>
</div>
<div>
<h3 class="font-semibold text-gray-800 mb-1">Multi-Cloud Storage</h3>
<p class="text-gray-500 text-sm">Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.</p>
<h3 class="font-semibold text-gray-800 mb-1">{{ _("index.feature_cloud") }}</h3>
<p class="text-gray-500 text-sm">{{ _("index.feature_cloud_desc") }}</p>
</div>
</div>
@@ -82,8 +81,8 @@
<i class="fas fa-mail-bulk text-yellow-600 text-xl" aria-hidden="true"></i>
</div>
<div>
<h3 class="font-semibold text-gray-800 mb-1">Email &amp; IMAP Ingestion</h3>
<p class="text-gray-500 text-sm">Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.</p>
<h3 class="font-semibold text-gray-800 mb-1">{{ _("index.feature_email") }}</h3>
<p class="text-gray-500 text-sm">{{ _("index.feature_email_desc") }}</p>
</div>
</div>
@@ -92,8 +91,8 @@
<i class="fas fa-search text-purple-600 text-xl" aria-hidden="true"></i>
</div>
<div>
<h3 class="font-semibold text-gray-800 mb-1">Full-Text Search</h3>
<p class="text-gray-500 text-sm">Instantly find any document by content, metadata, or tags across your entire archive.</p>
<h3 class="font-semibold text-gray-800 mb-1">{{ _("index.feature_search") }}</h3>
<p class="text-gray-500 text-sm">{{ _("index.feature_search_desc") }}</p>
</div>
</div>
@@ -102,8 +101,8 @@
<i class="fas fa-project-diagram text-pink-600 text-xl" aria-hidden="true"></i>
</div>
<div>
<h3 class="font-semibold text-gray-800 mb-1">Custom Pipelines</h3>
<p class="text-gray-500 text-sm">Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.</p>
<h3 class="font-semibold text-gray-800 mb-1">{{ _("index.feature_pipelines") }}</h3>
<p class="text-gray-500 text-sm">{{ _("index.feature_pipelines_desc") }}</p>
</div>
</div>
@@ -113,23 +112,23 @@
<!-- CTA banner -->
<div class="bg-indigo-700 text-white py-14 px-4">
<div class="max-w-2xl mx-auto text-center">
<h2 class="text-3xl font-extrabold mb-4">Ready to elevate your document workflow?</h2>
<p class="text-indigo-200 mb-8">Join teams already automating their document processing with DocuElevate.</p>
<h2 class="text-3xl font-extrabold mb-4">{{ _("index.cta_heading") }}</h2>
<p class="text-indigo-200 mb-8">{{ _("index.cta_description") }}</p>
<div class="flex flex-wrap justify-center gap-4">
{% if allow_signup %}
<a href="/signup"
class="bg-white text-indigo-700 hover:bg-indigo-50 font-bold py-3 px-8 rounded-xl shadow-lg transition duration-200 flex items-center min-h-[44px]">
<i class="fas fa-rocket mr-2" aria-hidden="true"></i> Create a free account
<i class="fas fa-rocket mr-2" aria-hidden="true"></i> {{ _("index.cta_signup") }}
</a>
{% else %}
<a href="/login"
class="bg-white text-indigo-700 hover:bg-indigo-50 font-bold py-3 px-8 rounded-xl shadow-lg transition duration-200 flex items-center min-h-[44px]">
<i class="fas fa-sign-in-alt mr-2" aria-hidden="true"></i> Log In
<i class="fas fa-sign-in-alt mr-2" aria-hidden="true"></i> {{ _("index.hero_login") }}
</a>
{% endif %}
<a href="/pricing"
class="bg-transparent border-2 border-white text-white hover:bg-white hover:text-indigo-700 font-bold py-3 px-8 rounded-xl transition duration-200 flex items-center min-h-[44px]">
<i class="fas fa-tags mr-2" aria-hidden="true"></i> See pricing
<i class="fas fa-tags mr-2" aria-hidden="true"></i> {{ _("index.cta_pricing") }}
</a>
</div>
</div>
@@ -145,16 +144,16 @@
<div class="flex flex-col md:flex-row md:items-center md:justify-between gap-4">
<div>
<h1 class="text-3xl font-bold mb-1">DocuElevate</h1>
<p class="text-blue-100 text-sm">Intelligent document processing &amp; management — built for teams</p>
<p class="text-blue-100 text-sm">{{ _("index.dashboard_subtitle_teams") }}</p>
</div>
<div class="flex flex-wrap gap-3">
<a href="/upload"
class="bg-white text-blue-700 hover:bg-blue-50 font-semibold py-2 px-5 rounded-lg transition duration-200 flex items-center shadow-sm">
<i class="fas fa-upload mr-2" aria-hidden="true"></i> Upload
<i class="fas fa-upload mr-2" aria-hidden="true"></i> {{ _("index.button_upload") }}
</a>
<a href="/files"
class="bg-transparent border border-white text-white hover:bg-white hover:text-blue-700 font-semibold py-2 px-5 rounded-lg transition duration-200 flex items-center">
<i class="fas fa-list mr-2" aria-hidden="true"></i> Browse Files
<i class="fas fa-list mr-2" aria-hidden="true"></i> {{ _("index.button_browse_files") }}
</a>
</div>
</div>
@@ -162,7 +161,7 @@
<!-- Platform stats row (admin only) -->
{% if is_admin %}
<h2 class="text-sm font-semibold text-gray-400 uppercase tracking-widest mb-3">Platform overview</h2>
<h2 class="text-sm font-semibold text-gray-400 uppercase tracking-widest mb-3">{{ _("index.platform_overview") }}</h2>
<div class="grid grid-cols-2 sm:grid-cols-4 gap-4 mb-8">
<div class="bg-white rounded-xl shadow p-5 flex items-center gap-3">
<div class="h-10 w-10 rounded-full bg-blue-100 flex items-center justify-center flex-shrink-0">
@@ -170,7 +169,7 @@
</div>
<div>
<p class="text-2xl font-extrabold text-blue-600">{{ stats.processed_files | default(0) }}</p>
<p class="text-gray-500 text-xs">Total files</p>
<p class="text-gray-500 text-xs">{{ _("index.stat_total_files") }}</p>
</div>
</div>
<div class="bg-white rounded-xl shadow p-5 flex items-center gap-3">
@@ -179,7 +178,7 @@
</div>
<div>
<p class="text-2xl font-extrabold text-green-600">{{ stats.files_today | default(0) }}</p>
<p class="text-gray-500 text-xs">Files today</p>
<p class="text-gray-500 text-xs">{{ _("index.stat_files_today") }}</p>
</div>
</div>
<div class="bg-white rounded-xl shadow p-5 flex items-center gap-3">
@@ -188,7 +187,7 @@
</div>
<div>
<p class="text-2xl font-extrabold text-indigo-600">{{ stats.files_month | default(0) }}</p>
<p class="text-gray-500 text-xs">Files this month</p>
<p class="text-gray-500 text-xs">{{ _("index.stat_files_month") }}</p>
</div>
</div>
<div class="bg-white rounded-xl shadow p-5 flex items-center gap-3">
@@ -197,7 +196,7 @@
</div>
<div>
<p class="text-2xl font-extrabold text-purple-600">{{ stats.unique_users | default(0) }}</p>
<p class="text-gray-500 text-xs">Active users</p>
<p class="text-gray-500 text-xs">{{ _("index.stat_active_users") }}</p>
</div>
</div>
</div>
@@ -205,7 +204,7 @@
<!-- My usage / subscription widget -->
{% if user_tier and user_usage %}
<h2 class="text-sm font-semibold text-gray-400 uppercase tracking-widest mb-3">My usage</h2>
<h2 class="text-sm font-semibold text-gray-400 uppercase tracking-widest mb-3">{{ _("index.usage_my_usage") }}</h2>
<div class="bg-white rounded-xl shadow p-6 mb-8">
<div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4 mb-4">
<div class="flex items-center gap-3">
@@ -220,16 +219,16 @@
{% elif user_tier.id == 'professional' %}fa-star
{% else %}fa-building{% endif %}
mr-1" aria-hidden="true"></i>
{{ user_tier.name }} Plan
{{ user_tier.name }} {{ _("index.tier_plan") }}
</span>
{% if user_tier.id != 'business' %}
<a href="/pricing" class="text-xs text-indigo-600 hover:text-indigo-800 font-medium">
Upgrade <i class="fas fa-arrow-up-right-from-square ml-0.5 text-xs" aria-hidden="true"></i>
{{ _("index.tier_upgrade") }} <i class="fas fa-arrow-up-right-from-square ml-0.5 text-xs" aria-hidden="true"></i>
</a>
{% endif %}
</div>
<a href="/subscription" class="text-xs text-gray-500 hover:text-gray-700">
View full details →
{{ _("index.tier_view_details") }}
</a>
</div>
@@ -237,7 +236,7 @@
<!-- Lifetime -->
<div>
<div class="flex justify-between text-xs mb-1">
<span class="text-gray-500">Lifetime files</span>
<span class="text-gray-500">{{ _("index.usage_lifetime") }}</span>
<span class="font-semibold text-gray-700">
{{ user_usage.lifetime }}{% if user_tier.lifetime_file_limit > 0 %} / {{ user_tier.lifetime_file_limit }}{% endif %}
</span>
@@ -250,13 +249,13 @@
style="width: {{ pct }}%"></div>
</div>
{% else %}
<div class="text-xs text-green-600">Unlimited</div>
<div class="text-xs text-green-600">{{ _("index.usage_unlimited") }}</div>
{% endif %}
</div>
<!-- Today -->
<div>
<div class="flex justify-between text-xs mb-1">
<span class="text-gray-500">Files today</span>
<span class="text-gray-500">{{ _("index.usage_today") }}</span>
<span class="font-semibold text-gray-700">
{{ user_usage.today }}{% if user_tier.daily_upload_limit > 0 %} / {{ user_tier.daily_upload_limit }}{% endif %}
</span>
@@ -269,13 +268,13 @@
style="width: {{ pct }}%"></div>
</div>
{% else %}
<div class="text-xs text-green-600">Unlimited</div>
<div class="text-xs text-green-600">{{ _("index.usage_unlimited") }}</div>
{% endif %}
</div>
<!-- This month -->
<div>
<div class="flex justify-between text-xs mb-1">
<span class="text-gray-500">Files this month</span>
<span class="text-gray-500">{{ _("index.usage_month") }}</span>
<span class="font-semibold text-gray-700">
{{ user_usage.month }}{% if user_tier.monthly_upload_limit > 0 %} / {{ user_tier.monthly_upload_limit }}{% endif %}
</span>
@@ -288,7 +287,7 @@
style="width: {{ pct }}%"></div>
</div>
{% else %}
<div class="text-xs text-green-600">Unlimited</div>
<div class="text-xs text-green-600">{{ _("index.usage_unlimited") }}</div>
{% endif %}
</div>
</div>
@@ -300,7 +299,7 @@
<!-- Quick Actions -->
<div class="bg-white rounded-xl shadow p-6">
<h2 class="text-lg font-semibold text-gray-900 mb-4 flex items-center gap-2">
<i class="fas fa-bolt text-yellow-500" aria-hidden="true"></i> Quick Actions
<i class="fas fa-bolt text-yellow-500" aria-hidden="true"></i> {{ _("index.quick_actions") }}
</h2>
<ul class="space-y-2">
<li>
@@ -309,8 +308,8 @@
<i class="fas fa-upload text-blue-600 text-sm" aria-hidden="true"></i>
</span>
<div>
<p class="text-sm font-medium text-gray-800">Upload Document</p>
<p class="text-xs text-gray-400">Process a new file</p>
<p class="text-sm font-medium text-gray-800">{{ _("index.quick_upload") }}</p>
<p class="text-xs text-gray-400">{{ _("index.quick_upload_desc") }}</p>
</div>
</a>
</li>
@@ -320,8 +319,8 @@
<i class="fas fa-list text-indigo-600 text-sm" aria-hidden="true"></i>
</span>
<div>
<p class="text-sm font-medium text-gray-800">My Documents</p>
<p class="text-xs text-gray-400">Browse your processed files</p>
<p class="text-sm font-medium text-gray-800">{{ _("index.quick_documents") }}</p>
<p class="text-xs text-gray-400">{{ _("index.quick_documents_desc") }}</p>
</div>
</a>
</li>
@@ -331,8 +330,8 @@
<i class="fas fa-layer-group text-purple-600 text-sm" aria-hidden="true"></i>
</span>
<div>
<p class="text-sm font-medium text-gray-800">My Subscription</p>
<p class="text-xs text-gray-400">View plan &amp; usage details</p>
<p class="text-sm font-medium text-gray-800">{{ _("index.quick_subscription") }}</p>
<p class="text-xs text-gray-400">{{ _("index.quick_subscription_desc") }}</p>
</div>
</a>
</li>
@@ -342,8 +341,8 @@
<i class="fas fa-search text-green-600 text-sm" aria-hidden="true"></i>
</span>
<div>
<p class="text-sm font-medium text-gray-800">Search</p>
<p class="text-xs text-gray-400">Full-text search across documents</p>
<p class="text-sm font-medium text-gray-800">{{ _("index.quick_search") }}</p>
<p class="text-xs text-gray-400">{{ _("index.quick_search_desc") }}</p>
</div>
</a>
</li>
@@ -353,30 +352,30 @@
<!-- Processing stats -->
<div class="bg-white rounded-xl shadow p-6">
<h2 class="text-lg font-semibold text-gray-900 mb-4 flex items-center gap-2">
<i class="fas fa-chart-bar text-blue-500" aria-hidden="true"></i> Processing Stats
<i class="fas fa-chart-bar text-blue-500" aria-hidden="true"></i> {{ _("index.processing_stats") }}
</h2>
<ul class="space-y-3 text-sm">
<li class="flex items-center justify-between py-2 border-b border-gray-100">
<span class="text-gray-600 flex items-center gap-2">
<i class="fas fa-file-alt text-blue-400 w-4" aria-hidden="true"></i> Total processed
<i class="fas fa-file-alt text-blue-400 w-4" aria-hidden="true"></i> {{ _("index.stat_total_processed") }}
</span>
<span class="font-bold text-gray-900">{{ stats.processed_files | default(0) }}</span>
</li>
<li class="flex items-center justify-between py-2 border-b border-gray-100">
<span class="text-gray-600 flex items-center gap-2">
<i class="fas fa-eye text-indigo-400 w-4" aria-hidden="true"></i> Files with OCR
<i class="fas fa-eye text-indigo-400 w-4" aria-hidden="true"></i> {{ _("index.stat_files_ocr") }}
</span>
<span class="font-bold text-gray-900">{{ stats.files_with_ocr | default(0) }}</span>
</li>
<li class="flex items-center justify-between py-2 border-b border-gray-100">
<span class="text-gray-600 flex items-center gap-2">
<i class="fas fa-calendar-day text-green-400 w-4" aria-hidden="true"></i> Today
<i class="fas fa-calendar-day text-green-400 w-4" aria-hidden="true"></i> {{ _("index.stat_today") }}
</span>
<span class="font-bold text-gray-900">{{ stats.files_today | default(0) }}</span>
</li>
<li class="flex items-center justify-between py-2">
<span class="text-gray-600 flex items-center gap-2">
<i class="fas fa-calendar-alt text-orange-400 w-4" aria-hidden="true"></i> This month
<i class="fas fa-calendar-alt text-orange-400 w-4" aria-hidden="true"></i> {{ _("index.stat_this_month") }}
</span>
<span class="font-bold text-gray-900">{{ stats.files_month | default(0) }}</span>
</li>
@@ -388,39 +387,39 @@
<div class="bg-gradient-to-br from-indigo-600 to-purple-700 rounded-xl shadow p-6 text-white flex flex-col justify-between">
<div>
<h2 class="text-lg font-semibold mb-2 flex items-center gap-2">
<i class="fas fa-arrow-up-right-dots" aria-hidden="true"></i> Upgrade your plan
<i class="fas fa-arrow-up-right-dots" aria-hidden="true"></i> {{ _("index.upgrade_plan") }}
</h2>
<p class="text-indigo-100 text-sm mb-4">
Unlock more documents, more destinations and priority support.
{{ _("index.upgrade_description") }}
</p>
<ul class="space-y-1.5 text-sm text-indigo-100">
<li class="flex items-center gap-2"><i class="fas fa-check-circle text-indigo-300" aria-hidden="true"></i> Higher daily &amp; monthly limits</li>
<li class="flex items-center gap-2"><i class="fas fa-check-circle text-indigo-300" aria-hidden="true"></i> More storage destinations</li>
<li class="flex items-center gap-2"><i class="fas fa-check-circle text-indigo-300" aria-hidden="true"></i> More OCR pages</li>
<li class="flex items-center gap-2"><i class="fas fa-check-circle text-indigo-300" aria-hidden="true"></i> {{ _("index.upgrade_daily_limits") }}</li>
<li class="flex items-center gap-2"><i class="fas fa-check-circle text-indigo-300" aria-hidden="true"></i> {{ _("index.upgrade_destinations") }}</li>
<li class="flex items-center gap-2"><i class="fas fa-check-circle text-indigo-300" aria-hidden="true"></i> {{ _("index.upgrade_ocr_pages") }}</li>
</ul>
</div>
<a href="/pricing"
class="mt-6 inline-flex items-center justify-center bg-white text-indigo-700 font-semibold px-5 py-2.5 rounded-lg hover:bg-indigo-50 transition shadow">
View plans &amp; pricing <i class="fas fa-arrow-right ml-2 text-xs" aria-hidden="true"></i>
{{ _("index.upgrade_view_pricing") }} <i class="fas fa-arrow-right ml-2 text-xs" aria-hidden="true"></i>
</a>
</div>
{% else %}
<div class="bg-white rounded-xl shadow p-6">
<h2 class="text-lg font-semibold text-gray-900 mb-4 flex items-center gap-2">
<i class="fas fa-plug text-green-500" aria-hidden="true"></i> Integrations
<i class="fas fa-plug text-green-500" aria-hidden="true"></i> {{ _("index.integrations_title") }}
</h2>
<div class="space-y-3 text-sm text-gray-600">
<div class="flex items-center justify-between">
<span>Active integrations</span>
<span>{{ _("index.integrations_active") }}</span>
<span class="font-bold text-green-600">{{ stats.active_integrations | default(0) }}</span>
</div>
<div class="flex items-center justify-between">
<span>Storage targets</span>
<span>{{ _("index.integrations_storage") }}</span>
<span class="font-bold text-indigo-600">{{ stats.storage_targets | default(0) }}</span>
</div>
</div>
<a href="/status" class="mt-4 inline-flex items-center text-xs text-indigo-600 hover:text-indigo-800">
View system status <i class="fas fa-arrow-right ml-1" aria-hidden="true"></i>
{{ _("index.integrations_view_status") }} <i class="fas fa-arrow-right ml-1" aria-hidden="true"></i>
</a>
</div>
{% endif %}
@@ -435,15 +434,15 @@
<div class="bg-gradient-to-r from-blue-600 to-indigo-700 rounded-xl shadow-lg text-white p-8 mb-8">
<div class="flex flex-col md:flex-row md:items-center md:justify-between gap-4">
<div>
<h1 class="text-3xl font-bold mb-1">DocuElevate Dashboard</h1>
<p class="text-blue-100 text-sm">Intelligent document processing &amp; management</p>
<h1 class="text-3xl font-bold mb-1">{{ _("index.single_user_heading") }}</h1>
<p class="text-blue-100 text-sm">{{ _("index.dashboard_subtitle") }}</p>
</div>
<div class="flex flex-wrap gap-3">
<a href="/upload" class="bg-white text-blue-700 hover:bg-blue-50 font-semibold py-2 px-5 rounded-lg transition duration-200 flex items-center shadow-sm">
<i class="fas fa-upload mr-2" aria-hidden="true"></i> Upload
<i class="fas fa-upload mr-2" aria-hidden="true"></i> {{ _("index.button_upload") }}
</a>
<a href="/files" class="bg-transparent border border-white text-white hover:bg-white hover:text-blue-700 font-semibold py-2 px-5 rounded-lg transition duration-200 flex items-center">
<i class="fas fa-list mr-2" aria-hidden="true"></i> Browse Files
<i class="fas fa-list mr-2" aria-hidden="true"></i> {{ _("index.button_browse_files") }}
</a>
</div>
</div>
@@ -457,7 +456,7 @@
</div>
<div>
<p class="text-3xl font-bold text-blue-600">{{ stats.processed_files | default(0) }}</p>
<p class="text-gray-500 text-sm">Documents Processed</p>
<p class="text-gray-500 text-sm">{{ _("index.stat_documents_processed") }}</p>
</div>
</div>
<div class="bg-white rounded-xl shadow p-6 flex items-center gap-4">
@@ -466,7 +465,7 @@
</div>
<div>
<p class="text-3xl font-bold text-green-600">{{ stats.active_integrations | default(0) }}</p>
<p class="text-gray-500 text-sm">Active Integrations</p>
<p class="text-gray-500 text-sm">{{ _("index.stat_active_integrations") }}</p>
</div>
</div>
<div class="bg-white rounded-xl shadow p-6 flex items-center gap-4">
@@ -475,7 +474,7 @@
</div>
<div>
<p class="text-3xl font-bold text-indigo-600">{{ stats.storage_targets | default(0) }}</p>
<p class="text-gray-500 text-sm">Storage Targets</p>
<p class="text-gray-500 text-sm">{{ _("index.stat_storage_targets") }}</p>
</div>
</div>
</div>
@@ -486,7 +485,7 @@
<!-- Quick Actions Widget -->
<div class="bg-white rounded-xl shadow p-6">
<h2 class="text-lg font-semibold text-gray-900 mb-4 flex items-center gap-2">
<i class="fas fa-bolt text-yellow-500" aria-hidden="true"></i> Quick Actions
<i class="fas fa-bolt text-yellow-500" aria-hidden="true"></i> {{ _("index.quick_actions") }}
</h2>
<ul class="space-y-2">
<li>
@@ -495,8 +494,8 @@
<i class="fas fa-upload text-blue-600 text-sm" aria-hidden="true"></i>
</span>
<div>
<p class="text-sm font-medium text-gray-800">Upload Document</p>
<p class="text-xs text-gray-400">Process a new file</p>
<p class="text-sm font-medium text-gray-800">{{ _("index.quick_upload") }}</p>
<p class="text-xs text-gray-400">{{ _("index.quick_upload_desc") }}</p>
</div>
</a>
</li>
@@ -506,8 +505,8 @@
<i class="fas fa-list text-indigo-600 text-sm" aria-hidden="true"></i>
</span>
<div>
<p class="text-sm font-medium text-gray-800">View All Files</p>
<p class="text-xs text-gray-400">Browse processed documents</p>
<p class="text-sm font-medium text-gray-800">{{ _("index.quick_view_files") }}</p>
<p class="text-xs text-gray-400">{{ _("index.quick_view_files_desc") }}</p>
</div>
</a>
</li>
@@ -517,8 +516,8 @@
<i class="fas fa-heartbeat text-green-600 text-sm" aria-hidden="true"></i>
</span>
<div>
<p class="text-sm font-medium text-gray-800">System Status</p>
<p class="text-xs text-gray-400">Check integration health</p>
<p class="text-sm font-medium text-gray-800">{{ _("index.quick_system_status") }}</p>
<p class="text-xs text-gray-400">{{ _("index.quick_system_status_desc") }}</p>
</div>
</a>
</li>
@@ -528,28 +527,28 @@
<!-- Capabilities Widget -->
<div class="bg-white rounded-xl shadow p-6">
<h2 class="text-lg font-semibold text-gray-900 mb-4 flex items-center gap-2">
<i class="fas fa-cubes text-blue-500" aria-hidden="true"></i> Capabilities
<i class="fas fa-cubes text-blue-500" aria-hidden="true"></i> {{ _("index.capabilities_title") }}
</h2>
<ul class="space-y-3 text-sm text-gray-600">
<li class="flex items-start gap-2">
<i class="fas fa-check-circle text-green-500 mt-0.5 flex-shrink-0" aria-hidden="true"></i>
<span>OCR &amp; metadata extraction with AI</span>
<span>{{ _("index.capabilities_ocr") }}</span>
</li>
<li class="flex items-start gap-2">
<i class="fas fa-check-circle text-green-500 mt-0.5 flex-shrink-0" aria-hidden="true"></i>
<span>Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud</span>
<span>{{ _("index.capabilities_cloud") }}</span>
</li>
<li class="flex items-start gap-2">
<i class="fas fa-check-circle text-green-500 mt-0.5 flex-shrink-0" aria-hidden="true"></i>
<span>Paperless-ngx integration for document management</span>
<span>{{ _("index.capabilities_paperless") }}</span>
</li>
<li class="flex items-start gap-2">
<i class="fas fa-check-circle text-green-500 mt-0.5 flex-shrink-0" aria-hidden="true"></i>
<span>Email &amp; URL-based document ingestion</span>
<span>{{ _("index.capabilities_ingestion") }}</span>
</li>
<li class="flex items-start gap-2">
<i class="fas fa-check-circle text-green-500 mt-0.5 flex-shrink-0" aria-hidden="true"></i>
<span>Automated classification &amp; routing workflows</span>
<span>{{ _("index.capabilities_workflows") }}</span>
</li>
</ul>
</div>
@@ -558,25 +557,25 @@
<div class="bg-white rounded-xl shadow p-6 flex flex-col justify-between">
<div>
<h2 class="text-lg font-semibold text-gray-900 mb-4 flex items-center gap-2">
<i class="fas fa-compass text-indigo-500" aria-hidden="true"></i> Getting Started
<i class="fas fa-compass text-indigo-500" aria-hidden="true"></i> {{ _("index.getting_started") }}
</h2>
<ol class="space-y-3 text-sm text-gray-600 list-none">
<li class="flex items-start gap-2">
<span class="h-5 w-5 rounded-full bg-blue-600 text-white text-xs flex items-center justify-center flex-shrink-0 font-bold mt-0.5">1</span>
Configure integrations via <a href="/status" class="text-blue-600 hover:underline">System Status</a>
{{ _("index.getting_started_1_pre") }}<a href="/status" class="text-blue-600 hover:underline">{{ _("index.quick_system_status") }}</a>
</li>
<li class="flex items-start gap-2">
<span class="h-5 w-5 rounded-full bg-blue-600 text-white text-xs flex items-center justify-center flex-shrink-0 font-bold mt-0.5">2</span>
<a href="/upload" class="text-blue-600 hover:underline">Upload</a> your first document
<a href="/upload" class="text-blue-600 hover:underline">{{ _("index.button_upload") }}</a>{{ _("index.getting_started_2_post") }}
</li>
<li class="flex items-start gap-2">
<span class="h-5 w-5 rounded-full bg-blue-600 text-white text-xs flex items-center justify-center flex-shrink-0 font-bold mt-0.5">3</span>
Review results in <a href="/files" class="text-blue-600 hover:underline">Files</a>
{{ _("index.getting_started_3_pre") }}<a href="/files" class="text-blue-600 hover:underline">{{ _("index.link_files") }}</a>
</li>
</ol>
</div>
<a href="/about" class="mt-6 inline-flex items-center text-sm text-indigo-600 hover:text-indigo-800 font-medium">
Learn more about DocuElevate <i class="fas fa-arrow-right ml-1 text-xs" aria-hidden="true"></i>
{{ _("index.getting_started_learn") }} <i class="fas fa-arrow-right ml-1 text-xs" aria-hidden="true"></i>
</a>
</div>
</div>
+18 -18
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DocuElevate - Login</title>
<title>{{ _("app.name") }} - {{ _("auth.login_title") }}</title>
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA=="
@@ -12,10 +12,10 @@
<body class="bg-gray-100 h-screen flex items-center justify-center">
<main class="bg-white rounded-lg shadow-lg p-8 max-w-md w-full" role="main">
<div class="flex justify-center mb-6">
<img src="/static/images/logo_writing.svg" alt="DocuElevate Logo" class="h-16">
<img src="/static/images/logo_writing.svg" alt="{{ _('auth.logo_alt') }}" class="h-16">
</div>
<h1 class="text-2xl font-bold text-center text-gray-800 mb-6">Welcome to DocuElevate</h1>
<h1 class="text-2xl font-bold text-center text-gray-800 mb-6">{{ _("dashboard.welcome") }}</h1>
{% if error %}
<div class="bg-red-100 border-l-4 border-red-500 text-red-700 p-4 mb-6" role="alert">
@@ -31,33 +31,33 @@
<!-- Local authentication form -->
<div class="mb-8" id="local-auth">
<h2 class="text-lg font-semibold mb-4 text-gray-700">Sign in with username</h2>
<h2 class="text-lg font-semibold mb-4 text-gray-700">{{ _("auth.sign_in_with_username") }}</h2>
<form method="POST" action="/auth" class="space-y-4">
<input type="hidden" name="csrf_token" value="{{ csrf_token | default('', true) }}">
<div>
<label for="username" class="block text-sm font-medium text-gray-700">Username or Email</label>
<label for="username" class="block text-sm font-medium text-gray-700">{{ _("auth.username_or_email") }}</label>
<input type="text" id="username" name="username" required
autocomplete="username"
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring focus:ring-blue-500 focus:ring-opacity-50">
</div>
<div>
<label for="password" class="block text-sm font-medium text-gray-700">Password</label>
<label for="password" class="block text-sm font-medium text-gray-700">{{ _("auth.password_label") }}</label>
<input type="password" id="password" name="password" required
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring focus:ring-blue-500 focus:ring-opacity-50">
</div>
<button type="submit" class="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
Sign in
{{ _("auth.sign_in") }}
</button>
</form>
<div class="mt-3 text-center space-x-3">
<a href="/forgot-password" class="text-sm text-blue-600 hover:text-blue-500">
Forgot password?
{{ _("auth.forgot_password") }}
</a>
<span class="text-gray-300" aria-hidden="true">|</span>
<a href="/forgot-username" class="text-sm text-blue-600 hover:text-blue-500">
Forgot username?
{{ _("auth.forgot_username") }}
</a>
</div>
</div>
@@ -69,7 +69,7 @@
<div class="w-full border-t border-gray-300"></div>
</div>
<div class="relative flex justify-center text-sm">
<span class="px-2 bg-white text-gray-500">Or continue with</span>
<span class="px-2 bg-white text-gray-500">{{ _("auth.or_continue_with") }}</span>
</div>
</div>
@@ -77,7 +77,7 @@
<a href="/oauth-login"
class="w-full inline-flex justify-center py-2 px-4 border border-gray-300 rounded-md shadow-sm bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
style="min-height:44px; min-width:44px">
<span class="sr-only">Sign in with SSO</span>
<span class="sr-only">{{ _("auth.sign_in_sso") }}</span>
<i class="fas fa-lock mr-2" aria-hidden="true"></i>
{{ oauth_provider_name }}
</a>
@@ -92,7 +92,7 @@
<div class="w-full border-t border-gray-300"></div>
</div>
<div class="relative flex justify-center text-sm">
<span class="px-2 bg-white text-gray-500">Or continue with</span>
<span class="px-2 bg-white text-gray-500">{{ _("auth.or_continue_with") }}</span>
</div>
</div>
{% endif %}
@@ -102,9 +102,9 @@
<a href="/social-login/{{ provider_key }}"
class="w-full inline-flex items-center justify-center py-2 px-4 border border-gray-300 rounded-md shadow-sm bg-white text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
style="min-height:44px; min-width:44px"
aria-label="Sign in with {{ provider.name }}">
aria-label="{{ _('auth.sign_in_with') }} {{ provider.name }}">
<i class="{{ provider.icon }} mr-2" aria-hidden="true"></i>
Sign in with {{ provider.name }}
{{ _("auth.sign_in_with") }} {{ provider.name }}
</a>
{% endfor %}
</div>
@@ -112,21 +112,21 @@
<div class="mt-8 text-center">
<a href="/" class="text-sm font-medium text-blue-600 hover:text-blue-500">
Return to Home
{{ _("auth.return_home") }}
</a>
</div>
{% if allow_signup %}
<div class="mt-4 text-center">
<span class="text-sm text-gray-600">Don't have an account?</span>
<span class="text-sm text-gray-600">{{ _("auth.no_account") }}</span>
<a href="/signup" class="ml-1 text-sm font-medium text-indigo-600 hover:text-indigo-500">
Create account
{{ _("auth.create_account") }}
</a>
</div>
{% endif %}
</main>
<div class="fixed bottom-4 text-center w-full text-xs text-gray-500">
DocuElevate {{ app_version|default('', true) }}
{{ _("app.name") }} {{ app_version|default('', true) }}
</div>
</body>
</html>
+42 -42
View File
@@ -1,5 +1,5 @@
{% extends "base.html" %}
{% block title %}Processing Pipelines DocuElevate{% endblock %}
{% block title %}{{ _("pipelines.title") }} DocuElevate{% endblock %}
{% block content %}
<div class="container mx-auto px-4 py-8" x-data="pipelinesApp()" x-init="init()">
@@ -9,13 +9,13 @@
<div>
<h1 class="text-3xl font-bold text-gray-900 dark:text-white flex items-center gap-2">
<i class="fas fa-project-diagram text-blue-500" aria-hidden="true"></i>
Processing Pipelines
{{ _("pipelines.page_title") }}
</h1>
<p class="text-gray-500 dark:text-gray-400 text-sm mt-1">
Define and manage custom document processing workflows.
System pipelines (created by admins) are shown with a
<span class="text-xs font-semibold text-purple-700 bg-purple-50 border border-purple-200 rounded px-1">System</span>
badge and are visible to all users.
{{ _("pipelines.subtitle_intro") }}
{{ _("pipelines.subtitle_system_pre") }}
<span class="text-xs font-semibold text-purple-700 bg-purple-50 border border-purple-200 rounded px-1">{{ _("pipelines.system_label") }}</span>
{{ _("pipelines.subtitle_system_post") }}
</p>
</div>
<button
@@ -24,7 +24,7 @@
class="inline-flex items-center px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white text-sm font-medium rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
style="min-height:44px;"
>
<i class="fas fa-plus mr-2" aria-hidden="true"></i> New Pipeline
<i class="fas fa-plus mr-2" aria-hidden="true"></i> {{ _("pipelines.new_pipeline_btn") }}
</button>
</div>
@@ -51,7 +51,7 @@
<template x-if="loading">
<div class="text-center py-12 text-gray-400">
<i class="fas fa-spinner fa-spin text-3xl mb-3" aria-hidden="true"></i>
<p>Loading pipelines</p>
<p>{{ _("pipelines.loading") }}</p>
</div>
</template>
@@ -59,15 +59,15 @@
<template x-if="!loading && pipelines.length === 0">
<div class="text-center py-16 bg-white dark:bg-gray-800 rounded-lg shadow">
<i class="fas fa-project-diagram text-5xl text-gray-300 mb-4" aria-hidden="true"></i>
<h2 class="text-xl font-semibold text-gray-700 dark:text-gray-300 mb-2">No pipelines yet</h2>
<p class="text-gray-500 dark:text-gray-400 mb-6">Create your first pipeline to define custom document processing workflows.</p>
<h2 class="text-xl font-semibold text-gray-700 dark:text-gray-300 mb-2">{{ _("pipelines.empty_state") }}</h2>
<p class="text-gray-500 dark:text-gray-400 mb-6">{{ _("pipelines.empty_state_hint") }}</p>
<button
type="button"
@click="openCreatePipelineModal()"
class="inline-flex items-center px-5 py-2.5 bg-blue-600 hover:bg-blue-700 text-white text-sm font-medium rounded-md"
style="min-height:44px;"
>
<i class="fas fa-plus mr-2" aria-hidden="true"></i> Create Pipeline
<i class="fas fa-plus mr-2" aria-hidden="true"></i> {{ _("pipelines.create") }}
</button>
</div>
</template>
@@ -84,13 +84,13 @@
<h2 class="text-lg font-semibold text-gray-900 dark:text-white" x-text="pipeline.name"></h2>
<!-- Badges -->
<template x-if="pipeline.owner_id === null">
<span class="text-xs font-semibold text-purple-700 bg-purple-50 border border-purple-200 rounded px-1.5 py-0.5">System</span>
<span class="text-xs font-semibold text-purple-700 bg-purple-50 border border-purple-200 rounded px-1.5 py-0.5">{{ _("pipelines.system_label") }}</span>
</template>
<template x-if="pipeline.is_default">
<span class="text-xs font-semibold text-green-700 bg-green-50 border border-green-200 rounded px-1.5 py-0.5">Default</span>
<span class="text-xs font-semibold text-green-700 bg-green-50 border border-green-200 rounded px-1.5 py-0.5">{{ _("pipelines.default_label") }}</span>
</template>
<template x-if="!pipeline.is_active">
<span class="text-xs font-semibold text-gray-500 bg-gray-100 border border-gray-200 rounded px-1.5 py-0.5">Inactive</span>
<span class="text-xs font-semibold text-gray-500 bg-gray-100 border border-gray-200 rounded px-1.5 py-0.5">{{ _("pipelines.inactive_label") }}</span>
</template>
</div>
@@ -115,7 +115,7 @@
style="min-height:36px;"
:aria-label="`Edit pipeline ${pipeline.name}`"
>
<i class="fas fa-pencil-alt mr-1" aria-hidden="true"></i> Edit
<i class="fas fa-pencil-alt mr-1" aria-hidden="true"></i> {{ _("common.edit") }}
</button>
<button
type="button"
@@ -124,7 +124,7 @@
style="min-height:36px;"
:aria-label="`Delete pipeline ${pipeline.name}`"
>
<i class="fas fa-trash mr-1" aria-hidden="true"></i> Delete
<i class="fas fa-trash mr-1" aria-hidden="true"></i> {{ _("common.delete") }}
</button>
</div>
</div>
@@ -139,7 +139,7 @@
<!-- Step list -->
<template x-if="(pipeline.steps || []).length === 0">
<p class="text-sm text-gray-400 italic mb-3">No steps defined. Add a step to start building your pipeline.</p>
<p class="text-sm text-gray-400 italic mb-3">{{ _("pipelines.no_steps") }}</p>
</template>
<template x-if="(pipeline.steps || []).length > 0">
@@ -153,7 +153,7 @@
<p class="text-xs text-gray-400 truncate" x-text="step.step_type"></p>
</div>
<template x-if="!step.enabled">
<span class="text-xs text-gray-400 bg-gray-200 rounded px-1.5 py-0.5 flex-shrink-0">Disabled</span>
<span class="text-xs text-gray-400 bg-gray-200 rounded px-1.5 py-0.5 flex-shrink-0">{{ _("pipelines.disabled_label") }}</span>
</template>
</div>
<div class="flex items-center gap-1.5 flex-shrink-0">
@@ -201,7 +201,7 @@
style="min-height:36px;"
:aria-label="`Add step to ${pipeline.name}`"
>
<i class="fas fa-plus mr-1" aria-hidden="true"></i> Add Step
<i class="fas fa-plus mr-1" aria-hidden="true"></i> {{ _("pipelines.add_step_btn") }}
</button>
</div>
@@ -241,7 +241,7 @@
<!-- Name -->
<div>
<label for="pipelineName" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">
Name <span aria-hidden="true" class="text-red-500">*</span>
{{ _("common.name") }} <span aria-hidden="true" class="text-red-500">*</span>
</label>
<input
id="pipelineName"
@@ -250,21 +250,21 @@
maxlength="255"
required
class="w-full border border-gray-300 dark:border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-400 dark:bg-gray-700 dark:text-white"
placeholder="My pipeline"
placeholder="{{ _('pipelines.name_placeholder') }}"
autocomplete="off"
/>
</div>
<!-- Description -->
<div>
<label for="pipelineDesc" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">Description</label>
<label for="pipelineDesc" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">{{ _("common.description") }}</label>
<textarea
id="pipelineDesc"
x-model="pipelineModal.form.description"
rows="2"
maxlength="4096"
class="w-full border border-gray-300 dark:border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-400 dark:bg-gray-700 dark:text-white resize-none"
placeholder="Optional description"
placeholder="{{ _('pipelines.description_placeholder') }}"
></textarea>
</div>
@@ -276,7 +276,7 @@
x-model="pipelineModal.form.is_default"
class="rounded border-gray-300 text-blue-600 focus:ring-blue-400"
/>
<span class="text-sm text-gray-700 dark:text-gray-300">Set as my default pipeline</span>
<span class="text-sm text-gray-700 dark:text-gray-300">{{ _("pipelines.set_default") }}</span>
</label>
<label class="inline-flex items-center gap-2 cursor-pointer">
<input
@@ -284,7 +284,7 @@
x-model="pipelineModal.form.is_active"
class="rounded border-gray-300 text-blue-600 focus:ring-blue-400"
/>
<span class="text-sm text-gray-700 dark:text-gray-300">Active</span>
<span class="text-sm text-gray-700 dark:text-gray-300">{{ _("pipelines.active_label") }}</span>
</label>
</div>
@@ -296,7 +296,7 @@
x-model="pipelineModal.form.system"
class="rounded border-gray-300 text-purple-600 focus:ring-purple-400"
/>
<span class="text-sm text-gray-700 dark:text-gray-300">System pipeline (visible to all users)</span>
<span class="text-sm text-gray-700 dark:text-gray-300">{{ _("pipelines.system_pipeline_label") }}</span>
</label>
</template>
@@ -310,16 +310,16 @@
@click="closePipelineModal()"
class="px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-md hover:bg-gray-50"
style="min-height:44px;"
>Cancel</button>
>{{ _("common.cancel") }}</button>
<button
type="submit"
:disabled="pipelineModal.saving"
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;"
>
<template x-if="pipelineModal.saving">
<i class="fas fa-spinner fa-spin mr-1" aria-hidden="true"></i>
</template>
<template x-if="pipelineModal.saving">
<i class="fas fa-spinner fa-spin mr-1" aria-hidden="true"></i>
</template>
<span x-text="pipelineModal.editMode ? 'Save Changes' : 'Create'"></span>
</button>
</div>
@@ -358,7 +358,7 @@
<!-- Step type -->
<div>
<label for="stepType" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">
Step Type <span aria-hidden="true" class="text-red-500">*</span>
{{ _("pipelines.step_type_label") }} <span aria-hidden="true" class="text-red-500">*</span>
</label>
<select
id="stepType"
@@ -366,7 +366,7 @@
:disabled="stepModal.editMode"
class="w-full border border-gray-300 dark:border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-400 dark:bg-gray-700 dark:text-white"
>
<option value="">— select —</option>
<option value="">{{ _("common.select_placeholder") }}</option>
<template x-for="[key, meta] in Object.entries(stepTypes)" :key="key">
<option :value="key" x-text="meta.label"></option>
</template>
@@ -379,7 +379,7 @@
<!-- Custom label -->
<div>
<label for="stepLabel" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">
Custom Label <span class="text-gray-400 font-normal">(optional)</span>
{{ _("pipelines.custom_label_label") }} <span class="text-gray-400 font-normal">{{ _("pipelines.optional_suffix") }}</span>
</label>
<input
id="stepLabel"
@@ -387,7 +387,7 @@
x-model="stepModal.form.label"
maxlength="255"
class="w-full border border-gray-300 dark:border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-400 dark:bg-gray-700 dark:text-white"
placeholder="Override the default step name"
placeholder="{{ _('pipelines.step_label_placeholder') }}"
autocomplete="off"
/>
</div>
@@ -400,7 +400,7 @@
x-model="stepModal.form.config.force_cloud_ocr"
class="rounded border-gray-300 text-blue-600 focus:ring-blue-400"
/>
<span class="text-sm text-gray-700 dark:text-gray-300">Force cloud OCR (skip local text extraction)</span>
<span class="text-sm text-gray-700 dark:text-gray-300">{{ _("pipelines.force_cloud_ocr_label") }}</span>
</label>
</template>
@@ -408,14 +408,14 @@
<template x-if="stepModal.form.step_type === 'ocr'">
<div>
<label for="ocrLanguage" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">
OCR Language
{{ _("pipelines.ocr_language_label") }}
</label>
<select
id="ocrLanguage"
x-model="stepModal.form.config.ocr_language"
class="w-full border border-gray-300 dark:border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-400 dark:bg-gray-700 dark:text-white"
>
<option value="auto">Auto (use system default)</option>
<option value="auto">{{ _("pipelines.ocr_auto") }}</option>
<option value="ara">Arabic</option>
<option value="chi_sim">Chinese (Simplified)</option>
<option value="chi_tra">Chinese (Traditional)</option>
@@ -446,7 +446,7 @@
<option value="vie">Vietnamese</option>
</select>
<p class="mt-1 text-xs text-gray-400">
Overrides the global language setting for Tesseract/EasyOCR. Azure and Mistral auto-detect the language.
{{ _("pipelines.ocr_language_hint") }}
</p>
</div>
</template>
@@ -458,7 +458,7 @@
x-model="stepModal.form.enabled"
class="rounded border-gray-300 text-blue-600 focus:ring-blue-400"
/>
<span class="text-sm text-gray-700 dark:text-gray-300">Enabled</span>
<span class="text-sm text-gray-700 dark:text-gray-300">{{ _("pipelines.enabled_label") }}</span>
</label>
<!-- Error -->
@@ -471,7 +471,7 @@
@click="closeStepModal()"
class="px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-md hover:bg-gray-50"
style="min-height:44px;"
>Cancel</button>
>{{ _("common.cancel") }}</button>
<button
type="submit"
:disabled="stepModal.saving"
@@ -515,13 +515,13 @@
@click="confirmModal.open = false"
class="px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-md hover:bg-gray-50"
style="min-height:44px;"
>Cancel</button>
>{{ _("common.cancel") }}</button>
<button
type="button"
@click="confirmModal.action(); confirmModal.open = false"
class="px-4 py-2 text-sm font-medium text-white bg-red-600 hover:bg-red-700 rounded-md"
style="min-height:44px;"
>Delete</button>
>{{ _("common.delete") }}</button>
</div>
</div>
</div>
+29 -29
View File
@@ -1,5 +1,5 @@
{% extends "base.html" %}
{% block title %}Queue Monitor — DocuElevate{% endblock %}
{% block title %}{{ _("queue.page_title") }}{% endblock %}
{% block head_extra %}
<script src="/static/js/common.js"></script>
@@ -11,20 +11,20 @@
<!-- Header -->
<div class="mb-6">
<h1 class="text-3xl font-bold mb-2">
<i class="fas fa-stream mr-2 text-blue-500" aria-hidden="true"></i>Queue Monitor
<i class="fas fa-stream mr-2 text-blue-500" aria-hidden="true"></i>{{ _("queue.heading") }}
</h1>
<p class="text-gray-600">Real-time view of the document processing pipeline and Celery task queues.</p>
<p class="text-gray-600">{{ _("queue.subtitle") }}</p>
</div>
<!-- Loading state -->
<div id="queueLoading" class="text-center py-12">
<i class="fas fa-spinner fa-spin fa-2x text-blue-400" aria-hidden="true"></i>
<p class="mt-2 text-gray-500">Loading queue statistics&hellip;</p>
<p class="mt-2 text-gray-500">{{ _("queue.loading_stats") }}</p>
</div>
<!-- Error state -->
<div id="queueError" class="hidden bg-red-100 border-l-4 border-red-500 text-red-700 p-4 mb-6" role="alert">
<p><strong>Error:</strong> <span id="queueErrorMsg"></span></p>
<p><strong>{{ _("common.error") }}:</strong> <span id="queueErrorMsg"></span></p>
</div>
<!-- Dashboard content (hidden until loaded) -->
@@ -39,7 +39,7 @@
<i class="fas fa-inbox text-yellow-600 text-xl" aria-hidden="true"></i>
</div>
<div class="ml-4">
<p class="text-sm font-medium text-gray-500">Queued Tasks</p>
<p class="text-sm font-medium text-gray-500">{{ _("queue.queued_tasks") }}</p>
<p id="totalQueued" class="text-2xl font-bold text-gray-900">0</p>
</div>
</div>
@@ -51,7 +51,7 @@
<i class="fas fa-cogs text-blue-600 text-xl" aria-hidden="true"></i>
</div>
<div class="ml-4">
<p class="text-sm font-medium text-gray-500">Active Tasks</p>
<p class="text-sm font-medium text-gray-500">{{ _("queue.active_tasks") }}</p>
<p id="activeTasks" class="text-2xl font-bold text-gray-900">0</p>
</div>
</div>
@@ -63,7 +63,7 @@
<i class="fas fa-file-alt text-indigo-600 text-xl" aria-hidden="true"></i>
</div>
<div class="ml-4">
<p class="text-sm font-medium text-gray-500">Files Processing</p>
<p class="text-sm font-medium text-gray-500">{{ _("queue.files_processing") }}</p>
<p id="filesProcessing" class="text-2xl font-bold text-gray-900">0</p>
</div>
</div>
@@ -75,7 +75,7 @@
<i class="fas fa-server text-green-600 text-xl" aria-hidden="true"></i>
</div>
<div class="ml-4">
<p class="text-sm font-medium text-gray-500">Workers Online</p>
<p class="text-sm font-medium text-gray-500">{{ _("queue.workers_online") }}</p>
<p id="workersOnline" class="text-2xl font-bold text-gray-900">0</p>
</div>
</div>
@@ -89,19 +89,19 @@
<div class="bg-white rounded-lg shadow">
<div class="px-5 py-4 border-b border-gray-200">
<h2 class="text-lg font-semibold text-gray-900">
<i class="fas fa-list-ol mr-2 text-gray-500" aria-hidden="true"></i>Redis Queues
<i class="fas fa-list-ol mr-2 text-gray-500" aria-hidden="true"></i>{{ _("queue.redis_queues") }}
</h2>
</div>
<div class="p-5">
<table class="w-full text-sm">
<thead>
<tr class="text-left text-gray-500 border-b">
<th class="pb-2">Queue</th>
<th class="pb-2 text-right">Pending</th>
<th class="pb-2">{{ _("queue.col_queue") }}</th>
<th class="pb-2 text-right">{{ _("common.pending") }}</th>
</tr>
</thead>
<tbody id="queueRows">
<tr><td colspan="2" class="py-3 text-gray-400 text-center">No data</td></tr>
<tr><td colspan="2" class="py-3 text-gray-400 text-center">{{ _("queue.no_data") }}</td></tr>
</tbody>
</table>
</div>
@@ -111,19 +111,19 @@
<div class="bg-white rounded-lg shadow">
<div class="px-5 py-4 border-b border-gray-200">
<h2 class="text-lg font-semibold text-gray-900">
<i class="fas fa-database mr-2 text-gray-500" aria-hidden="true"></i>Processing Pipeline
<i class="fas fa-database mr-2 text-gray-500" aria-hidden="true"></i>{{ _("queue.processing_pipeline") }}
</h2>
</div>
<div class="p-5">
<table class="w-full text-sm">
<thead>
<tr class="text-left text-gray-500 border-b">
<th class="pb-2">State</th>
<th class="pb-2 text-right">Files</th>
<th class="pb-2">{{ _("queue.col_state") }}</th>
<th class="pb-2 text-right">{{ _("queue.col_files") }}</th>
</tr>
</thead>
<tbody id="dbSummaryRows">
<tr><td colspan="2" class="py-3 text-gray-400 text-center">No data</td></tr>
<tr><td colspan="2" class="py-3 text-gray-400 text-center">{{ _("queue.no_data") }}</td></tr>
</tbody>
</table>
</div>
@@ -134,7 +134,7 @@
<div class="bg-white rounded-lg shadow mb-8">
<div class="px-5 py-4 border-b border-gray-200">
<h2 class="text-lg font-semibold text-gray-900">
<i class="fas fa-play-circle mr-2 text-blue-500" aria-hidden="true"></i>Active Tasks
<i class="fas fa-play-circle mr-2 text-blue-500" aria-hidden="true"></i>{{ _("queue.active_tasks") }}
<span id="activeCount" class="ml-1 text-sm font-normal text-gray-500">(0)</span>
</h2>
</div>
@@ -142,13 +142,13 @@
<table class="w-full text-sm" id="activeTable">
<thead>
<tr class="text-left text-gray-500 border-b">
<th class="pb-2">Task</th>
<th class="pb-2">Arguments</th>
<th class="pb-2">Task ID</th>
<th class="pb-2">{{ _("queue.col_task") }}</th>
<th class="pb-2">{{ _("queue.col_arguments") }}</th>
<th class="pb-2">{{ _("queue.col_task_id") }}</th>
</tr>
</thead>
<tbody id="activeRows">
<tr><td colspan="3" class="py-3 text-gray-400 text-center">No active tasks</td></tr>
<tr><td colspan="3" class="py-3 text-gray-400 text-center">{{ _("queue.no_active_tasks") }}</td></tr>
</tbody>
</table>
</div>
@@ -158,20 +158,20 @@
<div class="bg-white rounded-lg shadow mb-8">
<div class="px-5 py-4 border-b border-gray-200">
<h2 class="text-lg font-semibold text-gray-900">
<i class="fas fa-file-medical-alt mr-2 text-indigo-500" aria-hidden="true"></i>Recently Processing Files
<i class="fas fa-file-medical-alt mr-2 text-indigo-500" aria-hidden="true"></i>{{ _("queue.recently_processing") }}
</h2>
</div>
<div class="p-5 overflow-x-auto">
<table class="w-full text-sm">
<thead>
<tr class="text-left text-gray-500 border-b">
<th class="pb-2">File</th>
<th class="pb-2">Current Step</th>
<th class="pb-2 text-right">Actions</th>
<th class="pb-2">{{ _("queue.col_file") }}</th>
<th class="pb-2">{{ _("queue.col_current_step") }}</th>
<th class="pb-2 text-right">{{ _("common.actions") }}</th>
</tr>
</thead>
<tbody id="recentRows">
<tr><td colspan="3" class="py-3 text-gray-400 text-center">No files currently processing</td></tr>
<tr><td colspan="3" class="py-3 text-gray-400 text-center">{{ _("queue.no_files_processing") }}</td></tr>
</tbody>
</table>
</div>
@@ -180,8 +180,8 @@
<!-- Auto-refresh info -->
<div class="text-center text-gray-400 text-xs mb-4">
<i class="fas fa-sync-alt mr-1" aria-hidden="true"></i>
Auto-refreshes every <span id="refreshInterval">10</span> seconds &mdash;
Last updated: <span id="lastUpdated"></span>
{{ _("queue.auto_refresh_1") }} <span id="refreshInterval">10</span> {{ _("queue.auto_refresh_2") }} &mdash;
{{ _("queue.last_updated") }} <span id="lastUpdated"></span>
</div>
</div>
</div>
+31 -31
View File
@@ -1,5 +1,5 @@
{% extends "base.html" %}
{% block title %}Search Documents - DocuElevate{% endblock %}
{% block title %}{{ _("search.page_title") }} - DocuElevate{% endblock %}
{% block head_extra %}
<script src="/static/js/common.js"></script>
@@ -121,74 +121,74 @@
{% block content %}
<div class="container mx-auto px-4 py-8">
<div class="search-container">
<h1 class="text-3xl font-bold mb-6"><i class="fas fa-search text-blue-500" aria-hidden="true"></i> Document Search</h1>
<h1 class="text-3xl font-bold mb-6"><i class="fas fa-search text-blue-500" aria-hidden="true"></i> {{ _("search.heading") }}</h1>
<!-- Search box -->
<div class="search-box" role="search">
<label for="search-input" class="sr-only">Search documents</label>
<label for="search-input" class="sr-only">{{ _("search.input_aria_label") }}</label>
<input
type="search"
id="search-input"
placeholder="Search documents by content, sender, tags, type..."
placeholder="{{ _('search.input_placeholder') }}"
value="{{ query }}"
autofocus
>
<button type="button" id="search-btn" aria-label="Search documents">
<i class="fas fa-search" aria-hidden="true"></i> Search
<button type="button" id="search-btn" aria-label="{{ _('search.input_aria_label') }}">
<i class="fas fa-search" aria-hidden="true"></i> {{ _("search.button") }}
</button>
</div>
<!-- Content-finding filters -->
<div class="search-filters" id="search-filters">
<div class="search-filter-item">
<label for="filter-document-type">Document Type</label>
<input type="text" id="filter-document-type" placeholder="e.g. Invoice" aria-label="Filter by document type">
<label for="filter-document-type">{{ _("search.filter_document_type") }}</label>
<input type="text" id="filter-document-type" placeholder="{{ _('search.filter_document_type_placeholder') }}" aria-label="{{ _('search.filter_aria_document_type') }}">
</div>
<div class="search-filter-item">
<label for="filter-tags">Tags</label>
<input type="text" id="filter-tags" placeholder="e.g. amazon" aria-label="Filter by tag">
<label for="filter-tags">{{ _("search.filter_tags") }}</label>
<input type="text" id="filter-tags" placeholder="{{ _('search.filter_tags_placeholder') }}" aria-label="{{ _('search.filter_aria_tag') }}">
</div>
<div class="search-filter-item">
<label for="filter-sender">Sender</label>
<input type="text" id="filter-sender" placeholder="e.g. ACME Corp" aria-label="Filter by sender">
<label for="filter-sender">{{ _("search.filter_sender") }}</label>
<input type="text" id="filter-sender" placeholder="{{ _('search.filter_sender_placeholder') }}" aria-label="{{ _('search.filter_aria_sender') }}">
</div>
<div class="search-filter-item">
<label for="filter-language">Language</label>
<input type="text" id="filter-language" placeholder="e.g. de" aria-label="Filter by language code">
<label for="filter-language">{{ _("search.filter_language") }}</label>
<input type="text" id="filter-language" placeholder="{{ _('search.filter_language_placeholder') }}" aria-label="{{ _('search.filter_aria_language') }}">
</div>
<div class="search-filter-item">
<label for="filter-text-quality">Text Quality</label>
<select id="filter-text-quality" aria-label="Filter by OCR text quality">
<option value="">All</option>
<option value="high">High</option>
<option value="medium">Medium</option>
<option value="low">Low</option>
<option value="no_text">No text</option>
<label for="filter-text-quality">{{ _("search.filter_text_quality") }}</label>
<select id="filter-text-quality" aria-label="{{ _('search.filter_aria_text_quality') }}">
<option value="">{{ _("search.filter_text_quality_all") }}</option>
<option value="high">{{ _("search.filter_text_quality_high") }}</option>
<option value="medium">{{ _("search.filter_text_quality_medium") }}</option>
<option value="low">{{ _("search.filter_text_quality_low") }}</option>
<option value="no_text">{{ _("search.filter_text_quality_no_text") }}</option>
</select>
</div>
<div class="search-filter-item">
<label for="filter-date-from">Date From</label>
<input type="date" id="filter-date-from" aria-label="Filter from date">
<label for="filter-date-from">{{ _("search.filter_date_from") }}</label>
<input type="date" id="filter-date-from" aria-label="{{ _('search.filter_aria_date_from') }}">
</div>
<div class="search-filter-item">
<label for="filter-date-to">Date To</label>
<input type="date" id="filter-date-to" aria-label="Filter to date">
<label for="filter-date-to">{{ _("search.filter_date_to") }}</label>
<input type="date" id="filter-date-to" aria-label="{{ _('search.filter_aria_date_to') }}">
</div>
<div class="search-filter-item" style="align-self: flex-end;">
<button type="button" id="clear-filters-btn" style="padding: 0.4rem 0.75rem; border: 1px solid #d1d5db; border-radius: 0.375rem; font-size: 0.8rem; cursor: pointer; background: white; color: #374151;" aria-label="Clear all filters">
Clear Filters
<button type="button" id="clear-filters-btn" style="padding: 0.4rem 0.75rem; border: 1px solid #d1d5db; border-radius: 0.375rem; font-size: 0.8rem; cursor: pointer; background: white; color: #374151;" aria-label="{{ _('search.filter_aria_clear') }}">
{{ _("search.filter_clear_button") }}
</button>
</div>
</div>
<!-- Saved Searches -->
<div class="search-saved-bar" id="saved-searches-bar">
<span class="saved-label"><i class="fas fa-bookmark" aria-hidden="true"></i> Saved Searches:</span>
<span class="saved-label"><i class="fas fa-bookmark" aria-hidden="true"></i> {{ _("search.saved_label") }}:</span>
<span id="saved-searches-list" aria-live="polite" style="display: flex; gap: 0.25rem; flex-wrap: wrap;">
<span style="color: #9ca3af; font-size: 0.85rem;">Loading...</span>
<span style="color: #9ca3af; font-size: 0.85rem;">{{ _("search.saved_loading") }}</span>
</span>
<button type="button" id="save-search-btn" class="btn-save-search" aria-label="Save current search and filters as a saved search">
<i class="fas fa-plus" aria-hidden="true"></i> Save Current
<button type="button" id="save-search-btn" class="btn-save-search" aria-label="{{ _('search.saved_aria_save') }}">
<i class="fas fa-plus" aria-hidden="true"></i> {{ _("search.saved_button") }}
</button>
</div>
+46 -46
View File
@@ -1,5 +1,5 @@
{% extends "base.html" %}
{% block title %}Settings - DocuElevate{% endblock %}
{% block title %}{{ _("settings.title") }} - DocuElevate{% endblock %}
{# Category icon mapping #}
{% set category_icons = {
@@ -48,27 +48,27 @@
<div class="mb-6">
<div class="flex flex-col sm:flex-row justify-between items-start gap-4 mb-4">
<div>
<h1 class="text-3xl font-bold mb-1">Application Settings</h1>
<h1 class="text-3xl font-bold mb-1">{{ _("settings.page_heading") }}</h1>
<p class="text-gray-500 text-sm">
Manage configuration. Priority: <span class="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-green-100 text-green-800">DB</span> &gt;
<span class="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-blue-100 text-blue-800 ml-1">ENV</span> &gt;
<span class="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-gray-100 text-gray-800 ml-1">DEFAULT</span>
<span class="mx-1.5">·</span> <span class="text-red-600">*</span> = restart required <span class="mx-1.5">·</span> <i class="fas fa-lock text-xs" aria-hidden="true"></i> = encrypted at rest
{{ _("settings.manage_config_prefix") }} <span class="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-green-100 text-green-800">{{ _("settings.source_db_badge") }}</span> &gt;
<span class="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-blue-100 text-blue-800 ml-1">{{ _("settings.source_env_badge") }}</span> &gt;
<span class="inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-gray-100 text-gray-800 ml-1">{{ _("settings.source_default_badge") }}</span>
<span class="mx-1.5">·</span> <span class="text-red-600">*</span> {{ _("settings.restart_required_suffix") }} <span class="mx-1.5">·</span> <i class="fas fa-lock text-xs" aria-hidden="true"></i> {{ _("settings.encrypted_suffix") }}
</p>
</div>
<div class="flex items-center gap-2 flex-shrink-0">
<a href="/setup?step=1"
class="inline-flex items-center px-3 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50">
<i class="fas fa-magic mr-1.5" aria-hidden="true"></i> Wizard
<i class="fas fa-magic mr-1.5" aria-hidden="true"></i> {{ _("settings.wizard_btn") }}
</a>
<a href="/database-wizard"
class="inline-flex items-center px-3 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50">
<i class="fas fa-database mr-1.5" aria-hidden="true"></i> DB Wizard
<i class="fas fa-database mr-1.5" aria-hidden="true"></i> {{ _("settings.db_wizard_btn") }}
</a>
<div class="relative" x-data="{ exportOpen: false }">
<button @click="exportOpen = !exportOpen"
class="inline-flex items-center px-3 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50">
<i class="fas fa-download mr-1.5" aria-hidden="true"></i> Export
<i class="fas fa-download mr-1.5" aria-hidden="true"></i> {{ _("settings.export_btn") }}
<i class="fas fa-chevron-down ml-1 text-xs" aria-hidden="true"></i>
</button>
<div x-show="exportOpen" @click.outside="exportOpen = false" x-transition
@@ -76,18 +76,18 @@
<a href="/api/settings/export-env?source=db"
class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-50"
@click="exportOpen = false">
<i class="fas fa-database mr-2 text-green-600" aria-hidden="true"></i>DB settings only
<i class="fas fa-database mr-2 text-green-600" aria-hidden="true"></i>{{ _("settings.export_db_only") }}
</a>
<a href="/api/settings/export-env?source=effective"
class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-50"
@click="exportOpen = false">
<i class="fas fa-layer-group mr-2 text-blue-600" aria-hidden="true"></i>Full effective config
<i class="fas fa-layer-group mr-2 text-blue-600" aria-hidden="true"></i>{{ _("settings.export_full_config") }}
</a>
</div>
</div>
<a href="/admin/settings/audit-log"
class="inline-flex items-center px-3 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
<i class="fas fa-history mr-1.5" aria-hidden="true"></i> Audit Log
<i class="fas fa-history mr-1.5" aria-hidden="true"></i> {{ _("settings.audit_log_btn") }}
</a>
</div>
</div>
@@ -99,14 +99,14 @@
type="search"
x-model="searchQuery"
@input="filterSettings()"
placeholder="Search settings by name, key, or description…"
placeholder="{{ _('settings.search_placeholder') }}"
class="w-full pl-10 pr-20 py-2.5 border border-gray-300 rounded-lg shadow-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-sm"
aria-label="Search settings"
aria-label="{{ _('settings.search_aria_label') }}"
/>
<div class="absolute right-3 top-1/2 -translate-y-1/2 flex items-center gap-2">
<span x-show="searchQuery" x-text="matchCount + ' found'" x-transition class="text-xs text-gray-400"></span>
<button x-show="searchQuery" @click="searchQuery = ''; filterSettings()" type="button"
class="text-gray-400 hover:text-gray-600" aria-label="Clear search">
class="text-gray-400 hover:text-gray-600" aria-label="{{ _('settings.search_clear_aria') }}">
<i class="fas fa-times"></i>
</button>
</div>
@@ -125,9 +125,9 @@
<!-- Two-column layout -->
<div class="flex gap-6">
<!-- Sidebar Navigation (hidden on small screens) -->
<aside class="hidden lg:block w-56 flex-shrink-0" aria-label="Settings categories">
<aside class="hidden lg:block w-56 flex-shrink-0" aria-label="{{ _('settings.categories_aria') }}">
<nav class="settings-sidebar space-y-0.5 bg-white rounded-lg border border-gray-200 p-2 shadow-sm">
<p class="px-3 py-1.5 text-xs font-semibold text-gray-400 uppercase tracking-wider">Categories</p>
<p class="px-3 py-1.5 text-xs font-semibold text-gray-400 uppercase tracking-wider">{{ _("settings.categories_heading") }}</p>
{% for category, settings_list in settings_data.items() %}
<button
type="button"
@@ -149,11 +149,11 @@
<div class="flex-1 min-w-0">
<!-- Mobile category jump (visible on small screens only) -->
<div class="lg:hidden mb-4">
<label for="mobile-category-select" class="sr-only">Jump to category</label>
<label for="mobile-category-select" class="sr-only">{{ _("settings.jump_to_category") }}</label>
<select id="mobile-category-select"
@change="scrollToCategory($event.target.value)"
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm shadow-sm">
<option value="">Jump to category</option>
<option value="">{{ _("settings.jump_to_category") }}</option>
{% for category in settings_data.keys() %}
<option value="{{ category }}">{{ category }} ({{ settings_data[category]|length }})</option>
{% endfor %}
@@ -163,8 +163,8 @@
<!-- No results state -->
<div x-show="searchQuery && matchCount === 0" class="settings-no-results bg-white rounded-lg border border-gray-200 shadow-sm">
<i class="fas fa-search text-4xl text-gray-300 mb-3"></i>
<p class="text-gray-500 text-lg font-medium">No settings found</p>
<p class="text-gray-400 text-sm mt-1">Try a different search term or <button type="button" @click="searchQuery = ''; filterSettings()" class="text-blue-500 hover:underline">clear the search</button></p>
<p class="text-gray-500 text-lg font-medium">{{ _("settings.no_results_heading") }}</p>
<p class="text-gray-400 text-sm mt-1">{{ _("settings.no_results_hint") }} <button type="button" @click="searchQuery = ''; filterSettings()" class="text-blue-500 hover:underline">{{ _("settings.no_results_clear") }}</button></p>
</div>
<form @submit.prevent="saveSettings">
@@ -191,7 +191,7 @@
<h2 class="text-lg font-semibold text-gray-800">{{ category }}</h2>
<span class="text-xs text-gray-400 bg-gray-100 px-2 py-0.5 rounded-full tabular-nums"
x-text="(visibleCount['{{ category|e }}'] ?? {{ settings_list|length }}) + ' settings'">
{{ settings_list|length }} settings
{{ settings_list|length }} {{ _("settings.settings_count_suffix") }}
</span>
</div>
<i class="fas fa-chevron-down text-gray-400 category-chevron"
@@ -225,7 +225,7 @@
<span class="text-red-600" title="Restart required">*</span>
{% endif %}
{% if setting.metadata.required %}
<span class="text-red-600 text-xs">(required)</span>
<span class="text-red-600 text-xs">{{ _("settings.required_label") }}</span>
{% endif %}
</label>
<!-- Source Badge -->
@@ -262,7 +262,7 @@
class="h-4 w-4 text-blue-600 focus:ring-blue-500 border-gray-300 rounded"
/>
<label for="{{ setting.key }}" class="ml-2 text-sm text-gray-700">
Enable {{ setting.key.replace('_', ' ').title() }}
{{ _("settings.boolean_enable_prefix") }} {{ setting.key.replace('_', ' ').title() }}
</label>
</div>
{% elif setting.metadata.type == 'slider' %}
@@ -302,7 +302,7 @@
</label>
{% endfor %}
</div>
<p class="mt-1 text-xs text-gray-400">Effective value: <code x-text="formData['{{ setting.key }}'] || '(none)'"></code></p>
<p class="mt-1 text-xs text-gray-400">{{ _("settings.effective_value_label") }} <code x-text="formData['{{ setting.key }}'] || '(none)'"></code></p>
{% elif setting.metadata.type == 'user_autocomplete' %}
<!-- User Autocomplete (WCAG 2.1 AA combobox pattern) -->
<div class="relative" x-data="userAutocomplete('{{ setting.key }}')" @click.away="showSuggestions = false">
@@ -320,7 +320,7 @@
@keydown.enter.prevent="selectHighlighted()"
@keydown.escape="showSuggestions = false"
class="setting-input w-full px-3 py-2 pl-9 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"
placeholder="Start typing to search users…"
placeholder="{{ _('settings.user_autocomplete_placeholder') }}"
autocomplete="off"
role="combobox"
aria-autocomplete="list"
@@ -371,11 +371,11 @@
class="absolute z-50 w-full mt-1 bg-white border border-gray-200 rounded-md shadow-lg px-3 py-2 text-sm text-gray-500"
role="status"
>
<i class="fas fa-info-circle mr-1" aria-hidden="true"></i> No matching users found
<i class="fas fa-info-circle mr-1" aria-hidden="true"></i> {{ _("settings.user_autocomplete_empty") }}
</div>
<p class="text-xs text-gray-400 mt-1" id="{{ setting.key }}_help">
<i class="fas fa-info-circle mr-1" aria-hidden="true"></i>
Type to search existing users by name, or enter any identifier manually.
{{ _("settings.user_autocomplete_hint") }}
</p>
</div>
{% elif setting.metadata.type == 'autocomplete' %}
@@ -395,7 +395,7 @@
@keydown.enter.prevent="selectHighlighted()"
@keydown.escape="showSuggestions = false"
class="setting-input w-full px-3 py-2 pl-9 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"
placeholder="Type to search or enter a value…"
placeholder="{{ _('settings.autocomplete_placeholder') }}"
autocomplete="off"
role="combobox"
aria-autocomplete="list"
@@ -445,11 +445,11 @@
class="absolute z-50 w-full mt-1 bg-white border border-gray-200 rounded-md shadow-lg px-3 py-2 text-sm text-gray-500"
role="status"
>
<i class="fas fa-info-circle mr-1" aria-hidden="true"></i> No matches — you can still type a custom value
<i class="fas fa-info-circle mr-1" aria-hidden="true"></i> {{ _("settings.autocomplete_no_matches") }}
</div>
<p class="text-xs text-gray-400 mt-1">
<i class="fas fa-info-circle mr-1" aria-hidden="true"></i>
Type to search known values, or enter any custom value.
{{ _("settings.autocomplete_hint") }}
</p>
</div>
{% elif setting.metadata.type == 'model_picker' %}
@@ -462,7 +462,7 @@
list="{{ setting.key }}_models"
x-model="formData['{{ setting.key }}']"
class="setting-input w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"
placeholder="Select a common model or type a custom name…"
placeholder="{{ _('settings.model_picker_placeholder') }}"
autocomplete="off"
/>
<datalist id="{{ setting.key }}_models">
@@ -472,7 +472,7 @@
</datalist>
<p class="text-xs text-gray-400 mt-1">
<i class="fas fa-info-circle mr-1" aria-hidden="true"></i>
Pick from the list or type any model name supported by your provider.
{{ _("settings.model_picker_hint") }}
</p>
</div>
{% elif setting.metadata.options %}
@@ -483,7 +483,7 @@
x-model="formData['{{ setting.key }}']"
class="setting-input w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"
>
<option value="">— select —</option>
<option value="">{{ _("common.select_placeholder") }}</option>
{% for opt in setting.metadata.options %}
<option value="{{ opt }}">{{ opt }}</option>
{% endfor %}
@@ -503,15 +503,15 @@
autocomplete="off"
/>
<div class="absolute inset-y-0 right-0 flex items-center pr-3 space-x-2">
<span class="text-xs text-gray-400" title="Value is encrypted at rest in database">
<span class="text-xs text-gray-400" title="{{ _('settings.encrypted_title') }}">
<i class="fas fa-lock"></i>
</span>
<button
type="button"
@click="togglePassword('{{ setting.key }}')"
class="text-gray-400 hover:text-gray-600 focus:outline-none"
title="Show/hide value"
aria-label="Toggle password visibility"
title="{{ _('settings.toggle_visibility_title') }}"
aria-label="{{ _('settings.toggle_visibility_aria') }}"
>
<i :class="showPassword['{{ setting.key }}'] ? 'fas fa-eye-slash' : 'fas fa-eye'"></i>
</button>
@@ -540,10 +540,10 @@
@click="revertSetting('{{ setting.key }}')"
:disabled="revertingKey === '{{ setting.key }}'"
class="px-3 py-1 text-sm bg-red-600 text-white rounded-md hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 disabled:opacity-50 disabled:cursor-not-allowed whitespace-nowrap"
title="Remove DB override and revert to environment variable or default"
title="{{ _('settings.revert_title') }}"
>
<span x-show="revertingKey !== '{{ setting.key }}'"><i class="fas fa-trash-alt mr-1" aria-hidden="true"></i>Remove from DB</span>
<span x-show="revertingKey === '{{ setting.key }}'">Reverting</span>
<span x-show="revertingKey !== '{{ setting.key }}'"><i class="fas fa-trash-alt mr-1" aria-hidden="true"></i>{{ _("settings.revert_btn") }}</span>
<span x-show="revertingKey === '{{ setting.key }}'">{{ _("settings.reverting") }}</span>
</button>
<button
type="button"
@@ -552,10 +552,10 @@
@click="saveSetting('{{ setting.key }}')"
:disabled="savingKey === '{{ setting.key }}'"
class="px-3 py-1 text-sm bg-green-600 text-white rounded-md hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-500 disabled:opacity-50 disabled:cursor-not-allowed whitespace-nowrap"
title="Save this setting"
title="{{ _('settings.save_setting_title') }}"
>
<span x-show="savingKey !== '{{ setting.key }}'"><i class="fas fa-save mr-1" aria-hidden="true"></i>Save</span>
<span x-show="savingKey === '{{ setting.key }}'">Saving…</span>
<span x-show="savingKey !== '{{ setting.key }}'"><i class="fas fa-save mr-1" aria-hidden="true"></i>{{ _("common.save") }}</span>
<span x-show="savingKey === '{{ setting.key }}'">{{ _("settings.saving_state") }}</span>
</button>
</div>
</div>
@@ -573,15 +573,15 @@
@click="resetForm"
class="px-6 py-2 border border-gray-300 text-gray-700 rounded-md hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"
>
Reset
{{ _("common.reset") }}
</button>
<button
type="submit"
:disabled="saving"
class="px-6 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 disabled:cursor-not-allowed"
>
<span x-show="!saving">Save All Changes</span>
<span x-show="saving">Saving...</span>
<span x-show="!saving">{{ _("settings.save_all_btn") }}</span>
<span x-show="saving">{{ _("settings.saving_state") }}</span>
</button>
</div>
</form>
+52 -54
View File
@@ -1,37 +1,35 @@
{% extends "base.html" %}
{% block title %}Shared Links DocuElevate{% endblock %}
{% block title %}{{ _("shared.page_title") }}{% endblock %}
{% block content %}
<div x-data="sharedLinks()" x-init="init(); loadLinks()" class="container mx-auto px-4 py-8 max-w-5xl">
<header class="mb-8">
<h1 class="text-2xl font-bold text-gray-900 dark:text-white flex items-center gap-2">
<i class="fas fa-share-alt text-blue-500" aria-hidden="true"></i>
Shared Links
{{ _("shared.heading") }}
</h1>
<p class="mt-2 text-gray-600 dark:text-gray-400 text-sm leading-relaxed max-w-2xl">
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.subtitle") }}
</p>
</header>
<!-- Create link section -->
<section class="bg-white dark:bg-gray-800 shadow rounded-lg p-6 mb-6" aria-labelledby="create-link-heading">
<h2 id="create-link-heading" class="text-lg font-semibold text-gray-900 dark:text-white mb-4">Create New Shared Link</h2>
<h2 id="create-link-heading" class="text-lg font-semibold text-gray-900 dark:text-white mb-4">{{ _("shared.create_heading") }}</h2>
<form @submit.prevent="createLink()" class="space-y-4">
<!-- File ID -->
<div class="flex flex-col sm:flex-row gap-3 items-start sm:items-end">
<div class="flex-1">
<label for="file-id-input" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">
File ID <span class="text-red-500" aria-hidden="true">*</span>
{{ _("shared.file_id_label") }} <span class="text-red-500" aria-hidden="true">*</span>
</label>
<input
id="file-id-input"
type="number"
x-model.number="newLink.file_id"
placeholder="e.g. 42"
placeholder="{{ _('shared.file_id_placeholder') }}"
required
min="1"
class="w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm
@@ -39,20 +37,20 @@
aria-required="true"
/>
<p class="mt-1 text-xs text-gray-500 dark:text-gray-400">
Find the file ID on the <a href="/files" class="underline hover:text-blue-600">Files</a> page or in the document detail URL.
{{ _("shared.file_id_help_pre") }} <a href="/files" class="underline hover:text-blue-600">{{ _("shared.files_link") }}</a> {{ _("shared.file_id_help_post") }}
</p>
</div>
<!-- Label (optional) -->
<div class="flex-1">
<label for="link-label-input" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">
Label <span class="text-gray-400 font-normal">(optional)</span>
{{ _("shared.label_label") }} <span class="text-gray-400 font-normal">({{ _("shared.optional") }})</span>
</label>
<input
id="link-label-input"
type="text"
x-model="newLink.label"
placeholder="e.g. Shared with Bob"
placeholder="{{ _('shared.label_placeholder') }}"
maxlength="255"
class="w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm
focus:outline-none focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white text-sm"
@@ -65,7 +63,7 @@
<!-- Expiry -->
<div class="flex-1">
<label for="expires-select" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">
Expiry
{{ _("shared.expiry_label") }}
</label>
<select
id="expires-select"
@@ -73,28 +71,28 @@
class="w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm
focus:outline-none focus:ring-2 focus:ring-blue-500 dark:bg-gray-700 dark:text-white text-sm"
>
<option :value="null">Never</option>
<option value="1">1 hour</option>
<option value="6">6 hours</option>
<option value="12">12 hours</option>
<option value="24">24 hours (1 day)</option>
<option value="72">3 days</option>
<option value="168">7 days</option>
<option value="336">14 days</option>
<option value="720">30 days</option>
<option :value="null">{{ _("shared.expiry_never") }}</option>
<option value="1">{{ _("shared.expiry_1h") }}</option>
<option value="6">{{ _("shared.expiry_6h") }}</option>
<option value="12">{{ _("shared.expiry_12h") }}</option>
<option value="24">{{ _("shared.expiry_24h") }}</option>
<option value="72">{{ _("shared.expiry_3d") }}</option>
<option value="168">{{ _("shared.expiry_7d") }}</option>
<option value="336">{{ _("shared.expiry_14d") }}</option>
<option value="720">{{ _("shared.expiry_30d") }}</option>
</select>
</div>
<!-- Max views -->
<div class="flex-1">
<label for="max-views-input" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">
Max downloads <span class="text-gray-400 font-normal">(optional)</span>
{{ _("shared.max_downloads_label") }} <span class="text-gray-400 font-normal">({{ _("shared.optional") }})</span>
</label>
<input
id="max-views-input"
type="number"
x-model.number="newLink.max_views"
placeholder="Unlimited"
placeholder="{{ _('shared.unlimited_placeholder') }}"
min="1"
max="10000"
class="w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm
@@ -105,13 +103,13 @@
<!-- Password -->
<div class="flex-1">
<label for="link-password-input" class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">
Password <span class="text-gray-400 font-normal">(optional)</span>
{{ _("shared.password_label") }} <span class="text-gray-400 font-normal">({{ _("shared.optional") }})</span>
</label>
<input
id="link-password-input"
type="password"
x-model="newLink.password"
placeholder="Leave blank for no password"
placeholder="{{ _('shared.password_placeholder') }}"
maxlength="128"
autocomplete="new-password"
class="w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm
@@ -135,7 +133,7 @@
style="min-height:40px; min-width:44px;"
>
<i class="fas fa-share-alt mr-2" aria-hidden="true"></i>
<span x-text="creating ? 'Creating…' : 'Create Link'"></span>
<span x-text="creating ? '{{ _('shared.creating') }}' : '{{ _('shared.create_btn') }}'"></span>
</button>
</div>
</form>
@@ -146,9 +144,9 @@
<div class="flex items-start gap-3">
<i class="fas fa-check-circle text-green-600 dark:text-green-400 mt-0.5 text-lg" aria-hidden="true"></i>
<div class="flex-1">
<p class="font-semibold text-green-800 dark:text-green-200 text-sm">Shared link created!</p>
<p class="font-semibold text-green-800 dark:text-green-200 text-sm">{{ _("shared.link_created") }}</p>
<p class="text-green-700 dark:text-green-300 text-xs mt-1">
Copy and send this link to the recipient.
{{ _("shared.link_created_help") }}
</p>
<div class="mt-3 flex items-center gap-2">
<code
@@ -164,10 +162,10 @@
hover:bg-gray-200 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-blue-500
transition-colors"
style="min-height:40px; min-width:44px;"
:aria-label="copied ? 'Copied!' : 'Copy link to clipboard'"
:aria-label="copied ? '{{ _('common.copied') }}' : '{{ _('shared.copy_link_aria') }}'"
>
<i :class="copied ? 'fas fa-check text-green-600' : 'fas fa-copy'" aria-hidden="true"></i>
<span class="ml-1 hidden sm:inline" x-text="copied ? 'Copied!' : 'Copy'"></span>
<span class="ml-1 hidden sm:inline" x-text="copied ? '{{ _('common.copied') }}' : '{{ _('common.copy') }}'"></span>
</button>
</div>
</div>
@@ -180,28 +178,28 @@
<section class="bg-white dark:bg-gray-800 shadow rounded-lg p-6" aria-labelledby="links-heading">
<div class="flex items-center justify-between mb-4">
<h2 id="links-heading" class="text-lg font-semibold text-gray-900 dark:text-white">
Your Shared Links
{{ _("shared.your_links") }}
<span
x-show="links.length > 0"
class="ml-2 inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200"
x-text="links.length"
aria-label="number of links"
aria-label="{{ _('shared.links_count_aria') }}"
></span>
</h2>
<button
@click="loadLinks()"
type="button"
class="text-sm text-blue-600 hover:underline focus:outline-none focus:ring-2 focus:ring-blue-500 rounded"
aria-label="Refresh shared links list"
aria-label="{{ _('shared.refresh_aria') }}"
>
<i class="fas fa-sync-alt mr-1" aria-hidden="true"></i>Refresh
<i class="fas fa-sync-alt mr-1" aria-hidden="true"></i>{{ _("common.refresh") }}
</button>
</div>
<!-- Loading state -->
<template x-if="loading">
<p class="text-sm text-gray-400 dark:text-gray-500 py-4 text-center">
<i class="fas fa-spinner fa-spin mr-2" aria-hidden="true"></i>Loading
<i class="fas fa-spinner fa-spin mr-2" aria-hidden="true"></i>{{ _("common.loading") }}
</p>
</template>
@@ -209,22 +207,22 @@
<template x-if="!loading && links.length === 0">
<div class="text-center py-10 text-gray-400 dark:text-gray-500">
<i class="fas fa-share-alt text-3xl mb-3" aria-hidden="true"></i>
<p class="text-sm">No shared links yet. Create one above to get started.</p>
<p class="text-sm">{{ _("shared.no_links") }}</p>
</div>
</template>
<!-- Links list -->
<template x-if="!loading && links.length > 0">
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200 dark:divide-gray-700 text-sm" aria-label="Shared links">
<table class="min-w-full divide-y divide-gray-200 dark:divide-gray-700 text-sm" aria-label="{{ _('shared.table_aria') }}">
<thead>
<tr class="text-left text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider">
<th scope="col" class="pb-3 pr-4">File / Label</th>
<th scope="col" class="pb-3 pr-4">Link</th>
<th scope="col" class="pb-3 pr-4">Expiry</th>
<th scope="col" class="pb-3 pr-4">Views</th>
<th scope="col" class="pb-3 pr-4">Status</th>
<th scope="col" class="pb-3">Actions</th>
<th scope="col" class="pb-3 pr-4">{{ _("shared.col_file_label") }}</th>
<th scope="col" class="pb-3 pr-4">{{ _("shared.col_link") }}</th>
<th scope="col" class="pb-3 pr-4">{{ _("shared.col_expiry") }}</th>
<th scope="col" class="pb-3 pr-4">{{ _("shared.col_views") }}</th>
<th scope="col" class="pb-3 pr-4">{{ _("common.status") }}</th>
<th scope="col" class="pb-3">{{ _("common.actions") }}</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-100 dark:divide-gray-700">
@@ -235,7 +233,7 @@
<p class="font-medium text-gray-800 dark:text-gray-200 truncate" x-text="link.original_filename || ('File #' + link.file_id)"></p>
<p x-show="link.label" class="text-xs text-gray-500 dark:text-gray-400 truncate" x-text="link.label"></p>
<p x-show="link.has_password" class="text-xs text-yellow-600 dark:text-yellow-400 mt-0.5">
<i class="fas fa-lock text-xs" aria-hidden="true"></i> Password protected
<i class="fas fa-lock text-xs" aria-hidden="true"></i> {{ _("shared.password_protected") }}
</p>
</td>
<!-- Link -->
@@ -246,8 +244,8 @@
type="button"
@click="copyUrl(link.share_url)"
class="p-1 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 focus:outline-none focus:ring-1 focus:ring-blue-500 rounded"
aria-label="Copy link"
title="Copy link"
aria-label="{{ _('shared.copy_link_aria') }}"
title="{{ _('shared.copy_link_title') }}"
style="min-height:32px;min-width:32px;"
>
<i class="fas fa-copy text-xs" aria-hidden="true"></i>
@@ -257,8 +255,8 @@
target="_blank"
rel="noopener noreferrer"
class="p-1 text-gray-400 hover:text-blue-600 focus:outline-none focus:ring-1 focus:ring-blue-500 rounded"
aria-label="Open shared link"
title="Open in new tab"
aria-label="{{ _('shared.open_link_aria') }}"
title="{{ _('shared.open_in_new_tab') }}"
style="min-height:32px;min-width:32px;"
>
<i class="fas fa-external-link-alt text-xs" aria-hidden="true"></i>
@@ -278,22 +276,22 @@
<td class="py-3 pr-4 whitespace-nowrap">
<template x-if="!link.is_active">
<span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300">
Revoked
{{ _("shared.status_revoked") }}
</span>
</template>
<template x-if="link.is_active && isExpired(link)">
<span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-yellow-100 text-yellow-700 dark:bg-yellow-900/40 dark:text-yellow-300">
Expired
{{ _("shared.status_expired") }}
</span>
</template>
<template x-if="link.is_active && isViewLimitReached(link)">
<span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-orange-100 text-orange-700 dark:bg-orange-900/40 dark:text-orange-300">
Limit reached
{{ _("shared.status_limit_reached") }}
</span>
</template>
<template x-if="link.is_active && !isExpired(link) && !isViewLimitReached(link)">
<span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-700 dark:bg-green-900/40 dark:text-green-300">
Active
{{ _("shared.status_active") }}
</span>
</template>
</td>
@@ -307,9 +305,9 @@
border border-red-300 dark:border-red-700 rounded hover:bg-red-50 dark:hover:bg-red-900/20
focus:outline-none focus:ring-2 focus:ring-red-500 transition-colors"
style="min-height:32px;min-width:44px;"
:aria-label="'Revoke shared link for ' + (link.original_filename || 'file')"
:aria-label="'{{ _('shared.revoke_aria_prefix') }} ' + (link.original_filename || '{{ _('shared.revoke_aria_file') }}')"
>
<i class="fas fa-ban mr-1" aria-hidden="true"></i> Revoke
<i class="fas fa-ban mr-1" aria-hidden="true"></i> {{ _("shared.revoke_btn") }}
</button>
<span x-show="!link.is_active" class="text-xs text-gray-400 dark:text-gray-500"></span>
</td>
+19 -21
View File
@@ -1,5 +1,5 @@
{% extends "base.html" %}
{% block title %}Document Similarity - DocuElevate{% endblock %}
{% block title %}{{ _("similarity.page_title") }}{% endblock %}
{% block head_extra %}
<style>
@@ -97,45 +97,43 @@
<main id="main-content" class="sim-container px-4 py-8">
<h1 class="text-2xl font-bold mb-2">
<i class="fas fa-project-diagram text-blue-500" aria-hidden="true"></i>
Document Similarity
{{ _("similarity.heading") }}
</h1>
<p class="text-gray-500 mb-6 text-sm">
Pairs of documents with high semantic similarity, ranked by score.
Embeddings are computed during document ingestion; a background task
also backfills any files that were processed before this feature was enabled.
{{ _("similarity.subtitle") }}
</p>
<!-- Embedding coverage stats -->
<div class="stats-bar">
<div class="stat-card">
<div class="stat-value">{{ total_files }}</div>
<div class="stat-label">Total Files</div>
<div class="stat-label">{{ _("similarity.stat_total_files") }}</div>
</div>
<div class="stat-card">
<div class="stat-value" style="color: #2563eb;">{{ files_with_embedding }}</div>
<div class="stat-label">With Embedding</div>
<div class="stat-label">{{ _("similarity.stat_with_embedding") }}</div>
</div>
<div class="stat-card">
<div class="stat-value" style="color: {% if files_missing_embedding > 0 %}#d97706{% else %}#059669{% endif %};">
{{ files_missing_embedding }}
</div>
<div class="stat-label">Missing Embedding</div>
<div class="stat-label">{{ _("similarity.stat_missing_embedding") }}</div>
</div>
<div class="stat-card">
<div class="stat-value text-sm" style="word-break: break-all;">{{ embedding_model }}</div>
<div class="stat-label">Embedding Model</div>
<div class="stat-label">{{ _("similarity.stat_embedding_model") }}</div>
</div>
</div>
{% if files_missing_embedding > 0 %}
<div style="background: #fffff0; border: 1px solid #fefcbf; border-radius: 0.5rem; padding: 0.75rem 1rem; margin-bottom: 1.5rem; font-size: 0.85rem; color: #975a16;">
<i class="fas fa-exclamation-triangle" aria-hidden="true"></i>
<strong>{{ files_missing_embedding }}</strong> file(s) have OCR text but no embedding yet.
The background task will compute them automatically every 5 minutes, or you can
<strong>{{ files_missing_embedding }}</strong> {{ _("similarity.files_missing_text") }}
{{ _("similarity.backfill_auto") }}
<button onclick="triggerBackfill()" id="backfill-btn"
style="background: #d97706; color: white; border: none; padding: 0.2rem 0.6rem; border-radius: 0.25rem; cursor: pointer; font-size: 0.8rem; min-height: 44px; min-width: 44px;"
aria-label="Trigger embedding computation for all files missing embeddings">
trigger it now
aria-label="{{ _('similarity.trigger_aria') }}">
{{ _("similarity.trigger_now") }}
</button>.
</div>
{% endif %}
@@ -144,12 +142,12 @@
<div class="controls">
<form id="pairsForm" onsubmit="loadPairs(event)" class="controls-form">
<div class="flex flex-col gap-1">
<label for="pairThreshold">Min. similarity</label>
<label for="pairThreshold">{{ _("similarity.min_similarity_label") }}</label>
<input type="number" id="pairThreshold" min="0" max="1" step="0.05"
value="{{ default_threshold }}" style="min-height:44px;">
</div>
<div class="flex flex-col gap-1">
<label for="pairLimit">Per page</label>
<label for="pairLimit">{{ _("similarity.per_page_label") }}</label>
<select id="pairLimit" style="min-height:44px;">
<option value="25">25</option>
<option value="50" selected>50</option>
@@ -159,7 +157,7 @@
<button type="submit"
style="min-height:44px; background-color: #2563eb; color: white; font-weight: 700;
padding: 0 1.25rem; border: none; border-radius: 0.5rem; cursor: pointer;">
<i class="fas fa-search" aria-hidden="true"></i> Find Pairs
<i class="fas fa-search" aria-hidden="true"></i> {{ _("similarity.find_pairs_btn") }}
</button>
</form>
</div>
@@ -167,23 +165,23 @@
<!-- Results area -->
<div id="pairs-loading" style="text-align: center; padding: 2rem; color: #718096;">
<i class="fas fa-spinner fa-spin" aria-hidden="true" style="font-size: 1.5rem; margin-bottom: 0.5rem;"></i>
<p>Scanning for similar document pairs…</p>
<p>{{ _("similarity.scanning") }}</p>
</div>
<div id="pairs-content" style="display: none;" aria-live="polite"></div>
<div id="pairs-empty" style="display: none;" class="empty-state">
<i class="fas fa-check-circle text-green-400" aria-hidden="true"></i>
<p class="font-semibold text-lg text-gray-700">No similar pairs found</p>
<p class="font-semibold text-lg text-gray-700">{{ _("similarity.no_pairs_heading") }}</p>
<p class="text-sm mt-1" id="pairs-empty-detail">
No document pairs exceed the similarity threshold.
{{ _("similarity.no_pairs_detail") }}
</p>
</div>
<div id="pairs-error" style="display: none;" class="empty-state">
<i class="fas fa-exclamation-triangle text-red-400" aria-hidden="true"></i>
<p class="font-semibold text-lg text-gray-700" id="pairs-error-msg">Failed to load pairs.</p>
<p class="font-semibold text-lg text-gray-700" id="pairs-error-msg">{{ _("similarity.load_error") }}</p>
</div>
<!-- Pagination -->
<nav id="pairs-pagination" class="pagination" style="display: none;" aria-label="Similarity pairs pagination"></nav>
<nav id="pairs-pagination" class="pagination" style="display: none;" aria-label="{{ _('similarity.pagination_aria') }}"></nav>
</main>
{% endblock %}
+20 -20
View File
@@ -1,28 +1,28 @@
{% extends "base.html" %}
{% block title %}Upload Document{% endblock %}
{% block title %}{{ _("upload.page_title") }}{% endblock %}
{% block content %}
<div class="flex flex-col items-center justify-center p-4 sm:p-8">
<h1 class="text-2xl sm:text-3xl font-bold mb-6 sm:mb-8">Upload Files</h1>
<h1 class="text-2xl sm:text-3xl font-bold mb-6 sm:mb-8">{{ _("upload.page_title") }}</h1>
<!-- File Upload Section -->
<div class="w-full max-w-2xl mb-6 sm:mb-8">
<h2 class="text-xl font-semibold mb-4">Upload from Device</h2>
<h2 class="text-xl font-semibold mb-4">{{ _("upload.section_device") }}</h2>
<form action="/api/ui-upload" method="POST" enctype="multipart/form-data">
<div
id="dropZone"
class="border-4 border-dashed border-gray-300 rounded-lg p-6 sm:p-8 bg-white text-center w-full"
role="button"
tabindex="0"
aria-label="File upload area. Drag and drop files here, or press Enter to browse files."
aria-label="{{ _('upload.drop_zone_aria') }}"
ondragover="handleDragOver(event)"
ondragleave="handleDragLeave(event)"
>
<p class="text-gray-500 mb-4 hidden sm:block">
Drag &amp; drop files or folders here, or click to select files.
{{ _("upload.drop_hint_desktop") }}
</p>
<p class="text-gray-500 mb-4 sm:hidden">
Tap to select files or use the camera button below.
{{ _("upload.drop_hint_mobile") }}
</p>
<input
id="fileInput"
@@ -31,7 +31,7 @@
onchange="handleFileSelect(event)"
name="files"
multiple
aria-label="Select files to upload"
aria-label="{{ _('upload.select_file') }}"
accept="application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation,image/*"
/>
<!-- Browse Files button (all devices) -->
@@ -41,11 +41,11 @@
class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-3 px-6 rounded-lg transition duration-200 mb-4"
style="min-height:44px;"
>
<i class="fas fa-folder-open mr-2" aria-hidden="true"></i> Browse Files
<i class="fas fa-folder-open mr-2" aria-hidden="true"></i> {{ _("upload.browse_button") }}
</button>
<div class="text-sm text-gray-500 mt-2">
<p>Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images</p>
<p>Maximum size: 500MB per file &bull; Directories are uploaded recursively</p>
<p>{{ _("upload.file_types") }}</p>
<p>{{ _("upload.file_size_hint") }}</p>
</div>
</div>
@@ -55,7 +55,7 @@
class="w-full flex items-center justify-center gap-2 bg-green-500 hover:bg-green-700 text-white font-bold py-3 px-6 rounded-lg transition duration-200 cursor-pointer"
style="min-height:44px;"
>
<i class="fas fa-camera" aria-hidden="true"></i> Take Photo / Scan Document
<i class="fas fa-camera" aria-hidden="true"></i> {{ _("upload.camera_button") }}
<input
id="cameraInput"
type="file"
@@ -63,7 +63,7 @@
onchange="handleFileSelect(event)"
accept="image/*"
capture="environment"
aria-label="Take photo or scan document"
aria-label="{{ _('upload.camera_button') }}"
/>
</label>
</div>
@@ -72,40 +72,40 @@
<!-- URL Upload Section -->
<div class="w-full max-w-2xl mb-6 sm:mb-8">
<h2 class="text-xl font-semibold mb-4">Upload from URL</h2>
<h2 class="text-xl font-semibold mb-4">{{ _("upload.section_url") }}</h2>
<div class="bg-white border border-gray-300 rounded-lg p-4 sm:p-6">
<form id="urlUploadForm" class="space-y-4">
<div>
<label for="urlInput" class="block text-sm font-medium text-gray-700 mb-2">
File URL
{{ _("upload.url_label") }}
</label>
<input
type="url"
id="urlInput"
name="url"
placeholder="https://example.com/document.pdf"
placeholder="{{ _('upload.url_placeholder') }}"
class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500"
style="min-height:44px;"
required
/>
<p class="text-sm text-gray-500 mt-1">
Enter a direct link to a file (PDF, Office documents, or images)
{{ _("upload.url_description") }}
</p>
</div>
<div>
<label for="urlFilename" class="block text-sm font-medium text-gray-700 mb-2">
Filename (optional)
{{ _("upload.filename_label") }}
</label>
<input
type="text"
id="urlFilename"
name="filename"
placeholder="my-document.pdf"
placeholder="{{ _('upload.filename_placeholder') }}"
class="w-full px-4 py-3 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500"
style="min-height:44px;"
/>
<p class="text-sm text-gray-500 mt-1">
Leave empty to use filename from URL
{{ _("upload.filename_description") }}
</p>
</div>
<button
@@ -113,7 +113,7 @@
class="w-full bg-blue-500 hover:bg-blue-700 text-white font-bold py-3 px-4 rounded-lg transition duration-200"
style="min-height:44px;"
>
Download and Process
{{ _("upload.download_button") }}
</button>
</form>
<div id="urlStatusMessage" class="mt-4" aria-live="polite"></div>
+12 -12
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DocuElevate - Verify Your Email</title>
<title>{{ _("auth.verify_email_page_title") }}</title>
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA=="
@@ -13,7 +13,7 @@
<body class="bg-gray-100 min-h-screen flex items-center justify-center py-8">
<main class="bg-white rounded-lg shadow-lg p-8 max-w-md w-full text-center" role="main">
<div class="flex justify-center mb-6">
<img src="/static/images/logo_writing.svg" alt="DocuElevate Logo" class="h-16">
<img src="/static/images/logo_writing.svg" alt="{{ _('auth.logo_alt') }}" class="h-16">
</div>
<div class="flex justify-center mb-4">
@@ -22,19 +22,19 @@
</div>
</div>
<h1 class="text-2xl font-bold text-gray-800 mb-2">Check your inbox</h1>
<h1 class="text-2xl font-bold text-gray-800 mb-2">{{ _("auth.verify_email_heading") }}</h1>
<p class="text-gray-600 mb-6">
We've sent you a verification email. Please click the link in the email to activate your account.
{{ _("auth.verify_email_message") }}
</p>
<p class="text-sm text-gray-500 mb-8">
The link expires in 24 hours. If you don't see the email, check your spam folder.
{{ _("auth.verify_email_expiry") }}
</p>
<div
x-data="{ email: '', loading: false, message: '', error: '' }"
class="border-t border-gray-100 pt-6"
>
<p class="text-sm text-gray-600 mb-3">Didn't receive it?</p>
<p class="text-sm text-gray-600 mb-3">{{ _("auth.verify_email_resend_prompt") }}</p>
<div x-show="message" x-cloak
class="bg-green-100 border-l-4 border-green-500 text-green-700 p-3 mb-4 rounded text-sm"
@@ -73,14 +73,14 @@
novalidate
>
<div>
<label for="resend-email" class="sr-only">Email address</label>
<label for="resend-email" class="sr-only">{{ _("auth.verify_email_resend_label") }}</label>
<input
type="email" id="resend-email" name="email"
x-model="email"
placeholder="Enter your email address"
placeholder="{{ _('auth.verify_email_resend_placeholder') }}"
autocomplete="email"
class="block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring focus:ring-indigo-500 focus:ring-opacity-50 text-sm"
aria-label="Email address for resend"
aria-label="{{ _('auth.verify_email_resend_aria_label') }}"
style="min-height:44px;"
>
</div>
@@ -90,9 +90,9 @@
class="w-full flex justify-center py-2 px-4 border border-indigo-600 rounded-md text-sm font-medium text-indigo-600 hover:bg-indigo-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 disabled:opacity-50"
style="min-height:44px;"
>
<span x-show="!loading">Resend verification email</span>
<span x-show="!loading">{{ _("auth.verify_email_resend_button") }}</span>
<span x-show="loading" x-cloak>
<i class="fas fa-spinner fa-spin mr-2" aria-hidden="true"></i>Sending&hellip;
<i class="fas fa-spinner fa-spin mr-2" aria-hidden="true"></i>{{ _("common.loading") }}
</span>
</button>
</form>
@@ -100,7 +100,7 @@
<div class="mt-6 text-center">
<a href="/login" class="text-sm font-medium text-blue-600 hover:text-blue-500">
Back to sign in
{{ _("auth.verify_email_back_sign_in") }}
</a>
</div>
</main>
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+421 -3
View File
@@ -193,7 +193,7 @@
"upload.button_processing": "Processing...",
"files.page_title": "File Records",
"files.drop_overlay_title": "Drop files or folders anywhere to upload",
"files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more",
"files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more folders are processed recursively",
"files.upload_modal_header": "Uploading Files",
"files.queue_banner_link": "View Queue",
"files.filter_search_placeholder": "Enter filename...",
@@ -216,7 +216,7 @@
"files.saved_searches_empty": "No saved searches yet",
"files.saved_searches_save": "Save Current",
"files.saved_searches_error": "Could not load saved searches",
"files.fulltext_search_label": "Full-Text Search",
"files.fulltext_search_label": "Full-Text Search (OCR text, metadata, tags)",
"files.fulltext_search_placeholder": "Search document content, sender, tags, type...",
"files.search_results_title": "Search Results",
"files.search_results_empty": "No results found.",
@@ -481,5 +481,423 @@
"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",
"files.upload_modal_close": "Close upload progress",
"files.upload_modal_aria": "Upload progress",
"files.filter_form_aria": "Filter files",
"files.filter_search_label": "Search Filename",
"files.filter_date_from_aria": "Filter from date",
"files.filter_date_to_aria": "Filter to date",
"files.filter_tags_aria": "Filter by tags (comma-separated)",
"files.filter_ocr_quality_aria": "Filter by OCR quality score",
"files.saved_searches_save_aria": "Save current filters as a saved search",
"files.status_duplicate": "Duplicate",
"files.files_selected": "files selected",
"files.error_hint": "This might be due to a configuration or import issue. Please check the server logs.",
"files.queue_banner_items": "item(s) are currently queued or being processed. Files will appear here once processing completes.",
"files.pagination_showing": "Showing",
"files.pagination_of": "of",
"files.pagination_files": "files",
"files.table_aria": "File records",
"files.pagination_nav_aria": "File list pagination",
"settings.page_heading": "Application Settings",
"settings.manage_config_prefix": "Manage configuration. Priority:",
"settings.source_db_badge": "DB",
"settings.source_env_badge": "ENV",
"settings.source_default_badge": "DEFAULT",
"settings.restart_required_suffix": "= restart required",
"settings.encrypted_suffix": "= encrypted at rest",
"settings.wizard_btn": "Wizard",
"settings.db_wizard_btn": "DB Wizard",
"settings.export_btn": "Export",
"settings.export_db_only": "DB settings only",
"settings.export_full_config": "Full effective config",
"settings.audit_log_btn": "Audit Log",
"settings.search_placeholder": "Search settings by name, key, or description…",
"settings.search_aria_label": "Search settings",
"settings.search_clear_aria": "Clear search",
"settings.categories_heading": "Categories",
"settings.categories_aria": "Settings categories",
"settings.jump_to_category": "Jump to category…",
"settings.no_results_heading": "No settings found",
"settings.no_results_hint": "Try a different search term or",
"settings.no_results_clear": "clear the search",
"settings.settings_count_suffix": "settings",
"settings.required_label": "(required)",
"settings.boolean_enable_prefix": "Enable",
"settings.effective_value_label": "Effective 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.autocomplete_no_matches": "No matches — you can still type a custom value",
"settings.autocomplete_hint": "Type to search known values, or enter any custom value.",
"settings.autocomplete_placeholder": "Type to search or enter a value…",
"settings.model_picker_placeholder": "Select a common model or type a custom name…",
"settings.model_picker_hint": "Pick from the list or type any model name supported by your provider.",
"settings.encrypted_title": "Value is encrypted at rest in database",
"settings.toggle_visibility_title": "Show/hide value",
"settings.toggle_visibility_aria": "Toggle password visibility",
"settings.revert_title": "Remove DB override and revert to environment variable or default",
"settings.revert_btn": "Remove from DB",
"settings.reverting": "Reverting…",
"settings.save_setting_title": "Save this setting",
"settings.saving_state": "Saving…",
"settings.save_all_btn": "Save All Changes",
"pipelines.new_pipeline_btn": "New Pipeline",
"pipelines.subtitle_intro": "Define and manage custom document processing workflows.",
"pipelines.subtitle_system_pre": "System pipelines (created by admins) are shown with a",
"pipelines.subtitle_system_post": "badge and are visible to all users.",
"pipelines.loading": "Loading pipelines…",
"pipelines.empty_state_hint": "Create your first pipeline to define custom document processing workflows.",
"pipelines.no_steps": "No steps defined. Add a step to start building your pipeline.",
"pipelines.add_step_btn": "Add Step",
"pipelines.name_placeholder": "My pipeline",
"pipelines.description_placeholder": "Optional description",
"pipelines.system_pipeline_label": "System pipeline (visible to all users)",
"pipelines.step_type_label": "Step Type",
"pipelines.custom_label_label": "Custom Label",
"pipelines.optional_suffix": "(optional)",
"pipelines.step_label_placeholder": "Override the default step name",
"pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)",
"pipelines.ocr_language_label": "OCR Language",
"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.",
"common.select_placeholder": "— select —",
"error.404_title": "404 - Not Found",
"error.500_title": "Server Error - DocuElevate",
"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_debug_info": "Show Debug Info",
"billing.success_page_title": "DocuElevate - Subscription Activated",
"billing.success_heading": "You're all set!",
"billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!",
"billing.manage_subscription": "Manage subscription",
"billing.go_to_dashboard": "Go to dashboard",
"about.page_title": "About DocuElevate",
"about.heading": "About DocuElevate",
"about.intro_pre": "Welcome to ",
"about.intro_post": " your modern, intelligent solution for document processing! Weve built DocuElevate to completely transform the way you handle your documents from upload to extraction, from processing to storage.",
"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 youre 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.",
"about.features_heading": "Key Features",
"about.features_processing_heading": "Document Processing",
"about.features_processing_upload": "Simple and secure file uploads with drag & drop support",
"about.features_processing_ocr": "OCR powered by Azure Document Intelligence",
"about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider",
"about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg",
"about.features_processing_classification": "Intelligent document classification and date extraction",
"about.features_integration_heading": "Integration & Storage",
"about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)",
"about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3",
"about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV",
"about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding",
"about.features_automation_heading": "Automation",
"about.features_automation_imap": "IMAP inbox polling from multiple sources",
"about.features_automation_gmail": "Gmail and generic email account integration",
"about.features_automation_ingestion": "Automated document ingestion from various inputs",
"about.features_automation_background": "Background processing with Redis and Celery",
"about.features_admin_heading": "Administration",
"about.features_admin_api": "Powerful REST API for programmatic access",
"about.features_admin_oauth2": "OAuth2 authentication support with Authentik",
"about.features_admin_config": "Highly configurable via environment variables",
"about.features_admin_docker": "Docker-ready for easy deployment and scaling",
"about.creator_heading": "Meet the Creator",
"about.creator_pre": "DocuElevate is passionately developed by",
"about.creator_name": "Christian Krakau-Louis",
"about.legal_heading": "Privacy & Legal",
"about.legal_description": "We care about your privacy and data security. Please review our:",
"about.legal_privacy": "Privacy Notice",
"about.legal_license": "License Information",
"about.involved_heading": "Get Involved",
"about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?",
"about.github_logo_alt": "GitHub Logo",
"about.involved_github": "View DocuElevate on GitHub",
"about.involved_website": "Visit DocuElevate Website",
"about.involved_docs": "Read the Documentation",
"auth.verify_email_page_title": "DocuElevate - Verify Your Email",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve sent you a verification email. Please click the link in the email to activate your account.",
"auth.verify_email_expiry": "The link expires in 24 hours. If you dont see the email, check your spam folder.",
"auth.verify_email_resend_prompt": "Didnt receive it?",
"auth.verify_email_resend_label": "Email address",
"auth.verify_email_resend_placeholder": "Enter your email address",
"auth.verify_email_resend_aria_label": "Email address for resend",
"auth.verify_email_resend_button": "Resend verification email",
"auth.verify_email_back_sign_in": "Back to sign in",
"auth.sign_in_with": "Sign in with"
}
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+418
View File
@@ -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! Weve 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 youre 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 dont see the email, check your spam folder.",
"auth.verify_email_heading": "Check your inbox",
"auth.verify_email_message": "Weve 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": "Didnt 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 couldnt find that page!",
"error.404_home": "Return Home",
"error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Dont worry weve 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": "Cant find what youre 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",
+1 -1
View File
@@ -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."""