From 1875986ce88e4433282a6071fbcfce29328c6d7e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Mar 2026 23:05:10 +0000 Subject: [PATCH 01/71] Initial plan From 40d56f0396b42754954cea03e4efa2e442121313 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Mar 2026 23:34:37 +0000 Subject: [PATCH 02/71] feat(routing): add conditional routing rules for document-to-pipeline assignment - Add PipelineRoutingRule model to app/models.py - Add Alembic migration 027_add_routing_rules - Add routing engine (app/utils/routing_engine.py) with rule evaluation - Add CRUD API endpoints (app/api/routing_rules.py) - Register router in app/api/__init__.py - Add comprehensive tests (73 tests, all passing) Supported fields: file_type, document_type, category, filename, size, metadata.* Supported operators: equals, not_equals, contains, not_contains, regex, gt, lt, gte, lte First-match-wins evaluation with default pipeline fallback Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> --- app/api/__init__.py | 2 + app/api/routing_rules.py | 470 +++++++++++ app/models.py | 51 ++ app/utils/routing_engine.py | 223 +++++ migrations/versions/027_add_routing_rules.py | 46 ++ tests/conftest.py | 1 + tests/test_routing_rules.py | 803 +++++++++++++++++++ 7 files changed, 1596 insertions(+) create mode 100644 app/api/routing_rules.py create mode 100644 app/utils/routing_engine.py create mode 100644 migrations/versions/027_add_routing_rules.py create mode 100644 tests/test_routing_rules.py diff --git a/app/api/__init__.py b/app/api/__init__.py index ae98cbd7..61437789 100644 --- a/app/api/__init__.py +++ b/app/api/__init__.py @@ -28,6 +28,7 @@ from app.api.pipelines import router as pipelines_router from app.api.plans import router as plans_router from app.api.process import router as process_router from app.api.queue import router as queue_router +from app.api.routing_rules import router as routing_rules_router from app.api.saved_searches import router as saved_searches_router from app.api.scheduled_jobs import router as scheduled_jobs_router from app.api.search import router as search_router @@ -78,6 +79,7 @@ router.include_router(plans_router) router.include_router(onboarding_router) router.include_router(billing_router) router.include_router(pipelines_router) +router.include_router(routing_rules_router) router.include_router(imap_accounts_router) router.include_router(integrations_router) router.include_router(notifications_router) diff --git a/app/api/routing_rules.py b/app/api/routing_rules.py new file mode 100644 index 00000000..fa8db9cf --- /dev/null +++ b/app/api/routing_rules.py @@ -0,0 +1,470 @@ +"""Routing rules API endpoints. + +Provides full CRUD for pipeline routing rules that conditionally assign +documents to pipelines based on document properties (file type, category, +metadata fields, size, etc.). + +Rules are evaluated in ascending ``position`` order. The first rule whose +condition matches wins and routes the document to the specified target +pipeline. If no rule matches, the caller falls back to the owner's (or +system) default pipeline. +""" + +import logging +from typing import Annotated, Any + +from fastapi import APIRouter, Body, Depends, HTTPException, Request, status +from pydantic import BaseModel, Field +from sqlalchemy.orm import Session + +from app.auth import require_login +from app.database import get_db +from app.models import Pipeline, PipelineRoutingRule +from app.utils.routing_engine import ( + BUILTIN_FIELDS, + VALID_OPERATORS, + _evaluate_condition, + _resolve_field, +) + +logger = logging.getLogger(__name__) + +router = APIRouter(prefix="/routing-rules", tags=["routing-rules"]) + +DbSession = Annotated[Session, Depends(get_db)] + +MAX_RULES_PER_OWNER = 100 +MAX_NAME_LENGTH = 255 + + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + + +def _get_user_id(request: Request) -> str: + """Return the authenticated user identifier.""" + user = getattr(request.state, "user", None) + if user: + if isinstance(user, dict): + return user.get("sub", user.get("email", "anonymous")) + return getattr(user, "sub", getattr(user, "email", "anonymous")) + return "anonymous" + + +def _is_admin(request: Request) -> bool: + """Return ``True`` when the current user has admin privileges.""" + user = getattr(request.state, "user", None) + if not user: + return False + groups = user.get("groups", []) if isinstance(user, dict) else getattr(user, "groups", []) + return "admin" in groups + + +def _can_access_rule(rule: PipelineRoutingRule, user_id: str, admin: bool) -> bool: + """Check whether the user is allowed to read this rule.""" + if admin: + return True + return rule.owner_id == user_id + + +def _can_write_rule(rule: PipelineRoutingRule, user_id: str, admin: bool) -> bool: + """Check whether the user is allowed to modify this rule.""" + if rule.owner_id is None: + return admin + return rule.owner_id == user_id + + +def _validate_field(field: str) -> None: + """Raise 422 if the field name is invalid.""" + if field in BUILTIN_FIELDS: + return + if field.startswith("metadata.") and len(field) > len("metadata."): + return + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=( + f"Invalid field '{field}'. " + f"Valid built-in fields: {sorted(BUILTIN_FIELDS)}. " + "For AI metadata, use 'metadata.'." + ), + ) + + +def _validate_operator(operator: str) -> None: + """Raise 422 if the operator is not recognised.""" + if operator not in VALID_OPERATORS: + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail=f"Invalid operator '{operator}'. Valid operators: {sorted(VALID_OPERATORS)}", + ) + + +def _serialize_rule(rule: PipelineRoutingRule) -> dict[str, Any]: + """Serialize a routing rule to a JSON-compatible dict.""" + return { + "id": rule.id, + "owner_id": rule.owner_id, + "name": rule.name, + "position": rule.position, + "field": rule.field, + "operator": rule.operator, + "value": rule.value, + "target_pipeline_id": rule.target_pipeline_id, + "is_active": rule.is_active, + "created_at": rule.created_at.isoformat() if rule.created_at else None, + "updated_at": rule.updated_at.isoformat() if rule.updated_at else None, + } + + +# --------------------------------------------------------------------------- +# Pydantic request models +# --------------------------------------------------------------------------- + + +class RoutingRuleCreate(BaseModel): + """Request body for creating a routing rule.""" + + name: str = Field(..., min_length=1, max_length=MAX_NAME_LENGTH) + field: str = Field(..., min_length=1, max_length=255) + operator: str = Field(..., min_length=1, max_length=50) + value: str = Field(..., max_length=1024) + target_pipeline_id: int + position: int | None = None + is_active: bool = True + + +class RoutingRuleUpdate(BaseModel): + """Request body for updating a routing rule.""" + + name: str | None = Field(None, min_length=1, max_length=MAX_NAME_LENGTH) + field: str | None = Field(None, min_length=1, max_length=255) + operator: str | None = Field(None, min_length=1, max_length=50) + value: str | None = Field(None, max_length=1024) + target_pipeline_id: int | None = None + position: int | None = None + is_active: bool | None = None + + +class RoutingRuleEvaluateRequest(BaseModel): + """Request body for dry-run rule evaluation.""" + + file_type: str | None = None + filename: str | None = None + size: int | None = None + document_type: str | None = None + metadata: dict[str, Any] | None = None + + +# --------------------------------------------------------------------------- +# Endpoints +# --------------------------------------------------------------------------- + + +@router.get("") +@require_login +def list_routing_rules(request: Request, db: DbSession) -> list[dict[str, Any]]: + """List all routing rules accessible by the current user. + + Returns the user's own rules plus any system-wide rules (``owner_id=NULL``). + Rules are sorted by position. + """ + user_id = _get_user_id(request) + admin = _is_admin(request) + + query = db.query(PipelineRoutingRule) + if admin: + query = query.filter((PipelineRoutingRule.owner_id == user_id) | (PipelineRoutingRule.owner_id.is_(None))) + else: + query = query.filter((PipelineRoutingRule.owner_id == user_id) | (PipelineRoutingRule.owner_id.is_(None))) + + rules = query.order_by( + PipelineRoutingRule.owner_id.is_(None).asc(), + PipelineRoutingRule.position.asc(), + ).all() + + return [_serialize_rule(r) for r in rules] + + +@router.post("", status_code=status.HTTP_201_CREATED) +@require_login +def create_routing_rule(request: Request, db: DbSession, body: RoutingRuleCreate) -> dict[str, Any]: + """Create a new routing rule for the current user. + + Returns: + The created routing rule. + + Raises: + HTTPException 422: If the field or operator is invalid. + HTTPException 404: If the target pipeline does not exist. + HTTPException 409: If the maximum number of rules is reached. + """ + user_id = _get_user_id(request) + + _validate_field(body.field) + _validate_operator(body.operator) + + # Verify target pipeline exists and is accessible. + pipeline = db.query(Pipeline).filter(Pipeline.id == body.target_pipeline_id).first() + if not pipeline: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"Target pipeline {body.target_pipeline_id} not found", + ) + + # Enforce per-owner limit. + count = db.query(PipelineRoutingRule).filter(PipelineRoutingRule.owner_id == user_id).count() + if count >= MAX_RULES_PER_OWNER: + raise HTTPException( + status_code=status.HTTP_409_CONFLICT, + detail=f"Maximum of {MAX_RULES_PER_OWNER} routing rules per user reached", + ) + + # Auto-assign position if not specified. + position = body.position + if position is None: + max_pos = ( + db.query(PipelineRoutingRule.position) + .filter(PipelineRoutingRule.owner_id == user_id) + .order_by(PipelineRoutingRule.position.desc()) + .first() + ) + position = (max_pos[0] + 1) if max_pos else 0 + + rule = PipelineRoutingRule( + owner_id=user_id, + name=body.name.strip(), + position=position, + field=body.field, + operator=body.operator, + value=body.value, + target_pipeline_id=body.target_pipeline_id, + is_active=body.is_active, + ) + + try: + db.add(rule) + db.commit() + db.refresh(rule) + except Exception: + db.rollback() + logger.exception("Failed to create routing rule for user=%s", user_id) + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail="Failed to create routing rule", + ) + + logger.info("Routing rule created: id=%s, user=%s", rule.id, user_id) + return _serialize_rule(rule) + + +@router.get("/operators") +def list_operators() -> dict[str, Any]: + """Return the list of supported operators and fields. + + This is a public endpoint (no auth required) so that UIs can populate + dropdowns without hard-coding the catalogue. + """ + return { + "operators": sorted(VALID_OPERATORS), + "builtin_fields": sorted(BUILTIN_FIELDS), + "metadata_prefix": "metadata.", + } + + +@router.post("/evaluate") +@require_login +def evaluate_rules(request: Request, db: DbSession, body: RoutingRuleEvaluateRequest) -> dict[str, Any]: + """Dry-run rule evaluation against the provided document properties. + + Returns the first matching rule and target pipeline (if any), or + indicates that no rule matched (default pipeline will be used). + """ + user_id = _get_user_id(request) + + doc_props: dict[str, Any] = { + "file_type": body.file_type, + "filename": body.filename, + "size": body.size, + "document_type": body.document_type, + "metadata": body.metadata or {}, + } + + rules = ( + db.query(PipelineRoutingRule) + .filter( + PipelineRoutingRule.is_active.is_(True), + (PipelineRoutingRule.owner_id == user_id) | (PipelineRoutingRule.owner_id.is_(None)), + ) + .order_by( + PipelineRoutingRule.owner_id.is_(None).asc(), + PipelineRoutingRule.position.asc(), + ) + .all() + ) + + for rule in rules: + actual = _resolve_field(rule.field, doc_props) + if _evaluate_condition(actual, rule.operator, rule.value): + pipeline = db.query(Pipeline).filter(Pipeline.id == rule.target_pipeline_id).first() + return { + "matched": True, + "rule": _serialize_rule(rule), + "target_pipeline": { + "id": pipeline.id, + "name": pipeline.name, + "is_active": pipeline.is_active, + } + if pipeline + else None, + } + + return {"matched": False, "rule": None, "target_pipeline": None} + + +@router.put("/reorder") +@require_login +def reorder_routing_rules( + request: Request, + db: DbSession, + rule_ids: list[int] = Body(..., embed=True), +) -> list[dict[str, Any]]: + """Reorder the caller's routing rules. + + Expects a JSON body ``{"rule_ids": [3, 1, 2]}`` where the list + contains the IDs of the caller's rules in the desired order. + """ + user_id = _get_user_id(request) + + rules = ( + db.query(PipelineRoutingRule) + .filter(PipelineRoutingRule.owner_id == user_id, PipelineRoutingRule.id.in_(rule_ids)) + .all() + ) + + rule_map = {r.id: r for r in rules} + + if len(rule_map) != len(rule_ids) or set(rule_map.keys()) != set(rule_ids): + raise HTTPException( + status_code=status.HTTP_422_UNPROCESSABLE_ENTITY, + detail="rule_ids must contain exactly the IDs of your routing rules", + ) + + for pos, rid in enumerate(rule_ids): + rule_map[rid].position = pos + + try: + db.commit() + except Exception: + db.rollback() + logger.exception("Failed to reorder routing rules for user=%s", user_id) + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail="Failed to reorder routing rules", + ) + + ordered = sorted(rules, key=lambda r: r.position) + return [_serialize_rule(r) for r in ordered] + + +@router.get("/{rule_id}") +@require_login +def get_routing_rule(rule_id: int, request: Request, db: DbSession) -> dict[str, Any]: + """Return a single routing rule by ID.""" + user_id = _get_user_id(request) + admin = _is_admin(request) + + rule = db.query(PipelineRoutingRule).filter(PipelineRoutingRule.id == rule_id).first() + if not rule or not _can_access_rule(rule, user_id, admin): + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Routing rule not found") + + return _serialize_rule(rule) + + +@router.put("/{rule_id}") +@require_login +def update_routing_rule(rule_id: int, request: Request, db: DbSession, body: RoutingRuleUpdate) -> dict[str, Any]: + """Update a routing rule. + + Only the fields present in the request body are updated. + """ + user_id = _get_user_id(request) + admin = _is_admin(request) + + rule = db.query(PipelineRoutingRule).filter(PipelineRoutingRule.id == rule_id).first() + if not rule or not _can_access_rule(rule, user_id, admin): + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Routing rule not found") + + if not _can_write_rule(rule, user_id, admin): + raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Cannot modify this rule") + + if body.field is not None: + _validate_field(body.field) + rule.field = body.field + + if body.operator is not None: + _validate_operator(body.operator) + rule.operator = body.operator + + if body.value is not None: + rule.value = body.value + + if body.name is not None: + rule.name = body.name.strip() + + if body.target_pipeline_id is not None: + pipeline = db.query(Pipeline).filter(Pipeline.id == body.target_pipeline_id).first() + if not pipeline: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail=f"Target pipeline {body.target_pipeline_id} not found", + ) + rule.target_pipeline_id = body.target_pipeline_id + + if body.position is not None: + rule.position = body.position + + if body.is_active is not None: + rule.is_active = body.is_active + + try: + db.commit() + db.refresh(rule) + except Exception: + db.rollback() + logger.exception("Failed to update routing rule id=%s", rule_id) + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail="Failed to update routing rule", + ) + + logger.info("Routing rule updated: id=%s, user=%s", rule_id, user_id) + return _serialize_rule(rule) + + +@router.delete("/{rule_id}", status_code=status.HTTP_204_NO_CONTENT) +@require_login +def delete_routing_rule(rule_id: int, request: Request, db: DbSession) -> None: + """Delete a routing rule.""" + user_id = _get_user_id(request) + admin = _is_admin(request) + + rule = db.query(PipelineRoutingRule).filter(PipelineRoutingRule.id == rule_id).first() + if not rule or not _can_access_rule(rule, user_id, admin): + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Routing rule not found") + + if not _can_write_rule(rule, user_id, admin): + raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="Cannot modify this rule") + + try: + db.delete(rule) + db.commit() + except Exception: + db.rollback() + logger.exception("Failed to delete routing rule id=%s", rule_id) + raise HTTPException( + status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, + detail="Failed to delete routing rule", + ) + + logger.info("Routing rule deleted: id=%s, user=%s", rule_id, user_id) diff --git a/app/models.py b/app/models.py index 0cc7b53a..c6a82b56 100644 --- a/app/models.py +++ b/app/models.py @@ -7,6 +7,7 @@ from app.database import Base # Foreign key constants _FILES_ID_FK = "files.id" _PIPELINES_ID_FK = "pipelines.id" +_ROUTING_RULES_TABLE = "pipeline_routing_rules" class DocumentMetadata(Base): @@ -833,3 +834,53 @@ class ScheduledJob(Base): created_at = Column(DateTime(timezone=True), server_default=func.now()) updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) + + +class PipelineRoutingRule(Base): + """Conditional routing rule that assigns documents to pipelines. + + Rules are evaluated in ascending ``position`` order for a given owner. + The first rule whose condition matches the document properties wins and + the document is routed to ``target_pipeline_id``. If no rule matches, + the caller falls back to the owner's (or system) default pipeline. + + Supported fields: + file_type, document_type, category, filename, size, and any key + inside the AI-extracted metadata JSON (prefixed ``metadata.``). + + Supported operators: + equals, not_equals, contains, not_contains, regex, gt, lt, gte, lte. + """ + + __tablename__ = _ROUTING_RULES_TABLE + + id = Column(Integer, primary_key=True, index=True) + + # Owner of this rule. NULL = system-wide rule (admin only). + owner_id = Column(String, nullable=True, index=True) + + # Human-readable label for the rule. + name = Column(String(255), nullable=False) + + # Evaluation order (lower = earlier). First matching rule wins. + position = Column(Integer, nullable=False, default=0) + + # The document property to evaluate. + # Built-in: file_type, document_type, category, filename, size. + # For AI metadata fields, use the "metadata." prefix. + field = Column(String(255), nullable=False) + + # Comparison operator. + operator = Column(String(50), nullable=False) + + # Value to compare against (always stored as text; cast as needed). + value = Column(String(1024), nullable=False) + + # Target pipeline when the condition matches. + target_pipeline_id = Column(Integer, ForeignKey(_PIPELINES_ID_FK), nullable=False, index=True) + + # Soft-disable without deleting. + is_active = Column(Boolean, nullable=False, default=True) + + created_at = Column(DateTime(timezone=True), server_default=func.now()) + updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) diff --git a/app/utils/routing_engine.py b/app/utils/routing_engine.py new file mode 100644 index 00000000..b65c3696 --- /dev/null +++ b/app/utils/routing_engine.py @@ -0,0 +1,223 @@ +"""Routing engine for conditional document-to-pipeline assignment. + +Evaluates a set of :class:`PipelineRoutingRule` rows against document +properties and returns the first matching target pipeline (if any). + +Supported document fields +------------------------- +* ``file_type`` – MIME type of the file (e.g. ``application/pdf``) +* ``filename`` – original filename +* ``size`` – file size in bytes (numeric comparison) +* ``document_type`` – AI-classified document type (e.g. ``Invoice``) +* ``category`` – alias for ``document_type`` +* ``metadata.`` – arbitrary key inside the AI-extracted JSON metadata + +Supported comparison operators +------------------------------ +* ``equals`` / ``not_equals`` +* ``contains`` / ``not_contains`` (substring match, case-insensitive) +* ``regex`` (Python ``re`` full-match, case-insensitive) +* ``gt`` / ``lt`` / ``gte`` / ``lte`` (numeric comparison) +""" + +import json +import logging +import re +from typing import Any + +from sqlalchemy.orm import Session + +from app.models import Pipeline, PipelineRoutingRule + +logger = logging.getLogger(__name__) + +# Operators recognised by the engine. +VALID_OPERATORS: frozenset[str] = frozenset( + { + "equals", + "not_equals", + "contains", + "not_contains", + "regex", + "gt", + "lt", + "gte", + "lte", + } +) + +# Fields that are resolved directly from the FileRecord. +BUILTIN_FIELDS: frozenset[str] = frozenset( + { + "file_type", + "filename", + "size", + "document_type", + "category", + } +) + + +def _resolve_field(field: str, doc_props: dict[str, Any]) -> Any: + """Resolve a *field* name to its actual value from *doc_props*. + + ``doc_props`` is expected to contain top-level keys that mirror the + built-in field names **plus** a ``metadata`` dict with the parsed + AI metadata JSON. + """ + if field == "category": + # ``category`` is an alias for ``document_type``. + field = "document_type" + + if field.startswith("metadata."): + meta_key = field[len("metadata.") :] + metadata = doc_props.get("metadata") or {} + return metadata.get(meta_key) + + return doc_props.get(field) + + +def _to_float(value: Any) -> float | None: + """Try to convert *value* to a float for numeric comparison.""" + if value is None: + return None + try: + return float(value) + except (TypeError, ValueError): + return None + + +def _evaluate_condition(actual: Any, operator: str, expected: str) -> bool: + """Return ``True`` when *actual* satisfies *operator* against *expected*. + + All string comparisons are case-insensitive. Numeric operators (``gt``, + ``lt``, ``gte``, ``lte``) attempt to cast both sides to ``float``. + """ + if actual is None: + # If the document property is missing, the rule cannot match + # (except for ``not_equals`` / ``not_contains`` which should match). + if operator == "not_equals": + return True + if operator == "not_contains": + return True + return False + + actual_str = str(actual).lower() + expected_lower = expected.lower() + + if operator == "equals": + return actual_str == expected_lower + if operator == "not_equals": + return actual_str != expected_lower + if operator == "contains": + return expected_lower in actual_str + if operator == "not_contains": + return expected_lower not in actual_str + if operator == "regex": + try: + return bool(re.fullmatch(expected, str(actual), flags=re.IGNORECASE)) + except re.error: + logger.warning("Invalid regex in routing rule: %s", expected) + return False + + # Numeric operators + actual_num = _to_float(actual) + expected_num = _to_float(expected) + if actual_num is None or expected_num is None: + return False + + if operator == "gt": + return actual_num > expected_num + if operator == "lt": + return actual_num < expected_num + if operator == "gte": + return actual_num >= expected_num + if operator == "lte": + return actual_num <= expected_num + + return False + + +def build_document_properties(file_record: Any) -> dict[str, Any]: + """Build the property dict that the engine evaluates against. + + Args: + file_record: A :class:`FileRecord` instance (or any object with the + same attributes). + + Returns: + A dict with ``file_type``, ``filename``, ``size``, ``document_type``, + and ``metadata`` keys. + """ + metadata: dict[str, Any] = {} + raw_meta = getattr(file_record, "ai_metadata", None) + if raw_meta: + try: + metadata = json.loads(raw_meta) if isinstance(raw_meta, str) else raw_meta + except (json.JSONDecodeError, TypeError): + metadata = {} + + return { + "file_type": getattr(file_record, "mime_type", None), + "filename": getattr(file_record, "original_filename", None), + "size": getattr(file_record, "file_size", None), + "document_type": metadata.get("document_type"), + "metadata": metadata, + } + + +def evaluate_routing_rules( + db: Session, + owner_id: str | None, + doc_props: dict[str, Any], +) -> Pipeline | None: + """Evaluate routing rules and return the first matching pipeline. + + Rules are fetched for the given *owner_id* **plus** any system-wide rules + (``owner_id IS NULL``). Owner rules are evaluated first (by position), + then system rules. + + Args: + db: Active database session. + owner_id: The document owner's identifier (may be ``None``). + doc_props: Document property dict as produced by + :func:`build_document_properties`. + + Returns: + The first matching :class:`Pipeline`, or ``None`` when no rule + matches (caller should fall back to the default pipeline). + """ + # Fetch active rules for the owner + system rules, ordered by position. + rules = ( + db.query(PipelineRoutingRule) + .filter( + PipelineRoutingRule.is_active.is_(True), + (PipelineRoutingRule.owner_id == owner_id) | (PipelineRoutingRule.owner_id.is_(None)), + ) + .order_by( + # Owner-specific rules take priority over system rules. + PipelineRoutingRule.owner_id.is_(None).asc(), + PipelineRoutingRule.position.asc(), + ) + .all() + ) + + for rule in rules: + actual = _resolve_field(rule.field, doc_props) + if _evaluate_condition(actual, rule.operator, rule.value): + pipeline = db.query(Pipeline).filter(Pipeline.id == rule.target_pipeline_id).first() + if pipeline and pipeline.is_active: + logger.info( + "Routing rule matched: rule_id=%s, name=%s, target_pipeline=%s", + rule.id, + rule.name, + rule.target_pipeline_id, + ) + return pipeline + logger.warning( + "Routing rule %s matched but target pipeline %s is inactive or missing", + rule.id, + rule.target_pipeline_id, + ) + + return None diff --git a/migrations/versions/027_add_routing_rules.py b/migrations/versions/027_add_routing_rules.py new file mode 100644 index 00000000..8805f799 --- /dev/null +++ b/migrations/versions/027_add_routing_rules.py @@ -0,0 +1,46 @@ +"""Add pipeline_routing_rules table for conditional document routing. + +Revision ID: 027_add_routing_rules +Revises: 026_add_scheduled_jobs +Create Date: 2026-03-09 +""" + +from typing import Union + +import sqlalchemy as sa +from alembic import op + +revision: str = "027_add_routing_rules" +down_revision: Union[str, None] = "026_add_scheduled_jobs" +depends_on: Union[str, None] = None + + +def upgrade() -> None: + """Create pipeline_routing_rules table.""" + op.create_table( + "pipeline_routing_rules", + sa.Column("id", sa.Integer(), nullable=False), + sa.Column("owner_id", sa.String(), nullable=True), + sa.Column("name", sa.String(255), nullable=False), + sa.Column("position", sa.Integer(), nullable=False, server_default="0"), + sa.Column("field", sa.String(255), nullable=False), + sa.Column("operator", sa.String(50), nullable=False), + sa.Column("value", sa.String(1024), nullable=False), + sa.Column("target_pipeline_id", sa.Integer(), nullable=False), + sa.Column("is_active", sa.Boolean(), nullable=False, server_default="1"), + sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.func.now()), + sa.Column("updated_at", sa.DateTime(timezone=True), server_default=sa.func.now()), + sa.PrimaryKeyConstraint("id"), + sa.ForeignKeyConstraint(["target_pipeline_id"], ["pipelines.id"]), + ) + op.create_index("ix_routing_rules_id", "pipeline_routing_rules", ["id"]) + op.create_index("ix_routing_rules_owner_id", "pipeline_routing_rules", ["owner_id"]) + op.create_index("ix_routing_rules_target_pipeline_id", "pipeline_routing_rules", ["target_pipeline_id"]) + + +def downgrade() -> None: + """Drop pipeline_routing_rules table.""" + op.drop_index("ix_routing_rules_target_pipeline_id", "pipeline_routing_rules") + op.drop_index("ix_routing_rules_owner_id", "pipeline_routing_rules") + op.drop_index("ix_routing_rules_id", "pipeline_routing_rules") + op.drop_table("pipeline_routing_rules") diff --git a/tests/conftest.py b/tests/conftest.py index ae6db91e..522a526d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -64,6 +64,7 @@ from app.models import ( # noqa: F401, E402 DocumentMetadata, FileRecord, Pipeline, + PipelineRoutingRule, PipelineStep, ProcessingLog, SavedSearch, diff --git a/tests/test_routing_rules.py b/tests/test_routing_rules.py new file mode 100644 index 00000000..3598c3e0 --- /dev/null +++ b/tests/test_routing_rules.py @@ -0,0 +1,803 @@ +"""Tests for the routing rules API and routing engine. + +Covers CRUD operations for routing rules, rule evaluation (dry-run and engine), +operator logic, access control, and edge cases. +""" + +import json + +import pytest + +from app.models import FileRecord, Pipeline, PipelineRoutingRule +from app.utils.routing_engine import ( + BUILTIN_FIELDS, + VALID_OPERATORS, + _evaluate_condition, + _resolve_field, + _to_float, + build_document_properties, + evaluate_routing_rules, +) + +# --------------------------------------------------------------------------- +# Helpers +# --------------------------------------------------------------------------- + + +def _make_pipeline(db_session, name="Test Pipeline", owner_id="testuser", is_active=True): + """Insert a minimal Pipeline and return it.""" + p = Pipeline(owner_id=owner_id, name=name, is_default=False, is_active=is_active) + db_session.add(p) + db_session.commit() + db_session.refresh(p) + return p + + +def _make_rule(db_session, target_pipeline_id, **kwargs): + """Insert a PipelineRoutingRule and return it.""" + defaults = { + "owner_id": "testuser", + "name": "Test Rule", + "position": 0, + "field": "file_type", + "operator": "equals", + "value": "application/pdf", + "is_active": True, + } + defaults.update(kwargs) + defaults["target_pipeline_id"] = target_pipeline_id + rule = PipelineRoutingRule(**defaults) + db_session.add(rule) + db_session.commit() + db_session.refresh(rule) + return rule + + +def _make_file_record(db_session, **kwargs): + """Insert a minimal FileRecord and return it.""" + defaults = { + "owner_id": "testuser", + "filehash": "abc123", + "original_filename": "test.pdf", + "local_filename": "/tmp/test.pdf", + "file_size": 1024, + "mime_type": "application/pdf", + } + defaults.update(kwargs) + fr = FileRecord(**defaults) + db_session.add(fr) + db_session.commit() + db_session.refresh(fr) + return fr + + +# =========================================================================== +# Unit tests – routing engine +# =========================================================================== + + +@pytest.mark.unit +class TestResolveField: + """Tests for _resolve_field().""" + + def test_builtin_field(self): + """Built-in fields are resolved directly from the dict.""" + props = {"file_type": "application/pdf", "size": 1024} + assert _resolve_field("file_type", props) == "application/pdf" + assert _resolve_field("size", props) == 1024 + + def test_category_alias(self): + """'category' is an alias for 'document_type'.""" + props = {"document_type": "Invoice"} + assert _resolve_field("category", props) == "Invoice" + + def test_metadata_field(self): + """'metadata.' resolves from the nested metadata dict.""" + props = {"metadata": {"sender": "Acme Corp", "amount": 100.50}} + assert _resolve_field("metadata.sender", props) == "Acme Corp" + assert _resolve_field("metadata.amount", props) == 100.50 + + def test_missing_metadata_key(self): + """Missing metadata key returns None.""" + props = {"metadata": {"sender": "Acme"}} + assert _resolve_field("metadata.missing_key", props) is None + + def test_missing_metadata_dict(self): + """Missing metadata dict returns None.""" + props = {} + assert _resolve_field("metadata.sender", props) is None + + def test_missing_builtin_field(self): + """Missing built-in field returns None.""" + props = {} + assert _resolve_field("file_type", props) is None + + +@pytest.mark.unit +class TestToFloat: + """Tests for _to_float().""" + + def test_int_value(self): + assert _to_float(42) == 42.0 + + def test_float_value(self): + assert _to_float(3.14) == 3.14 + + def test_string_number(self): + assert _to_float("100") == 100.0 + + def test_none_returns_none(self): + assert _to_float(None) is None + + def test_non_numeric_string_returns_none(self): + assert _to_float("not-a-number") is None + + +@pytest.mark.unit +class TestEvaluateCondition: + """Tests for _evaluate_condition().""" + + def test_equals_match(self): + assert _evaluate_condition("application/pdf", "equals", "application/pdf") is True + + def test_equals_case_insensitive(self): + assert _evaluate_condition("Application/PDF", "equals", "application/pdf") is True + + def test_equals_no_match(self): + assert _evaluate_condition("image/png", "equals", "application/pdf") is False + + def test_not_equals_match(self): + assert _evaluate_condition("image/png", "not_equals", "application/pdf") is True + + def test_not_equals_no_match(self): + assert _evaluate_condition("application/pdf", "not_equals", "application/pdf") is False + + def test_contains_match(self): + assert _evaluate_condition("invoice_2024.pdf", "contains", "invoice") is True + + def test_contains_case_insensitive(self): + assert _evaluate_condition("INVOICE_2024.PDF", "contains", "invoice") is True + + def test_contains_no_match(self): + assert _evaluate_condition("receipt.pdf", "contains", "invoice") is False + + def test_not_contains_match(self): + assert _evaluate_condition("receipt.pdf", "not_contains", "invoice") is True + + def test_not_contains_no_match(self): + assert _evaluate_condition("invoice_2024.pdf", "not_contains", "invoice") is False + + def test_regex_match(self): + assert _evaluate_condition("invoice_2024.pdf", "regex", r"invoice_\d+\.pdf") is True + + def test_regex_no_match(self): + assert _evaluate_condition("receipt.pdf", "regex", r"invoice_\d+\.pdf") is False + + def test_regex_case_insensitive(self): + assert _evaluate_condition("INVOICE_2024.PDF", "regex", r"invoice_\d+\.pdf") is True + + def test_regex_invalid_pattern(self): + """Invalid regex should return False, not raise.""" + assert _evaluate_condition("test", "regex", r"[invalid") is False + + def test_gt(self): + assert _evaluate_condition(2048, "gt", "1024") is True + assert _evaluate_condition(1024, "gt", "1024") is False + + def test_lt(self): + assert _evaluate_condition(512, "lt", "1024") is True + assert _evaluate_condition(1024, "lt", "1024") is False + + def test_gte(self): + assert _evaluate_condition(1024, "gte", "1024") is True + assert _evaluate_condition(2048, "gte", "1024") is True + assert _evaluate_condition(512, "gte", "1024") is False + + def test_lte(self): + assert _evaluate_condition(1024, "lte", "1024") is True + assert _evaluate_condition(512, "lte", "1024") is True + assert _evaluate_condition(2048, "lte", "1024") is False + + def test_none_actual_returns_false(self): + """When the actual value is None, most operators return False.""" + assert _evaluate_condition(None, "equals", "test") is False + assert _evaluate_condition(None, "contains", "test") is False + assert _evaluate_condition(None, "regex", "test") is False + assert _evaluate_condition(None, "gt", "10") is False + + def test_none_actual_not_equals_returns_true(self): + """not_equals should return True when actual is None.""" + assert _evaluate_condition(None, "not_equals", "test") is True + + def test_none_actual_not_contains_returns_true(self): + """not_contains should return True when actual is None.""" + assert _evaluate_condition(None, "not_contains", "test") is True + + def test_non_numeric_gt_returns_false(self): + """Non-numeric values should return False for numeric operators.""" + assert _evaluate_condition("abc", "gt", "100") is False + + def test_unknown_operator_returns_false(self): + """Unknown operator should return False.""" + assert _evaluate_condition("test", "unknown_op", "test") is False + + +@pytest.mark.unit +class TestBuildDocumentProperties: + """Tests for build_document_properties().""" + + def test_basic_properties(self): + """Properties are extracted from FileRecord attributes.""" + fr = _MockFileRecord( + mime_type="application/pdf", + original_filename="test.pdf", + file_size=2048, + ai_metadata=json.dumps({"document_type": "Invoice", "sender": "Acme"}), + ) + props = build_document_properties(fr) + assert props["file_type"] == "application/pdf" + assert props["filename"] == "test.pdf" + assert props["size"] == 2048 + assert props["document_type"] == "Invoice" + assert props["metadata"]["sender"] == "Acme" + + def test_no_metadata(self): + """When ai_metadata is None, metadata is an empty dict.""" + fr = _MockFileRecord(mime_type="image/png", original_filename="img.png", file_size=512, ai_metadata=None) + props = build_document_properties(fr) + assert props["metadata"] == {} + assert props["document_type"] is None + + def test_invalid_metadata_json(self): + """Invalid JSON in ai_metadata should result in empty metadata.""" + fr = _MockFileRecord( + mime_type="application/pdf", + original_filename="test.pdf", + file_size=1024, + ai_metadata="not-json", + ) + props = build_document_properties(fr) + assert props["metadata"] == {} + + +class _MockFileRecord: + """Lightweight stand-in for FileRecord in unit tests.""" + + def __init__(self, **kwargs): + for k, v in kwargs.items(): + setattr(self, k, v) + + +# =========================================================================== +# Unit tests – evaluate_routing_rules (DB-backed) +# =========================================================================== + + +@pytest.mark.unit +class TestEvaluateRoutingRules: + """Tests for evaluate_routing_rules() with a real DB session.""" + + def test_first_match_wins(self, db_session): + """The first matching rule (by position) is used.""" + p1 = _make_pipeline(db_session, name="Pipeline A") + p2 = _make_pipeline(db_session, name="Pipeline B") + + _make_rule(db_session, p1.id, position=0, field="file_type", operator="equals", value="application/pdf") + _make_rule(db_session, p2.id, position=1, field="file_type", operator="equals", value="application/pdf") + + doc = {"file_type": "application/pdf", "metadata": {}} + result = evaluate_routing_rules(db_session, "testuser", doc) + assert result is not None + assert result.id == p1.id + + def test_no_match_returns_none(self, db_session): + """When no rule matches, None is returned (caller uses default).""" + p = _make_pipeline(db_session, name="Pipeline A") + _make_rule(db_session, p.id, field="file_type", operator="equals", value="image/png") + + doc = {"file_type": "application/pdf", "metadata": {}} + result = evaluate_routing_rules(db_session, "testuser", doc) + assert result is None + + def test_inactive_rule_skipped(self, db_session): + """Inactive rules are not evaluated.""" + p = _make_pipeline(db_session, name="Pipeline A") + _make_rule(db_session, p.id, is_active=False) + + doc = {"file_type": "application/pdf", "metadata": {}} + result = evaluate_routing_rules(db_session, "testuser", doc) + assert result is None + + def test_inactive_pipeline_skipped(self, db_session): + """Matching rule with inactive target pipeline is skipped.""" + p = _make_pipeline(db_session, name="Inactive Pipeline", is_active=False) + _make_rule(db_session, p.id) + + doc = {"file_type": "application/pdf", "metadata": {}} + result = evaluate_routing_rules(db_session, "testuser", doc) + assert result is None + + def test_system_rules_evaluated_after_user_rules(self, db_session): + """System rules (owner_id=NULL) are evaluated after user-specific rules.""" + p_user = _make_pipeline(db_session, name="User Pipeline") + p_system = _make_pipeline(db_session, name="System Pipeline", owner_id=None) + + # System rule at position 0, user rule at position 1 — user should still win. + _make_rule( + db_session, + p_system.id, + owner_id=None, + position=0, + field="file_type", + operator="equals", + value="application/pdf", + name="System Rule", + ) + _make_rule( + db_session, + p_user.id, + owner_id="testuser", + position=1, + field="file_type", + operator="equals", + value="application/pdf", + name="User Rule", + ) + + doc = {"file_type": "application/pdf", "metadata": {}} + result = evaluate_routing_rules(db_session, "testuser", doc) + assert result is not None + assert result.id == p_user.id + + def test_metadata_field_routing(self, db_session): + """Rules can match on metadata.* fields.""" + p = _make_pipeline(db_session, name="Invoice Pipeline") + _make_rule( + db_session, + p.id, + field="metadata.sender", + operator="contains", + value="acme", + ) + + doc = {"file_type": "application/pdf", "metadata": {"sender": "Acme Corporation"}} + result = evaluate_routing_rules(db_session, "testuser", doc) + assert result is not None + assert result.id == p.id + + def test_size_routing(self, db_session): + """Rules can match on file size with numeric comparison.""" + p = _make_pipeline(db_session, name="Large File Pipeline") + _make_rule( + db_session, + p.id, + field="size", + operator="gt", + value="1048576", + ) + + # 2 MB file + doc = {"size": 2097152, "metadata": {}} + result = evaluate_routing_rules(db_session, "testuser", doc) + assert result is not None + assert result.id == p.id + + def test_regex_routing(self, db_session): + """Rules can match using regex on filename.""" + p = _make_pipeline(db_session, name="Invoice Pipeline") + _make_rule( + db_session, + p.id, + field="filename", + operator="regex", + value=r"invoice_\d{4}.*", + ) + + doc = {"filename": "invoice_2024_q1.pdf", "metadata": {}} + result = evaluate_routing_rules(db_session, "testuser", doc) + assert result is not None + assert result.id == p.id + + +# =========================================================================== +# API tests – operators endpoint (public) +# =========================================================================== + + +@pytest.mark.unit +class TestOperatorsEndpoint: + """Tests for the /api/routing-rules/operators catalogue endpoint.""" + + def test_operators_returns_lists(self, client): + """GET /api/routing-rules/operators returns operators and fields.""" + r = client.get("/api/routing-rules/operators") + assert r.status_code == 200 + data = r.json() + assert "operators" in data + assert "builtin_fields" in data + assert "metadata_prefix" in data + assert set(data["operators"]) == VALID_OPERATORS + assert set(data["builtin_fields"]) == BUILTIN_FIELDS + + +# =========================================================================== +# API tests – CRUD +# =========================================================================== + + +@pytest.mark.unit +class TestRoutingRuleCRUD: + """Tests for the routing rules CRUD API endpoints.""" + + def test_create_rule(self, client, db_session): + """POST /api/routing-rules creates a new rule.""" + p = _make_pipeline(db_session, name="Target Pipeline") + r = client.post( + "/api/routing-rules", + json={ + "name": "Route PDFs", + "field": "file_type", + "operator": "equals", + "value": "application/pdf", + "target_pipeline_id": p.id, + }, + ) + assert r.status_code == 201 + data = r.json() + assert data["name"] == "Route PDFs" + assert data["field"] == "file_type" + assert data["operator"] == "equals" + assert data["target_pipeline_id"] == p.id + assert data["is_active"] is True + + def test_create_rule_invalid_field(self, client, db_session): + """POST with an invalid field returns 422.""" + p = _make_pipeline(db_session, name="Target") + r = client.post( + "/api/routing-rules", + json={ + "name": "Bad field", + "field": "invalid_field", + "operator": "equals", + "value": "test", + "target_pipeline_id": p.id, + }, + ) + assert r.status_code == 422 + + def test_create_rule_invalid_operator(self, client, db_session): + """POST with an invalid operator returns 422.""" + p = _make_pipeline(db_session, name="Target") + r = client.post( + "/api/routing-rules", + json={ + "name": "Bad op", + "field": "file_type", + "operator": "invalid_op", + "value": "test", + "target_pipeline_id": p.id, + }, + ) + assert r.status_code == 422 + + def test_create_rule_missing_pipeline(self, client): + """POST referencing a nonexistent pipeline returns 404.""" + r = client.post( + "/api/routing-rules", + json={ + "name": "No pipeline", + "field": "file_type", + "operator": "equals", + "value": "application/pdf", + "target_pipeline_id": 99999, + }, + ) + assert r.status_code == 404 + + def test_list_rules(self, client, db_session): + """GET /api/routing-rules returns the user's rules.""" + p = _make_pipeline(db_session, name="Pipeline") + _make_rule(db_session, p.id, name="Rule 1", position=0, owner_id="anonymous") + _make_rule(db_session, p.id, name="Rule 2", position=1, owner_id="anonymous") + + r = client.get("/api/routing-rules") + assert r.status_code == 200 + data = r.json() + assert len(data) >= 2 + names = [d["name"] for d in data] + assert "Rule 1" in names + assert "Rule 2" in names + + def test_get_rule(self, client, db_session): + """GET /api/routing-rules/{id} returns a specific rule.""" + p = _make_pipeline(db_session, name="Pipeline") + rule = _make_rule(db_session, p.id, name="My Rule", owner_id="anonymous") + + r = client.get(f"/api/routing-rules/{rule.id}") + assert r.status_code == 200 + assert r.json()["name"] == "My Rule" + + def test_get_rule_not_found(self, client): + """GET /api/routing-rules/{id} returns 404 for nonexistent rule.""" + r = client.get("/api/routing-rules/99999") + assert r.status_code == 404 + + def test_update_rule(self, client, db_session): + """PUT /api/routing-rules/{id} updates a rule.""" + p = _make_pipeline(db_session, name="Pipeline") + rule = _make_rule(db_session, p.id, name="Old Name", owner_id="anonymous") + + r = client.put( + f"/api/routing-rules/{rule.id}", + json={"name": "New Name", "operator": "contains"}, + ) + assert r.status_code == 200 + data = r.json() + assert data["name"] == "New Name" + assert data["operator"] == "contains" + + def test_update_rule_invalid_field(self, client, db_session): + """PUT with invalid field returns 422.""" + p = _make_pipeline(db_session, name="Pipeline") + rule = _make_rule(db_session, p.id, owner_id="anonymous") + + r = client.put(f"/api/routing-rules/{rule.id}", json={"field": "bad_field"}) + assert r.status_code == 422 + + def test_update_rule_invalid_operator(self, client, db_session): + """PUT with invalid operator returns 422.""" + p = _make_pipeline(db_session, name="Pipeline") + rule = _make_rule(db_session, p.id, owner_id="anonymous") + + r = client.put(f"/api/routing-rules/{rule.id}", json={"operator": "bad_op"}) + assert r.status_code == 422 + + def test_update_rule_missing_pipeline(self, client, db_session): + """PUT with nonexistent target pipeline returns 404.""" + p = _make_pipeline(db_session, name="Pipeline") + rule = _make_rule(db_session, p.id, owner_id="anonymous") + + r = client.put(f"/api/routing-rules/{rule.id}", json={"target_pipeline_id": 99999}) + assert r.status_code == 404 + + def test_delete_rule(self, client, db_session): + """DELETE /api/routing-rules/{id} removes a rule.""" + p = _make_pipeline(db_session, name="Pipeline") + rule = _make_rule(db_session, p.id, owner_id="anonymous") + + r = client.delete(f"/api/routing-rules/{rule.id}") + assert r.status_code == 204 + + # Verify it's gone + r = client.get(f"/api/routing-rules/{rule.id}") + assert r.status_code == 404 + + def test_delete_rule_not_found(self, client): + """DELETE for nonexistent rule returns 404.""" + r = client.delete("/api/routing-rules/99999") + assert r.status_code == 404 + + +# =========================================================================== +# API tests – reorder +# =========================================================================== + + +@pytest.mark.unit +class TestReorderRoutingRules: + """Tests for the PUT /api/routing-rules/reorder endpoint.""" + + def test_reorder_rules(self, client, db_session): + """Reordering updates the position of rules.""" + p = _make_pipeline(db_session, name="Pipeline") + r1 = _make_rule(db_session, p.id, name="A", position=0, owner_id="anonymous") + r2 = _make_rule(db_session, p.id, name="B", position=1, owner_id="anonymous") + + r = client.put( + "/api/routing-rules/reorder", + json={"rule_ids": [r2.id, r1.id]}, + ) + assert r.status_code == 200 + data = r.json() + assert data[0]["id"] == r2.id + assert data[0]["position"] == 0 + assert data[1]["id"] == r1.id + assert data[1]["position"] == 1 + + def test_reorder_invalid_ids(self, client, db_session): + """Reorder with invalid IDs returns 422.""" + r = client.put( + "/api/routing-rules/reorder", + json={"rule_ids": [99999]}, + ) + assert r.status_code == 422 + + +# =========================================================================== +# API tests – evaluate (dry-run) +# =========================================================================== + + +@pytest.mark.unit +class TestEvaluateEndpoint: + """Tests for the POST /api/routing-rules/evaluate dry-run endpoint.""" + + def test_evaluate_match(self, client, db_session): + """Evaluate returns the matching rule and target pipeline.""" + p = _make_pipeline(db_session, name="Invoice Pipeline") + _make_rule( + db_session, + p.id, + name="PDF Route", + field="file_type", + operator="equals", + value="application/pdf", + owner_id="anonymous", + ) + + r = client.post( + "/api/routing-rules/evaluate", + json={"file_type": "application/pdf"}, + ) + assert r.status_code == 200 + data = r.json() + assert data["matched"] is True + assert data["rule"]["name"] == "PDF Route" + assert data["target_pipeline"]["id"] == p.id + + def test_evaluate_no_match(self, client, db_session): + """Evaluate returns matched=False when no rule applies.""" + p = _make_pipeline(db_session, name="Pipeline") + _make_rule( + db_session, + p.id, + name="PNG Route", + field="file_type", + operator="equals", + value="image/png", + owner_id="anonymous", + ) + + r = client.post( + "/api/routing-rules/evaluate", + json={"file_type": "application/pdf"}, + ) + assert r.status_code == 200 + data = r.json() + assert data["matched"] is False + assert data["rule"] is None + + def test_evaluate_with_metadata(self, client, db_session): + """Evaluate with metadata.* fields works.""" + p = _make_pipeline(db_session, name="Invoice Pipeline") + _make_rule( + db_session, + p.id, + name="Invoice Route", + field="metadata.sender", + operator="contains", + value="acme", + owner_id="anonymous", + ) + + r = client.post( + "/api/routing-rules/evaluate", + json={"metadata": {"sender": "Acme Corporation"}}, + ) + assert r.status_code == 200 + data = r.json() + assert data["matched"] is True + + def test_evaluate_with_size(self, client, db_session): + """Evaluate with size comparisons works.""" + p = _make_pipeline(db_session, name="Large Pipeline") + _make_rule( + db_session, + p.id, + name="Large Files", + field="size", + operator="gt", + value="1000000", + owner_id="anonymous", + ) + + r = client.post( + "/api/routing-rules/evaluate", + json={"size": 2000000}, + ) + assert r.status_code == 200 + assert r.json()["matched"] is True + + +# =========================================================================== +# API tests – metadata field validation +# =========================================================================== + + +@pytest.mark.unit +class TestFieldValidation: + """Tests for field validation in routing rule creation.""" + + def test_metadata_prefix_accepted(self, client, db_session): + """Fields with 'metadata.' prefix are valid.""" + p = _make_pipeline(db_session, name="Pipeline") + r = client.post( + "/api/routing-rules", + json={ + "name": "Metadata Rule", + "field": "metadata.sender", + "operator": "equals", + "value": "test", + "target_pipeline_id": p.id, + }, + ) + assert r.status_code == 201 + + def test_bare_metadata_rejected(self, client, db_session): + """Just 'metadata.' without a key suffix is invalid.""" + p = _make_pipeline(db_session, name="Pipeline") + r = client.post( + "/api/routing-rules", + json={ + "name": "Bad Metadata", + "field": "metadata.", + "operator": "equals", + "value": "test", + "target_pipeline_id": p.id, + }, + ) + assert r.status_code == 422 + + @pytest.mark.parametrize("field", sorted(BUILTIN_FIELDS)) + def test_builtin_fields_accepted(self, client, db_session, field): + """All built-in fields are accepted.""" + p = _make_pipeline(db_session, name=f"Pipeline for {field}") + r = client.post( + "/api/routing-rules", + json={ + "name": f"Rule for {field}", + "field": field, + "operator": "equals", + "value": "test", + "target_pipeline_id": p.id, + }, + ) + assert r.status_code == 201 + + +# =========================================================================== +# API tests – auto-position +# =========================================================================== + + +@pytest.mark.unit +class TestAutoPosition: + """Tests for automatic position assignment.""" + + def test_auto_position_increments(self, client, db_session): + """Rules created without position get incrementing positions.""" + p = _make_pipeline(db_session, name="Pipeline") + + r1 = client.post( + "/api/routing-rules", + json={ + "name": "First", + "field": "file_type", + "operator": "equals", + "value": "application/pdf", + "target_pipeline_id": p.id, + }, + ) + r2 = client.post( + "/api/routing-rules", + json={ + "name": "Second", + "field": "file_type", + "operator": "equals", + "value": "image/png", + "target_pipeline_id": p.id, + }, + ) + assert r1.status_code == 201 + assert r2.status_code == 201 + assert r2.json()["position"] > r1.json()["position"] From e95693d684076ef87c436840caf2c5aa4581456d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Mar 2026 23:36:13 +0000 Subject: [PATCH 03/71] docs(routing): add routing rules documentation to API.md and UserGuide.md Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> --- docs/API.md | 154 ++++++++++++++++++++++++++++++++++++++++++++++ docs/UserGuide.md | 47 ++++++++++++++ 2 files changed, 201 insertions(+) diff --git a/docs/API.md b/docs/API.md index d5a0bf40..779f216a 100644 --- a/docs/API.md +++ b/docs/API.md @@ -1960,6 +1960,160 @@ Pass no `pipeline_id` query parameter (or omit it) to clear the assignment. ``` +## Routing Rules + +Routing rules let you conditionally assign documents to different pipelines +based on file properties such as type, size, filename, or AI-extracted +metadata. Rules are evaluated in **position order** (lowest first); the first +rule that matches wins. If no rule matches, the system falls back to the +owner's (or global) default pipeline. + +### Supported operators and fields + +```bash +GET /api/routing-rules/operators +``` + +Returns the catalogue of valid operators and built-in fields so UIs can +populate dropdowns without hard-coding values. + +**Response (200):** +```json +{ + "operators": ["contains", "equals", "gt", "gte", "lt", "lte", "not_contains", "not_equals", "regex"], + "builtin_fields": ["category", "document_type", "file_type", "filename", "size"], + "metadata_prefix": "metadata." +} +``` + +> **Tip:** For AI metadata fields use the `metadata.` prefix, e.g. +> `metadata.sender`, `metadata.amount`. + +### List routing rules + +```bash +GET /api/routing-rules +``` + +Returns the current user's rules **plus** any system-wide rules +(`owner_id = null`), ordered by position. + +**Response (200):** +```json +[ + { + "id": 1, + "owner_id": "alice", + "name": "Route invoices", + "position": 0, + "field": "document_type", + "operator": "equals", + "value": "Invoice", + "target_pipeline_id": 3, + "is_active": true, + "created_at": "2026-03-09T12:00:00+00:00", + "updated_at": "2026-03-09T12:00:00+00:00" + } +] +``` + +### Create routing rule + +```bash +POST /api/routing-rules +Content-Type: application/json + +{ + "name": "Route invoices", + "field": "document_type", + "operator": "equals", + "value": "Invoice", + "target_pipeline_id": 3 +} +``` + +Optional fields: `position` (auto-assigned if omitted), `is_active` (default `true`). + +**Response (201 Created):** The created rule object. + +### Get routing rule + +```bash +GET /api/routing-rules/{rule_id} +``` + +**Response (200):** A single rule object. + +### Update routing rule + +```bash +PUT /api/routing-rules/{rule_id} +Content-Type: application/json + +{ "name": "Renamed rule", "operator": "contains", "is_active": false } +``` + +Only the supplied fields are updated. + +**Response (200):** The updated rule object. + +### Delete routing rule + +```bash +DELETE /api/routing-rules/{rule_id} +``` + +Returns **204 No Content**. + +### Reorder routing rules + +```bash +PUT /api/routing-rules/reorder +Content-Type: application/json + +{ "rule_ids": [3, 1, 2] } +``` + +Provide the complete ordered list of your rule IDs. Positions are reassigned +0, 1, 2, … in the given order. + +### Evaluate rules (dry run) + +```bash +POST /api/routing-rules/evaluate +Content-Type: application/json + +{ + "file_type": "application/pdf", + "filename": "invoice_2024.pdf", + "size": 204800, + "document_type": "Invoice", + "metadata": { "sender": "Acme Corp" } +} +``` + +Tests which rule (if any) would match the given properties **without** +actually routing a document. + +**Response (200) – match found:** +```json +{ + "matched": true, + "rule": { "id": 1, "name": "Route invoices", "..." : "..." }, + "target_pipeline": { "id": 3, "name": "Invoice Pipeline", "is_active": true } +} +``` + +**Response (200) – no match:** +```json +{ + "matched": false, + "rule": null, + "target_pipeline": null +} +``` + + ## API Tokens Personal API tokens allow programmatic access to the DocuElevate API without diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 9906a89c..20f256c5 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -626,6 +626,53 @@ Pass no `pipeline_id` to clear the assignment and fall back to the system defaul Admins can create **system pipelines** that appear in every user's pipeline list. These can be set as the global default so all users benefit from a consistent processing baseline. Navigate to **Pipelines** and check the **System pipeline** box when creating a new one (admin only). +### Conditional routing rules + +Routing rules automatically assign incoming documents to the right pipeline +based on their properties — no manual pipeline selection required. + +**How it works:** + +1. Define one or more routing rules via the API + (`POST /api/routing-rules`). +2. Each rule specifies a **field** to inspect, an **operator** (condition), + a **value** to compare against, and a **target pipeline**. +3. When a document is processed, rules are evaluated **in position order** + (lowest first). The first matching rule wins and the document is routed + to that pipeline. +4. If no rule matches, the document is processed by the default pipeline. + +**Available fields:** + +| Field | Description | +|-------|-------------| +| `file_type` | MIME type, e.g. `application/pdf` | +| `filename` | Original filename | +| `size` | File size in bytes | +| `document_type` | AI-classified type (Invoice, Contract, …) | +| `category` | Alias for `document_type` | +| `metadata.` | Any key from the AI-extracted metadata JSON | + +**Available operators:** + +| Operator | Description | +|----------|-------------| +| `equals` / `not_equals` | Exact match (case-insensitive) | +| `contains` / `not_contains` | Substring match (case-insensitive) | +| `regex` | Full Python regex match (case-insensitive) | +| `gt` / `lt` / `gte` / `lte` | Numeric comparison (greater/less than) | + +**Example:** Route all invoices over 1 MB to a dedicated pipeline: + +``` +Rule 1: field=document_type, operator=equals, value=Invoice, target_pipeline=3 +Rule 2: field=size, operator=gt, value=1048576, target_pipeline=5 +``` + +You can test your rules without actually routing a document using the +**evaluate** endpoint (`POST /api/routing-rules/evaluate`). For the full +API reference, see [API Documentation](API.md#routing-rules). + ## API Access For programmatic access, DocuElevate provides a comprehensive REST API: From 1e5e35a26af47db925f77514a3bfdbccf417c0f5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 9 Mar 2026 23:38:25 +0000 Subject: [PATCH 04/71] refactor(routing): address code review feedback - simplify list filter, fix docs example Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> --- app/api/routing_rules.py | 20 +++++++++----------- docs/UserGuide.md | 7 ++++++- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/app/api/routing_rules.py b/app/api/routing_rules.py index fa8db9cf..98162c09 100644 --- a/app/api/routing_rules.py +++ b/app/api/routing_rules.py @@ -170,18 +170,16 @@ def list_routing_rules(request: Request, db: DbSession) -> list[dict[str, Any]]: Rules are sorted by position. """ user_id = _get_user_id(request) - admin = _is_admin(request) - query = db.query(PipelineRoutingRule) - if admin: - query = query.filter((PipelineRoutingRule.owner_id == user_id) | (PipelineRoutingRule.owner_id.is_(None))) - else: - query = query.filter((PipelineRoutingRule.owner_id == user_id) | (PipelineRoutingRule.owner_id.is_(None))) - - rules = query.order_by( - PipelineRoutingRule.owner_id.is_(None).asc(), - PipelineRoutingRule.position.asc(), - ).all() + rules = ( + db.query(PipelineRoutingRule) + .filter((PipelineRoutingRule.owner_id == user_id) | (PipelineRoutingRule.owner_id.is_(None))) + .order_by( + PipelineRoutingRule.owner_id.is_(None).asc(), + PipelineRoutingRule.position.asc(), + ) + .all() + ) return [_serialize_rule(r) for r in rules] diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 20f256c5..957d005d 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -662,13 +662,18 @@ based on their properties — no manual pipeline selection required. | `regex` | Full Python regex match (case-insensitive) | | `gt` / `lt` / `gte` / `lte` | Numeric comparison (greater/less than) | -**Example:** Route all invoices over 1 MB to a dedicated pipeline: +**Example:** Route invoices to one pipeline and large files to another: ``` Rule 1: field=document_type, operator=equals, value=Invoice, target_pipeline=3 Rule 2: field=size, operator=gt, value=1048576, target_pipeline=5 ``` +With first-match-wins logic, an invoice of any size matches Rule 1 and is +routed to pipeline 3. A non-invoice file larger than 1 MB matches Rule 2 +and is routed to pipeline 5. Everything else falls back to the default +pipeline. + You can test your rules without actually routing a document using the **evaluate** endpoint (`POST /api/routing-rules/evaluate`). For the full API reference, see [API Documentation](API.md#routing-rules). From c9dd5cce1159930f93add09917f8c6c1702f62bf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Mar 2026 21:51:10 +0000 Subject: [PATCH 05/71] Initial plan From d3349e649ea1ef01d8afc62d9a92d00ba4aac3f8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 12 Mar 2026 21:57:31 +0000 Subject: [PATCH 06/71] =?UTF-8?q?fix(i18n):=20sync=20de.json=20keys=20with?= =?UTF-8?q?=20en.json=20=E2=80=94=20add=2026=20missing=20keys=20to=20en.js?= =?UTF-8?q?on=20and=20all=20language=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com> --- frontend/translations/bg.json | 26 + frontend/translations/ca.json | 26 + frontend/translations/cs.json | 26 + frontend/translations/da.json | 26 + frontend/translations/el.json | 26 + frontend/translations/en.json | 1696 +++++++++++++++++---------------- frontend/translations/es.json | 26 + frontend/translations/et.json | 26 + frontend/translations/fi.json | 26 + frontend/translations/fr.json | 26 + frontend/translations/ga.json | 26 + frontend/translations/hr.json | 26 + frontend/translations/hu.json | 26 + frontend/translations/is.json | 26 + frontend/translations/it.json | 26 + frontend/translations/lb.json | 26 + frontend/translations/lt.json | 26 + frontend/translations/lv.json | 26 + frontend/translations/nb.json | 26 + frontend/translations/nl.json | 26 + frontend/translations/pl.json | 26 + frontend/translations/pt.json | 26 + frontend/translations/ro.json | 26 + frontend/translations/ru.json | 26 + frontend/translations/sk.json | 26 + frontend/translations/sl.json | 26 + frontend/translations/sv.json | 26 + frontend/translations/tr.json | 26 + frontend/translations/uk.json | 26 + frontend/translations/zh.json | 26 + 30 files changed, 1615 insertions(+), 835 deletions(-) diff --git a/frontend/translations/bg.json b/frontend/translations/bg.json index 00c383d7..bf6d22cc 100644 --- a/frontend/translations/bg.json +++ b/frontend/translations/bg.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Езикът беше променен на {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Български", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/ca.json b/frontend/translations/ca.json index b7a2727e..b30f1798 100644 --- a/frontend/translations/ca.json +++ b/frontend/translations/ca.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "L'idioma s'ha canviat a {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Català", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/cs.json b/frontend/translations/cs.json index dd0609b7..6af65b34 100644 --- a/frontend/translations/cs.json +++ b/frontend/translations/cs.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Jazyk byl změněn na {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Čeština", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/da.json b/frontend/translations/da.json index bcca435e..0dfc33f5 100644 --- a/frontend/translations/da.json +++ b/frontend/translations/da.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Sproget blev ændret til {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Dansk", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/el.json b/frontend/translations/el.json index bef8586b..db39f8a6 100644 --- a/frontend/translations/el.json +++ b/frontend/translations/el.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Η γλώσσα άλλαξε σε {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Ελληνικά", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/en.json b/frontend/translations/en.json index 59fdcb1a..d36160ed 100644 --- a/frontend/translations/en.json +++ b/frontend/translations/en.json @@ -1,903 +1,929 @@ { + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", "app.name": "DocuElevate", - "nav.dashboard": "Dashboard", - "nav.upload": "Upload", - "nav.files": "Files", - "nav.search": "Search", - "nav.pipelines": "Pipelines", - "nav.integrations": "Integrations", - "nav.help": "Help", - "nav.notifications": "Notifications", - "nav.pricing": "Pricing", - "nav.about": "About", - "nav.admin": "Admin", - "nav.settings": "Settings", - "nav.users": "Users", - "nav.plan_designer": "Plan Designer", - "nav.credentials": "Credentials", - "nav.file_manager": "File Manager", - "nav.duplicates": "Duplicates", - "nav.similarity": "Similarity", - "nav.queue_monitor": "Queue Monitor", - "nav.scheduled_jobs": "Scheduled Jobs", - "nav.backup_restore": "Backup & Restore", - "nav.status": "Status", - "nav.api_docs": "API Docs", - "nav.developer_docs": "Developer Docs", - "nav.dark_mode": "Dark Mode", - "nav.light_mode": "Light Mode", - "nav.toggle_dark_mode": "Toggle dark mode", - "nav.toggle_nav": "Toggle navigation menu", - "nav.open_main_menu": "Open main menu", - "nav.skip_to_content": "Skip to main content", - "nav.main_navigation": "Main navigation", - "nav.admin_menu": "Admin menu", - "nav.admin_actions": "Admin actions", - "nav.help_center": "Help Center", + "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.signup": "Sign Up", "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", - "footer.copyright": "DocuElevate {year}", - "footer.privacy": "Privacy", - "footer.imprint": "Imprint", - "footer.terms": "Terms", - "footer.cookies": "Cookies", - "footer.license": "License", - "footer.attributions": "Attributions", - "footer.version": "Version {version}", - "footer.navigation": "Footer navigation", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", "cookie.privacy_link": "Privacy Notice", - "cookie.accept": "Got it", - "cookie.notice_label": "Cookie notice", - "common.save": "Save", - "common.cancel": "Cancel", - "common.delete": "Delete", - "common.edit": "Edit", - "common.close": "Close", - "common.confirm": "Confirm", - "common.back": "Back", - "common.next": "Next", - "common.loading": "Loading...", - "common.error": "Error", - "common.success": "Success", - "common.warning": "Warning", - "common.info": "Info", - "common.yes": "Yes", - "common.no": "No", - "common.search": "Search", - "common.filter": "Filter", - "common.reset": "Reset", - "common.refresh": "Refresh", - "common.download": "Download", - "common.actions": "Actions", - "common.details": "Details", - "common.name": "Name", - "common.description": "Description", - "common.type": "Type", - "common.status": "Status", - "common.date": "Date", - "common.size": "Size", - "common.created": "Created", - "common.updated": "Updated", - "common.enabled": "Enabled", - "common.disabled": "Disabled", - "common.active": "Active", - "common.inactive": "Inactive", - "common.all": "All", - "common.none": "None", - "common.select": "Select", - "common.upload": "Upload", - "common.processing": "Processing", - "common.completed": "Completed", - "common.failed": "Failed", - "common.pending": "Pending", - "common.retry": "Retry", - "common.view": "View", - "common.copy": "Copy", - "common.copied": "Copied!", - "language.selector": "Language", - "language.en": "English", - "language.de": "Deutsch", - "language.fr": "Français", - "language.es": "Español", - "language.it": "Italiano", - "language.pt": "Português", - "language.nl": "Nederlands", - "language.pl": "Polski", - "language.zh": "中文", - "language.ru": "Русский", - "language.changed": "Language changed to {language}", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", "dashboard.title": "Dashboard", "dashboard.total_files": "Total Files", - "dashboard.files_today": "Files Today", - "dashboard.files_this_month": "Files This Month", - "dashboard.ocr_processed": "OCR Processed", - "dashboard.active_integrations": "Active Integrations", - "dashboard.storage_targets": "Storage Targets", - "dashboard.recent_activity": "Recent Activity", - "dashboard.quick_actions": "Quick Actions", "dashboard.welcome": "Welcome to DocuElevate", - "upload.title": "Upload Document", - "upload.drag_drop": "Drag & drop files here or click to browse", - "upload.select_file": "Select File", - "upload.uploading": "Uploading...", - "upload.success": "File uploaded successfully", - "upload.error": "Upload failed", - "upload.max_size": "Maximum file size: {size}", - "files.title": "Files", - "files.no_files": "No files found", - "files.filename": "Filename", - "files.document_title": "Document Title", - "files.uploaded": "Uploaded", - "files.file_size": "File Size", - "files.ocr_status": "OCR Status", - "files.tags": "Tags", - "search.title": "Search Documents", - "search.placeholder": "Search by filename, content, tags...", - "search.no_results": "No results found", - "search.results_count": "{count} results found", - "settings.title": "Settings", - "settings.save_success": "Setting saved successfully", - "settings.save_error": "Failed to save setting", - "settings.reset_confirm": "Are you sure you want to reset this setting?", - "integrations.title": "Integrations", - "integrations.connect": "Connect", - "integrations.disconnect": "Disconnect", - "integrations.connected": "Connected", - "integrations.not_connected": "Not Connected", - "integrations.configure": "Configure", - "pipelines.title": "Processing Pipelines", - "pipelines.create": "Create Pipeline", - "pipelines.edit": "Edit Pipeline", - "help.title": "Help Center", - "help.getting_started": "Getting Started", - "help.faq": "Frequently Asked Questions", - "help.documentation": "Documentation", - "help.support": "Support", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", "error.not_found": "Page not found", "error.not_found_message": "The page you are looking for does not exist.", "error.server_error": "Internal Server Error", "error.server_error_message": "Something went wrong. Please try again later.", "error.unauthorized": "Unauthorized", "error.unauthorized_message": "You need to log in to access this page.", - "error.forbidden": "Forbidden", - "error.forbidden_message": "You do not have permission to access this page.", - "notifications.title": "Notifications", - "notifications.mark_read": "Mark as Read", - "notifications.mark_all_read": "Mark All as Read", - "notifications.no_notifications": "No notifications", - "notifications.unread_count": "{count} unread notifications", - "upload.page_title": "Upload Files", - "upload.section_device": "Upload from Device", - "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.browse_button": "Browse Files", - "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", - "upload.file_size_hint": "Maximum size: 500 MB per file", - "upload.camera_button": "Take Photo / Scan Document", - "upload.section_url": "Upload from URL", - "upload.url_label": "File URL", - "upload.url_placeholder": "https://example.com/document.pdf", - "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", - "upload.filename_label": "Filename (optional)", - "upload.filename_placeholder": "my-document.pdf", - "upload.filename_description": "Leave empty to use filename from URL", - "upload.download_button": "Download and Process", - "upload.error_url_required": "Please enter a URL", - "upload.error_invalid_url": "Invalid URL format", - "upload.downloading": "Downloading file from URL...", - "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 – folders are processed recursively", - "files.upload_modal_header": "Uploading Files", - "files.queue_banner_link": "View Queue", - "files.filter_search_placeholder": "Enter filename...", - "files.filter_mime_type": "MIME Type", - "files.filter_all_types": "All Types", - "files.filter_all_statuses": "All Statuses", - "files.filter_date_from": "Date From", - "files.filter_date_to": "Date To", - "files.filter_storage_provider": "Storage Provider", - "files.filter_all_providers": "All Providers", - "files.filter_tags_placeholder": "e.g. invoice,amazon", - "files.filter_ocr_quality": "OCR Quality", - "files.filter_ocr_all": "All Files", - "files.filter_ocr_poor": "Poor quality", - "files.filter_ocr_good": "Good quality", - "files.filter_ocr_unchecked": "Not yet assessed", - "files.filter_apply": "Apply Filters", - "files.filter_clear": "Clear", - "files.saved_searches_label": "Saved Searches", - "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 (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.", - "files.bulk_reprocess": "Reprocess Selected", - "files.bulk_cloud_ocr": "Re-run Cloud OCR", - "files.bulk_download": "Download as ZIP", - "files.bulk_delete": "Delete Selected", - "files.bulk_clear_selection": "Clear Selection", - "files.table_select_all": "Select all files on this page", - "files.table_id": "ID", - "files.table_original_filename": "Original Filename", - "files.table_mime_type": "MIME Type", - "files.table_created_at": "Created At", - "files.table_actions": "Actions", - "files.table_empty": "No files found", - "files.action_preview": "Quick preview", - "files.action_details": "View details", "files.action_delete": "Delete file", - "files.pagination_first": "First", - "files.pagination_previous": "Previous", - "files.pagination_next": "Next", - "files.pagination_last": "Last", - "files.delete_modal_title": "Confirm Deletion", - "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", "files.delete_modal_cancel": "Cancel", "files.delete_modal_confirm": "Delete", - "files.preview_modal_title": "Preview", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", - "search.page_title": "Search Documents", - "search.heading": "Document Search", - "search.input_placeholder": "Search documents by content, sender, tags, type...", - "search.button": "Search", - "search.filter_document_type": "Document Type", - "search.filter_document_type_placeholder": "e.g. Invoice", - "search.filter_tags_placeholder": "e.g. amazon", - "search.filter_sender": "Sender", - "search.filter_sender_placeholder": "e.g. ACME Corp", - "search.filter_language": "Language", - "search.filter_language_placeholder": "e.g. de", - "search.filter_text_quality": "Text Quality", - "search.filter_text_quality_all": "All", - "search.filter_text_quality_high": "High", - "search.filter_text_quality_medium": "Medium", - "search.filter_text_quality_low": "Low", - "search.filter_text_quality_no_text": "No text", - "search.filter_date_from": "Date From", - "search.filter_date_to": "Date To", - "search.filter_clear_button": "Clear Filters", - "search.saved_label": "Saved Searches", - "search.saved_loading": "Loading...", - "search.saved_empty": "No saved searches yet", - "search.saved_error": "Could not load saved searches", - "search.saved_button": "Save Current", - "search.result_empty": "No documents found matching your query.", - "search.loading_indicator": "Searching…", - "search.error_message": "Search is temporarily unavailable. Please try again in a moment.", - "help.page_title": "Help Center", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "help.getting_started": "Getting Started", "help.heading": "Help Center", - "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.page_title": "Help Center", + "help.privacy_notice": "Privacy Notice", "help.quickstart_heading": "Quick Start", - "help.quickstart_upload": "Upload Documents", - "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", "help.quickstart_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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", "help.quickstart_workflows": "Automate Workflows", "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", - "help.sources_heading": "Sources – Getting Documents In", - "help.sources_web_upload": "Web Upload", - "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", "help.sources_email_ingestion": "Email Ingestion (IMAP)", "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", "help.sources_rest_api": "REST API", "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", "help.sources_scanner": "Scanner & Mobile", "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", - "help.destinations_heading": "Destinations – Where Documents Go", - "help.destinations_dropbox": "Dropbox", - "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", - "help.destinations_google_drive": "Google Drive", - "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", - "help.destinations_onedrive": "OneDrive", - "help.destinations_onedrive_desc": "Microsoft Graph API integration.", - "help.destinations_s3": "Amazon S3", - "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", - "help.destinations_nextcloud": "Nextcloud / WebDAV", - "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", - "help.destinations_paperless": "Paperless-ngx", - "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", - "help.destinations_sftp": "SFTP / FTP", - "help.destinations_sftp_desc": "Secure file transfer to any server.", - "help.destinations_email": "Email Forwarding", - "help.destinations_email_desc": "Processed files sent as SMTP attachments.", - "help.destinations_webhook": "Webhook", - "help.destinations_webhook_desc": "POST metadata to any external endpoint.", - "help.workflows_heading": "Workflows & Pipelines", - "help.workflows_what_is": "What is 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.", - "help.workflows_typical_steps": "Typical Steps", - "help.workflows_step_1": "Convert to PDF", - "help.workflows_step_2": "OCR – extract text", - "help.workflows_step_3": "AI metadata extraction", - "help.workflows_step_4": "Deliver to one or more destinations", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", "help.workflows_step_4_create": "Choose one or more delivery destinations.", "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", - "help.faq_heading": "Frequently Asked Questions", - "help.faq_1_q": "How do I upload documents?", - "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", - "help.faq_2_q": "Which file formats are supported?", - "help.faq_2_a": "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_3_q": "Can I ingest documents from email?", - "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", - "help.faq_4_q": "How do processing pipelines work?", - "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", - "help.faq_5_q": "Is my data secure?", - "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", - "help.support_heading": "Contact Support", - "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", - "help.support_admin_message": "Contact your administrator for support information.", - "index.page_title_public": "Intelligent Document Processing", - "index.page_title_dashboard": "Dashboard", + "help.workflows_typical_steps": "Typical Steps", + "help.workflows_what_is": "What is a Pipeline?", "index.badge_intelligent": "Intelligent Document Processing", - "index.hero_heading": "From upload to insight — automatically.", - "index.hero_description": "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_signup": "Get Started — it’s free", - "index.hero_login": "Log In", - "index.hero_pricing": "View Plans & Pricing", - "index.feature_section_title": "Everything you need for smart document workflows", - "index.feature_ocr": "OCR & Text Extraction", - "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", "index.feature_email": "Email & IMAP Ingestion", "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", - "index.feature_search": "Full-Text Search", - "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", "index.feature_pipelines": "Custom Pipelines", "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", - "index.cta_heading": "Ready to elevate your document workflow?", - "index.cta_description": "Join teams already automating their document processing with DocuElevate.", - "index.cta_signup": "Create a free account", - "index.cta_pricing": "See pricing", - "index.dashboard_subtitle": "Intelligent document processing & management", - "index.platform_overview": "Platform overview", - "index.stat_total_files": "Total files", - "index.stat_files_today": "Files today", - "index.stat_files_month": "Files this month", - "index.stat_active_users": "Active users", - "index.usage_my_usage": "My usage", - "index.usage_lifetime": "Lifetime files", - "index.usage_today": "Files today", - "index.usage_month": "Files this month", - "index.usage_unlimited": "Unlimited", - "index.tier_plan": "Plan", - "index.tier_upgrade": "Upgrade", - "index.tier_view_details": "View full details", - "index.quick_actions": "Quick Actions", - "index.quick_upload": "Upload Document", - "index.quick_upload_desc": "Process a new file", - "index.quick_documents": "My Documents", - "index.quick_documents_desc": "Browse your processed files", - "index.quick_subscription": "My Subscription", - "index.quick_subscription_desc": "View plan & usage details", - "index.quick_search": "Search", - "index.quick_search_desc": "Full-text search across documents", - "index.upgrade_plan": "Upgrade your plan", - "index.upgrade_description": "Unlock more documents, more destinations and priority support.", - "index.upgrade_daily_limits": "Higher daily & monthly limits", - "index.upgrade_destinations": "More storage destinations", - "index.upgrade_ocr_pages": "More OCR pages", - "index.upgrade_view_pricing": "View plans & pricing", - "index.integrations_title": "Integrations", - "index.integrations_active": "Active integrations", - "index.integrations_storage": "Storage targets", - "index.integrations_view_status": "View system status", - "index.single_user_heading": "DocuElevate Dashboard", - "index.single_user_subtitle": "Intelligent document processing & management", - "index.capabilities_title": "Capabilities", - "index.capabilities_ocr": "OCR & metadata extraction with AI", - "index.capabilities_cloud": "Cloud storage: Dropbox, OneDrive, Google Drive, NextCloud", - "index.capabilities_paperless": "Paperless-ngx integration for document management", - "index.capabilities_ingestion": "Email & URL-based document ingestion", - "index.capabilities_workflows": "Automated classification & routing workflows", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", "index.getting_started": "Getting Started", "index.getting_started_1": "Configure integrations via System Status", "index.getting_started_2": "Upload your first document", "index.getting_started_3": "Review results in Files", "index.getting_started_learn": "Learn more about DocuElevate", - "error.404_code": "404", - "error.404_heading": "Oops, we couldn’t find that page!", - "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", - "error.404_home": "Return Home", - "error.500_code": "500", - "error.500_heading": "Oops! Something Went Wrong.", - "error.500_description": "Our servers encountered a mishap and need a moment.", - "error.500_home": "Go Home", - "pipelines.page_title": "Processing Pipelines", - "pipelines.system_label": "System", - "pipelines.default_label": "Default", - "pipelines.inactive_label": "Inactive", - "pipelines.disabled_label": "Disabled", - "pipelines.enabled_label": "Enabled", - "pipelines.empty_state": "No pipelines yet", - "pipelines.set_default": "Set as my default pipeline", - "pipelines.description_label": "Description", - "pipelines.active_label": "Active", - "integrations.page_title": "Integrations", - "integrations.imap_settings": "IMAP Settings", - "integrations.host_label": "Host", - "integrations.port_label": "Port", - "integrations.username_label": "Username", - "integrations.password_label": "Password", - "integrations.folder_label": "Folder", - "integrations.empty_state": "No integrations configured", - "status.page_title": "System Status", - "status.app_version": "App Version", - "status.build_date": "Build Date", - "status.last_check": "Last Check", - "status.container_id": "Container ID", - "status.git_commit": "Git Commit", - "status.setting_label": "Setting", - "status.value_label": "Value", - "notifications.page_title": "Notifications", - "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", - "notifications.tab_inbox": "Inbox", - "notifications.tab_settings": "Settings", - "notifications.filter_all": "All", - "notifications.filter_unread": "Unread only", - "notifications.filter_read": "Read only", - "notifications.mark_all_read_btn": "Mark all read", - "auth.login_title": "Log In", - "auth.signup_title": "Sign Up", - "auth.forgot_password": "Forgot Password?", - "auth.remember_me": "Remember me", - "auth.email_label": "Email", - "auth.password_label": "Password", - "auth.confirm_password": "Confirm Password", - "auth.username_label": "Username", - "auth.display_name_label": "Display Name", - "language.nb": "Norsk", - "language.da": "Dansk", - "language.sv": "Svenska", - "language.fi": "Suomi", - "language.is": "Íslenska", - "language.ga": "Gaeilge", - "language.hu": "Magyar", - "language.cs": "Čeština", - "language.sk": "Slovenčina", - "language.sl": "Slovenščina", - "language.hr": "Hrvatski", - "language.ro": "Română", - "language.bg": "Български", - "language.uk": "Українська", - "language.tr": "Türkçe", - "language.el": "Ελληνικά", - "language.et": "Eesti", - "language.lv": "Latviešu", - "language.lt": "Lietuvių", - "language.lb": "Lëtzebuergesch", - "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.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", - "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", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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.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.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.no_results_clear": "clear the search", - "settings.settings_count_suffix": "settings", + "settings.page_heading": "Application Settings", "settings.required_label": "(required)", - "settings.boolean_enable_prefix": "Enable", - "settings.effective_value_label": "Effective value:", + "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.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! We’ve 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 you’re a small startup or a large enterprise.", - "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", - "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": "We’ve 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 don’t see the email, check your spam folder.", - "auth.verify_email_resend_prompt": "Didn’t 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" + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" } diff --git a/frontend/translations/es.json b/frontend/translations/es.json index 48f3ad9a..bba56174 100644 --- a/frontend/translations/es.json +++ b/frontend/translations/es.json @@ -195,6 +195,7 @@ "common.confirm": "Confirmar", "common.copied": "¡Copiado!", "common.copy": "Copiar", + "common.create": "Create", "common.created": "Creado", "common.date": "Fecha", "common.delete": "Eliminar", @@ -202,6 +203,7 @@ "common.details": "Detalles", "common.disabled": "Deshabilitado", "common.download": "Descargar", + "common.duplicate": "Duplicate", "common.edit": "Editar", "common.enabled": "Habilitado", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pendiente", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Procesando", "common.refresh": "Actualizar", "common.reset": "Restablecer", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Tamaño", "common.status": "Estado", + "common.submit": "Submit", "common.success": "Éxito", + "common.tags": "Tags", "common.type": "Tipo", "common.updated": "Actualizado", "common.upload": "Subir", @@ -236,6 +241,8 @@ "common.warning": "Advertencia", "common.yes": "Sí", "cookie.accept": "Entendido", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate utiliza solo cookies de sesión esenciales necesarias para la autenticación y el funcionamiento del servicio. No se utilizan cookies de seguimiento ni analíticas.", "cookie.notice_label": "Aviso de cookies", "cookie.policy_link": "Política de cookies", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Subido", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Atribuciones", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Idioma cambiado a {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Idioma", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "Acerca de", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Acciones de administración", "nav.admin_menu": "Menú de administración", "nav.api_docs": "Documentación API", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Copia de seguridad y restauración", "nav.credentials": "Credenciales", "nav.dark_mode": "Modo oscuro", @@ -623,25 +640,34 @@ "nav.files": "Archivos", "nav.help": "Ayuda", "nav.help_center": "Centro de ayuda", + "nav.imap": "Email Import", "nav.integrations": "Integraciones", "nav.light_mode": "Modo claro", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Navegación principal", "nav.notifications": "Notificaciones", "nav.open_main_menu": "Abrir menú principal", "nav.pipelines": "Pipelines", "nav.plan_designer": "Diseñador de planes", "nav.pricing": "Precios", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Monitor de cola", "nav.scheduled_jobs": "Tareas programadas", "nav.search": "Buscar", "nav.settings": "Configuración", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similitud", "nav.skip_to_content": "Ir al contenido principal", "nav.status": "Estado", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Alternar modo oscuro", "nav.toggle_nav": "Alternar menú de navegación", "nav.upload": "Subir", "nav.users": "Usuarios", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/et.json b/frontend/translations/et.json index d922331a..48d0860e 100644 --- a/frontend/translations/et.json +++ b/frontend/translations/et.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Keel muudeti keelele {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Eesti", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/fi.json b/frontend/translations/fi.json index cfe1710b..edc89326 100644 --- a/frontend/translations/fi.json +++ b/frontend/translations/fi.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Kieli vaihdettiin kieleen {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Suomi", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/fr.json b/frontend/translations/fr.json index 8be9a08a..bf19fc9f 100644 --- a/frontend/translations/fr.json +++ b/frontend/translations/fr.json @@ -195,6 +195,7 @@ "common.confirm": "Confirmer", "common.copied": "Copié !", "common.copy": "Copier", + "common.create": "Create", "common.created": "Créé", "common.date": "Date", "common.delete": "Supprimer", @@ -202,6 +203,7 @@ "common.details": "Détails", "common.disabled": "Désactivé", "common.download": "Télécharger", + "common.duplicate": "Duplicate", "common.edit": "Modifier", "common.enabled": "Activé", "common.error": "Erreur", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "En attente", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "En cours de traitement", "common.refresh": "Actualiser", "common.reset": "Réinitialiser", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Taille", "common.status": "Statut", + "common.submit": "Submit", "common.success": "Succès", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Mis à jour", "common.upload": "Téléverser", @@ -236,6 +241,8 @@ "common.warning": "Avertissement", "common.yes": "Oui", "cookie.accept": "Compris", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate utilise uniquement des cookies de session essentiels nécessaires à l'authentification et au fonctionnement du service. Aucun cookie de suivi ou d'analyse n'est utilisé.", "cookie.notice_label": "Avis relatif aux cookies", "cookie.policy_link": "Politique de cookies", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Téléversé", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Langue changée en {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Langue", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "À propos", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Actions admin", "nav.admin_menu": "Menu admin", "nav.api_docs": "Documentation API", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Sauvegarde et restauration", "nav.credentials": "Identifiants", "nav.dark_mode": "Mode sombre", @@ -623,25 +640,34 @@ "nav.files": "Fichiers", "nav.help": "Aide", "nav.help_center": "Centre d'aide", + "nav.imap": "Email Import", "nav.integrations": "Intégrations", "nav.light_mode": "Mode clair", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Navigation principale", "nav.notifications": "Notifications", "nav.open_main_menu": "Ouvrir le menu principal", "nav.pipelines": "Pipelines", "nav.plan_designer": "Concepteur de plans", "nav.pricing": "Tarifs", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "File d'attente", "nav.scheduled_jobs": "Tâches planifiées", "nav.search": "Recherche", "nav.settings": "Paramètres", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarité", "nav.skip_to_content": "Aller au contenu principal", "nav.status": "Statut", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Basculer le mode sombre", "nav.toggle_nav": "Basculer le menu de navigation", "nav.upload": "Téléverser", "nav.users": "Utilisateurs", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/ga.json b/frontend/translations/ga.json index 2731badb..567ae3f4 100644 --- a/frontend/translations/ga.json +++ b/frontend/translations/ga.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Athraíodh an teanga go {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Gaeilge", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/hr.json b/frontend/translations/hr.json index 22cd2578..39d6e0ee 100644 --- a/frontend/translations/hr.json +++ b/frontend/translations/hr.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Jezik je promijenjen na {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Hrvatski", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/hu.json b/frontend/translations/hu.json index e10229bb..839d3ae4 100644 --- a/frontend/translations/hu.json +++ b/frontend/translations/hu.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "A nyelv megváltozott erre: {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Magyar", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/is.json b/frontend/translations/is.json index 708253f0..b4bf7872 100644 --- a/frontend/translations/is.json +++ b/frontend/translations/is.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Tungumálið var breytt í {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Íslenska", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/it.json b/frontend/translations/it.json index 433dea04..673ec619 100644 --- a/frontend/translations/it.json +++ b/frontend/translations/it.json @@ -195,6 +195,7 @@ "common.confirm": "Conferma", "common.copied": "Copiato!", "common.copy": "Copia", + "common.create": "Create", "common.created": "Creato", "common.date": "Data", "common.delete": "Elimina", @@ -202,6 +203,7 @@ "common.details": "Dettagli", "common.disabled": "Disabilitato", "common.download": "Scarica", + "common.duplicate": "Duplicate", "common.edit": "Modifica", "common.enabled": "Abilitato", "common.error": "Errore", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "In attesa", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "In elaborazione", "common.refresh": "Aggiorna", "common.reset": "Reimposta", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Dimensione", "common.status": "Stato", + "common.submit": "Submit", "common.success": "Successo", + "common.tags": "Tags", "common.type": "Tipo", "common.updated": "Aggiornato", "common.upload": "Carica", @@ -236,6 +241,8 @@ "common.warning": "Avviso", "common.yes": "Sì", "cookie.accept": "Ho capito", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate utilizza solo cookie di sessione essenziali necessari per l'autenticazione e il funzionamento del servizio. Non vengono utilizzati cookie di tracciamento o analisi.", "cookie.notice_label": "Avviso sui cookie", "cookie.policy_link": "Politica sui cookie", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Caricato", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attribuzioni", "footer.cookies": "Cookie", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Lingua cambiata in {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Lingua", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "Informazioni", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Azioni admin", "nav.admin_menu": "Menu admin", "nav.api_docs": "Documentazione API", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup e ripristino", "nav.credentials": "Credenziali", "nav.dark_mode": "Modalità scura", @@ -623,25 +640,34 @@ "nav.files": "File", "nav.help": "Aiuto", "nav.help_center": "Centro assistenza", + "nav.imap": "Email Import", "nav.integrations": "Integrazioni", "nav.light_mode": "Modalità chiara", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Navigazione principale", "nav.notifications": "Notifiche", "nav.open_main_menu": "Apri menu principale", "nav.pipelines": "Pipeline", "nav.plan_designer": "Designer dei piani", "nav.pricing": "Prezzi", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Monitor coda", "nav.scheduled_jobs": "Attività pianificate", "nav.search": "Cerca", "nav.settings": "Impostazioni", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarità", "nav.skip_to_content": "Vai al contenuto principale", "nav.status": "Stato", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Attiva/disattiva modalità scura", "nav.toggle_nav": "Attiva/disattiva menu di navigazione", "nav.upload": "Carica", "nav.users": "Utenti", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/lb.json b/frontend/translations/lb.json index 6ab5782e..14620da6 100644 --- a/frontend/translations/lb.json +++ b/frontend/translations/lb.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "D'Sprooch gouf op {language} geännert", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Lëtzebuergesch", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/lt.json b/frontend/translations/lt.json index 4842a453..85c5227d 100644 --- a/frontend/translations/lt.json +++ b/frontend/translations/lt.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Kalba pakeista į {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Lietuvių", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/lv.json b/frontend/translations/lv.json index e4bcad5c..3f4caf8f 100644 --- a/frontend/translations/lv.json +++ b/frontend/translations/lv.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Valoda tika nomainīta uz {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Latviešu", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/nb.json b/frontend/translations/nb.json index 2a77bd92..0b0eed6a 100644 --- a/frontend/translations/nb.json +++ b/frontend/translations/nb.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Språket ble endret til {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Norsk", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/nl.json b/frontend/translations/nl.json index fc2b9d16..2ac89e9b 100644 --- a/frontend/translations/nl.json +++ b/frontend/translations/nl.json @@ -195,6 +195,7 @@ "common.confirm": "Bevestigen", "common.copied": "Gekopieerd!", "common.copy": "Kopiëren", + "common.create": "Create", "common.created": "Aangemaakt", "common.date": "Datum", "common.delete": "Verwijderen", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Uitgeschakeld", "common.download": "Downloaden", + "common.duplicate": "Duplicate", "common.edit": "Bewerken", "common.enabled": "Ingeschakeld", "common.error": "Fout", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "In afwachting", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Verwerken", "common.refresh": "Vernieuwen", "common.reset": "Herstellen", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Grootte", "common.status": "Status", + "common.submit": "Submit", "common.success": "Succes", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Bijgewerkt", "common.upload": "Uploaden", @@ -236,6 +241,8 @@ "common.warning": "Waarschuwing", "common.yes": "Ja", "cookie.accept": "Begrepen", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate gebruikt alleen essentiële sessiecookies die nodig zijn voor authenticatie en werking van de service. Er worden geen tracking- of analysecookies gebruikt.", "cookie.notice_label": "Cookiemelding", "cookie.policy_link": "Cookiebeleid", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Geüpload", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributies", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Taal gewijzigd naar {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Taal", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "Over ons", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin-acties", "nav.admin_menu": "Admin-menu", "nav.api_docs": "API-documentatie", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Back-up en herstel", "nav.credentials": "Referenties", "nav.dark_mode": "Donkere modus", @@ -623,25 +640,34 @@ "nav.files": "Bestanden", "nav.help": "Help", "nav.help_center": "Helpcentrum", + "nav.imap": "Email Import", "nav.integrations": "Integraties", "nav.light_mode": "Lichte modus", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Hoofdnavigatie", "nav.notifications": "Meldingen", "nav.open_main_menu": "Hoofdmenu openen", "nav.pipelines": "Pipelines", "nav.plan_designer": "Planontwerper", "nav.pricing": "Prijzen", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Wachtrijmonitor", "nav.scheduled_jobs": "Geplande taken", "nav.search": "Zoeken", "nav.settings": "Instellingen", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Gelijkenis", "nav.skip_to_content": "Ga naar hoofdinhoud", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Donkere modus schakelen", "nav.toggle_nav": "Navigatiemenu schakelen", "nav.upload": "Uploaden", "nav.users": "Gebruikers", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/pl.json b/frontend/translations/pl.json index 3356654f..575a4905 100644 --- a/frontend/translations/pl.json +++ b/frontend/translations/pl.json @@ -195,6 +195,7 @@ "common.confirm": "Potwierdź", "common.copied": "Skopiowano!", "common.copy": "Kopiuj", + "common.create": "Create", "common.created": "Utworzono", "common.date": "Data", "common.delete": "Usuń", @@ -202,6 +203,7 @@ "common.details": "Szczegóły", "common.disabled": "Wyłączony", "common.download": "Pobierz", + "common.duplicate": "Duplicate", "common.edit": "Edytuj", "common.enabled": "Włączony", "common.error": "Błąd", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Oczekujące", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Przetwarzanie", "common.refresh": "Odśwież", "common.reset": "Resetuj", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Rozmiar", "common.status": "Status", + "common.submit": "Submit", "common.success": "Sukces", + "common.tags": "Tags", "common.type": "Typ", "common.updated": "Zaktualizowano", "common.upload": "Prześlij", @@ -236,6 +241,8 @@ "common.warning": "Ostrzeżenie", "common.yes": "Tak", "cookie.accept": "Rozumiem", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate używa wyłącznie niezbędnych plików cookie sesji wymaganych do uwierzytelniania i działania usługi. Nie są używane pliki cookie śledzące ani analityczne.", "cookie.notice_label": "Informacja o plikach cookie", "cookie.policy_link": "Polityka plików cookie", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Przesłano", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Atrybuty", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Język zmieniony na {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Język", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "O nas", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Akcje administratora", "nav.admin_menu": "Menu administratora", "nav.api_docs": "Dokumentacja API", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Kopia zapasowa i przywracanie", "nav.credentials": "Poświadczenia", "nav.dark_mode": "Tryb ciemny", @@ -623,25 +640,34 @@ "nav.files": "Pliki", "nav.help": "Pomoc", "nav.help_center": "Centrum pomocy", + "nav.imap": "Email Import", "nav.integrations": "Integracje", "nav.light_mode": "Tryb jasny", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Nawigacja główna", "nav.notifications": "Powiadomienia", "nav.open_main_menu": "Otwórz menu główne", "nav.pipelines": "Potoki", "nav.plan_designer": "Projektant planów", "nav.pricing": "Cennik", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Monitor kolejki", "nav.scheduled_jobs": "Zaplanowane zadania", "nav.search": "Szukaj", "nav.settings": "Ustawienia", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Podobieństwo", "nav.skip_to_content": "Przejdź do treści głównej", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Przełącz tryb ciemny", "nav.toggle_nav": "Przełącz menu nawigacji", "nav.upload": "Prześlij", "nav.users": "Użytkownicy", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/pt.json b/frontend/translations/pt.json index 8f24c762..10bac698 100644 --- a/frontend/translations/pt.json +++ b/frontend/translations/pt.json @@ -195,6 +195,7 @@ "common.confirm": "Confirmar", "common.copied": "Copiado!", "common.copy": "Copiar", + "common.create": "Create", "common.created": "Criado", "common.date": "Data", "common.delete": "Eliminar", @@ -202,6 +203,7 @@ "common.details": "Detalhes", "common.disabled": "Desativado", "common.download": "Descarregar", + "common.duplicate": "Duplicate", "common.edit": "Editar", "common.enabled": "Ativado", "common.error": "Erro", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pendente", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "A processar", "common.refresh": "Atualizar", "common.reset": "Repor", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Tamanho", "common.status": "Estado", + "common.submit": "Submit", "common.success": "Sucesso", + "common.tags": "Tags", "common.type": "Tipo", "common.updated": "Atualizado", "common.upload": "Carregar", @@ -236,6 +241,8 @@ "common.warning": "Aviso", "common.yes": "Sim", "cookie.accept": "Entendido", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "O DocuElevate utiliza apenas cookies de sessão essenciais necessários para a autenticação e o funcionamento do serviço. Não são utilizados cookies de rastreamento ou analíticos.", "cookie.notice_label": "Aviso de cookies", "cookie.policy_link": "Política de cookies", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Carregado", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Atribuições", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Idioma alterado para {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Idioma", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "Sobre", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Ações de administração", "nav.admin_menu": "Menu de administração", "nav.api_docs": "Documentação API", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Cópia de segurança e restauro", "nav.credentials": "Credenciais", "nav.dark_mode": "Modo escuro", @@ -623,25 +640,34 @@ "nav.files": "Ficheiros", "nav.help": "Ajuda", "nav.help_center": "Centro de ajuda", + "nav.imap": "Email Import", "nav.integrations": "Integrações", "nav.light_mode": "Modo claro", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Navegação principal", "nav.notifications": "Notificações", "nav.open_main_menu": "Abrir menu principal", "nav.pipelines": "Pipelines", "nav.plan_designer": "Designer de planos", "nav.pricing": "Preços", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Monitor de fila", "nav.scheduled_jobs": "Tarefas agendadas", "nav.search": "Pesquisar", "nav.settings": "Definições", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similaridade", "nav.skip_to_content": "Ir para o conteúdo principal", "nav.status": "Estado", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Alternar modo escuro", "nav.toggle_nav": "Alternar menu de navegação", "nav.upload": "Carregar", "nav.users": "Utilizadores", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/ro.json b/frontend/translations/ro.json index 6dd0f04b..0002e382 100644 --- a/frontend/translations/ro.json +++ b/frontend/translations/ro.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Limba a fost schimbată în {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Română", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/ru.json b/frontend/translations/ru.json index 4a3b999f..6c90ec67 100644 --- a/frontend/translations/ru.json +++ b/frontend/translations/ru.json @@ -195,6 +195,7 @@ "common.confirm": "Подтвердить", "common.copied": "Скопировано!", "common.copy": "Копировать", + "common.create": "Create", "common.created": "Создано", "common.date": "Дата", "common.delete": "Удалить", @@ -202,6 +203,7 @@ "common.details": "Подробности", "common.disabled": "Отключено", "common.download": "Скачать", + "common.duplicate": "Duplicate", "common.edit": "Редактировать", "common.enabled": "Включено", "common.error": "Ошибка", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "В ожидании", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Обработка", "common.refresh": "Обновить", "common.reset": "Сбросить", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Размер", "common.status": "Статус", + "common.submit": "Submit", "common.success": "Успешно", + "common.tags": "Tags", "common.type": "Тип", "common.updated": "Обновлено", "common.upload": "Загрузить", @@ -236,6 +241,8 @@ "common.warning": "Предупреждение", "common.yes": "Да", "cookie.accept": "Понятно", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate использует только необходимые сессионные файлы cookie для аутентификации и работы сервиса. Файлы cookie для отслеживания и аналитики не используются.", "cookie.notice_label": "Уведомление о файлах cookie", "cookie.policy_link": "Политика файлов cookie", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Загружено", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Атрибуции", "footer.cookies": "Файлы cookie", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Язык изменён на {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Язык", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "О нас", "nav.admin": "Админ", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Действия администратора", "nav.admin_menu": "Меню администратора", "nav.api_docs": "Документация API", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Резервное копирование и восстановление", "nav.credentials": "Учётные данные", "nav.dark_mode": "Тёмная тема", @@ -623,25 +640,34 @@ "nav.files": "Файлы", "nav.help": "Помощь", "nav.help_center": "Центр помощи", + "nav.imap": "Email Import", "nav.integrations": "Интеграции", "nav.light_mode": "Светлая тема", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Основная навигация", "nav.notifications": "Уведомления", "nav.open_main_menu": "Открыть главное меню", "nav.pipelines": "Конвейеры", "nav.plan_designer": "Конструктор планов", "nav.pricing": "Цены", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Монитор очереди", "nav.scheduled_jobs": "Запланированные задачи", "nav.search": "Поиск", "nav.settings": "Настройки", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Сходство", "nav.skip_to_content": "Перейти к основному содержанию", "nav.status": "Статус", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Переключить тёмную тему", "nav.toggle_nav": "Переключить меню навигации", "nav.upload": "Загрузить", "nav.users": "Пользователи", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/sk.json b/frontend/translations/sk.json index a4585271..51e779f2 100644 --- a/frontend/translations/sk.json +++ b/frontend/translations/sk.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Jazyk bol zmenený na {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Slovenčina", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/sl.json b/frontend/translations/sl.json index 5172ee00..ffd117cf 100644 --- a/frontend/translations/sl.json +++ b/frontend/translations/sl.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Jezik je bil spremenjen na {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Slovenščina", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/sv.json b/frontend/translations/sv.json index c85b7db7..9a0dd1e5 100644 --- a/frontend/translations/sv.json +++ b/frontend/translations/sv.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Språket ändrades till {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Svenska", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/tr.json b/frontend/translations/tr.json index 12c4e37e..94f348af 100644 --- a/frontend/translations/tr.json +++ b/frontend/translations/tr.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Dil {language} olarak değiştirildi", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Türkçe", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/uk.json b/frontend/translations/uk.json index 1692114c..a0d00101 100644 --- a/frontend/translations/uk.json +++ b/frontend/translations/uk.json @@ -195,6 +195,7 @@ "common.confirm": "Confirm", "common.copied": "Copied!", "common.copy": "Copy", + "common.create": "Create", "common.created": "Created", "common.date": "Date", "common.delete": "Delete", @@ -202,6 +203,7 @@ "common.details": "Details", "common.disabled": "Disabled", "common.download": "Download", + "common.duplicate": "Duplicate", "common.edit": "Edit", "common.enabled": "Enabled", "common.error": "Error", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "Pending", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "Processing", "common.refresh": "Refresh", "common.reset": "Reset", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "Size", "common.status": "Status", + "common.submit": "Submit", "common.success": "Success", + "common.tags": "Tags", "common.type": "Type", "common.updated": "Updated", "common.upload": "Upload", @@ -236,6 +241,8 @@ "common.warning": "Warning", "common.yes": "Yes", "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", "cookie.notice_label": "Cookie notice", "cookie.policy_link": "Cookie Policy", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "Мову змінено на {language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "Українська", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "About", "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "Admin actions", "nav.admin_menu": "Admin menu", "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "Backup & Restore", "nav.credentials": "Credentials", "nav.dark_mode": "Dark Mode", @@ -623,25 +640,34 @@ "nav.files": "Files", "nav.help": "Help", "nav.help_center": "Help Center", + "nav.imap": "Email Import", "nav.integrations": "Integrations", "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", "nav.plan_designer": "Plan Designer", "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "Queue Monitor", "nav.scheduled_jobs": "Scheduled Jobs", "nav.search": "Search", "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "Similarity", "nav.skip_to_content": "Skip to main content", "nav.status": "Status", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "Toggle dark mode", "nav.toggle_nav": "Toggle navigation menu", "nav.upload": "Upload", "nav.users": "Users", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", diff --git a/frontend/translations/zh.json b/frontend/translations/zh.json index 34c2680c..90d3d9e6 100644 --- a/frontend/translations/zh.json +++ b/frontend/translations/zh.json @@ -195,6 +195,7 @@ "common.confirm": "确认", "common.copied": "已复制!", "common.copy": "复制", + "common.create": "Create", "common.created": "创建时间", "common.date": "日期", "common.delete": "删除", @@ -202,6 +203,7 @@ "common.details": "详情", "common.disabled": "已禁用", "common.download": "下载", + "common.duplicate": "Duplicate", "common.edit": "编辑", "common.enabled": "已启用", "common.error": "错误", @@ -218,6 +220,7 @@ "common.page": "Page", "common.pending": "待处理", "common.prev_page": "Previous page", + "common.previous": "Previous", "common.processing": "处理中", "common.refresh": "刷新", "common.reset": "重置", @@ -228,7 +231,9 @@ "common.select_placeholder": "— select —", "common.size": "大小", "common.status": "状态", + "common.submit": "Submit", "common.success": "成功", + "common.tags": "Tags", "common.type": "类型", "common.updated": "更新时间", "common.upload": "上传", @@ -236,6 +241,8 @@ "common.warning": "警告", "common.yes": "是", "cookie.accept": "我知道了", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", "cookie.notice": "DocuElevate 仅使用身份验证和服务运行所需的基本会话 Cookie。不使用任何跟踪或分析 Cookie。", "cookie.notice_label": "Cookie 通知", "cookie.policy_link": "Cookie 政策", @@ -398,6 +405,8 @@ "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", "files.uploaded": "已上传", + "footer.about": "About", + "footer.attribution": "Attribution", "footer.attributions": "致谢", "footer.cookies": "Cookie", "footer.copyright": "DocuElevate {year}", @@ -577,6 +586,7 @@ "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", + "language.change_success": "Language changed to {language}", "language.changed": "语言已更改为{language}", "language.cs": "Čeština", "language.da": "Dansk", @@ -602,6 +612,7 @@ "language.ro": "Română", "language.ru": "Русский", "language.selector": "语言", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", @@ -610,9 +621,15 @@ "language.zh": "中文", "nav.about": "关于", "nav.admin": "管理", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", "nav.admin_actions": "管理操作", "nav.admin_menu": "管理菜单", "nav.api_docs": "API 文档", + "nav.api_tokens": "API Tokens", "nav.backup_restore": "备份与恢复", "nav.credentials": "凭据", "nav.dark_mode": "深色模式", @@ -623,25 +640,34 @@ "nav.files": "文件", "nav.help": "帮助", "nav.help_center": "帮助中心", + "nav.imap": "Email Import", "nav.integrations": "集成", "nav.light_mode": "浅色模式", + "nav.login": "Log In", + "nav.logout": "Log Out", "nav.main_navigation": "主导航", "nav.notifications": "通知", "nav.open_main_menu": "打开主菜单", "nav.pipelines": "处理流程", "nav.plan_designer": "方案设计", "nav.pricing": "价格", + "nav.profile": "Profile", + "nav.queue": "Queue", "nav.queue_monitor": "队列监控", "nav.scheduled_jobs": "计划任务", "nav.search": "搜索", "nav.settings": "设置", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", "nav.similarity": "相似度", "nav.skip_to_content": "跳至主要内容", "nav.status": "状态", + "nav.subscription": "Subscription", "nav.toggle_dark_mode": "切换深色模式", "nav.toggle_nav": "切换导航菜单", "nav.upload": "上传", "nav.users": "用户", + "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", From 7cb82bb6acc4cf98ba17791a562156b6ef9f1fba Mon Sep 17 00:00:00 2001 From: semantic-release Date: Thu, 12 Mar 2026 22:06:54 +0000 Subject: [PATCH 07/71] 0.125.1 Automatically generated by python-semantic-release --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d219efcb..c76f126f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +## v0.125.1 (2026-03-12) + +### Bug Fixes + +- **i18n**: Sync de.json keys with en.json — add 26 missing keys to en.json and all language files + ([`d3349e6`](https://github.com/christianlouis/DocuElevate/commit/d3349e649ea1ef01d8afc62d9a92d00ba4aac3f8)) + + ## v0.125.0 (2026-03-12) ### Bug Fixes From 3201733a50c9eeee4f96fbce5962833dcde76d85 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 12 Mar 2026 22:06:57 +0000 Subject: [PATCH 08/71] chore(release): update build metadata files [skip ci] --- BUILD_DATE | 2 +- GIT_SHA | 2 +- RUNTIME_INFO | 12 ++++++------ VERSION | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/BUILD_DATE b/BUILD_DATE index 3823105d..a7772eb6 100644 --- a/BUILD_DATE +++ b/BUILD_DATE @@ -1 +1 @@ -2026-03-12T21:44:42Z +2026-03-12T22:06:54Z diff --git a/GIT_SHA b/GIT_SHA index a8f8fefa..66609dfa 100644 --- a/GIT_SHA +++ b/GIT_SHA @@ -1 +1 @@ -4345d51 +2c36b7d diff --git a/RUNTIME_INFO b/RUNTIME_INFO index cfb8a4a7..19fa7473 100644 --- a/RUNTIME_INFO +++ b/RUNTIME_INFO @@ -1,10 +1,10 @@ DocuElevate Build Information ============================== -Version: 0.125.0 -Build Date: 2026-03-12T21:44:42Z -Git Commit: 4345d5128fe1d33f1342d05138f3d01c903bac0b -Git Short SHA: 4345d51 +Version: 0.125.1 +Build Date: 2026-03-12T22:06:54Z +Git Commit: 2c36b7dc95283473154e9fe2fd4b2ef110979670 +Git Short SHA: 2c36b7d Git Branch: main -Commit Date: 2026-03-12T22:44:13+01:00 -Build Timestamp: 2026-03-12T21:44:42Z +Commit Date: 2026-03-12T23:06:30+01:00 +Build Timestamp: 2026-03-12T22:06:54Z ============================== diff --git a/VERSION b/VERSION index b1fa68e5..33e061fe 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.125.0 +0.125.1 From 3b0e7b27cc7279e0093ef3693f5f0d9f760e5208 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:23:04 +0100 Subject: [PATCH 09/71] Update Crowdin configuration file --- crowdin.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 crowdin.yml diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 00000000..e0f2418f --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,3 @@ +files: + - source: /frontend/translations/en.json + translation: /frontend/translations/%two_letters_code%.json From ca88d7d4250b3b9ee384d05b53d854056c5eccb4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 12 Mar 2026 22:23:25 +0000 Subject: [PATCH 10/71] docs(changelog): update changelog [skip ci] --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c76f126f..df3f0ae6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +## Unreleased + + ## v0.125.1 (2026-03-12) ### Bug Fixes From 4458b18530c80af2d9a34cb1ea49272eca23fa29 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:18 +0100 Subject: [PATCH 11/71] Add configuration for Crowdin project --- crowdin.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/crowdin.yml b/crowdin.yml index e0f2418f..fb3bedb6 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -1,3 +1,11 @@ +"project_id_env": "CROWDIN_PROJECT_ID" +"api_token_env": "CROWDIN_PERSONAL_TOKEN" +"base_path": "." +"base_url": "https://api.crowdin.com" + +"preserve_hierarchy": true + files: - source: /frontend/translations/en.json translation: /frontend/translations/%two_letters_code%.json + type: json From 95af9ffe5e493470caaf09dc784ba12f5d19a8e7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 12 Mar 2026 22:34:36 +0000 Subject: [PATCH 12/71] docs(changelog): update changelog [skip ci] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index df3f0ae6..1a982a2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Documentation + +- **changelog**: Update changelog [skip ci] + ([`ca88d7d`](https://github.com/christianlouis/DocuElevate/commit/ca88d7d4250b3b9ee384d05b53d854056c5eccb4)) + + +## Unreleased + ## v0.125.1 (2026-03-12) From ab97c3a7f2520970a0b75a10b789ef713c5b8ed0 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:39 +0100 Subject: [PATCH 13/71] New translations en.json (Romanian) --- frontend/translations/ro.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/ro.json b/frontend/translations/ro.json index 0002e382..d36160ed 100644 --- a/frontend/translations/ro.json +++ b/frontend/translations/ro.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Limba a fost schimbată în {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Română", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From f65f1840d59f78b02ac8cb0e4d06a5a99d6a22cc Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:40 +0100 Subject: [PATCH 14/71] New translations en.json (French) --- frontend/translations/fr.json | 296 +++++++++++++++++----------------- 1 file changed, 148 insertions(+), 148 deletions(-) diff --git a/frontend/translations/fr.json b/frontend/translations/fr.json index bf19fc9f..d36160ed 100644 --- a/frontend/translations/fr.json +++ b/frontend/translations/fr.json @@ -106,22 +106,22 @@ "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", "auth.forgot_username": "Forgot username?", - "auth.login": "Se connecter", + "auth.login": "Log In", "auth.login_title": "Log In", "auth.logo_alt": "DocuElevate Logo", - "auth.logout": "Se déconnecter", - "auth.my_account": "Mon compte", + "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": "Profil", + "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": "S'inscrire", + "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", "auth.username_or_email": "Username or Email", @@ -185,68 +185,68 @@ "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.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", "common.col_pending": "Pending", - "common.completed": "Terminé", - "common.confirm": "Confirmer", - "common.copied": "Copié !", - "common.copy": "Copier", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", "common.create": "Create", - "common.created": "Créé", + "common.created": "Created", "common.date": "Date", - "common.delete": "Supprimer", + "common.delete": "Delete", "common.description": "Description", - "common.details": "Détails", - "common.disabled": "Désactivé", - "common.download": "Télécharger", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", "common.duplicate": "Duplicate", - "common.edit": "Modifier", - "common.enabled": "Activé", - "common.error": "Erreur", - "common.failed": "Échoué", - "common.filter": "Filtrer", - "common.inactive": "Inactif", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", "common.info": "Info", - "common.loading": "Chargement...", - "common.name": "Nom", - "common.next": "Suivant", + "common.loading": "Loading...", + "common.name": "Name", + "common.next": "Next", "common.next_page": "Next page", - "common.no": "Non", - "common.none": "Aucun", + "common.no": "No", + "common.none": "None", "common.page": "Page", - "common.pending": "En attente", + "common.pending": "Pending", "common.prev_page": "Previous page", "common.previous": "Previous", - "common.processing": "En cours de traitement", - "common.refresh": "Actualiser", - "common.reset": "Réinitialiser", - "common.retry": "Réessayer", - "common.save": "Enregistrer", - "common.search": "Rechercher", - "common.select": "Sélectionner", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", "common.select_placeholder": "— select —", - "common.size": "Taille", - "common.status": "Statut", + "common.size": "Size", + "common.status": "Status", "common.submit": "Submit", - "common.success": "Succès", + "common.success": "Success", "common.tags": "Tags", "common.type": "Type", - "common.updated": "Mis à jour", - "common.upload": "Téléverser", - "common.view": "Voir", - "common.warning": "Avertissement", - "common.yes": "Oui", - "cookie.accept": "Compris", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", "cookie.learn_more": "Learn more", "cookie.message": "This website uses cookies to improve your experience.", - "cookie.notice": "DocuElevate utilise uniquement des cookies de session essentiels nécessaires à l'authentification et au fonctionnement du service. Aucun cookie de suivi ou d'analyse n'est utilisé.", - "cookie.notice_label": "Avis relatif aux cookies", - "cookie.policy_link": "Politique de cookies", - "cookie.privacy_link": "Avis de confidentialité", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", @@ -270,16 +270,16 @@ "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", - "dashboard.ocr_processed": "OCR traités", - "dashboard.quick_actions": "Actions rapides", - "dashboard.recent_activity": "Activité récente", - "dashboard.storage_targets": "Destinations de stockage", - "dashboard.title": "Tableau de bord", - "dashboard.total_files": "Total des fichiers", - "dashboard.welcome": "Bienvenue sur DocuElevate", + "dashboard.active_integrations": "Active Integrations", + "dashboard.files_this_month": "Files This Month", + "dashboard.files_today": "Files Today", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "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", @@ -317,14 +317,14 @@ "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", - "error.not_found_message": "La page que vous recherchez n'existe pas.", - "error.server_error": "Erreur interne du serveur", - "error.server_error_message": "Quelque chose s'est mal passé. Veuillez réessayer plus tard.", - "error.unauthorized": "Non autorisé", - "error.unauthorized_message": "Vous devez vous connecter pour accéder à cette page.", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", "files.action_delete": "Delete file", "files.action_details": "View details", "files.action_preview": "Quick preview", @@ -337,12 +337,12 @@ "files.delete_modal_confirm": "Delete", "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", - "files.document_title": "Titre du document", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", "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.file_size": "File Size", + "files.filename": "Filename", "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", @@ -366,10 +366,10 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", - "files.no_files": "Aucun fichier trouvé", - "files.ocr_status": "Statut OCR", + "files.no_files": "No files found", + "files.ocr_status": "OCR Status", "files.page_title": "File Records", "files.pagination_files": "files", "files.pagination_first": "First", @@ -399,22 +399,22 @@ "files.table_mime_type": "MIME Type", "files.table_original_filename": "Original Filename", "files.table_select_all": "Select all files on this page", - "files.tags": "Étiquettes", - "files.title": "Fichiers", + "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": "Téléversé", + "files.uploaded": "Uploaded", "footer.about": "About", "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", - "footer.imprint": "Mentions légales", - "footer.license": "Licence", - "footer.navigation": "Navigation du pied de page", - "footer.privacy": "Confidentialité", - "footer.terms": "Conditions", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", "footer.version": "Version {version}", "help.destinations_dropbox": "Dropbox", "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", @@ -436,7 +436,7 @@ "help.destinations_webhook": "Webhook", "help.destinations_webhook_desc": "POST metadata to any external endpoint.", "help.documentation": "Documentation", - "help.faq": "Questions fréquentes", + "help.faq": "Frequently Asked Questions", "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", "help.faq_1_q": "How do I upload documents?", "help.faq_2_a": "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.", @@ -448,7 +448,7 @@ "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", "help.faq_5_q": "Is my data secure?", "help.faq_heading": "Frequently Asked Questions", - "help.getting_started": "Premiers pas", + "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", "help.privacy_notice": "Privacy Notice", @@ -475,7 +475,7 @@ "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.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.", "help.workflows_heading": "Workflows & Pipelines", @@ -570,24 +570,24 @@ "index.usage_my_usage": "My usage", "index.usage_today": "Files today", "index.usage_unlimited": "Unlimited", - "integrations.configure": "Configurer", - "integrations.connect": "Connecter", - "integrations.connected": "Connecté", - "integrations.disconnect": "Déconnecter", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", "integrations.empty_state": "No integrations configured", "integrations.folder_label": "Folder", "integrations.host_label": "Host", "integrations.imap_settings": "IMAP Settings", - "integrations.not_connected": "Non connecté", + "integrations.not_connected": "Not Connected", "integrations.page_title": "Integrations", "integrations.password_label": "Password", "integrations.port_label": "Port", - "integrations.title": "Intégrations", + "integrations.title": "Integrations", "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Langue changée en {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Langue", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", @@ -619,77 +619,77 @@ "language.tr": "Türkçe", "language.uk": "Українська", "language.zh": "中文", - "nav.about": "À propos", + "nav.about": "About", "nav.admin": "Admin", "nav.admin.audit_logs": "Audit Logs", "nav.admin.backups": "Backups", "nav.admin.plans": "Plans", "nav.admin.scheduled_jobs": "Scheduled Jobs", "nav.admin.users": "Users", - "nav.admin_actions": "Actions admin", - "nav.admin_menu": "Menu admin", - "nav.api_docs": "Documentation API", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", "nav.api_tokens": "API Tokens", - "nav.backup_restore": "Sauvegarde et restauration", - "nav.credentials": "Identifiants", - "nav.dark_mode": "Mode sombre", - "nav.dashboard": "Tableau de bord", - "nav.developer_docs": "Documentation développeur", - "nav.duplicates": "Doublons", - "nav.file_manager": "Gestionnaire de fichiers", - "nav.files": "Fichiers", - "nav.help": "Aide", - "nav.help_center": "Centre d'aide", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", "nav.imap": "Email Import", - "nav.integrations": "Intégrations", - "nav.light_mode": "Mode clair", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", "nav.login": "Log In", "nav.logout": "Log Out", - "nav.main_navigation": "Navigation principale", + "nav.main_navigation": "Main navigation", "nav.notifications": "Notifications", - "nav.open_main_menu": "Ouvrir le menu principal", + "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", - "nav.plan_designer": "Concepteur de plans", - "nav.pricing": "Tarifs", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", "nav.profile": "Profile", "nav.queue": "Queue", - "nav.queue_monitor": "File d'attente", - "nav.scheduled_jobs": "Tâches planifiées", - "nav.search": "Recherche", - "nav.settings": "Paramètres", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", "nav.shared_links": "Shared Links", "nav.signup": "Sign Up", - "nav.similarity": "Similarité", - "nav.skip_to_content": "Aller au contenu principal", - "nav.status": "Statut", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", "nav.subscription": "Subscription", - "nav.toggle_dark_mode": "Basculer le mode sombre", - "nav.toggle_nav": "Basculer le menu de navigation", - "nav.upload": "Téléverser", - "nav.users": "Utilisateurs", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", - "notifications.mark_all_read": "Tout marquer comme lu", + "notifications.mark_all_read": "Mark All as Read", "notifications.mark_all_read_btn": "Mark all read", - "notifications.mark_read": "Marquer comme lu", - "notifications.no_notifications": "Aucune notification", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", "notifications.page_title": "Notifications", "notifications.tab_inbox": "Inbox", "notifications.tab_settings": "Settings", "notifications.title": "Notifications", - "notifications.unread_count": "{count} notifications non lues", + "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", "pipelines.add_step_btn": "Add Step", - "pipelines.create": "Créer un pipeline", + "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": "Modifier le pipeline", + "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", @@ -712,7 +712,7 @@ "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", + "pipelines.title": "Processing Pipelines", "queue.active_tasks": "Active Tasks", "queue.auto_refresh_1": "Auto-refreshes every", "queue.auto_refresh_2": "seconds", @@ -762,18 +762,18 @@ "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é", + "search.no_results": "No results found", "search.page_title": "Search Documents", - "search.placeholder": "Rechercher par nom, contenu, étiquettes...", + "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", - "search.results_count": "{count} résultats trouvés", + "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": "Rechercher des documents", + "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", @@ -797,15 +797,15 @@ "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.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": "Échec de l'enregistrement du paramètre", + "settings.save_error": "Failed to save setting", "settings.save_setting_title": "Save this setting", - "settings.save_success": "Paramètre enregistré avec succès", + "settings.save_success": "Setting saved successfully", "settings.saving_state": "Saving…", "settings.search_aria_label": "Search settings", "settings.search_clear_aria": "Clear search", @@ -814,7 +814,7 @@ "settings.source_db_badge": "DB", "settings.source_default_badge": "DEFAULT", "settings.source_env_badge": "ENV", - "settings.title": "Paramètres", + "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", @@ -903,11 +903,11 @@ "upload.camera_button": "Take Photo / Scan Document", "upload.download_button": "Download and Process", "upload.downloading": "Downloading file from URL...", - "upload.drag_drop": "Glissez-déposez vos fichiers ici ou cliquez pour parcourir", + "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": "Échec du téléversement", + "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", "upload.file_size_hint": "Maximum size: 500 MB per file", @@ -915,14 +915,14 @@ "upload.filename_description": "Leave empty to use filename from URL", "upload.filename_label": "Filename (optional)", "upload.filename_placeholder": "my-document.pdf", - "upload.max_size": "Taille maximale du fichier : {size}", + "upload.max_size": "Maximum file size: {size}", "upload.page_title": "Upload Files", "upload.section_device": "Upload from Device", "upload.section_url": "Upload from URL", - "upload.select_file": "Sélectionner un fichier", - "upload.success": "Fichier téléversé avec succès", - "upload.title": "Téléverser un document", - "upload.uploading": "Téléversement en cours...", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", "upload.url_label": "File URL", "upload.url_placeholder": "https://example.com/document.pdf" From 652c1d630b43375115619c1a73fa877c8ba08f63 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:41 +0100 Subject: [PATCH 15/71] New translations en.json (Spanish) --- frontend/translations/es.json | 314 +++++++++++++++++----------------- 1 file changed, 157 insertions(+), 157 deletions(-) diff --git a/frontend/translations/es.json b/frontend/translations/es.json index bba56174..d36160ed 100644 --- a/frontend/translations/es.json +++ b/frontend/translations/es.json @@ -106,22 +106,22 @@ "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", "auth.forgot_username": "Forgot username?", - "auth.login": "Iniciar sesión", + "auth.login": "Log In", "auth.login_title": "Log In", "auth.logo_alt": "DocuElevate Logo", - "auth.logout": "Cerrar sesión", - "auth.my_account": "Mi cuenta", + "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": "Perfil", + "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": "Registrarse", + "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", "auth.username_or_email": "Username or Email", @@ -184,69 +184,69 @@ "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.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", "common.col_pending": "Pending", - "common.completed": "Completado", - "common.confirm": "Confirmar", - "common.copied": "¡Copiado!", - "common.copy": "Copiar", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", "common.create": "Create", - "common.created": "Creado", - "common.date": "Fecha", - "common.delete": "Eliminar", - "common.description": "Descripción", - "common.details": "Detalles", - "common.disabled": "Deshabilitado", - "common.download": "Descargar", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", "common.duplicate": "Duplicate", - "common.edit": "Editar", - "common.enabled": "Habilitado", + "common.edit": "Edit", + "common.enabled": "Enabled", "common.error": "Error", - "common.failed": "Fallido", - "common.filter": "Filtrar", - "common.inactive": "Inactivo", - "common.info": "Información", - "common.loading": "Cargando...", - "common.name": "Nombre", - "common.next": "Siguiente", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "common.loading": "Loading...", + "common.name": "Name", + "common.next": "Next", "common.next_page": "Next page", "common.no": "No", - "common.none": "Ninguno", + "common.none": "None", "common.page": "Page", - "common.pending": "Pendiente", + "common.pending": "Pending", "common.prev_page": "Previous page", "common.previous": "Previous", - "common.processing": "Procesando", - "common.refresh": "Actualizar", - "common.reset": "Restablecer", - "common.retry": "Reintentar", - "common.save": "Guardar", - "common.search": "Buscar", - "common.select": "Seleccionar", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", "common.select_placeholder": "— select —", - "common.size": "Tamaño", - "common.status": "Estado", + "common.size": "Size", + "common.status": "Status", "common.submit": "Submit", - "common.success": "Éxito", + "common.success": "Success", "common.tags": "Tags", - "common.type": "Tipo", - "common.updated": "Actualizado", - "common.upload": "Subir", - "common.view": "Ver", - "common.warning": "Advertencia", - "common.yes": "Sí", - "cookie.accept": "Entendido", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", "cookie.learn_more": "Learn more", "cookie.message": "This website uses cookies to improve your experience.", - "cookie.notice": "DocuElevate utiliza solo cookies de sesión esenciales necesarias para la autenticación y el funcionamiento del servicio. No se utilizan cookies de seguimiento ni analíticas.", - "cookie.notice_label": "Aviso de cookies", - "cookie.policy_link": "Política de cookies", - "cookie.privacy_link": "Aviso de privacidad", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", @@ -270,16 +270,16 @@ "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", - "dashboard.ocr_processed": "OCR procesados", - "dashboard.quick_actions": "Acciones rápidas", - "dashboard.recent_activity": "Actividad reciente", - "dashboard.storage_targets": "Destinos de almacenamiento", - "dashboard.title": "Panel", - "dashboard.total_files": "Total de archivos", - "dashboard.welcome": "Bienvenido a DocuElevate", + "dashboard.active_integrations": "Active Integrations", + "dashboard.files_this_month": "Files This Month", + "dashboard.files_today": "Files Today", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "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", @@ -317,14 +317,14 @@ "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", - "error.not_found_message": "La página que busca no existe.", - "error.server_error": "Error interno del servidor", - "error.server_error_message": "Algo salió mal. Inténtelo de nuevo más tarde.", - "error.unauthorized": "No autorizado", - "error.unauthorized_message": "Debe iniciar sesión para acceder a esta página.", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", "files.action_delete": "Delete file", "files.action_details": "View details", "files.action_preview": "Quick preview", @@ -337,12 +337,12 @@ "files.delete_modal_confirm": "Delete", "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", - "files.document_title": "Título del documento", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", "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.file_size": "File Size", + "files.filename": "Filename", "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", @@ -366,10 +366,10 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", - "files.no_files": "No se encontraron archivos", - "files.ocr_status": "Estado OCR", + "files.no_files": "No files found", + "files.ocr_status": "OCR Status", "files.page_title": "File Records", "files.pagination_files": "files", "files.pagination_first": "First", @@ -399,23 +399,23 @@ "files.table_mime_type": "MIME Type", "files.table_original_filename": "Original Filename", "files.table_select_all": "Select all files on this page", - "files.tags": "Etiquetas", - "files.title": "Archivos", + "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": "Subido", + "files.uploaded": "Uploaded", "footer.about": "About", "footer.attribution": "Attribution", - "footer.attributions": "Atribuciones", + "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", - "footer.imprint": "Aviso legal", - "footer.license": "Licencia", - "footer.navigation": "Navegación del pie de página", - "footer.privacy": "Privacidad", - "footer.terms": "Términos", - "footer.version": "Versión {version}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", "help.destinations_dropbox": "Dropbox", "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", "help.destinations_email": "Email Forwarding", @@ -435,8 +435,8 @@ "help.destinations_sftp_desc": "Secure file transfer to any server.", "help.destinations_webhook": "Webhook", "help.destinations_webhook_desc": "POST metadata to any external endpoint.", - "help.documentation": "Documentación", - "help.faq": "Preguntas frecuentes", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", "help.faq_1_q": "How do I upload documents?", "help.faq_2_a": "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.", @@ -448,7 +448,7 @@ "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", "help.faq_5_q": "Is my data secure?", "help.faq_heading": "Frequently Asked Questions", - "help.getting_started": "Primeros pasos", + "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", "help.privacy_notice": "Privacy Notice", @@ -469,13 +469,13 @@ "help.sources_web_upload": "Web Upload", "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", - "help.support": "Soporte", + "help.support": "Support", "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", "help.support_ticket_button": "Submit a Ticket", "help.support_ticket_heading": "Open a Support Ticket", - "help.title": "Centro de ayuda", + "help.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.", "help.workflows_heading": "Workflows & Pipelines", @@ -570,24 +570,24 @@ "index.usage_my_usage": "My usage", "index.usage_today": "Files today", "index.usage_unlimited": "Unlimited", - "integrations.configure": "Configurar", - "integrations.connect": "Conectar", - "integrations.connected": "Conectado", - "integrations.disconnect": "Desconectar", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", "integrations.empty_state": "No integrations configured", "integrations.folder_label": "Folder", "integrations.host_label": "Host", "integrations.imap_settings": "IMAP Settings", - "integrations.not_connected": "No conectado", + "integrations.not_connected": "Not Connected", "integrations.page_title": "Integrations", "integrations.password_label": "Password", "integrations.port_label": "Port", - "integrations.title": "Integraciones", + "integrations.title": "Integrations", "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Idioma cambiado a {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Idioma", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", @@ -619,77 +619,77 @@ "language.tr": "Türkçe", "language.uk": "Українська", "language.zh": "中文", - "nav.about": "Acerca de", + "nav.about": "About", "nav.admin": "Admin", "nav.admin.audit_logs": "Audit Logs", "nav.admin.backups": "Backups", "nav.admin.plans": "Plans", "nav.admin.scheduled_jobs": "Scheduled Jobs", "nav.admin.users": "Users", - "nav.admin_actions": "Acciones de administración", - "nav.admin_menu": "Menú de administración", - "nav.api_docs": "Documentación API", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", "nav.api_tokens": "API Tokens", - "nav.backup_restore": "Copia de seguridad y restauración", - "nav.credentials": "Credenciales", - "nav.dark_mode": "Modo oscuro", - "nav.dashboard": "Panel", - "nav.developer_docs": "Documentación para desarrolladores", - "nav.duplicates": "Duplicados", - "nav.file_manager": "Gestor de archivos", - "nav.files": "Archivos", - "nav.help": "Ayuda", - "nav.help_center": "Centro de ayuda", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", "nav.imap": "Email Import", - "nav.integrations": "Integraciones", - "nav.light_mode": "Modo claro", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", "nav.login": "Log In", "nav.logout": "Log Out", - "nav.main_navigation": "Navegación principal", - "nav.notifications": "Notificaciones", - "nav.open_main_menu": "Abrir menú principal", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", - "nav.plan_designer": "Diseñador de planes", - "nav.pricing": "Precios", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", "nav.profile": "Profile", "nav.queue": "Queue", - "nav.queue_monitor": "Monitor de cola", - "nav.scheduled_jobs": "Tareas programadas", - "nav.search": "Buscar", - "nav.settings": "Configuración", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", "nav.shared_links": "Shared Links", "nav.signup": "Sign Up", - "nav.similarity": "Similitud", - "nav.skip_to_content": "Ir al contenido principal", - "nav.status": "Estado", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", "nav.subscription": "Subscription", - "nav.toggle_dark_mode": "Alternar modo oscuro", - "nav.toggle_nav": "Alternar menú de navegación", - "nav.upload": "Subir", - "nav.users": "Usuarios", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", - "notifications.mark_all_read": "Marcar todo como leído", + "notifications.mark_all_read": "Mark All as Read", "notifications.mark_all_read_btn": "Mark all read", - "notifications.mark_read": "Marcar como leído", - "notifications.no_notifications": "Sin notificaciones", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", "notifications.page_title": "Notifications", "notifications.tab_inbox": "Inbox", "notifications.tab_settings": "Settings", - "notifications.title": "Notificaciones", - "notifications.unread_count": "{count} notificaciones no leídas", + "notifications.title": "Notifications", + "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", "pipelines.add_step_btn": "Add Step", - "pipelines.create": "Crear pipeline", + "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": "Editar pipeline", + "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", @@ -712,7 +712,7 @@ "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", + "pipelines.title": "Processing Pipelines", "queue.active_tasks": "Active Tasks", "queue.auto_refresh_1": "Auto-refreshes every", "queue.auto_refresh_2": "seconds", @@ -762,18 +762,18 @@ "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", + "search.no_results": "No results found", "search.page_title": "Search Documents", - "search.placeholder": "Buscar por nombre, contenido, etiquetas...", + "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", - "search.results_count": "{count} resultados encontrados", + "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": "Buscar documentos", + "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", @@ -797,15 +797,15 @@ "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.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": "Error al guardar la configuración", + "settings.save_error": "Failed to save setting", "settings.save_setting_title": "Save this setting", - "settings.save_success": "Configuración guardada con éxito", + "settings.save_success": "Setting saved successfully", "settings.saving_state": "Saving…", "settings.search_aria_label": "Search settings", "settings.search_clear_aria": "Clear search", @@ -814,7 +814,7 @@ "settings.source_db_badge": "DB", "settings.source_default_badge": "DEFAULT", "settings.source_env_badge": "ENV", - "settings.title": "Configuración", + "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", @@ -903,11 +903,11 @@ "upload.camera_button": "Take Photo / Scan Document", "upload.download_button": "Download and Process", "upload.downloading": "Downloading file from URL...", - "upload.drag_drop": "Arrastre archivos aquí o haga clic para buscar", + "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": "Error al subir", + "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", "upload.file_size_hint": "Maximum size: 500 MB per file", @@ -915,14 +915,14 @@ "upload.filename_description": "Leave empty to use filename from URL", "upload.filename_label": "Filename (optional)", "upload.filename_placeholder": "my-document.pdf", - "upload.max_size": "Tamaño máximo del archivo: {size}", + "upload.max_size": "Maximum file size: {size}", "upload.page_title": "Upload Files", "upload.section_device": "Upload from Device", "upload.section_url": "Upload from URL", - "upload.select_file": "Seleccionar archivo", - "upload.success": "Archivo subido con éxito", - "upload.title": "Subir documento", - "upload.uploading": "Subiendo...", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", "upload.url_label": "File URL", "upload.url_placeholder": "https://example.com/document.pdf" From d0f8e21b41345f3cf363f23f779e7f4da07dc23d Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:42 +0100 Subject: [PATCH 16/71] New translations en.json (Afrikaans) --- frontend/translations/af.json | 929 ++++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/af.json diff --git a/frontend/translations/af.json b/frontend/translations/af.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/af.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From 3abb66659c55976a9b2f21e2398bc722b4be0e29 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:43 +0100 Subject: [PATCH 17/71] New translations en.json (Arabic) --- frontend/translations/ar.json | 929 ++++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/ar.json diff --git a/frontend/translations/ar.json b/frontend/translations/ar.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/ar.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From f78e535cc317f46a872e425116240f134705cd3e Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:44 +0100 Subject: [PATCH 18/71] New translations en.json (Catalan) --- frontend/translations/ca.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/ca.json b/frontend/translations/ca.json index b30f1798..d36160ed 100644 --- a/frontend/translations/ca.json +++ b/frontend/translations/ca.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "L'idioma s'ha canviat a {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Català", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From 1f8a80c1256af9bdf6fa350d5a57763e14bd4af9 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:45 +0100 Subject: [PATCH 19/71] New translations en.json (Czech) --- frontend/translations/cs.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/cs.json b/frontend/translations/cs.json index 6af65b34..d36160ed 100644 --- a/frontend/translations/cs.json +++ b/frontend/translations/cs.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Jazyk byl změněn na {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Čeština", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From 16ffa4264ebcdfde8ae0de396d0ea8fe4f43567a Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:46 +0100 Subject: [PATCH 20/71] New translations en.json (Danish) --- frontend/translations/da.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/da.json b/frontend/translations/da.json index 0dfc33f5..d36160ed 100644 --- a/frontend/translations/da.json +++ b/frontend/translations/da.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Sproget blev ændret til {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Dansk", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From d865c6ac20d300cf0f67d220f805e103d2fae277 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:47 +0100 Subject: [PATCH 21/71] New translations en.json (German) --- frontend/translations/de.json | 924 +++++++++++++++++----------------- 1 file changed, 462 insertions(+), 462 deletions(-) diff --git a/frontend/translations/de.json b/frontend/translations/de.json index 2ec4bfa6..d36160ed 100644 --- a/frontend/translations/de.json +++ b/frontend/translations/de.json @@ -100,30 +100,30 @@ "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.confirm_password": "Confirm Password", "auth.create_account": "Create account", - "auth.display_name_label": "Anzeigename", - "auth.email_label": "E-Mail", - "auth.forgot_password": "Passwort vergessen?", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", "auth.forgot_username": "Forgot username?", - "auth.login": "Anmelden", - "auth.login_title": "Anmelden", + "auth.login": "Log In", + "auth.login_title": "Log In", "auth.logo_alt": "DocuElevate Logo", - "auth.logout": "Abmelden", - "auth.my_account": "Mein Konto", + "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": "Passwort", - "auth.profile": "Profil", - "auth.remember_me": "Angemeldet bleiben", + "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": "Registrieren", - "auth.signup_title": "Registrieren", - "auth.username_label": "Benutzername", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", "auth.username_or_email": "Username or Email", "auth.verify_email_back_sign_in": "Back to sign in", "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", @@ -184,69 +184,69 @@ "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.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", "common.col_pending": "Pending", - "common.completed": "Abgeschlossen", - "common.confirm": "Bestätigen", - "common.copied": "Kopiert!", - "common.copy": "Kopieren", - "common.create": "Erstellen", - "common.created": "Erstellt", - "common.date": "Datum", - "common.delete": "Löschen", - "common.description": "Beschreibung", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", "common.details": "Details", - "common.disabled": "Deaktiviert", - "common.download": "Herunterladen", - "common.duplicate": "Duplikat", - "common.edit": "Bearbeiten", - "common.enabled": "Aktiviert", - "common.error": "Fehler", - "common.failed": "Fehlgeschlagen", - "common.filter": "Filtern", - "common.inactive": "Inaktiv", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", "common.info": "Info", - "common.loading": "Laden...", + "common.loading": "Loading...", "common.name": "Name", - "common.next": "Weiter", + "common.next": "Next", "common.next_page": "Next page", - "common.no": "Nein", - "common.none": "Keine", + "common.no": "No", + "common.none": "None", "common.page": "Page", - "common.pending": "Ausstehend", + "common.pending": "Pending", "common.prev_page": "Previous page", - "common.previous": "Zurück", - "common.processing": "Verarbeitung", - "common.refresh": "Aktualisieren", - "common.reset": "Zurücksetzen", - "common.retry": "Erneut versuchen", - "common.save": "Speichern", - "common.search": "Suche", - "common.select": "Auswählen", + "common.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", "common.select_placeholder": "— select —", - "common.size": "Größe", + "common.size": "Size", "common.status": "Status", - "common.submit": "Absenden", - "common.success": "Erfolg", + "common.submit": "Submit", + "common.success": "Success", "common.tags": "Tags", - "common.type": "Typ", - "common.updated": "Aktualisiert", - "common.upload": "Hochladen", - "common.view": "Ansehen", - "common.warning": "Warnung", - "common.yes": "Ja", - "cookie.accept": "Akzeptieren", - "cookie.learn_more": "Mehr erfahren", - "cookie.message": "Diese Website verwendet Cookies, um Ihr Erlebnis zu verbessern.", - "cookie.notice": "DocuElevate verwendet nur essentielle Sitzungscookies, die für die Authentifizierung und den Servicebetrieb erforderlich sind. Es werden keine Tracking- oder Analyse-Cookies verwendet.", - "cookie.notice_label": "Cookie-Hinweis", - "cookie.policy_link": "Cookie-Richtlinie", - "cookie.privacy_link": "Datenschutzhinweis", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", @@ -270,16 +270,16 @@ "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", - "dashboard.ocr_processed": "OCR verarbeitet", - "dashboard.quick_actions": "Schnellaktionen", - "dashboard.recent_activity": "Letzte Aktivitäten", - "dashboard.storage_targets": "Speicherziele", - "dashboard.title": "Übersicht", - "dashboard.total_files": "Dateien gesamt", - "dashboard.welcome": "Willkommen bei DocuElevate", + "dashboard.active_integrations": "Active Integrations", + "dashboard.files_this_month": "Files This Month", + "dashboard.files_today": "Files Today", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "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", @@ -304,397 +304,397 @@ "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_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", "error.404_title": "404 - Not Found", "error.500_code": "500", "error.500_debug_info": "Show Debug Info", - "error.500_description": "Unsere Server haben ein Problem und brauchen einen Moment.", - "error.500_heading": "Ups! Etwas ist schiefgelaufen.", - "error.500_home": "Zur Startseite", + "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": "Zugriff verweigert", - "error.forbidden_message": "Sie haben keine Berechtigung, auf diese Seite zuzugreifen.", - "error.not_found": "Seite nicht gefunden", - "error.not_found_message": "Die gesuchte Seite existiert nicht.", - "error.server_error": "Interner Serverfehler", - "error.server_error_message": "Etwas ist schiefgelaufen. Bitte versuchen Sie es später erneut.", - "error.unauthorized": "Nicht autorisiert", - "error.unauthorized_message": "Sie müssen sich anmelden, um auf diese Seite zuzugreifen.", - "files.action_delete": "Datei löschen", - "files.action_details": "Details anzeigen", - "files.action_preview": "Schnellvorschau", - "files.bulk_clear_selection": "Auswahl aufheben", - "files.bulk_cloud_ocr": "Cloud-OCR erneut ausführen", - "files.bulk_delete": "Ausgewählte löschen", - "files.bulk_download": "Als ZIP herunterladen", - "files.bulk_reprocess": "Ausgewählte erneut verarbeiten", - "files.delete_modal_cancel": "Abbrechen", - "files.delete_modal_confirm": "Löschen", - "files.delete_modal_message": "Sind Sie sicher, dass Sie diese Datei löschen möchten?", - "files.delete_modal_title": "Löschung bestätigen", - "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", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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": "Dateigröße", - "files.filename": "Dateiname", + "files.file_size": "File Size", + "files.filename": "Filename", "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_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": "Datum bis", + "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-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_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": "Noch nicht bewertet", + "files.filter_ocr_unchecked": "Not yet assessed", "files.filter_search_label": "Search Filename", - "files.filter_search_placeholder": "Dateinamen eingeben...", - "files.filter_storage_provider": "Speicheranbieter", + "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": "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.filter_tags_placeholder": "e.g. invoice,amazon", + "files.fulltext_search_label": "Full-Text Search (OCR text, metadata, tags)", + "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": "Erste", - "files.pagination_last": "Letzte", + "files.pagination_first": "First", + "files.pagination_last": "Last", "files.pagination_nav_aria": "File list pagination", - "files.pagination_next": "Nächste", + "files.pagination_next": "Next", "files.pagination_of": "of", - "files.pagination_previous": "Vorherige", + "files.pagination_previous": "Previous", "files.pagination_showing": "Showing", - "files.preview_modal_close": "Vorschau schließen", - "files.preview_modal_title": "Vorschau", + "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": "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.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": "Keine Ergebnisse gefunden.", - "files.search_results_title": "Suchergebnisse", + "files.search_results_empty": "No results found.", + "files.search_results_title": "Search Results", "files.status_duplicate": "Duplicate", - "files.table_actions": "Aktionen", + "files.table_actions": "Actions", "files.table_aria": "File records", - "files.table_created_at": "Erstellt am", - "files.table_empty": "Keine Dateien gefunden", + "files.table_created_at": "Created At", + "files.table_empty": "No files found", "files.table_id": "ID", - "files.table_mime_type": "MIME-Typ", - "files.table_original_filename": "Originaler Dateiname", - "files.table_select_all": "Alle Dateien auf dieser Seite auswählen", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "files.table_select_all": "Select all files on this page", "files.tags": "Tags", - "files.title": "Dateien", + "files.title": "Files", "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", - "footer.attribution": "Namensnennung", - "footer.attributions": "Quellenangaben", - "footer.cookies": "Cookie-Richtlinie", - "footer.copyright": "© {year} DocuElevate", - "footer.imprint": "Impressum", - "footer.license": "Lizenz", - "footer.navigation": "Fußzeilennavigation", - "footer.privacy": "Datenschutz", - "footer.terms": "Nutzungsbedingungen", - "footer.version": "Version", + "files.upload_modal_header": "Uploading Files", + "files.uploaded": "Uploaded", + "footer.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", "help.destinations_dropbox": "Dropbox", - "help.destinations_dropbox_desc": "OAuth-verknüpft. Dateien landen in Ihrem gewählten Ordner.", - "help.destinations_email": "E-Mail-Weiterleitung", - "help.destinations_email_desc": "Verarbeitete Dateien als SMTP-Anhänge gesendet.", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", "help.destinations_google_drive": "Google Drive", - "help.destinations_google_drive_desc": "Dienstkonto oder OAuth. Unterstützt geteilte Laufwerke.", - "help.destinations_heading": "Ziele – Wohin die Dokumente gehen", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", "help.destinations_nextcloud": "Nextcloud / WebDAV", - "help.destinations_nextcloud_desc": "Selbstgehosteter Cloud-Speicher über WebDAV.", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", "help.destinations_onedrive": "OneDrive", - "help.destinations_onedrive_desc": "Microsoft Graph API-Integration.", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", "help.destinations_paperless": "Paperless-ngx", - "help.destinations_paperless_desc": "Dokumente direkt in Paperless zur Archivierung übertragen.", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", "help.destinations_s3": "Amazon S3", - "help.destinations_s3_desc": "Jeder S3-kompatible Bucket (AWS, MinIO, Wasabi).", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", "help.destinations_sftp": "SFTP / FTP", - "help.destinations_sftp_desc": "Sichere Dateiübertragung auf beliebige Server.", + "help.destinations_sftp_desc": "Secure file transfer to any server.", "help.destinations_webhook": "Webhook", - "help.destinations_webhook_desc": "Metadaten per POST an einen externen Endpunkt senden.", - "help.documentation": "Dokumentation", - "help.faq": "Häufig gestellte Fragen", - "help.faq_1_a": "Navigieren Sie zur Upload-Seite, ziehen Sie Ihre Dateien per Drag-and-Drop oder klicken Sie auf Datei auswählen. DocuElevate konvertiert Bilder und Office-Dokumente in PDF, führt OCR durch und extrahiert Metadaten automatisch.", - "help.faq_1_q": "Wie lade ich Dokumente hoch?", - "help.faq_2_a": "PDF, JPEG, PNG, TIFF, BMP, GIF, DOCX, XLSX, PPTX, ODT, ODS, TXT, RTF und HTML. Nicht-PDF-Dateien werden vor der Verarbeitung automatisch in PDF konvertiert.", - "help.faq_2_q": "Welche Dateiformate werden unterstützt?", - "help.faq_3_a": "Ja. Gehen Sie zu E-Mail-Import, fügen Sie ein IMAP-Konto hinzu, und DocuElevate prüft auf neue Nachrichten und verarbeitet Anhänge automatisch.", - "help.faq_3_q": "Kann ich Dokumente per E-Mail importieren?", - "help.faq_4_a": "Pipelines ermöglichen es Ihnen, Verarbeitungsschritte zu verketten – OCR, KI-Extraktion, Formatkonvertierung – und das Ergebnis an ein oder mehrere Ziele weiterzuleiten. Erstellen und verwalten Sie diese auf der Pipelines-Seite.", - "help.faq_4_q": "Wie funktionieren Verarbeitungs-Pipelines?", - "help.faq_5_a": "DocuElevate verschlüsselt Anmeldedaten im Ruhezustand, kommuniziert über TLS und speichert Ihre Dokumente nie länger als nötig. Weitere Details finden Sie in der Datenschutzerklärung.", - "help.faq_5_q": "Sind meine Daten sicher?", - "help.faq_heading": "Häufig gestellte Fragen", - "help.getting_started": "Erste Schritte", - "help.heading": "Hilfezentrum", - "help.page_title": "Hilfezentrum", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "help.getting_started": "Getting Started", + "help.heading": "Help Center", + "help.page_title": "Help Center", "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.", - "help.quickstart_upload": "Dokumente hochladen", - "help.quickstart_upload_desc": "Ziehen Sie Dateien auf die Upload-Seite oder klicken Sie auf Datei auswählen. DocuElevate konvertiert Bilder und Office-Dokumente in PDF, führt OCR durch und extrahiert Metadaten automatisch.", - "help.quickstart_workflows": "Arbeitsabläufe automatisieren", - "help.quickstart_workflows_desc": "Erstellen Sie Pipelines, um mehrstufige Verarbeitungs- und Weiterleitungsregeln zu definieren. Kombinieren Sie OCR, KI-Extraktion, Formatkonvertierung und Zustellung in einem einzigen Ablauf.", - "help.sources_email_ingestion": "E-Mail-Import (IMAP)", - "help.sources_email_ingestion_desc": "Leiten Sie Dokumente an ein dediziertes Postfach weiter. Unter E-Mail-Import fügen Sie ein oder mehrere IMAP-Konten hinzu. DocuElevate prüft auf neue Nachrichten und verarbeitet Anhänge automatisch.", - "help.sources_heading": "Quellen – Dokumente einbringen", - "help.sources_rest_api": "REST-API", - "help.sources_rest_api_desc": "Integrieren Sie programmgesteuert, indem Sie Dateien an /api/upload senden. Ideal für Skripte, überwachte Ordner, Scanner oder Drittanbieter-Tools wie Zapier und n8n.", - "help.sources_scanner": "Scanner & Mobil", - "help.sources_scanner_desc": "Richten Sie Netzwerkscanner auf den Upload-Endpunkt von DocuElevate oder verwenden Sie eine mobile Scan-App, die benutzerdefinierte HTTP-Ziele unterstützt.", - "help.sources_web_upload": "Web-Upload", - "help.sources_web_upload_desc": "Der schnellste Weg, um loszulegen. Öffnen Sie die Upload-Seite, legen Sie eine oder mehrere Dateien ab, und DocuElevate kümmert sich um den Rest. Unterstützte Formate sind PDF, JPEG, PNG, TIFF, DOCX, XLSX und mehr.", - "help.subheading": "Alles, was Sie brauchen, um DocuElevate optimal zu nutzen. Durchsuchen Sie die Themen unten oder suchen Sie nach dem, was Sie brauchen.", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", "help.support": "Support", - "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_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", "help.support_ticket_button": "Submit a Ticket", "help.support_ticket_heading": "Open a Support Ticket", - "help.title": "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.", - "help.workflows_heading": "Arbeitsabläufe & Pipelines", - "help.workflows_step_1": "In PDF konvertieren", - "help.workflows_step_1_create": "Gehen Sie im Hauptmenü zu Pipelines.", - "help.workflows_step_2": "OCR – Text extrahieren", - "help.workflows_step_2_create": "Klicken Sie auf Neue Pipeline und geben Sie ihr einen Namen.", - "help.workflows_step_3": "KI-Metadatenextraktion", - "help.workflows_step_3_create": "Fügen Sie die benötigten Verarbeitungsschritte hinzu.", - "help.workflows_step_4": "An ein oder mehrere Ziele liefern", - "help.workflows_step_4_create": "Wählen Sie ein oder mehrere Zustellungsziele.", - "help.workflows_step_5_create": "Speichern – neue Dokumente werden automatisch durch diese Pipeline verarbeitet.", - "help.workflows_typical_steps": "Typische Schritte", - "help.workflows_what_is": "Was ist eine Pipeline?", - "index.badge_intelligent": "Intelligente Dokumentenverarbeitung", + "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.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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-Speicher: Dropbox, OneDrive, Google Drive, NextCloud", - "index.capabilities_ingestion": "E-Mail- & URL-basierte Dokumentenaufnahme", - "index.capabilities_ocr": "OCR & Metadatenextraktion mit KI", - "index.capabilities_paperless": "Paperless-ngx-Integration für Dokumentenverwaltung", - "index.capabilities_title": "Funktionen", - "index.capabilities_workflows": "Automatisierte Klassifizierung & Routing-Workflows", - "index.cta_description": "Schließen Sie sich Teams an, die ihre Dokumentenverarbeitung bereits mit DocuElevate automatisieren.", - "index.cta_heading": "Bereit, Ihren Dokumenten-Workflow zu verbessern?", - "index.cta_pricing": "Preise ansehen", - "index.cta_signup": "Kostenloses Konto erstellen", - "index.dashboard_subtitle": "Intelligente Dokumentenverarbeitung & -verwaltung", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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": "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", - "index.feature_cloud_desc": "Leiten Sie verarbeitete Dateien an Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP und mehr weiter.", - "index.feature_email": "E-Mail- & IMAP-Import", - "index.feature_email_desc": "Ziehen Sie Dokumente automatisch aus Gmail oder jedem IMAP-Postfach – keine manuellen Uploads nötig.", - "index.feature_ocr": "OCR & Texterkennung", - "index.feature_ocr_desc": "Azure Document Intelligence konvertiert gescannte PDFs und Bilder automatisch in vollständig durchsuchbaren Text.", - "index.feature_pipelines": "Benutzerdefinierte Pipelines", - "index.feature_pipelines_desc": "Erstellen Sie Verarbeitungs-Pipelines mit konfigurierbaren Schritten – OCR, KI-Extraktion, Formatkonvertierung und Speicher-Routing in beliebiger Reihenfolge.", - "index.feature_search": "Volltextsuche", - "index.feature_search_desc": "Finden Sie sofort jedes Dokument nach Inhalt, Metadaten oder Tags in Ihrem gesamten Archiv.", - "index.feature_section_title": "Alles, was Sie für intelligente Dokumenten-Workflows brauchen", - "index.getting_started": "Erste Schritte", - "index.getting_started_1": "Integrationen über Systemstatus konfigurieren", - "index.getting_started_2": "Erstes Dokument hochladen", - "index.getting_started_3": "Ergebnisse in Dateien überprüfen", - "index.getting_started_learn": "Mehr über DocuElevate erfahren", - "index.hero_description": "DocuElevate nimmt Ihre Dokumente auf, führt OCR durch, extrahiert Metadaten mit KI und leitet Dateien an Dropbox, Google Drive, OneDrive, S3, Nextcloud und mehr weiter – alles in einer nahtlosen Pipeline.", - "index.hero_heading": "Vom Hochladen zur Erkenntnis – automatisch.", - "index.hero_login": "Anmelden", - "index.hero_pricing": "Tarife & Preise ansehen", - "index.hero_signup": "Kostenlos starten", - "index.integrations_active": "Aktive Integrationen", - "index.integrations_storage": "Speicherziele", - "index.integrations_title": "Integrationen", - "index.integrations_view_status": "Systemstatus anzeigen", - "index.page_title_dashboard": "Übersicht", - "index.page_title_public": "Intelligente Dokumentenverarbeitung", - "index.platform_overview": "Plattformübersicht", - "index.quick_actions": "Schnellaktionen", - "index.quick_documents": "Meine Dokumente", - "index.quick_documents_desc": "Ihre verarbeiteten Dateien durchsuchen", - "index.quick_search": "Suche", - "index.quick_search_desc": "Volltextsuche über Dokumente", - "index.quick_subscription": "Mein Abonnement", - "index.quick_subscription_desc": "Tarif & Nutzungsdetails anzeigen", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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": "Dokument hochladen", - "index.quick_upload_desc": "Eine neue Datei verarbeiten", + "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": "Intelligente Dokumentenverarbeitung & -verwaltung", + "index.single_user_subtitle": "Intelligent document processing & management", "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_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": "Dateien gesamt", - "index.tier_plan": "Tarif", + "index.stat_total_files": "Total files", + "index.tier_plan": "Plan", "index.tier_upgrade": "Upgrade", - "index.tier_view_details": "Alle Details ansehen", - "index.upgrade_daily_limits": "Höhere tägliche & monatliche Limits", - "index.upgrade_description": "Mehr Dokumente, mehr Ziele und Prioritäts-Support freischalten.", - "index.upgrade_destinations": "Mehr Speicherziele", - "index.upgrade_ocr_pages": "Mehr OCR-Seiten", - "index.upgrade_plan": "Tarif upgraden", - "index.upgrade_view_pricing": "Tarife & Preise ansehen", - "index.usage_lifetime": "Dateien gesamt", - "index.usage_month": "Dateien diesen Monat", - "index.usage_my_usage": "Meine Nutzung", - "index.usage_today": "Dateien heute", - "index.usage_unlimited": "Unbegrenzt", - "integrations.configure": "Konfigurieren", - "integrations.connect": "Verbinden", - "integrations.connected": "Verbunden", - "integrations.disconnect": "Trennen", - "integrations.empty_state": "Keine Integrationen konfiguriert", - "integrations.folder_label": "Ordner", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", "integrations.host_label": "Host", - "integrations.imap_settings": "IMAP-Einstellungen", - "integrations.not_connected": "Nicht verbunden", - "integrations.page_title": "Integrationen", - "integrations.password_label": "Passwort", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", "integrations.port_label": "Port", - "integrations.title": "Integrationen", - "integrations.username_label": "Benutzername", + "integrations.title": "Integrations", + "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", - "language.change_success": "Sprache geändert zu {language}", - "language.changed": "Sprache geändert zu {language}", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", "language.el": "Ελληνικά", - "language.en": "Englisch", - "language.es": "Spanisch", + "language.en": "English", + "language.es": "Español", "language.et": "Eesti", "language.fi": "Suomi", - "language.fr": "Französisch", + "language.fr": "Français", "language.ga": "Gaeilge", "language.hr": "Hrvatski", "language.hu": "Magyar", "language.is": "Íslenska", - "language.it": "Italienisch", + "language.it": "Italiano", "language.lb": "Lëtzebuergesch", "language.lt": "Lietuvių", "language.lv": "Latviešu", "language.nb": "Norsk", - "language.nl": "Niederländisch", - "language.pl": "Polnisch", - "language.pt": "Portugiesisch", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", "language.ro": "Română", - "language.ru": "Russisch", - "language.selector": "Sprache", - "language.selector_label": "Sprache wählen", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", "language.tr": "Türkçe", "language.uk": "Українська", - "language.zh": "Chinesisch", - "nav.about": "Über uns", - "nav.admin": "Administration", - "nav.admin.audit_logs": "Prüfprotokolle", - "nav.admin.backups": "Sicherungen", - "nav.admin.plans": "Tarife", - "nav.admin.scheduled_jobs": "Geplante Aufgaben", - "nav.admin.users": "Benutzer", - "nav.admin_actions": "Admin-Aktionen", - "nav.admin_menu": "Admin-Menü", - "nav.api_docs": "API-Dokumentation", - "nav.api_tokens": "API-Token", - "nav.backup_restore": "Sicherung & Wiederherstellung", - "nav.credentials": "Zugangsdaten", - "nav.dark_mode": "Dunkelmodus", - "nav.dashboard": "Übersicht", - "nav.developer_docs": "Entwicklerdokumentation", - "nav.duplicates": "Duplikate", - "nav.file_manager": "Dateimanager", - "nav.files": "Dateien", - "nav.help": "Hilfe", - "nav.help_center": "Hilfecenter", - "nav.imap": "E-Mail-Import", - "nav.integrations": "Integrationen", - "nav.light_mode": "Hellmodus", - "nav.login": "Anmelden", - "nav.logout": "Abmelden", - "nav.main_navigation": "Hauptnavigation", - "nav.notifications": "Benachrichtigungen", - "nav.open_main_menu": "Hauptmenü öffnen", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", - "nav.plan_designer": "Plan-Designer", - "nav.pricing": "Preise", - "nav.profile": "Profil", - "nav.queue": "Warteschlange", - "nav.queue_monitor": "Warteschlangen-Monitor", - "nav.scheduled_jobs": "Geplante Aufgaben", - "nav.search": "Suche", - "nav.settings": "Einstellungen", - "nav.shared_links": "Geteilte Links", - "nav.signup": "Registrieren", - "nav.similarity": "Ähnlichkeit", - "nav.skip_to_content": "Zum Hauptinhalt springen", - "nav.status": "Systemstatus", - "nav.subscription": "Abonnement", - "nav.toggle_dark_mode": "Dunkelmodus umschalten", - "nav.toggle_nav": "Navigationsmenü umschalten", - "nav.upload": "Hochladen", - "nav.users": "Benutzer", - "nav.version": "Versionsinformationen", - "notifications.filter_all": "Alle", - "notifications.filter_read": "Nur gelesene", - "notifications.filter_unread": "Nur ungelesene", - "notifications.manage_desc": "Verwalten Sie Ihren Posteingang, Ziele und Ereignispräferenzen", - "notifications.mark_all_read": "Alle als gelesen markieren", - "notifications.mark_all_read_btn": "Alle als gelesen markieren", - "notifications.mark_read": "Als gelesen markieren", - "notifications.no_notifications": "Keine Benachrichtigungen", - "notifications.page_title": "Benachrichtigungen", - "notifications.tab_inbox": "Posteingang", - "notifications.tab_settings": "Einstellungen", - "notifications.title": "Benachrichtigungen", - "notifications.unread_count": "{count} ungelesene Benachrichtigungen", - "pipelines.active_label": "Aktiv", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "notifications.title": "Notifications", + "notifications.unread_count": "{count} unread notifications", + "pipelines.active_label": "Active", "pipelines.add_step_btn": "Add Step", - "pipelines.create": "Pipeline erstellen", + "pipelines.create": "Create Pipeline", "pipelines.custom_label_label": "Custom Label", - "pipelines.default_label": "Standard", - "pipelines.description_label": "Beschreibung", + "pipelines.default_label": "Default", + "pipelines.description_label": "Description", "pipelines.description_placeholder": "Optional description", - "pipelines.disabled_label": "Deaktiviert", - "pipelines.edit": "Pipeline bearbeiten", - "pipelines.empty_state": "Noch keine Pipelines", + "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": "Aktiviert", + "pipelines.enabled_label": "Enabled", "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", - "pipelines.inactive_label": "Inaktiv", + "pipelines.inactive_label": "Inactive", "pipelines.loading": "Loading pipelines…", "pipelines.name_placeholder": "My pipeline", "pipelines.new_pipeline_btn": "New Pipeline", @@ -703,8 +703,8 @@ "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.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.", @@ -712,7 +712,7 @@ "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", + "pipelines.title": "Processing Pipelines", "queue.active_tasks": "Active Tasks", "queue.auto_refresh_1": "Auto-refreshes every", "queue.auto_refresh_2": "seconds", @@ -738,42 +738,42 @@ "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.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": "Filter zurücksetzen", - "search.filter_date_from": "Datum von", - "search.filter_date_to": "Datum bis", - "search.filter_document_type": "Dokumenttyp", - "search.filter_document_type_placeholder": "z.B. Rechnung", - "search.filter_language": "Sprache", - "search.filter_language_placeholder": "z.B. de", - "search.filter_sender": "Absender", - "search.filter_sender_placeholder": "z.B. ACME GmbH", + "search.filter_clear_button": "Clear Filters", + "search.filter_date_from": "Date From", + "search.filter_date_to": "Date To", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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": "z.B. Amazon", - "search.filter_text_quality": "Textqualität", - "search.filter_text_quality_all": "Alle", - "search.filter_text_quality_high": "Hoch", - "search.filter_text_quality_low": "Niedrig", - "search.filter_text_quality_medium": "Mittel", - "search.filter_text_quality_no_text": "Kein Text", - "search.heading": "Dokumentensuche", + "search.filter_tags_placeholder": "e.g. amazon", + "search.filter_text_quality": "Text Quality", + "search.filter_text_quality_all": "All", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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": "Dokumente nach Inhalt, Absender, Tags, Typ suchen...", - "search.loading_indicator": "Suche läuft…", - "search.no_results": "Keine Ergebnisse gefunden", - "search.page_title": "Dokumente suchen", - "search.placeholder": "Nach Dateiname, Inhalt, Tags suchen...", - "search.result_empty": "Keine Dokumente gefunden, die Ihrer Suche entsprechen.", - "search.results_count": "{count} Ergebnisse gefunden", + "search.input_placeholder": "Search documents by content, sender, tags, type...", + "search.loading_indicator": "Searching…", + "search.no_results": "No results found", + "search.page_title": "Search Documents", + "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": "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", + "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", @@ -797,15 +797,15 @@ "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.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": "Einstellung konnte nicht gespeichert werden", + "settings.save_error": "Failed to save setting", "settings.save_setting_title": "Save this setting", - "settings.save_success": "Einstellung erfolgreich gespeichert", + "settings.save_success": "Setting saved successfully", "settings.saving_state": "Saving…", "settings.search_aria_label": "Search settings", "settings.search_clear_aria": "Clear search", @@ -814,7 +814,7 @@ "settings.source_db_badge": "DB", "settings.source_default_badge": "DEFAULT", "settings.source_env_badge": "ENV", - "settings.title": "Einstellungen", + "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", @@ -890,40 +890,40 @@ "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", - "status.git_commit": "Git-Commit", - "status.last_check": "Letzte Prüfung", - "status.page_title": "Systemstatus", - "status.setting_label": "Einstellung", - "status.value_label": "Wert", - "upload.browse_button": "Dateien durchsuchen", - "upload.button_processing": "Verarbeitung...", - "upload.camera_button": "Foto aufnehmen / Dokument scannen", - "upload.download_button": "Herunterladen und verarbeiten", - "upload.downloading": "Datei wird von URL heruntergeladen...", - "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.", + "status.app_version": "App Version", + "status.build_date": "Build Date", + "status.container_id": "Container ID", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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 fehlgeschlagen", - "upload.error_invalid_url": "Ungültiges URL-Format", - "upload.error_url_required": "Bitte geben Sie eine URL ein", - "upload.file_size_hint": "Maximale Größe: 500 MB pro Datei", - "upload.file_types": "Erlaubte Typen: PDF, Office-Dokumente (Word, Excel, PowerPoint usw.), Bilder", - "upload.filename_description": "Leer lassen, um den Dateinamen aus der URL zu verwenden", - "upload.filename_label": "Dateiname (optional)", - "upload.filename_placeholder": "mein-dokument.pdf", - "upload.max_size": "Maximale Dateigröße: {size}", - "upload.page_title": "Dateien hochladen", - "upload.section_device": "Vom Gerät hochladen", - "upload.section_url": "Von URL hochladen", - "upload.select_file": "Datei auswählen", - "upload.success": "Datei erfolgreich hochgeladen", - "upload.title": "Dokument hochladen", - "upload.uploading": "Wird hochgeladen...", - "upload.url_description": "Geben Sie einen direkten Link zu einer Datei ein (PDF, Office-Dokumente oder Bilder)", - "upload.url_label": "Datei-URL", - "upload.url_placeholder": "https://beispiel.de/dokument.pdf" + "upload.error": "Upload failed", + "upload.error_invalid_url": "Invalid URL format", + "upload.error_url_required": "Please enter a URL", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" } From 34e367cb151fe3a7b6e93baa73fe60b7a3546cda Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:48 +0100 Subject: [PATCH 22/71] New translations en.json (Greek) --- frontend/translations/el.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/el.json b/frontend/translations/el.json index db39f8a6..d36160ed 100644 --- a/frontend/translations/el.json +++ b/frontend/translations/el.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Η γλώσσα άλλαξε σε {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Ελληνικά", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From a399641508b00c3ce68441ea276bea49ec9f0932 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:49 +0100 Subject: [PATCH 23/71] New translations en.json (Frisian) --- frontend/translations/fy.json | 929 ++++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/fy.json diff --git a/frontend/translations/fy.json b/frontend/translations/fy.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/fy.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From 2c506da3498f6c7bc29cba995987475a33e48bbe Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:51 +0100 Subject: [PATCH 24/71] New translations en.json (Finnish) --- frontend/translations/fi.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/fi.json b/frontend/translations/fi.json index edc89326..d36160ed 100644 --- a/frontend/translations/fi.json +++ b/frontend/translations/fi.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Kieli vaihdettiin kieleen {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Suomi", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From c2982b8696b3b4720e53ec0512ef337c7a4fe8f6 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:52 +0100 Subject: [PATCH 25/71] New translations en.json (Irish) --- frontend/translations/ga.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/ga.json b/frontend/translations/ga.json index 567ae3f4..d36160ed 100644 --- a/frontend/translations/ga.json +++ b/frontend/translations/ga.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Athraíodh an teanga go {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Gaeilge", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From bf26c050363de90f8f5888509e3a10c5c6e61e04 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:53 +0100 Subject: [PATCH 26/71] New translations en.json (Hebrew) --- frontend/translations/he.json | 929 ++++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/he.json diff --git a/frontend/translations/he.json b/frontend/translations/he.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/he.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From f8c52706810311dcf224b86d3feba0d2c5016faa Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:54 +0100 Subject: [PATCH 27/71] New translations en.json (Hungarian) --- frontend/translations/hu.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/hu.json b/frontend/translations/hu.json index 839d3ae4..d36160ed 100644 --- a/frontend/translations/hu.json +++ b/frontend/translations/hu.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "A nyelv megváltozott erre: {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Magyar", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From 5b471a606c7d96a883498dfd49ae32f0763851a7 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:55 +0100 Subject: [PATCH 28/71] New translations en.json (Italian) --- frontend/translations/it.json | 316 +++++++++++++++++----------------- 1 file changed, 158 insertions(+), 158 deletions(-) diff --git a/frontend/translations/it.json b/frontend/translations/it.json index 673ec619..d36160ed 100644 --- a/frontend/translations/it.json +++ b/frontend/translations/it.json @@ -106,22 +106,22 @@ "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", "auth.forgot_username": "Forgot username?", - "auth.login": "Accedi", + "auth.login": "Log In", "auth.login_title": "Log In", "auth.logo_alt": "DocuElevate Logo", - "auth.logout": "Esci", - "auth.my_account": "Il mio account", + "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": "Profilo", + "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": "Registrati", + "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", "auth.username_or_email": "Username or Email", @@ -184,69 +184,69 @@ "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.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", "common.col_pending": "Pending", - "common.completed": "Completato", - "common.confirm": "Conferma", - "common.copied": "Copiato!", - "common.copy": "Copia", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", "common.create": "Create", - "common.created": "Creato", - "common.date": "Data", - "common.delete": "Elimina", - "common.description": "Descrizione", - "common.details": "Dettagli", - "common.disabled": "Disabilitato", - "common.download": "Scarica", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", "common.duplicate": "Duplicate", - "common.edit": "Modifica", - "common.enabled": "Abilitato", - "common.error": "Errore", - "common.failed": "Fallito", - "common.filter": "Filtra", - "common.inactive": "Inattivo", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", "common.info": "Info", - "common.loading": "Caricamento...", - "common.name": "Nome", - "common.next": "Avanti", + "common.loading": "Loading...", + "common.name": "Name", + "common.next": "Next", "common.next_page": "Next page", "common.no": "No", - "common.none": "Nessuno", + "common.none": "None", "common.page": "Page", - "common.pending": "In attesa", + "common.pending": "Pending", "common.prev_page": "Previous page", "common.previous": "Previous", - "common.processing": "In elaborazione", - "common.refresh": "Aggiorna", - "common.reset": "Reimposta", - "common.retry": "Riprova", - "common.save": "Salva", - "common.search": "Cerca", - "common.select": "Seleziona", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", "common.select_placeholder": "— select —", - "common.size": "Dimensione", - "common.status": "Stato", + "common.size": "Size", + "common.status": "Status", "common.submit": "Submit", - "common.success": "Successo", + "common.success": "Success", "common.tags": "Tags", - "common.type": "Tipo", - "common.updated": "Aggiornato", - "common.upload": "Carica", - "common.view": "Visualizza", - "common.warning": "Avviso", - "common.yes": "Sì", - "cookie.accept": "Ho capito", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", "cookie.learn_more": "Learn more", "cookie.message": "This website uses cookies to improve your experience.", - "cookie.notice": "DocuElevate utilizza solo cookie di sessione essenziali necessari per l'autenticazione e il funzionamento del servizio. Non vengono utilizzati cookie di tracciamento o analisi.", - "cookie.notice_label": "Avviso sui cookie", - "cookie.policy_link": "Politica sui cookie", - "cookie.privacy_link": "Informativa sulla privacy", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", @@ -270,16 +270,16 @@ "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", - "dashboard.ocr_processed": "OCR elaborati", - "dashboard.quick_actions": "Azioni rapide", - "dashboard.recent_activity": "Attività recente", - "dashboard.storage_targets": "Destinazioni di archiviazione", - "dashboard.title": "Cruscotto", - "dashboard.total_files": "File totali", - "dashboard.welcome": "Benvenuto su DocuElevate", + "dashboard.active_integrations": "Active Integrations", + "dashboard.files_this_month": "Files This Month", + "dashboard.files_today": "Files Today", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "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", @@ -317,14 +317,14 @@ "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", - "error.not_found_message": "La pagina che stai cercando non esiste.", - "error.server_error": "Errore interno del server", - "error.server_error_message": "Qualcosa è andato storto. Riprova più tardi.", - "error.unauthorized": "Non autorizzato", - "error.unauthorized_message": "Devi accedere per visualizzare questa pagina.", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", "files.action_delete": "Delete file", "files.action_details": "View details", "files.action_preview": "Quick preview", @@ -337,12 +337,12 @@ "files.delete_modal_confirm": "Delete", "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", - "files.document_title": "Titolo del documento", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", "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.file_size": "File Size", + "files.filename": "Filename", "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", @@ -366,10 +366,10 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", - "files.no_files": "Nessun file trovato", - "files.ocr_status": "Stato OCR", + "files.no_files": "No files found", + "files.ocr_status": "OCR Status", "files.page_title": "File Records", "files.pagination_files": "files", "files.pagination_first": "First", @@ -399,23 +399,23 @@ "files.table_mime_type": "MIME Type", "files.table_original_filename": "Original Filename", "files.table_select_all": "Select all files on this page", - "files.tags": "Tag", - "files.title": "File", + "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": "Caricato", + "files.uploaded": "Uploaded", "footer.about": "About", "footer.attribution": "Attribution", - "footer.attributions": "Attribuzioni", - "footer.cookies": "Cookie", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", - "footer.imprint": "Note legali", - "footer.license": "Licenza", - "footer.navigation": "Navigazione a piè di pagina", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", "footer.privacy": "Privacy", - "footer.terms": "Termini", - "footer.version": "Versione {version}", + "footer.terms": "Terms", + "footer.version": "Version {version}", "help.destinations_dropbox": "Dropbox", "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", "help.destinations_email": "Email Forwarding", @@ -435,8 +435,8 @@ "help.destinations_sftp_desc": "Secure file transfer to any server.", "help.destinations_webhook": "Webhook", "help.destinations_webhook_desc": "POST metadata to any external endpoint.", - "help.documentation": "Documentazione", - "help.faq": "Domande frequenti", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", "help.faq_1_q": "How do I upload documents?", "help.faq_2_a": "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.", @@ -448,7 +448,7 @@ "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", "help.faq_5_q": "Is my data secure?", "help.faq_heading": "Frequently Asked Questions", - "help.getting_started": "Per iniziare", + "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", "help.privacy_notice": "Privacy Notice", @@ -469,13 +469,13 @@ "help.sources_web_upload": "Web Upload", "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", - "help.support": "Supporto", + "help.support": "Support", "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", "help.support_ticket_button": "Submit a Ticket", "help.support_ticket_heading": "Open a Support Ticket", - "help.title": "Centro assistenza", + "help.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.", "help.workflows_heading": "Workflows & Pipelines", @@ -570,24 +570,24 @@ "index.usage_my_usage": "My usage", "index.usage_today": "Files today", "index.usage_unlimited": "Unlimited", - "integrations.configure": "Configura", - "integrations.connect": "Connetti", - "integrations.connected": "Connesso", - "integrations.disconnect": "Disconnetti", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", "integrations.empty_state": "No integrations configured", "integrations.folder_label": "Folder", "integrations.host_label": "Host", "integrations.imap_settings": "IMAP Settings", - "integrations.not_connected": "Non connesso", + "integrations.not_connected": "Not Connected", "integrations.page_title": "Integrations", "integrations.password_label": "Password", "integrations.port_label": "Port", - "integrations.title": "Integrazioni", + "integrations.title": "Integrations", "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Lingua cambiata in {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Lingua", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", @@ -619,77 +619,77 @@ "language.tr": "Türkçe", "language.uk": "Українська", "language.zh": "中文", - "nav.about": "Informazioni", + "nav.about": "About", "nav.admin": "Admin", "nav.admin.audit_logs": "Audit Logs", "nav.admin.backups": "Backups", "nav.admin.plans": "Plans", "nav.admin.scheduled_jobs": "Scheduled Jobs", "nav.admin.users": "Users", - "nav.admin_actions": "Azioni admin", - "nav.admin_menu": "Menu admin", - "nav.api_docs": "Documentazione API", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", "nav.api_tokens": "API Tokens", - "nav.backup_restore": "Backup e ripristino", - "nav.credentials": "Credenziali", - "nav.dark_mode": "Modalità scura", - "nav.dashboard": "Cruscotto", - "nav.developer_docs": "Documentazione sviluppatore", - "nav.duplicates": "Duplicati", - "nav.file_manager": "Gestore file", - "nav.files": "File", - "nav.help": "Aiuto", - "nav.help_center": "Centro assistenza", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", "nav.imap": "Email Import", - "nav.integrations": "Integrazioni", - "nav.light_mode": "Modalità chiara", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", "nav.login": "Log In", "nav.logout": "Log Out", - "nav.main_navigation": "Navigazione principale", - "nav.notifications": "Notifiche", - "nav.open_main_menu": "Apri menu principale", - "nav.pipelines": "Pipeline", - "nav.plan_designer": "Designer dei piani", - "nav.pricing": "Prezzi", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", "nav.profile": "Profile", "nav.queue": "Queue", - "nav.queue_monitor": "Monitor coda", - "nav.scheduled_jobs": "Attività pianificate", - "nav.search": "Cerca", - "nav.settings": "Impostazioni", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", "nav.shared_links": "Shared Links", "nav.signup": "Sign Up", - "nav.similarity": "Similarità", - "nav.skip_to_content": "Vai al contenuto principale", - "nav.status": "Stato", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", "nav.subscription": "Subscription", - "nav.toggle_dark_mode": "Attiva/disattiva modalità scura", - "nav.toggle_nav": "Attiva/disattiva menu di navigazione", - "nav.upload": "Carica", - "nav.users": "Utenti", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", - "notifications.mark_all_read": "Segna tutto come letto", + "notifications.mark_all_read": "Mark All as Read", "notifications.mark_all_read_btn": "Mark all read", - "notifications.mark_read": "Segna come letto", - "notifications.no_notifications": "Nessuna notifica", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", "notifications.page_title": "Notifications", "notifications.tab_inbox": "Inbox", "notifications.tab_settings": "Settings", - "notifications.title": "Notifiche", - "notifications.unread_count": "{count} notifiche non lette", + "notifications.title": "Notifications", + "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", "pipelines.add_step_btn": "Add Step", - "pipelines.create": "Crea pipeline", + "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": "Modifica pipeline", + "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", @@ -712,7 +712,7 @@ "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", + "pipelines.title": "Processing Pipelines", "queue.active_tasks": "Active Tasks", "queue.auto_refresh_1": "Auto-refreshes every", "queue.auto_refresh_2": "seconds", @@ -762,18 +762,18 @@ "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", + "search.no_results": "No results found", "search.page_title": "Search Documents", - "search.placeholder": "Cerca per nome, contenuto, tag...", + "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", - "search.results_count": "{count} risultati trovati", + "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": "Cerca documenti", + "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", @@ -797,15 +797,15 @@ "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.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": "Salvataggio impostazione fallito", + "settings.save_error": "Failed to save setting", "settings.save_setting_title": "Save this setting", - "settings.save_success": "Impostazione salvata con successo", + "settings.save_success": "Setting saved successfully", "settings.saving_state": "Saving…", "settings.search_aria_label": "Search settings", "settings.search_clear_aria": "Clear search", @@ -814,7 +814,7 @@ "settings.source_db_badge": "DB", "settings.source_default_badge": "DEFAULT", "settings.source_env_badge": "ENV", - "settings.title": "Impostazioni", + "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", @@ -903,11 +903,11 @@ "upload.camera_button": "Take Photo / Scan Document", "upload.download_button": "Download and Process", "upload.downloading": "Downloading file from URL...", - "upload.drag_drop": "Trascina i file qui o fai clic per sfogliare", + "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": "Caricamento fallito", + "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", "upload.file_size_hint": "Maximum size: 500 MB per file", @@ -915,14 +915,14 @@ "upload.filename_description": "Leave empty to use filename from URL", "upload.filename_label": "Filename (optional)", "upload.filename_placeholder": "my-document.pdf", - "upload.max_size": "Dimensione massima del file: {size}", + "upload.max_size": "Maximum file size: {size}", "upload.page_title": "Upload Files", "upload.section_device": "Upload from Device", "upload.section_url": "Upload from URL", - "upload.select_file": "Seleziona file", - "upload.success": "File caricato con successo", - "upload.title": "Carica documento", - "upload.uploading": "Caricamento in corso...", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", "upload.url_label": "File URL", "upload.url_placeholder": "https://example.com/document.pdf" From cee6697c826433883985d6de0f06bd348cd16d22 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:56 +0100 Subject: [PATCH 29/71] New translations en.json (Japanese) --- frontend/translations/ja.json | 929 ++++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/ja.json diff --git a/frontend/translations/ja.json b/frontend/translations/ja.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/ja.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From fcbe7880a998fb272d582c324d49f7ed8cfb7685 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:57 +0100 Subject: [PATCH 30/71] New translations en.json (Korean) --- frontend/translations/ko.json | 929 ++++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/ko.json diff --git a/frontend/translations/ko.json b/frontend/translations/ko.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/ko.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From eb87f4fe9bae330e87bc28b67d8758a276c33c62 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:58 +0100 Subject: [PATCH 31/71] New translations en.json (Lithuanian) --- frontend/translations/lt.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/lt.json b/frontend/translations/lt.json index 85c5227d..d36160ed 100644 --- a/frontend/translations/lt.json +++ b/frontend/translations/lt.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Kalba pakeista į {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Lietuvių", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From 98567e0261ca26dd67be2d99dab57849f8574e1a Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:34:59 +0100 Subject: [PATCH 32/71] New translations en.json (Dutch) --- frontend/translations/nl.json | 298 +++++++++++++++++----------------- 1 file changed, 149 insertions(+), 149 deletions(-) diff --git a/frontend/translations/nl.json b/frontend/translations/nl.json index 2ac89e9b..d36160ed 100644 --- a/frontend/translations/nl.json +++ b/frontend/translations/nl.json @@ -106,22 +106,22 @@ "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", "auth.forgot_username": "Forgot username?", - "auth.login": "Inloggen", + "auth.login": "Log In", "auth.login_title": "Log In", "auth.logo_alt": "DocuElevate Logo", - "auth.logout": "Uitloggen", - "auth.my_account": "Mijn account", + "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": "Profiel", + "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": "Registreren", + "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", "auth.username_or_email": "Username or Email", @@ -184,69 +184,69 @@ "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.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", "common.col_pending": "Pending", - "common.completed": "Voltooid", - "common.confirm": "Bevestigen", - "common.copied": "Gekopieerd!", - "common.copy": "Kopiëren", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", "common.create": "Create", - "common.created": "Aangemaakt", - "common.date": "Datum", - "common.delete": "Verwijderen", - "common.description": "Beschrijving", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", "common.details": "Details", - "common.disabled": "Uitgeschakeld", - "common.download": "Downloaden", + "common.disabled": "Disabled", + "common.download": "Download", "common.duplicate": "Duplicate", - "common.edit": "Bewerken", - "common.enabled": "Ingeschakeld", - "common.error": "Fout", - "common.failed": "Mislukt", - "common.filter": "Filteren", - "common.inactive": "Inactief", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", "common.info": "Info", - "common.loading": "Laden...", - "common.name": "Naam", - "common.next": "Volgende", + "common.loading": "Loading...", + "common.name": "Name", + "common.next": "Next", "common.next_page": "Next page", - "common.no": "Nee", - "common.none": "Geen", + "common.no": "No", + "common.none": "None", "common.page": "Page", - "common.pending": "In afwachting", + "common.pending": "Pending", "common.prev_page": "Previous page", "common.previous": "Previous", - "common.processing": "Verwerken", - "common.refresh": "Vernieuwen", - "common.reset": "Herstellen", - "common.retry": "Opnieuw proberen", - "common.save": "Opslaan", - "common.search": "Zoeken", - "common.select": "Selecteren", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", "common.select_placeholder": "— select —", - "common.size": "Grootte", + "common.size": "Size", "common.status": "Status", "common.submit": "Submit", - "common.success": "Succes", + "common.success": "Success", "common.tags": "Tags", "common.type": "Type", - "common.updated": "Bijgewerkt", - "common.upload": "Uploaden", - "common.view": "Bekijken", - "common.warning": "Waarschuwing", - "common.yes": "Ja", - "cookie.accept": "Begrepen", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", "cookie.learn_more": "Learn more", "cookie.message": "This website uses cookies to improve your experience.", - "cookie.notice": "DocuElevate gebruikt alleen essentiële sessiecookies die nodig zijn voor authenticatie en werking van de service. Er worden geen tracking- of analysecookies gebruikt.", - "cookie.notice_label": "Cookiemelding", - "cookie.policy_link": "Cookiebeleid", - "cookie.privacy_link": "Privacyverklaring", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", @@ -270,16 +270,16 @@ "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", - "dashboard.ocr_processed": "OCR verwerkt", - "dashboard.quick_actions": "Snelle acties", - "dashboard.recent_activity": "Recente activiteit", - "dashboard.storage_targets": "Opslagdoelen", + "dashboard.active_integrations": "Active Integrations", + "dashboard.files_this_month": "Files This Month", + "dashboard.files_today": "Files Today", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", "dashboard.title": "Dashboard", - "dashboard.total_files": "Totaal bestanden", - "dashboard.welcome": "Welkom bij DocuElevate", + "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", @@ -317,14 +317,14 @@ "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", - "error.not_found_message": "De pagina die u zoekt bestaat niet.", - "error.server_error": "Interne serverfout", - "error.server_error_message": "Er is iets misgegaan. Probeer het later opnieuw.", - "error.unauthorized": "Niet geautoriseerd", - "error.unauthorized_message": "U moet inloggen om deze pagina te openen.", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", "files.action_delete": "Delete file", "files.action_details": "View details", "files.action_preview": "Quick preview", @@ -337,12 +337,12 @@ "files.delete_modal_confirm": "Delete", "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", - "files.document_title": "Documenttitel", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", "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.file_size": "File Size", + "files.filename": "Filename", "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", @@ -366,10 +366,10 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", - "files.no_files": "Geen bestanden gevonden", - "files.ocr_status": "OCR-status", + "files.no_files": "No files found", + "files.ocr_status": "OCR Status", "files.page_title": "File Records", "files.pagination_files": "files", "files.pagination_first": "First", @@ -400,22 +400,22 @@ "files.table_original_filename": "Original Filename", "files.table_select_all": "Select all files on this page", "files.tags": "Tags", - "files.title": "Bestanden", + "files.title": "Files", "files.upload_modal_aria": "Upload progress", "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", - "files.uploaded": "Geüpload", + "files.uploaded": "Uploaded", "footer.about": "About", "footer.attribution": "Attribution", - "footer.attributions": "Attributies", + "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", - "footer.imprint": "Colofon", - "footer.license": "Licentie", - "footer.navigation": "Voettekstnavigatie", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", "footer.privacy": "Privacy", - "footer.terms": "Voorwaarden", - "footer.version": "Versie {version}", + "footer.terms": "Terms", + "footer.version": "Version {version}", "help.destinations_dropbox": "Dropbox", "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", "help.destinations_email": "Email Forwarding", @@ -435,8 +435,8 @@ "help.destinations_sftp_desc": "Secure file transfer to any server.", "help.destinations_webhook": "Webhook", "help.destinations_webhook_desc": "POST metadata to any external endpoint.", - "help.documentation": "Documentatie", - "help.faq": "Veelgestelde vragen", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", "help.faq_1_q": "How do I upload documents?", "help.faq_2_a": "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.", @@ -448,7 +448,7 @@ "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", "help.faq_5_q": "Is my data secure?", "help.faq_heading": "Frequently Asked Questions", - "help.getting_started": "Aan de slag", + "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", "help.privacy_notice": "Privacy Notice", @@ -469,13 +469,13 @@ "help.sources_web_upload": "Web Upload", "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", - "help.support": "Ondersteuning", + "help.support": "Support", "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", "help.support_ticket_button": "Submit a Ticket", "help.support_ticket_heading": "Open a Support Ticket", - "help.title": "Helpcentrum", + "help.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.", "help.workflows_heading": "Workflows & Pipelines", @@ -570,24 +570,24 @@ "index.usage_my_usage": "My usage", "index.usage_today": "Files today", "index.usage_unlimited": "Unlimited", - "integrations.configure": "Configureren", - "integrations.connect": "Verbinden", - "integrations.connected": "Verbonden", - "integrations.disconnect": "Verbreken", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", "integrations.empty_state": "No integrations configured", "integrations.folder_label": "Folder", "integrations.host_label": "Host", "integrations.imap_settings": "IMAP Settings", - "integrations.not_connected": "Niet verbonden", + "integrations.not_connected": "Not Connected", "integrations.page_title": "Integrations", "integrations.password_label": "Password", "integrations.port_label": "Port", - "integrations.title": "Integraties", + "integrations.title": "Integrations", "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Taal gewijzigd naar {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Taal", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", @@ -619,77 +619,77 @@ "language.tr": "Türkçe", "language.uk": "Українська", "language.zh": "中文", - "nav.about": "Over ons", + "nav.about": "About", "nav.admin": "Admin", "nav.admin.audit_logs": "Audit Logs", "nav.admin.backups": "Backups", "nav.admin.plans": "Plans", "nav.admin.scheduled_jobs": "Scheduled Jobs", "nav.admin.users": "Users", - "nav.admin_actions": "Admin-acties", - "nav.admin_menu": "Admin-menu", - "nav.api_docs": "API-documentatie", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", "nav.api_tokens": "API Tokens", - "nav.backup_restore": "Back-up en herstel", - "nav.credentials": "Referenties", - "nav.dark_mode": "Donkere modus", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", "nav.dashboard": "Dashboard", - "nav.developer_docs": "Ontwikkelaarsdocumentatie", - "nav.duplicates": "Duplicaten", - "nav.file_manager": "Bestandsbeheer", - "nav.files": "Bestanden", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", "nav.help": "Help", - "nav.help_center": "Helpcentrum", + "nav.help_center": "Help Center", "nav.imap": "Email Import", - "nav.integrations": "Integraties", - "nav.light_mode": "Lichte modus", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", "nav.login": "Log In", "nav.logout": "Log Out", - "nav.main_navigation": "Hoofdnavigatie", - "nav.notifications": "Meldingen", - "nav.open_main_menu": "Hoofdmenu openen", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", - "nav.plan_designer": "Planontwerper", - "nav.pricing": "Prijzen", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", "nav.profile": "Profile", "nav.queue": "Queue", - "nav.queue_monitor": "Wachtrijmonitor", - "nav.scheduled_jobs": "Geplande taken", - "nav.search": "Zoeken", - "nav.settings": "Instellingen", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", "nav.shared_links": "Shared Links", "nav.signup": "Sign Up", - "nav.similarity": "Gelijkenis", - "nav.skip_to_content": "Ga naar hoofdinhoud", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", "nav.status": "Status", "nav.subscription": "Subscription", - "nav.toggle_dark_mode": "Donkere modus schakelen", - "nav.toggle_nav": "Navigatiemenu schakelen", - "nav.upload": "Uploaden", - "nav.users": "Gebruikers", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", - "notifications.mark_all_read": "Alles als gelezen markeren", + "notifications.mark_all_read": "Mark All as Read", "notifications.mark_all_read_btn": "Mark all read", - "notifications.mark_read": "Markeren als gelezen", - "notifications.no_notifications": "Geen meldingen", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", "notifications.page_title": "Notifications", "notifications.tab_inbox": "Inbox", "notifications.tab_settings": "Settings", - "notifications.title": "Meldingen", - "notifications.unread_count": "{count} ongelezen meldingen", + "notifications.title": "Notifications", + "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", "pipelines.add_step_btn": "Add Step", - "pipelines.create": "Pipeline maken", + "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": "Pipeline bewerken", + "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", @@ -712,7 +712,7 @@ "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", + "pipelines.title": "Processing Pipelines", "queue.active_tasks": "Active Tasks", "queue.auto_refresh_1": "Auto-refreshes every", "queue.auto_refresh_2": "seconds", @@ -762,18 +762,18 @@ "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", + "search.no_results": "No results found", "search.page_title": "Search Documents", - "search.placeholder": "Zoeken op naam, inhoud, tags...", + "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", - "search.results_count": "{count} resultaten gevonden", + "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": "Documenten zoeken", + "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", @@ -797,15 +797,15 @@ "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.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": "Instelling opslaan mislukt", + "settings.save_error": "Failed to save setting", "settings.save_setting_title": "Save this setting", - "settings.save_success": "Instelling succesvol opgeslagen", + "settings.save_success": "Setting saved successfully", "settings.saving_state": "Saving…", "settings.search_aria_label": "Search settings", "settings.search_clear_aria": "Clear search", @@ -814,7 +814,7 @@ "settings.source_db_badge": "DB", "settings.source_default_badge": "DEFAULT", "settings.source_env_badge": "ENV", - "settings.title": "Instellingen", + "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", @@ -903,11 +903,11 @@ "upload.camera_button": "Take Photo / Scan Document", "upload.download_button": "Download and Process", "upload.downloading": "Downloading file from URL...", - "upload.drag_drop": "Sleep bestanden hierheen of klik om te bladeren", + "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 mislukt", + "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", "upload.file_size_hint": "Maximum size: 500 MB per file", @@ -915,14 +915,14 @@ "upload.filename_description": "Leave empty to use filename from URL", "upload.filename_label": "Filename (optional)", "upload.filename_placeholder": "my-document.pdf", - "upload.max_size": "Maximale bestandsgrootte: {size}", + "upload.max_size": "Maximum file size: {size}", "upload.page_title": "Upload Files", "upload.section_device": "Upload from Device", "upload.section_url": "Upload from URL", - "upload.select_file": "Bestand selecteren", - "upload.success": "Bestand succesvol geüpload", - "upload.title": "Document uploaden", - "upload.uploading": "Uploaden...", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", "upload.url_label": "File URL", "upload.url_placeholder": "https://example.com/document.pdf" From ec651980a20b86d75d23c07a38737bd14197f91b Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:00 +0100 Subject: [PATCH 33/71] New translations en.json (Norwegian) --- frontend/translations/no.json | 929 ++++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/no.json diff --git a/frontend/translations/no.json b/frontend/translations/no.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/no.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From 9d3da998df0635351d0e0d4368b2bc2621cd4790 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:01 +0100 Subject: [PATCH 34/71] New translations en.json (Punjabi) --- frontend/translations/pa.json | 929 ++++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/pa.json diff --git a/frontend/translations/pa.json b/frontend/translations/pa.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/pa.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From 0e3064b4c14b4a2f0e987605b82d9ce180536dcd Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:02 +0100 Subject: [PATCH 35/71] New translations en.json (Polish) --- frontend/translations/pl.json | 316 +++++++++++++++++----------------- 1 file changed, 158 insertions(+), 158 deletions(-) diff --git a/frontend/translations/pl.json b/frontend/translations/pl.json index 575a4905..d36160ed 100644 --- a/frontend/translations/pl.json +++ b/frontend/translations/pl.json @@ -106,22 +106,22 @@ "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", "auth.forgot_username": "Forgot username?", - "auth.login": "Zaloguj się", + "auth.login": "Log In", "auth.login_title": "Log In", "auth.logo_alt": "DocuElevate Logo", - "auth.logout": "Wyloguj się", - "auth.my_account": "Moje konto", + "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": "Profil", + "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": "Zarejestruj się", + "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", "auth.username_or_email": "Username or Email", @@ -184,69 +184,69 @@ "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.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", "common.col_pending": "Pending", - "common.completed": "Zakończono", - "common.confirm": "Potwierdź", - "common.copied": "Skopiowano!", - "common.copy": "Kopiuj", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", "common.create": "Create", - "common.created": "Utworzono", - "common.date": "Data", - "common.delete": "Usuń", - "common.description": "Opis", - "common.details": "Szczegóły", - "common.disabled": "Wyłączony", - "common.download": "Pobierz", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", "common.duplicate": "Duplicate", - "common.edit": "Edytuj", - "common.enabled": "Włączony", - "common.error": "Błąd", - "common.failed": "Nieudane", - "common.filter": "Filtruj", - "common.inactive": "Nieaktywny", - "common.info": "Informacja", - "common.loading": "Ładowanie...", - "common.name": "Nazwa", - "common.next": "Dalej", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "common.loading": "Loading...", + "common.name": "Name", + "common.next": "Next", "common.next_page": "Next page", - "common.no": "Nie", - "common.none": "Brak", + "common.no": "No", + "common.none": "None", "common.page": "Page", - "common.pending": "Oczekujące", + "common.pending": "Pending", "common.prev_page": "Previous page", "common.previous": "Previous", - "common.processing": "Przetwarzanie", - "common.refresh": "Odśwież", - "common.reset": "Resetuj", - "common.retry": "Ponów", - "common.save": "Zapisz", - "common.search": "Szukaj", - "common.select": "Wybierz", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", "common.select_placeholder": "— select —", - "common.size": "Rozmiar", + "common.size": "Size", "common.status": "Status", "common.submit": "Submit", - "common.success": "Sukces", + "common.success": "Success", "common.tags": "Tags", - "common.type": "Typ", - "common.updated": "Zaktualizowano", - "common.upload": "Prześlij", - "common.view": "Wyświetl", - "common.warning": "Ostrzeżenie", - "common.yes": "Tak", - "cookie.accept": "Rozumiem", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", "cookie.learn_more": "Learn more", "cookie.message": "This website uses cookies to improve your experience.", - "cookie.notice": "DocuElevate używa wyłącznie niezbędnych plików cookie sesji wymaganych do uwierzytelniania i działania usługi. Nie są używane pliki cookie śledzące ani analityczne.", - "cookie.notice_label": "Informacja o plikach cookie", - "cookie.policy_link": "Polityka plików cookie", - "cookie.privacy_link": "Informacja o prywatności", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", @@ -270,16 +270,16 @@ "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", - "dashboard.ocr_processed": "OCR przetworzone", - "dashboard.quick_actions": "Szybkie akcje", - "dashboard.recent_activity": "Ostatnia aktywność", - "dashboard.storage_targets": "Cele przechowywania", - "dashboard.title": "Pulpit", - "dashboard.total_files": "Pliki ogółem", - "dashboard.welcome": "Witamy w DocuElevate", + "dashboard.active_integrations": "Active Integrations", + "dashboard.files_this_month": "Files This Month", + "dashboard.files_today": "Files Today", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "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", @@ -317,14 +317,14 @@ "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", - "error.not_found_message": "Szukana strona nie istnieje.", - "error.server_error": "Wewnętrzny błąd serwera", - "error.server_error_message": "Coś poszło nie tak. Spróbuj ponownie później.", - "error.unauthorized": "Brak autoryzacji", - "error.unauthorized_message": "Musisz się zalogować, aby uzyskać dostęp do tej strony.", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", "files.action_delete": "Delete file", "files.action_details": "View details", "files.action_preview": "Quick preview", @@ -337,12 +337,12 @@ "files.delete_modal_confirm": "Delete", "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", - "files.document_title": "Tytuł dokumentu", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", "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.file_size": "File Size", + "files.filename": "Filename", "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", @@ -366,10 +366,10 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", - "files.no_files": "Nie znaleziono plików", - "files.ocr_status": "Status OCR", + "files.no_files": "No files found", + "files.ocr_status": "OCR Status", "files.page_title": "File Records", "files.pagination_files": "files", "files.pagination_first": "First", @@ -399,23 +399,23 @@ "files.table_mime_type": "MIME Type", "files.table_original_filename": "Original Filename", "files.table_select_all": "Select all files on this page", - "files.tags": "Tagi", - "files.title": "Pliki", + "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": "Przesłano", + "files.uploaded": "Uploaded", "footer.about": "About", "footer.attribution": "Attribution", - "footer.attributions": "Atrybuty", + "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", - "footer.imprint": "Impressum", - "footer.license": "Licencja", - "footer.navigation": "Nawigacja stopki", - "footer.privacy": "Prywatność", - "footer.terms": "Regulamin", - "footer.version": "Wersja {version}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", "help.destinations_dropbox": "Dropbox", "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", "help.destinations_email": "Email Forwarding", @@ -435,8 +435,8 @@ "help.destinations_sftp_desc": "Secure file transfer to any server.", "help.destinations_webhook": "Webhook", "help.destinations_webhook_desc": "POST metadata to any external endpoint.", - "help.documentation": "Dokumentacja", - "help.faq": "Często zadawane pytania", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", "help.faq_1_q": "How do I upload documents?", "help.faq_2_a": "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.", @@ -448,7 +448,7 @@ "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", "help.faq_5_q": "Is my data secure?", "help.faq_heading": "Frequently Asked Questions", - "help.getting_started": "Pierwsze kroki", + "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", "help.privacy_notice": "Privacy Notice", @@ -469,13 +469,13 @@ "help.sources_web_upload": "Web Upload", "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", - "help.support": "Wsparcie", + "help.support": "Support", "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", "help.support_ticket_button": "Submit a Ticket", "help.support_ticket_heading": "Open a Support Ticket", - "help.title": "Centrum pomocy", + "help.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.", "help.workflows_heading": "Workflows & Pipelines", @@ -570,24 +570,24 @@ "index.usage_my_usage": "My usage", "index.usage_today": "Files today", "index.usage_unlimited": "Unlimited", - "integrations.configure": "Konfiguruj", - "integrations.connect": "Połącz", - "integrations.connected": "Połączono", - "integrations.disconnect": "Rozłącz", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", "integrations.empty_state": "No integrations configured", "integrations.folder_label": "Folder", "integrations.host_label": "Host", "integrations.imap_settings": "IMAP Settings", - "integrations.not_connected": "Nie połączono", + "integrations.not_connected": "Not Connected", "integrations.page_title": "Integrations", "integrations.password_label": "Password", "integrations.port_label": "Port", - "integrations.title": "Integracje", + "integrations.title": "Integrations", "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Język zmieniony na {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Język", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", @@ -619,77 +619,77 @@ "language.tr": "Türkçe", "language.uk": "Українська", "language.zh": "中文", - "nav.about": "O nas", + "nav.about": "About", "nav.admin": "Admin", "nav.admin.audit_logs": "Audit Logs", "nav.admin.backups": "Backups", "nav.admin.plans": "Plans", "nav.admin.scheduled_jobs": "Scheduled Jobs", "nav.admin.users": "Users", - "nav.admin_actions": "Akcje administratora", - "nav.admin_menu": "Menu administratora", - "nav.api_docs": "Dokumentacja API", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", "nav.api_tokens": "API Tokens", - "nav.backup_restore": "Kopia zapasowa i przywracanie", - "nav.credentials": "Poświadczenia", - "nav.dark_mode": "Tryb ciemny", - "nav.dashboard": "Pulpit", - "nav.developer_docs": "Dokumentacja dla programistów", - "nav.duplicates": "Duplikaty", - "nav.file_manager": "Menedżer plików", - "nav.files": "Pliki", - "nav.help": "Pomoc", - "nav.help_center": "Centrum pomocy", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", "nav.imap": "Email Import", - "nav.integrations": "Integracje", - "nav.light_mode": "Tryb jasny", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", "nav.login": "Log In", "nav.logout": "Log Out", - "nav.main_navigation": "Nawigacja główna", - "nav.notifications": "Powiadomienia", - "nav.open_main_menu": "Otwórz menu główne", - "nav.pipelines": "Potoki", - "nav.plan_designer": "Projektant planów", - "nav.pricing": "Cennik", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", "nav.profile": "Profile", "nav.queue": "Queue", - "nav.queue_monitor": "Monitor kolejki", - "nav.scheduled_jobs": "Zaplanowane zadania", - "nav.search": "Szukaj", - "nav.settings": "Ustawienia", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", "nav.shared_links": "Shared Links", "nav.signup": "Sign Up", - "nav.similarity": "Podobieństwo", - "nav.skip_to_content": "Przejdź do treści głównej", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", "nav.status": "Status", "nav.subscription": "Subscription", - "nav.toggle_dark_mode": "Przełącz tryb ciemny", - "nav.toggle_nav": "Przełącz menu nawigacji", - "nav.upload": "Prześlij", - "nav.users": "Użytkownicy", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", - "notifications.mark_all_read": "Oznacz wszystkie jako przeczytane", + "notifications.mark_all_read": "Mark All as Read", "notifications.mark_all_read_btn": "Mark all read", - "notifications.mark_read": "Oznacz jako przeczytane", - "notifications.no_notifications": "Brak powiadomień", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", "notifications.page_title": "Notifications", "notifications.tab_inbox": "Inbox", "notifications.tab_settings": "Settings", - "notifications.title": "Powiadomienia", - "notifications.unread_count": "{count} nieprzeczytanych powiadomień", + "notifications.title": "Notifications", + "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", "pipelines.add_step_btn": "Add Step", - "pipelines.create": "Utwórz potok", + "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": "Edytuj potok", + "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", @@ -712,7 +712,7 @@ "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", + "pipelines.title": "Processing Pipelines", "queue.active_tasks": "Active Tasks", "queue.auto_refresh_1": "Auto-refreshes every", "queue.auto_refresh_2": "seconds", @@ -762,18 +762,18 @@ "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", + "search.no_results": "No results found", "search.page_title": "Search Documents", - "search.placeholder": "Szukaj wg nazwy, treści, tagów...", + "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", - "search.results_count": "Znaleziono {count} wyników", + "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": "Szukaj dokumentów", + "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", @@ -797,15 +797,15 @@ "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.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": "Nie udało się zapisać ustawienia", + "settings.save_error": "Failed to save setting", "settings.save_setting_title": "Save this setting", - "settings.save_success": "Ustawienie zapisane pomyślnie", + "settings.save_success": "Setting saved successfully", "settings.saving_state": "Saving…", "settings.search_aria_label": "Search settings", "settings.search_clear_aria": "Clear search", @@ -814,7 +814,7 @@ "settings.source_db_badge": "DB", "settings.source_default_badge": "DEFAULT", "settings.source_env_badge": "ENV", - "settings.title": "Ustawienia", + "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", @@ -903,11 +903,11 @@ "upload.camera_button": "Take Photo / Scan Document", "upload.download_button": "Download and Process", "upload.downloading": "Downloading file from URL...", - "upload.drag_drop": "Przeciągnij pliki tutaj lub kliknij, aby przeglądać", + "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": "Przesyłanie nie powiodło się", + "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", "upload.file_size_hint": "Maximum size: 500 MB per file", @@ -915,14 +915,14 @@ "upload.filename_description": "Leave empty to use filename from URL", "upload.filename_label": "Filename (optional)", "upload.filename_placeholder": "my-document.pdf", - "upload.max_size": "Maksymalny rozmiar pliku: {size}", + "upload.max_size": "Maximum file size: {size}", "upload.page_title": "Upload Files", "upload.section_device": "Upload from Device", "upload.section_url": "Upload from URL", - "upload.select_file": "Wybierz plik", - "upload.success": "Plik przesłany pomyślnie", - "upload.title": "Prześlij dokument", - "upload.uploading": "Przesyłanie...", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", "upload.url_label": "File URL", "upload.url_placeholder": "https://example.com/document.pdf" From 26ce680f03ec527932555a65ea5c8f98a7da1fbb Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:04 +0100 Subject: [PATCH 36/71] New translations en.json (Portuguese) --- frontend/translations/pt.json | 318 +++++++++++++++++----------------- 1 file changed, 159 insertions(+), 159 deletions(-) diff --git a/frontend/translations/pt.json b/frontend/translations/pt.json index 10bac698..d36160ed 100644 --- a/frontend/translations/pt.json +++ b/frontend/translations/pt.json @@ -106,22 +106,22 @@ "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", "auth.forgot_username": "Forgot username?", - "auth.login": "Iniciar sessão", + "auth.login": "Log In", "auth.login_title": "Log In", "auth.logo_alt": "DocuElevate Logo", - "auth.logout": "Terminar sessão", - "auth.my_account": "A minha conta", + "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": "Perfil", + "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": "Registar", + "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", "auth.username_or_email": "Username or Email", @@ -184,69 +184,69 @@ "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.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", "common.col_pending": "Pending", - "common.completed": "Concluído", - "common.confirm": "Confirmar", - "common.copied": "Copiado!", - "common.copy": "Copiar", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", "common.create": "Create", - "common.created": "Criado", - "common.date": "Data", - "common.delete": "Eliminar", - "common.description": "Descrição", - "common.details": "Detalhes", - "common.disabled": "Desativado", - "common.download": "Descarregar", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", "common.duplicate": "Duplicate", - "common.edit": "Editar", - "common.enabled": "Ativado", - "common.error": "Erro", - "common.failed": "Falhado", - "common.filter": "Filtrar", - "common.inactive": "Inativo", - "common.info": "Informação", - "common.loading": "A carregar...", - "common.name": "Nome", - "common.next": "Seguinte", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "common.loading": "Loading...", + "common.name": "Name", + "common.next": "Next", "common.next_page": "Next page", - "common.no": "Não", - "common.none": "Nenhum", + "common.no": "No", + "common.none": "None", "common.page": "Page", - "common.pending": "Pendente", + "common.pending": "Pending", "common.prev_page": "Previous page", "common.previous": "Previous", - "common.processing": "A processar", - "common.refresh": "Atualizar", - "common.reset": "Repor", - "common.retry": "Tentar novamente", - "common.save": "Guardar", - "common.search": "Pesquisar", - "common.select": "Selecionar", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", "common.select_placeholder": "— select —", - "common.size": "Tamanho", - "common.status": "Estado", + "common.size": "Size", + "common.status": "Status", "common.submit": "Submit", - "common.success": "Sucesso", + "common.success": "Success", "common.tags": "Tags", - "common.type": "Tipo", - "common.updated": "Atualizado", - "common.upload": "Carregar", - "common.view": "Ver", - "common.warning": "Aviso", - "common.yes": "Sim", - "cookie.accept": "Entendido", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", "cookie.learn_more": "Learn more", "cookie.message": "This website uses cookies to improve your experience.", - "cookie.notice": "O DocuElevate utiliza apenas cookies de sessão essenciais necessários para a autenticação e o funcionamento do serviço. Não são utilizados cookies de rastreamento ou analíticos.", - "cookie.notice_label": "Aviso de cookies", - "cookie.policy_link": "Política de cookies", - "cookie.privacy_link": "Aviso de privacidade", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", @@ -270,16 +270,16 @@ "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", - "dashboard.ocr_processed": "OCR processados", - "dashboard.quick_actions": "Ações rápidas", - "dashboard.recent_activity": "Atividade recente", - "dashboard.storage_targets": "Destinos de armazenamento", - "dashboard.title": "Painel", - "dashboard.total_files": "Total de ficheiros", - "dashboard.welcome": "Bem-vindo ao DocuElevate", + "dashboard.active_integrations": "Active Integrations", + "dashboard.files_this_month": "Files This Month", + "dashboard.files_today": "Files Today", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "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", @@ -317,14 +317,14 @@ "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", - "error.not_found_message": "A página que procura não existe.", - "error.server_error": "Erro interno do servidor", - "error.server_error_message": "Algo correu mal. Tente novamente mais tarde.", - "error.unauthorized": "Não autorizado", - "error.unauthorized_message": "Precisa de iniciar sessão para aceder a esta página.", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", "files.action_delete": "Delete file", "files.action_details": "View details", "files.action_preview": "Quick preview", @@ -337,12 +337,12 @@ "files.delete_modal_confirm": "Delete", "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", - "files.document_title": "Título do documento", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", "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.file_size": "File Size", + "files.filename": "Filename", "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", @@ -366,10 +366,10 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", - "files.no_files": "Nenhum ficheiro encontrado", - "files.ocr_status": "Estado OCR", + "files.no_files": "No files found", + "files.ocr_status": "OCR Status", "files.page_title": "File Records", "files.pagination_files": "files", "files.pagination_first": "First", @@ -399,23 +399,23 @@ "files.table_mime_type": "MIME Type", "files.table_original_filename": "Original Filename", "files.table_select_all": "Select all files on this page", - "files.tags": "Etiquetas", - "files.title": "Ficheiros", + "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": "Carregado", + "files.uploaded": "Uploaded", "footer.about": "About", "footer.attribution": "Attribution", - "footer.attributions": "Atribuições", + "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", - "footer.imprint": "Aviso legal", - "footer.license": "Licença", - "footer.navigation": "Navegação do rodapé", - "footer.privacy": "Privacidade", - "footer.terms": "Termos", - "footer.version": "Versão {version}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", "help.destinations_dropbox": "Dropbox", "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", "help.destinations_email": "Email Forwarding", @@ -435,8 +435,8 @@ "help.destinations_sftp_desc": "Secure file transfer to any server.", "help.destinations_webhook": "Webhook", "help.destinations_webhook_desc": "POST metadata to any external endpoint.", - "help.documentation": "Documentação", - "help.faq": "Perguntas frequentes", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", "help.faq_1_q": "How do I upload documents?", "help.faq_2_a": "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.", @@ -448,7 +448,7 @@ "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", "help.faq_5_q": "Is my data secure?", "help.faq_heading": "Frequently Asked Questions", - "help.getting_started": "Primeiros passos", + "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", "help.privacy_notice": "Privacy Notice", @@ -469,13 +469,13 @@ "help.sources_web_upload": "Web Upload", "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", - "help.support": "Suporte", + "help.support": "Support", "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", "help.support_ticket_button": "Submit a Ticket", "help.support_ticket_heading": "Open a Support Ticket", - "help.title": "Centro de ajuda", + "help.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.", "help.workflows_heading": "Workflows & Pipelines", @@ -570,24 +570,24 @@ "index.usage_my_usage": "My usage", "index.usage_today": "Files today", "index.usage_unlimited": "Unlimited", - "integrations.configure": "Configurar", - "integrations.connect": "Ligar", - "integrations.connected": "Ligado", - "integrations.disconnect": "Desligar", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", "integrations.empty_state": "No integrations configured", "integrations.folder_label": "Folder", "integrations.host_label": "Host", "integrations.imap_settings": "IMAP Settings", - "integrations.not_connected": "Não ligado", + "integrations.not_connected": "Not Connected", "integrations.page_title": "Integrations", "integrations.password_label": "Password", "integrations.port_label": "Port", - "integrations.title": "Integrações", + "integrations.title": "Integrations", "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Idioma alterado para {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Idioma", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", @@ -619,77 +619,77 @@ "language.tr": "Türkçe", "language.uk": "Українська", "language.zh": "中文", - "nav.about": "Sobre", + "nav.about": "About", "nav.admin": "Admin", "nav.admin.audit_logs": "Audit Logs", "nav.admin.backups": "Backups", "nav.admin.plans": "Plans", "nav.admin.scheduled_jobs": "Scheduled Jobs", "nav.admin.users": "Users", - "nav.admin_actions": "Ações de administração", - "nav.admin_menu": "Menu de administração", - "nav.api_docs": "Documentação API", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", "nav.api_tokens": "API Tokens", - "nav.backup_restore": "Cópia de segurança e restauro", - "nav.credentials": "Credenciais", - "nav.dark_mode": "Modo escuro", - "nav.dashboard": "Painel", - "nav.developer_docs": "Documentação para programadores", - "nav.duplicates": "Duplicados", - "nav.file_manager": "Gestor de ficheiros", - "nav.files": "Ficheiros", - "nav.help": "Ajuda", - "nav.help_center": "Centro de ajuda", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", "nav.imap": "Email Import", - "nav.integrations": "Integrações", - "nav.light_mode": "Modo claro", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", "nav.login": "Log In", "nav.logout": "Log Out", - "nav.main_navigation": "Navegação principal", - "nav.notifications": "Notificações", - "nav.open_main_menu": "Abrir menu principal", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", "nav.pipelines": "Pipelines", - "nav.plan_designer": "Designer de planos", - "nav.pricing": "Preços", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", "nav.profile": "Profile", "nav.queue": "Queue", - "nav.queue_monitor": "Monitor de fila", - "nav.scheduled_jobs": "Tarefas agendadas", - "nav.search": "Pesquisar", - "nav.settings": "Definições", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", "nav.shared_links": "Shared Links", "nav.signup": "Sign Up", - "nav.similarity": "Similaridade", - "nav.skip_to_content": "Ir para o conteúdo principal", - "nav.status": "Estado", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", "nav.subscription": "Subscription", - "nav.toggle_dark_mode": "Alternar modo escuro", - "nav.toggle_nav": "Alternar menu de navegação", - "nav.upload": "Carregar", - "nav.users": "Utilizadores", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", - "notifications.mark_all_read": "Marcar todas como lidas", + "notifications.mark_all_read": "Mark All as Read", "notifications.mark_all_read_btn": "Mark all read", - "notifications.mark_read": "Marcar como lida", - "notifications.no_notifications": "Sem notificações", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", "notifications.page_title": "Notifications", "notifications.tab_inbox": "Inbox", "notifications.tab_settings": "Settings", - "notifications.title": "Notificações", - "notifications.unread_count": "{count} notificações por ler", + "notifications.title": "Notifications", + "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", "pipelines.add_step_btn": "Add Step", - "pipelines.create": "Criar pipeline", + "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": "Editar pipeline", + "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", @@ -712,7 +712,7 @@ "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", + "pipelines.title": "Processing Pipelines", "queue.active_tasks": "Active Tasks", "queue.auto_refresh_1": "Auto-refreshes every", "queue.auto_refresh_2": "seconds", @@ -762,18 +762,18 @@ "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", + "search.no_results": "No results found", "search.page_title": "Search Documents", - "search.placeholder": "Pesquisar por nome, conteúdo, etiquetas...", + "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", - "search.results_count": "{count} resultados encontrados", + "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": "Pesquisar documentos", + "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", @@ -797,15 +797,15 @@ "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.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": "Falha ao guardar definição", + "settings.save_error": "Failed to save setting", "settings.save_setting_title": "Save this setting", - "settings.save_success": "Definição guardada com sucesso", + "settings.save_success": "Setting saved successfully", "settings.saving_state": "Saving…", "settings.search_aria_label": "Search settings", "settings.search_clear_aria": "Clear search", @@ -814,7 +814,7 @@ "settings.source_db_badge": "DB", "settings.source_default_badge": "DEFAULT", "settings.source_env_badge": "ENV", - "settings.title": "Definições", + "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", @@ -903,11 +903,11 @@ "upload.camera_button": "Take Photo / Scan Document", "upload.download_button": "Download and Process", "upload.downloading": "Downloading file from URL...", - "upload.drag_drop": "Arraste ficheiros para aqui ou clique para procurar", + "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": "Falha ao carregar", + "upload.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", "upload.file_size_hint": "Maximum size: 500 MB per file", @@ -915,14 +915,14 @@ "upload.filename_description": "Leave empty to use filename from URL", "upload.filename_label": "Filename (optional)", "upload.filename_placeholder": "my-document.pdf", - "upload.max_size": "Tamanho máximo do ficheiro: {size}", + "upload.max_size": "Maximum file size: {size}", "upload.page_title": "Upload Files", "upload.section_device": "Upload from Device", "upload.section_url": "Upload from URL", - "upload.select_file": "Selecionar ficheiro", - "upload.success": "Ficheiro carregado com sucesso", - "upload.title": "Carregar documento", - "upload.uploading": "A carregar...", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", "upload.url_label": "File URL", "upload.url_placeholder": "https://example.com/document.pdf" From c0fb2c4069db187b196f532120d3c2072adeee87 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:05 +0100 Subject: [PATCH 37/71] New translations en.json (Russian) --- frontend/translations/ru.json | 324 +++++++++++++++++----------------- 1 file changed, 162 insertions(+), 162 deletions(-) diff --git a/frontend/translations/ru.json b/frontend/translations/ru.json index 6c90ec67..d36160ed 100644 --- a/frontend/translations/ru.json +++ b/frontend/translations/ru.json @@ -106,22 +106,22 @@ "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", "auth.forgot_username": "Forgot username?", - "auth.login": "Войти", + "auth.login": "Log In", "auth.login_title": "Log In", "auth.logo_alt": "DocuElevate Logo", - "auth.logout": "Выйти", - "auth.my_account": "Мой аккаунт", + "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": "Профиль", + "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": "Регистрация", + "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", "auth.username_or_email": "Username or Email", @@ -184,69 +184,69 @@ "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.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", "common.col_pending": "Pending", - "common.completed": "Завершено", - "common.confirm": "Подтвердить", - "common.copied": "Скопировано!", - "common.copy": "Копировать", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", "common.create": "Create", - "common.created": "Создано", - "common.date": "Дата", - "common.delete": "Удалить", - "common.description": "Описание", - "common.details": "Подробности", - "common.disabled": "Отключено", - "common.download": "Скачать", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", "common.duplicate": "Duplicate", - "common.edit": "Редактировать", - "common.enabled": "Включено", - "common.error": "Ошибка", - "common.failed": "Ошибка", - "common.filter": "Фильтр", - "common.inactive": "Неактивно", - "common.info": "Информация", - "common.loading": "Загрузка...", - "common.name": "Название", - "common.next": "Далее", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "common.loading": "Loading...", + "common.name": "Name", + "common.next": "Next", "common.next_page": "Next page", - "common.no": "Нет", - "common.none": "Нет", + "common.no": "No", + "common.none": "None", "common.page": "Page", - "common.pending": "В ожидании", + "common.pending": "Pending", "common.prev_page": "Previous page", "common.previous": "Previous", - "common.processing": "Обработка", - "common.refresh": "Обновить", - "common.reset": "Сбросить", - "common.retry": "Повторить", - "common.save": "Сохранить", - "common.search": "Поиск", - "common.select": "Выбрать", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", "common.select_placeholder": "— select —", - "common.size": "Размер", - "common.status": "Статус", + "common.size": "Size", + "common.status": "Status", "common.submit": "Submit", - "common.success": "Успешно", + "common.success": "Success", "common.tags": "Tags", - "common.type": "Тип", - "common.updated": "Обновлено", - "common.upload": "Загрузить", - "common.view": "Просмотр", - "common.warning": "Предупреждение", - "common.yes": "Да", - "cookie.accept": "Понятно", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", "cookie.learn_more": "Learn more", "cookie.message": "This website uses cookies to improve your experience.", - "cookie.notice": "DocuElevate использует только необходимые сессионные файлы cookie для аутентификации и работы сервиса. Файлы cookie для отслеживания и аналитики не используются.", - "cookie.notice_label": "Уведомление о файлах cookie", - "cookie.policy_link": "Политика файлов cookie", - "cookie.privacy_link": "Уведомление о конфиденциальности", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", @@ -270,16 +270,16 @@ "credentials.table_for": "Credentials for", "credentials.title": "Credential Audit", "credentials.total_credentials": "Total Credentials", - "dashboard.active_integrations": "Активные интеграции", - "dashboard.files_this_month": "Файлы за месяц", - "dashboard.files_today": "Файлы сегодня", - "dashboard.ocr_processed": "OCR обработано", - "dashboard.quick_actions": "Быстрые действия", - "dashboard.recent_activity": "Последняя активность", - "dashboard.storage_targets": "Хранилища", - "dashboard.title": "Панель управления", - "dashboard.total_files": "Всего файлов", - "dashboard.welcome": "Добро пожаловать в DocuElevate", + "dashboard.active_integrations": "Active Integrations", + "dashboard.files_this_month": "Files This Month", + "dashboard.files_today": "Files Today", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "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", @@ -317,14 +317,14 @@ "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": "Страница не найдена", - "error.not_found_message": "Запрашиваемая страница не существует.", - "error.server_error": "Внутренняя ошибка сервера", - "error.server_error_message": "Что-то пошло не так. Пожалуйста, попробуйте позже.", - "error.unauthorized": "Не авторизован", - "error.unauthorized_message": "Для доступа к этой странице необходимо войти в систему.", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", "files.action_delete": "Delete file", "files.action_details": "View details", "files.action_preview": "Quick preview", @@ -337,12 +337,12 @@ "files.delete_modal_confirm": "Delete", "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", - "files.document_title": "Название документа", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", "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.file_size": "File Size", + "files.filename": "Filename", "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", @@ -366,10 +366,10 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", - "files.no_files": "Файлы не найдены", - "files.ocr_status": "Статус OCR", + "files.no_files": "No files found", + "files.ocr_status": "OCR Status", "files.page_title": "File Records", "files.pagination_files": "files", "files.pagination_first": "First", @@ -399,23 +399,23 @@ "files.table_mime_type": "MIME Type", "files.table_original_filename": "Original Filename", "files.table_select_all": "Select all files on this page", - "files.tags": "Теги", - "files.title": "Файлы", + "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": "Загружено", + "files.uploaded": "Uploaded", "footer.about": "About", "footer.attribution": "Attribution", - "footer.attributions": "Атрибуции", - "footer.cookies": "Файлы cookie", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", - "footer.imprint": "Выходные данные", - "footer.license": "Лицензия", - "footer.navigation": "Навигация подвала", - "footer.privacy": "Конфиденциальность", - "footer.terms": "Условия", - "footer.version": "Версия {version}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", "help.destinations_dropbox": "Dropbox", "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", "help.destinations_email": "Email Forwarding", @@ -435,8 +435,8 @@ "help.destinations_sftp_desc": "Secure file transfer to any server.", "help.destinations_webhook": "Webhook", "help.destinations_webhook_desc": "POST metadata to any external endpoint.", - "help.documentation": "Документация", - "help.faq": "Часто задаваемые вопросы", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", "help.faq_1_q": "How do I upload documents?", "help.faq_2_a": "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.", @@ -448,7 +448,7 @@ "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", "help.faq_5_q": "Is my data secure?", "help.faq_heading": "Frequently Asked Questions", - "help.getting_started": "Начало работы", + "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", "help.privacy_notice": "Privacy Notice", @@ -469,13 +469,13 @@ "help.sources_web_upload": "Web Upload", "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", - "help.support": "Поддержка", + "help.support": "Support", "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", "help.support_ticket_button": "Submit a Ticket", "help.support_ticket_heading": "Open a Support Ticket", - "help.title": "Центр помощи", + "help.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.", "help.workflows_heading": "Workflows & Pipelines", @@ -570,24 +570,24 @@ "index.usage_my_usage": "My usage", "index.usage_today": "Files today", "index.usage_unlimited": "Unlimited", - "integrations.configure": "Настроить", - "integrations.connect": "Подключить", - "integrations.connected": "Подключено", - "integrations.disconnect": "Отключить", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", "integrations.empty_state": "No integrations configured", "integrations.folder_label": "Folder", "integrations.host_label": "Host", "integrations.imap_settings": "IMAP Settings", - "integrations.not_connected": "Не подключено", + "integrations.not_connected": "Not Connected", "integrations.page_title": "Integrations", "integrations.password_label": "Password", "integrations.port_label": "Port", - "integrations.title": "Интеграции", + "integrations.title": "Integrations", "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Язык изменён на {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Язык", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", @@ -619,77 +619,77 @@ "language.tr": "Türkçe", "language.uk": "Українська", "language.zh": "中文", - "nav.about": "О нас", - "nav.admin": "Админ", + "nav.about": "About", + "nav.admin": "Admin", "nav.admin.audit_logs": "Audit Logs", "nav.admin.backups": "Backups", "nav.admin.plans": "Plans", "nav.admin.scheduled_jobs": "Scheduled Jobs", "nav.admin.users": "Users", - "nav.admin_actions": "Действия администратора", - "nav.admin_menu": "Меню администратора", - "nav.api_docs": "Документация API", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", "nav.api_tokens": "API Tokens", - "nav.backup_restore": "Резервное копирование и восстановление", - "nav.credentials": "Учётные данные", - "nav.dark_mode": "Тёмная тема", - "nav.dashboard": "Панель управления", - "nav.developer_docs": "Документация для разработчиков", - "nav.duplicates": "Дубликаты", - "nav.file_manager": "Менеджер файлов", - "nav.files": "Файлы", - "nav.help": "Помощь", - "nav.help_center": "Центр помощи", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", "nav.imap": "Email Import", - "nav.integrations": "Интеграции", - "nav.light_mode": "Светлая тема", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", "nav.login": "Log In", "nav.logout": "Log Out", - "nav.main_navigation": "Основная навигация", - "nav.notifications": "Уведомления", - "nav.open_main_menu": "Открыть главное меню", - "nav.pipelines": "Конвейеры", - "nav.plan_designer": "Конструктор планов", - "nav.pricing": "Цены", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", "nav.profile": "Profile", "nav.queue": "Queue", - "nav.queue_monitor": "Монитор очереди", - "nav.scheduled_jobs": "Запланированные задачи", - "nav.search": "Поиск", - "nav.settings": "Настройки", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", "nav.shared_links": "Shared Links", "nav.signup": "Sign Up", - "nav.similarity": "Сходство", - "nav.skip_to_content": "Перейти к основному содержанию", - "nav.status": "Статус", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", "nav.subscription": "Subscription", - "nav.toggle_dark_mode": "Переключить тёмную тему", - "nav.toggle_nav": "Переключить меню навигации", - "nav.upload": "Загрузить", - "nav.users": "Пользователи", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", - "notifications.mark_all_read": "Отметить все как прочитанные", + "notifications.mark_all_read": "Mark All as Read", "notifications.mark_all_read_btn": "Mark all read", - "notifications.mark_read": "Отметить как прочитанное", - "notifications.no_notifications": "Нет уведомлений", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", "notifications.page_title": "Notifications", "notifications.tab_inbox": "Inbox", "notifications.tab_settings": "Settings", - "notifications.title": "Уведомления", - "notifications.unread_count": "{count} непрочитанных уведомлений", + "notifications.title": "Notifications", + "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", "pipelines.add_step_btn": "Add Step", - "pipelines.create": "Создать конвейер", + "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": "Редактировать конвейер", + "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", @@ -712,7 +712,7 @@ "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.title": "Processing Pipelines", "queue.active_tasks": "Active Tasks", "queue.auto_refresh_1": "Auto-refreshes every", "queue.auto_refresh_2": "seconds", @@ -762,18 +762,18 @@ "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", - "search.no_results": "Результаты не найдены", + "search.no_results": "No results found", "search.page_title": "Search Documents", - "search.placeholder": "Поиск по имени, содержимому, тегам...", + "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", - "search.results_count": "Найдено результатов: {count}", + "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.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", @@ -797,15 +797,15 @@ "settings.no_results_hint": "Try a different search term or", "settings.page_heading": "Application Settings", "settings.required_label": "(required)", - "settings.reset_confirm": "Вы уверены, что хотите сбросить эту настройку?", + "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": "Не удалось сохранить настройку", + "settings.save_error": "Failed to save setting", "settings.save_setting_title": "Save this setting", - "settings.save_success": "Настройка сохранена", + "settings.save_success": "Setting saved successfully", "settings.saving_state": "Saving…", "settings.search_aria_label": "Search settings", "settings.search_clear_aria": "Clear search", @@ -814,7 +814,7 @@ "settings.source_db_badge": "DB", "settings.source_default_badge": "DEFAULT", "settings.source_env_badge": "ENV", - "settings.title": "Настройки", + "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", @@ -903,11 +903,11 @@ "upload.camera_button": "Take Photo / Scan Document", "upload.download_button": "Download and Process", "upload.downloading": "Downloading file from URL...", - "upload.drag_drop": "Перетащите файлы сюда или нажмите для выбора", + "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.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", "upload.file_size_hint": "Maximum size: 500 MB per file", @@ -915,14 +915,14 @@ "upload.filename_description": "Leave empty to use filename from URL", "upload.filename_label": "Filename (optional)", "upload.filename_placeholder": "my-document.pdf", - "upload.max_size": "Максимальный размер файла: {size}", + "upload.max_size": "Maximum file size: {size}", "upload.page_title": "Upload Files", "upload.section_device": "Upload from Device", "upload.section_url": "Upload from URL", - "upload.select_file": "Выбрать файл", - "upload.success": "Файл успешно загружен", - "upload.title": "Загрузить документ", - "upload.uploading": "Загрузка...", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", "upload.url_label": "File URL", "upload.url_placeholder": "https://example.com/document.pdf" From 62624bc5ff85d8d5b6ff121f2dc6cac35657cdbb Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:06 +0100 Subject: [PATCH 38/71] New translations en.json (Slovak) --- frontend/translations/sk.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/sk.json b/frontend/translations/sk.json index 51e779f2..d36160ed 100644 --- a/frontend/translations/sk.json +++ b/frontend/translations/sk.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Jazyk bol zmenený na {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Slovenčina", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From 5264d6c66c29abe5d4e12f78fcb3dfb6124bad67 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:07 +0100 Subject: [PATCH 39/71] New translations en.json (Slovenian) --- frontend/translations/sl.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/sl.json b/frontend/translations/sl.json index ffd117cf..d36160ed 100644 --- a/frontend/translations/sl.json +++ b/frontend/translations/sl.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Jezik je bil spremenjen na {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Slovenščina", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From 38e2b7736290bd8754d182cf9e0bcc7d3e188060 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:08 +0100 Subject: [PATCH 40/71] New translations en.json (Serbian (Cyrillic)) --- frontend/translations/sr.json | 929 ++++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/sr.json diff --git a/frontend/translations/sr.json b/frontend/translations/sr.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/sr.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From 7b5a0bbab94b4d74be9603e8f992f614bc80d86a Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:09 +0100 Subject: [PATCH 41/71] New translations en.json (Swedish) --- frontend/translations/sv.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/sv.json b/frontend/translations/sv.json index 9a0dd1e5..d36160ed 100644 --- a/frontend/translations/sv.json +++ b/frontend/translations/sv.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Språket ändrades till {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Svenska", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From 57910b7af5b0d75f2df7c41c80c3320276fb5871 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:10 +0100 Subject: [PATCH 42/71] New translations en.json (Turkish) --- frontend/translations/tr.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/tr.json b/frontend/translations/tr.json index 94f348af..d36160ed 100644 --- a/frontend/translations/tr.json +++ b/frontend/translations/tr.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Dil {language} olarak değiştirildi", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Türkçe", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From db4e1f7b6d7363a20c773b7de5d259ca90d4b34e Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:11 +0100 Subject: [PATCH 43/71] New translations en.json (Ukrainian) --- frontend/translations/uk.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/uk.json b/frontend/translations/uk.json index a0d00101..d36160ed 100644 --- a/frontend/translations/uk.json +++ b/frontend/translations/uk.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Мову змінено на {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Українська", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From f61691b8de14b7affc6056ba6d4bd940d4afa209 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:13 +0100 Subject: [PATCH 44/71] New translations en.json (Chinese Simplified) --- frontend/translations/zh.json | 324 +++++++++++++++++----------------- 1 file changed, 162 insertions(+), 162 deletions(-) diff --git a/frontend/translations/zh.json b/frontend/translations/zh.json index 90d3d9e6..d36160ed 100644 --- a/frontend/translations/zh.json +++ b/frontend/translations/zh.json @@ -106,22 +106,22 @@ "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", "auth.forgot_username": "Forgot username?", - "auth.login": "登录", + "auth.login": "Log In", "auth.login_title": "Log In", "auth.logo_alt": "DocuElevate Logo", - "auth.logout": "退出", - "auth.my_account": "我的账户", + "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": "个人资料", + "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": "注册", + "auth.signup": "Sign Up", "auth.signup_title": "Sign Up", "auth.username_label": "Username", "auth.username_or_email": "Username or Email", @@ -184,69 +184,69 @@ "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.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", "common.col_pending": "Pending", - "common.completed": "已完成", - "common.confirm": "确认", - "common.copied": "已复制!", - "common.copy": "复制", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", "common.create": "Create", - "common.created": "创建时间", - "common.date": "日期", - "common.delete": "删除", - "common.description": "描述", - "common.details": "详情", - "common.disabled": "已禁用", - "common.download": "下载", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", "common.duplicate": "Duplicate", - "common.edit": "编辑", - "common.enabled": "已启用", - "common.error": "错误", - "common.failed": "失败", - "common.filter": "筛选", - "common.inactive": "不活跃", - "common.info": "信息", - "common.loading": "加载中...", - "common.name": "名称", - "common.next": "下一步", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "common.loading": "Loading...", + "common.name": "Name", + "common.next": "Next", "common.next_page": "Next page", - "common.no": "否", - "common.none": "无", + "common.no": "No", + "common.none": "None", "common.page": "Page", - "common.pending": "待处理", + "common.pending": "Pending", "common.prev_page": "Previous page", "common.previous": "Previous", - "common.processing": "处理中", - "common.refresh": "刷新", - "common.reset": "重置", - "common.retry": "重试", - "common.save": "保存", - "common.search": "搜索", - "common.select": "选择", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", "common.select_placeholder": "— select —", - "common.size": "大小", - "common.status": "状态", + "common.size": "Size", + "common.status": "Status", "common.submit": "Submit", - "common.success": "成功", + "common.success": "Success", "common.tags": "Tags", - "common.type": "类型", - "common.updated": "更新时间", - "common.upload": "上传", - "common.view": "查看", - "common.warning": "警告", - "common.yes": "是", - "cookie.accept": "我知道了", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", "cookie.learn_more": "Learn more", "cookie.message": "This website uses cookies to improve your experience.", - "cookie.notice": "DocuElevate 仅使用身份验证和服务运行所需的基本会话 Cookie。不使用任何跟踪或分析 Cookie。", - "cookie.notice_label": "Cookie 通知", - "cookie.policy_link": "Cookie 政策", - "cookie.privacy_link": "隐私声明", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", @@ -270,16 +270,16 @@ "credentials.table_for": "Credentials for", "credentials.title": "Credential Audit", "credentials.total_credentials": "Total Credentials", - "dashboard.active_integrations": "活跃集成", - "dashboard.files_this_month": "本月文件", - "dashboard.files_today": "今日文件", - "dashboard.ocr_processed": "OCR 已处理", - "dashboard.quick_actions": "快捷操作", - "dashboard.recent_activity": "最近活动", - "dashboard.storage_targets": "存储目标", - "dashboard.title": "仪表盘", - "dashboard.total_files": "文件总数", - "dashboard.welcome": "欢迎使用 DocuElevate", + "dashboard.active_integrations": "Active Integrations", + "dashboard.files_this_month": "Files This Month", + "dashboard.files_today": "Files Today", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "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", @@ -317,14 +317,14 @@ "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": "页面未找到", - "error.not_found_message": "您要查找的页面不存在。", - "error.server_error": "服务器内部错误", - "error.server_error_message": "出了点问题,请稍后再试。", - "error.unauthorized": "未授权", - "error.unauthorized_message": "您需要登录才能访问此页面。", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", "files.action_delete": "Delete file", "files.action_details": "View details", "files.action_preview": "Quick preview", @@ -337,12 +337,12 @@ "files.delete_modal_confirm": "Delete", "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", - "files.document_title": "文档标题", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", "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.file_size": "File Size", + "files.filename": "Filename", "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", @@ -366,10 +366,10 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", - "files.no_files": "未找到文件", - "files.ocr_status": "OCR 状态", + "files.no_files": "No files found", + "files.ocr_status": "OCR Status", "files.page_title": "File Records", "files.pagination_files": "files", "files.pagination_first": "First", @@ -399,23 +399,23 @@ "files.table_mime_type": "MIME Type", "files.table_original_filename": "Original Filename", "files.table_select_all": "Select all files on this page", - "files.tags": "标签", - "files.title": "文件", + "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": "已上传", + "files.uploaded": "Uploaded", "footer.about": "About", "footer.attribution": "Attribution", - "footer.attributions": "致谢", - "footer.cookies": "Cookie", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", - "footer.imprint": "法律声明", - "footer.license": "许可", - "footer.navigation": "页脚导航", - "footer.privacy": "隐私", - "footer.terms": "条款", - "footer.version": "版本 {version}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", "help.destinations_dropbox": "Dropbox", "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", "help.destinations_email": "Email Forwarding", @@ -435,8 +435,8 @@ "help.destinations_sftp_desc": "Secure file transfer to any server.", "help.destinations_webhook": "Webhook", "help.destinations_webhook_desc": "POST metadata to any external endpoint.", - "help.documentation": "文档", - "help.faq": "常见问题", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", "help.faq_1_q": "How do I upload documents?", "help.faq_2_a": "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.", @@ -448,7 +448,7 @@ "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", "help.faq_5_q": "Is my data secure?", "help.faq_heading": "Frequently Asked Questions", - "help.getting_started": "入门指南", + "help.getting_started": "Getting Started", "help.heading": "Help Center", "help.page_title": "Help Center", "help.privacy_notice": "Privacy Notice", @@ -469,13 +469,13 @@ "help.sources_web_upload": "Web Upload", "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", - "help.support": "支持", + "help.support": "Support", "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", "help.support_ticket_button": "Submit a Ticket", "help.support_ticket_heading": "Open a Support Ticket", - "help.title": "帮助中心", + "help.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.", "help.workflows_heading": "Workflows & Pipelines", @@ -570,24 +570,24 @@ "index.usage_my_usage": "My usage", "index.usage_today": "Files today", "index.usage_unlimited": "Unlimited", - "integrations.configure": "配置", - "integrations.connect": "连接", - "integrations.connected": "已连接", - "integrations.disconnect": "断开", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", "integrations.empty_state": "No integrations configured", "integrations.folder_label": "Folder", "integrations.host_label": "Host", "integrations.imap_settings": "IMAP Settings", - "integrations.not_connected": "未连接", + "integrations.not_connected": "Not Connected", "integrations.page_title": "Integrations", "integrations.password_label": "Password", "integrations.port_label": "Port", - "integrations.title": "集成", + "integrations.title": "Integrations", "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "语言已更改为{language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "语言", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", @@ -619,77 +619,77 @@ "language.tr": "Türkçe", "language.uk": "Українська", "language.zh": "中文", - "nav.about": "关于", - "nav.admin": "管理", + "nav.about": "About", + "nav.admin": "Admin", "nav.admin.audit_logs": "Audit Logs", "nav.admin.backups": "Backups", "nav.admin.plans": "Plans", "nav.admin.scheduled_jobs": "Scheduled Jobs", "nav.admin.users": "Users", - "nav.admin_actions": "管理操作", - "nav.admin_menu": "管理菜单", - "nav.api_docs": "API 文档", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", "nav.api_tokens": "API Tokens", - "nav.backup_restore": "备份与恢复", - "nav.credentials": "凭据", - "nav.dark_mode": "深色模式", - "nav.dashboard": "仪表盘", - "nav.developer_docs": "开发者文档", - "nav.duplicates": "重复文件", - "nav.file_manager": "文件管理器", - "nav.files": "文件", - "nav.help": "帮助", - "nav.help_center": "帮助中心", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", "nav.imap": "Email Import", - "nav.integrations": "集成", - "nav.light_mode": "浅色模式", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", "nav.login": "Log In", "nav.logout": "Log Out", - "nav.main_navigation": "主导航", - "nav.notifications": "通知", - "nav.open_main_menu": "打开主菜单", - "nav.pipelines": "处理流程", - "nav.plan_designer": "方案设计", - "nav.pricing": "价格", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", "nav.profile": "Profile", "nav.queue": "Queue", - "nav.queue_monitor": "队列监控", - "nav.scheduled_jobs": "计划任务", - "nav.search": "搜索", - "nav.settings": "设置", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", "nav.shared_links": "Shared Links", "nav.signup": "Sign Up", - "nav.similarity": "相似度", - "nav.skip_to_content": "跳至主要内容", - "nav.status": "状态", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", "nav.subscription": "Subscription", - "nav.toggle_dark_mode": "切换深色模式", - "nav.toggle_nav": "切换导航菜单", - "nav.upload": "上传", - "nav.users": "用户", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", - "notifications.mark_all_read": "全部标记为已读", + "notifications.mark_all_read": "Mark All as Read", "notifications.mark_all_read_btn": "Mark all read", - "notifications.mark_read": "标记为已读", - "notifications.no_notifications": "没有通知", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", "notifications.page_title": "Notifications", "notifications.tab_inbox": "Inbox", "notifications.tab_settings": "Settings", - "notifications.title": "通知", - "notifications.unread_count": "{count} 条未读通知", + "notifications.title": "Notifications", + "notifications.unread_count": "{count} unread notifications", "pipelines.active_label": "Active", "pipelines.add_step_btn": "Add Step", - "pipelines.create": "创建流程", + "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": "编辑流程", + "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", @@ -712,7 +712,7 @@ "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.title": "Processing Pipelines", "queue.active_tasks": "Active Tasks", "queue.auto_refresh_1": "Auto-refreshes every", "queue.auto_refresh_2": "seconds", @@ -762,18 +762,18 @@ "search.input_aria_label": "Search documents", "search.input_placeholder": "Search documents by content, sender, tags, type...", "search.loading_indicator": "Searching…", - "search.no_results": "未找到结果", + "search.no_results": "No results found", "search.page_title": "Search Documents", - "search.placeholder": "按文件名、内容、标签搜索...", + "search.placeholder": "Search by filename, content, tags...", "search.result_empty": "No documents found matching your query.", - "search.results_count": "找到 {count} 个结果", + "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.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", @@ -797,15 +797,15 @@ "settings.no_results_hint": "Try a different search term or", "settings.page_heading": "Application Settings", "settings.required_label": "(required)", - "settings.reset_confirm": "确定要重置此设置吗?", + "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": "设置保存失败", + "settings.save_error": "Failed to save setting", "settings.save_setting_title": "Save this setting", - "settings.save_success": "设置保存成功", + "settings.save_success": "Setting saved successfully", "settings.saving_state": "Saving…", "settings.search_aria_label": "Search settings", "settings.search_clear_aria": "Clear search", @@ -814,7 +814,7 @@ "settings.source_db_badge": "DB", "settings.source_default_badge": "DEFAULT", "settings.source_env_badge": "ENV", - "settings.title": "设置", + "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", @@ -903,11 +903,11 @@ "upload.camera_button": "Take Photo / Scan Document", "upload.download_button": "Download and Process", "upload.downloading": "Downloading file from URL...", - "upload.drag_drop": "将文件拖放到此处或点击浏览", + "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.error": "Upload failed", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", "upload.file_size_hint": "Maximum size: 500 MB per file", @@ -915,14 +915,14 @@ "upload.filename_description": "Leave empty to use filename from URL", "upload.filename_label": "Filename (optional)", "upload.filename_placeholder": "my-document.pdf", - "upload.max_size": "最大文件大小:{size}", + "upload.max_size": "Maximum file size: {size}", "upload.page_title": "Upload Files", "upload.section_device": "Upload from Device", "upload.section_url": "Upload from URL", - "upload.select_file": "选择文件", - "upload.success": "文件上传成功", - "upload.title": "上传文档", - "upload.uploading": "上传中...", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", "upload.url_label": "File URL", "upload.url_placeholder": "https://example.com/document.pdf" From e5beb48f693660732eb70e7d9325475618615387 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:15 +0100 Subject: [PATCH 45/71] New translations en.json (Vietnamese) --- frontend/translations/vi.json | 929 ++++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/vi.json diff --git a/frontend/translations/vi.json b/frontend/translations/vi.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/vi.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From 250b008304360b1eeb020cf446402086aad1bf67 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:16 +0100 Subject: [PATCH 46/71] New translations en.json (Galician) --- frontend/translations/gl.json | 929 ++++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/gl.json diff --git a/frontend/translations/gl.json b/frontend/translations/gl.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/gl.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From 53736a1906927b88a7296ab4fdafcce1855ef253 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:18 +0100 Subject: [PATCH 47/71] New translations en.json (Persian) --- frontend/translations/fa.json | 929 ++++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/fa.json diff --git a/frontend/translations/fa.json b/frontend/translations/fa.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/fa.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From 0da97eb092c74b317f0ee39dcd4000a78f39d6df Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:19 +0100 Subject: [PATCH 48/71] New translations en.json (Estonian) --- frontend/translations/et.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/et.json b/frontend/translations/et.json index 48d0860e..d36160ed 100644 --- a/frontend/translations/et.json +++ b/frontend/translations/et.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Keel muudeti keelele {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Eesti", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From 23ee85f6b9b9f174e8209fe72e6cf32bfa9b9768 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:20 +0100 Subject: [PATCH 49/71] New translations en.json (Latvian) --- frontend/translations/lv.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/lv.json b/frontend/translations/lv.json index 3f4caf8f..d36160ed 100644 --- a/frontend/translations/lv.json +++ b/frontend/translations/lv.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Valoda tika nomainīta uz {language}", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Latviešu", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From 300cc2a981bcfa6ac8953e123c591169875686a0 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:21 +0100 Subject: [PATCH 50/71] New translations en.json (Welsh) --- frontend/translations/cy.json | 929 ++++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/cy.json diff --git a/frontend/translations/cy.json b/frontend/translations/cy.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/cy.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From fb3d87bd46301dd4443dc93f2d1a10304bd4bb88 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:22 +0100 Subject: [PATCH 51/71] New translations en.json (Esperanto) --- frontend/translations/eo.json | 929 ++++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/eo.json diff --git a/frontend/translations/eo.json b/frontend/translations/eo.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/eo.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From aa5f497620b0f463439f1ff7b9950fe0eba3326a Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:23 +0100 Subject: [PATCH 52/71] New translations en.json (Luxembourgish) --- frontend/translations/lb.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/lb.json b/frontend/translations/lb.json index 14620da6..d36160ed 100644 --- a/frontend/translations/lb.json +++ b/frontend/translations/lb.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "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.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", @@ -366,7 +366,7 @@ "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_label": "Full-Text Search (OCR text, metadata, tags)", "files.fulltext_search_placeholder": "Search document content, sender, tags, type...", "files.no_files": "No files found", "files.ocr_status": "OCR Status", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "D'Sprooch gouf op {language} geännert", + "language.changed": "Language changed to {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Lëtzebuergesch", + "language.selector": "Language", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From 5046d05dea6d0b2f4d9f5ee51229ee7dd4e5e6b6 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:24 +0100 Subject: [PATCH 53/71] New translations en.json (Flemish) --- frontend/translations/vls.json | 929 +++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/vls.json diff --git a/frontend/translations/vls.json b/frontend/translations/vls.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/vls.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From f1afd475fc17b581bfd0de5c6e3e79227500d6ef Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:25 +0100 Subject: [PATCH 54/71] New translations en.json (Kannada) --- frontend/translations/kn.json | 929 ++++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/kn.json diff --git a/frontend/translations/kn.json b/frontend/translations/kn.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/kn.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From 75f4d55972911f3cb548baabd2b5cc9f155e1263 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:26 +0100 Subject: [PATCH 55/71] New translations en.json (Low German) --- frontend/translations/nds.json | 929 +++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/nds.json diff --git a/frontend/translations/nds.json b/frontend/translations/nds.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/nds.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From 15b37950e95b18c444661d0fda7f7da4cc10c222 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:35:27 +0100 Subject: [PATCH 56/71] New translations en.json (Limburgish) --- frontend/translations/li.json | 929 ++++++++++++++++++++++++++++++++++ 1 file changed, 929 insertions(+) create mode 100644 frontend/translations/li.json diff --git a/frontend/translations/li.json b/frontend/translations/li.json new file mode 100644 index 00000000..d36160ed --- /dev/null +++ b/frontend/translations/li.json @@ -0,0 +1,929 @@ +{ + "about.creator_heading": "Meet the Creator", + "about.creator_name": "Christian Krakau-Louis", + "about.creator_pre": "DocuElevate is passionately developed by", + "about.features_admin_api": "Powerful REST API for programmatic access", + "about.features_admin_config": "Highly configurable via environment variables", + "about.features_admin_docker": "Docker-ready for easy deployment and scaling", + "about.features_admin_heading": "Administration", + "about.features_admin_oauth2": "OAuth2 authentication support with Authentik", + "about.features_automation_background": "Background processing with Redis and Celery", + "about.features_automation_gmail": "Gmail and generic email account integration", + "about.features_automation_heading": "Automation", + "about.features_automation_imap": "IMAP inbox polling from multiple sources", + "about.features_automation_ingestion": "Automated document ingestion from various inputs", + "about.features_heading": "Key Features", + "about.features_integration_cloud": "Cloud storage: Dropbox, Google Drive, OneDrive, Amazon S3", + "about.features_integration_heading": "Integration & Storage", + "about.features_integration_multi_dest": "Multi-destination support (store documents in multiple locations)", + "about.features_integration_protocols": "Transfer protocols: FTP, SFTP, Email forwarding", + "about.features_integration_selfhosted": "Self-hosted options: Nextcloud, Paperless NGX, WebDAV", + "about.features_processing_classification": "Intelligent document classification and date extraction", + "about.features_processing_heading": "Document Processing", + "about.features_processing_metadata": "Automated metadata extraction using a pluggable AI provider", + "about.features_processing_ocr": "OCR powered by Azure Document Intelligence", + "about.features_processing_pdf": "PDF conversion for various file formats via Gotenberg", + "about.features_processing_upload": "Simple and secure file uploads with drag & drop support", + "about.github_logo_alt": "GitHub Logo", + "about.heading": "About DocuElevate", + "about.intro_post": " – your modern, intelligent solution for document processing! We’ve built DocuElevate to completely transform the way you handle your documents – from upload to extraction, from processing to storage.", + "about.intro_pre": "Welcome to ", + "about.involved_description": "Want to dive into the code, contribute ideas, or learn more about DocuElevate?", + "about.involved_docs": "Read the Documentation", + "about.involved_github": "View DocuElevate on GitHub", + "about.involved_heading": "Get Involved", + "about.involved_website": "Visit DocuElevate Website", + "about.legal_description": "We care about your privacy and data security. Please review our:", + "about.legal_heading": "Privacy & Legal", + "about.legal_license": "License Information", + "about.legal_privacy": "Privacy Notice", + "about.page_title": "About DocuElevate", + "about.story_heading": "Our Story", + "about.story_p1": "DocuElevate was created with one goal in mind: to simplify and streamline document management for everyone, whether you’re a small startup or a large enterprise.", + "about.story_p2": "We harness the power of pluggable AI providers (OpenAI, Anthropic Claude, Google Gemini, Ollama, OpenRouter, Portkey, and more) for metadata extraction and text refinement, integrate seamlessly with Dropbox, Nextcloud, and Paperless NGX for storage and indexing, leverage Azure Document Intelligence for OCR, and even use Gotenberg for file-to-PDF conversions.", + "api_tokens.col_created": "Created", + "api_tokens.col_last_ip": "Last IP", + "api_tokens.col_last_used": "Last Used", + "api_tokens.col_name": "Name", + "api_tokens.col_prefix": "Token Prefix", + "api_tokens.copy_to_clipboard": "Copy token to clipboard", + "api_tokens.copy_upload_example": "Copy upload example to clipboard", + "api_tokens.copy_warning_1": "Copy this token now — it will", + "api_tokens.copy_warning_2": "not be shown again", + "api_tokens.create_heading": "Create New Token", + "api_tokens.create_token": "Create Token", + "api_tokens.creating": "Creating…", + "api_tokens.heading": "API Tokens", + "api_tokens.intro": "Create personal API tokens to interact with the DocuElevate API programmatically. Use tokens for webhook uploads, CI/CD pipelines, or any script that needs to upload or retrieve documents.", + "api_tokens.loading_tokens": "Loading tokens…", + "api_tokens.never": "Never", + "api_tokens.no_tokens_heading": "No API tokens yet", + "api_tokens.no_tokens_help": "Create your first token above to get started.", + "api_tokens.page_title": "API Tokens – DocuElevate", + "api_tokens.revoke": "Revoke", + "api_tokens.revoke_prefix": "Revoke token", + "api_tokens.status_active": "Active", + "api_tokens.status_revoked": "Revoked", + "api_tokens.table_aria": "API Tokens", + "api_tokens.token_created": "Token created successfully!", + "api_tokens.token_name_label": "Token name", + "api_tokens.token_name_placeholder": "e.g. CI Pipeline, Webhook Upload, My Script", + "api_tokens.usage_heading": "Usage Example", + "api_tokens.usage_intro_post": "header with any API request:", + "api_tokens.usage_intro_pre": "Use your API token in the", + "api_tokens.your_tokens": "Your Tokens", + "app.name": "DocuElevate", + "audit.col_ip": "IP", + "audit.col_resource": "Resource", + "audit.col_timestamp": "Timestamp", + "audit.critical": "Critical", + "audit.filter_action": "Action", + "audit.filter_all_actions": "All actions", + "audit.filter_all_users": "All users", + "audit.filter_resource_placeholder": "e.g. document, user", + "audit.filter_resource_type": "Resource Type", + "audit.filter_severity": "Severity", + "audit.filter_user": "User", + "audit.filters_section_label": "Audit log filters", + "audit.next": "Next", + "audit.next_label": "Next page", + "audit.no_events": "No audit events recorded yet.", + "audit.no_events_hint": "Significant actions (logins, document operations, settings changes) will appear here.", + "audit.page_title": "Audit Logs - DocuElevate", + "audit.pagination_label": "Audit log pagination", + "audit.prev": "Prev", + "audit.prev_label": "Previous page", + "audit.refresh_label": "Refresh audit logs", + "audit.siem_disabled_title": "SIEM forwarding is disabled", + "audit.siem_enabled_title": "Events are being forwarded to ", + "audit.siem_off": "SIEM: Off", + "audit.subtitle": "Comprehensive, append-only record of all significant actions.", + "audit.table_label": "Audit log events", + "audit.title": "Audit Logs", + "auth.confirm_password": "Confirm Password", + "auth.create_account": "Create account", + "auth.display_name_label": "Display Name", + "auth.email_label": "Email", + "auth.forgot_password": "Forgot Password?", + "auth.forgot_username": "Forgot username?", + "auth.login": "Log In", + "auth.login_title": "Log In", + "auth.logo_alt": "DocuElevate Logo", + "auth.logout": "Log Out", + "auth.my_account": "My Account", + "auth.no_account": "Don't have an account?", + "auth.or_continue_with": "Or continue with", + "auth.password_label": "Password", + "auth.profile": "Profile", + "auth.remember_me": "Remember me", + "auth.return_home": "Return to Home", + "auth.sign_in": "Sign in", + "auth.sign_in_sso": "Sign in with SSO", + "auth.sign_in_with": "Sign in with", + "auth.sign_in_with_username": "Sign in with username", + "auth.signup": "Sign Up", + "auth.signup_title": "Sign Up", + "auth.username_label": "Username", + "auth.username_or_email": "Username or Email", + "auth.verify_email_back_sign_in": "Back to sign in", + "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", + "auth.verify_email_heading": "Check your inbox", + "auth.verify_email_message": "We’ve sent you a verification email. Please click the link in the email to activate your account.", + "auth.verify_email_page_title": "DocuElevate - Verify Your Email", + "auth.verify_email_resend_aria_label": "Email address for resend", + "auth.verify_email_resend_button": "Resend verification email", + "auth.verify_email_resend_label": "Email address", + "auth.verify_email_resend_placeholder": "Enter your email address", + "auth.verify_email_resend_prompt": "Didn’t receive it?", + "backup.archives_heading": "Backup Archives", + "backup.backup_now": "Backup Now", + "backup.clean_up": "Clean Up", + "backup.cleanup_title": "Run retention cleanup now", + "backup.col_created": "Created", + "backup.col_filename": "Filename", + "backup.col_size": "Size", + "backup.col_storage": "Storage", + "backup.col_type": "Type", + "backup.config_auto_backup": "Auto-backup", + "backup.config_remote_dest": "Remote destination", + "backup.config_retention": "Retention", + "backup.config_total_size": "Total local size", + "backup.confirm_btn": "Confirm", + "backup.confirm_title": "Confirm action", + "backup.heading": "Backup Management", + "backup.local_only": "Local only", + "backup.no_backups": "No backups yet.", + "backup.no_backups_hint": "Click Backup Now to create your first backup.", + "backup.page_title": "Backup Management", + "backup.records_label": "records", + "backup.restore_btn": "Restore", + "backup.restore_desc_mid": "backup archive to restore the database.", + "backup.restore_desc_pre": "Upload a", + "backup.restore_desc_warning": "This will overwrite all current data.", + "backup.restore_file_label": "Backup archive (.db.gz)", + "backup.restore_heading": "Restore from File", + "backup.restoring": "Restoring…", + "backup.retention_daily_detail": "– kept for 3 weeks", + "backup.retention_heading": "Retention policy", + "backup.retention_hourly_detail": "– kept for 4 days", + "backup.retention_note": "Backups beyond these limits are automatically pruned after each new backup is created.", + "backup.retention_weekly_detail": "– kept for ~3 months", + "backup.snapshots": "snapshots", + "backup.status_ok": "ok", + "backup.storage_local": "local", + "backup.subtitle": "Database backups are created automatically: hourly (4 days), daily (3 weeks), weekly (13 weeks).", + "backup.table_aria": "Backup archives", + "backup.trigger_daily": "Backup Now (Daily)", + "backup.trigger_hourly": "Backup Now (Hourly)", + "backup.trigger_weekly": "Backup Now (Weekly)", + "backup.type_daily": "Daily", + "backup.type_hourly": "Hourly", + "backup.type_weekly": "Weekly", + "billing.go_to_dashboard": "Go to dashboard", + "billing.manage_subscription": "Manage subscription", + "billing.success_heading": "You're all set!", + "billing.success_message": "Your subscription has been activated. Thank you for choosing DocuElevate!", + "billing.success_page_title": "DocuElevate - Subscription Activated", + "common.actions": "Actions", + "common.active": "Active", + "common.all": "All", + "common.back": "Back", + "common.cancel": "Cancel", + "common.close": "Close", + "common.col_pending": "Pending", + "common.completed": "Completed", + "common.confirm": "Confirm", + "common.copied": "Copied!", + "common.copy": "Copy", + "common.create": "Create", + "common.created": "Created", + "common.date": "Date", + "common.delete": "Delete", + "common.description": "Description", + "common.details": "Details", + "common.disabled": "Disabled", + "common.download": "Download", + "common.duplicate": "Duplicate", + "common.edit": "Edit", + "common.enabled": "Enabled", + "common.error": "Error", + "common.failed": "Failed", + "common.filter": "Filter", + "common.inactive": "Inactive", + "common.info": "Info", + "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.previous": "Previous", + "common.processing": "Processing", + "common.refresh": "Refresh", + "common.reset": "Reset", + "common.retry": "Retry", + "common.save": "Save", + "common.search": "Search", + "common.select": "Select", + "common.select_placeholder": "— select —", + "common.size": "Size", + "common.status": "Status", + "common.submit": "Submit", + "common.success": "Success", + "common.tags": "Tags", + "common.type": "Type", + "common.updated": "Updated", + "common.upload": "Upload", + "common.view": "View", + "common.warning": "Warning", + "common.yes": "Yes", + "cookie.accept": "Got it", + "cookie.learn_more": "Learn more", + "cookie.message": "This website uses cookies to improve your experience.", + "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", + "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", + "dashboard.ocr_processed": "OCR Processed", + "dashboard.quick_actions": "Quick Actions", + "dashboard.recent_activity": "Recent Activity", + "dashboard.storage_targets": "Storage Targets", + "dashboard.title": "Dashboard", + "dashboard.total_files": "Total Files", + "dashboard.welcome": "Welcome to DocuElevate", + "duplicates.file_id_label": "File ID", + "duplicates.file_id_placeholder": "e.g. 42", + "duplicates.find_btn": "Find", + "duplicates.found_files": "duplicate file(s) total.", + "duplicates.found_groups": "duplicate group(s) with", + "duplicates.found_prefix": "Found", + "duplicates.group_aria": "Duplicate group", + "duplicates.heading": "Duplicate Documents", + "duplicates.how_it_works_heading": "How near-duplicate detection works", + "duplicates.max_results_label": "Max results", + "duplicates.near_dup_desc": "Select a document to check whether any other files contain the same (or very similar) content — even if they were scanned at different times and have different SHA-256 hashes.", + "duplicates.near_dup_heading": "Find Near-Duplicates for a Document", + "duplicates.no_exact_heading": "No exact duplicates found", + "duplicates.page_title": "Duplicate Documents - DocuElevate", + "duplicates.pagination_aria": "Pagination", + "duplicates.role_duplicate": "Duplicate", + "duplicates.role_original": "Original", + "duplicates.tab_exact": "Exact Duplicates", + "duplicates.tab_near": "Near-Duplicate Finder", + "duplicates.tabs_aria": "Duplicate detection tabs", + "duplicates.threshold_label": "Similarity threshold", + "duplicates.view_dup_aria": "View duplicate file", + "duplicates.view_original_aria": "View original file", + "error.404_code": "404", + "error.404_heading": "Oops, we couldn’t find that page!", + "error.404_home": "Return Home", + "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_title": "404 - Not Found", + "error.500_code": "500", + "error.500_debug_info": "Show Debug Info", + "error.500_description": "Our servers encountered a mishap and need a moment.", + "error.500_heading": "Oops! Something Went Wrong.", + "error.500_home": "Go Home", + "error.500_img_alt": "Illustration of a server error", + "error.500_message1": "Our servers encountered a mishap and need a moment. Maybe the hamsters spilled their coffee?", + "error.500_message2": "We're already on it—sorting files, rebooting servers, and recalibrating flux capacitors.", + "error.500_title": "Server Error - DocuElevate", + "error.forbidden": "Forbidden", + "error.forbidden_message": "You do not have permission to access this page.", + "error.not_found": "Page not found", + "error.not_found_message": "The page you are looking for does not exist.", + "error.server_error": "Internal Server Error", + "error.server_error_message": "Something went wrong. Please try again later.", + "error.unauthorized": "Unauthorized", + "error.unauthorized_message": "You need to log in to access this page.", + "files.action_delete": "Delete file", + "files.action_details": "View details", + "files.action_preview": "Quick preview", + "files.bulk_clear_selection": "Clear Selection", + "files.bulk_cloud_ocr": "Re-run Cloud OCR", + "files.bulk_delete": "Delete Selected", + "files.bulk_download": "Download as ZIP", + "files.bulk_reprocess": "Reprocess Selected", + "files.delete_modal_cancel": "Cancel", + "files.delete_modal_confirm": "Delete", + "files.delete_modal_message": "Are you sure you want to delete this file?", + "files.delete_modal_title": "Confirm Deletion", + "files.document_title": "Document Title", + "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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 (OCR text, metadata, tags)", + "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", + "files.table_mime_type": "MIME Type", + "files.table_original_filename": "Original Filename", + "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.about": "About", + "footer.attribution": "Attribution", + "footer.attributions": "Attributions", + "footer.cookies": "Cookies", + "footer.copyright": "DocuElevate {year}", + "footer.imprint": "Imprint", + "footer.license": "License", + "footer.navigation": "Footer navigation", + "footer.privacy": "Privacy", + "footer.terms": "Terms", + "footer.version": "Version {version}", + "help.destinations_dropbox": "Dropbox", + "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", + "help.destinations_email": "Email Forwarding", + "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_google_drive": "Google Drive", + "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", + "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_nextcloud": "Nextcloud / WebDAV", + "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_onedrive": "OneDrive", + "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_paperless": "Paperless-ngx", + "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_s3": "Amazon S3", + "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_sftp": "SFTP / FTP", + "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_webhook": "Webhook", + "help.destinations_webhook_desc": "POST metadata to any external endpoint.", + "help.documentation": "Documentation", + "help.faq": "Frequently Asked Questions", + "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.faq_1_q": "How do I upload documents?", + "help.faq_2_a": "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_q": "Which file formats are supported?", + "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", + "help.faq_3_q": "Can I ingest documents from email?", + "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", + "help.faq_4_q": "How do processing pipelines work?", + "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", + "help.faq_5_q": "Is my data secure?", + "help.faq_heading": "Frequently Asked Questions", + "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.", + "help.quickstart_upload": "Upload Documents", + "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", + "help.quickstart_workflows": "Automate Workflows", + "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", + "help.sources_email_ingestion": "Email Ingestion (IMAP)", + "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", + "help.sources_heading": "Sources – Getting Documents In", + "help.sources_rest_api": "REST API", + "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", + "help.sources_scanner": "Scanner & Mobile", + "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", + "help.sources_web_upload": "Web Upload", + "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", + "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "help.support": "Support", + "help.support_admin_message": "Contact your administrator for support information.", + "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", + "help.support_heading": "Contact Support", + "help.support_ticket_button": "Submit a Ticket", + "help.support_ticket_heading": "Open a Support Ticket", + "help.title": "Help Center", + "help.workflows_creating": "Creating a Pipeline", + "help.workflows_definition": "A Pipeline is a series of processing steps that run automatically whenever a document is ingested. Each step can transform, enrich, or route the document.", + "help.workflows_heading": "Workflows & Pipelines", + "help.workflows_step_1": "Convert to PDF", + "help.workflows_step_1_create": "Go to Pipelines in the main menu.", + "help.workflows_step_2": "OCR – extract text", + "help.workflows_step_2_create": "Click New Pipeline and give it a name.", + "help.workflows_step_3": "AI metadata extraction", + "help.workflows_step_3_create": "Add the processing steps you need.", + "help.workflows_step_4": "Deliver to one or more destinations", + "help.workflows_step_4_create": "Choose one or more delivery destinations.", + "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", + "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", + "index.capabilities_paperless": "Paperless-ngx integration for document management", + "index.capabilities_title": "Capabilities", + "index.capabilities_workflows": "Automated classification & routing workflows", + "index.cta_description": "Join teams already automating their document processing with DocuElevate.", + "index.cta_heading": "Ready to elevate your document workflow?", + "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", + "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", + "index.feature_email": "Email & IMAP Ingestion", + "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", + "index.feature_ocr": "OCR & Text Extraction", + "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", + "index.feature_pipelines": "Custom Pipelines", + "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", + "index.feature_search": "Full-Text Search", + "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", + "index.feature_section_title": "Everything you need for smart document workflows", + "index.getting_started": "Getting Started", + "index.getting_started_1": "Configure integrations via System Status", + "index.getting_started_2": "Upload your first document", + "index.getting_started_3": "Review results in Files", + "index.getting_started_learn": "Learn more about DocuElevate", + "index.hero_description": "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_heading": "From upload to insight — automatically.", + "index.hero_login": "Log In", + "index.hero_pricing": "View Plans & Pricing", + "index.hero_signup": "Get Started — it’s free", + "index.integrations_active": "Active integrations", + "index.integrations_storage": "Storage targets", + "index.integrations_title": "Integrations", + "index.integrations_view_status": "View system status", + "index.page_title_dashboard": "Dashboard", + "index.page_title_public": "Intelligent Document Processing", + "index.platform_overview": "Platform overview", + "index.quick_actions": "Quick Actions", + "index.quick_documents": "My Documents", + "index.quick_documents_desc": "Browse your processed files", + "index.quick_search": "Search", + "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", + "index.tier_view_details": "View full details", + "index.upgrade_daily_limits": "Higher daily & monthly limits", + "index.upgrade_description": "Unlock more documents, more destinations and priority support.", + "index.upgrade_destinations": "More storage destinations", + "index.upgrade_ocr_pages": "More OCR pages", + "index.upgrade_plan": "Upgrade your plan", + "index.upgrade_view_pricing": "View plans & pricing", + "index.usage_lifetime": "Lifetime files", + "index.usage_month": "Files this month", + "index.usage_my_usage": "My usage", + "index.usage_today": "Files today", + "index.usage_unlimited": "Unlimited", + "integrations.configure": "Configure", + "integrations.connect": "Connect", + "integrations.connected": "Connected", + "integrations.disconnect": "Disconnect", + "integrations.empty_state": "No integrations configured", + "integrations.folder_label": "Folder", + "integrations.host_label": "Host", + "integrations.imap_settings": "IMAP Settings", + "integrations.not_connected": "Not Connected", + "integrations.page_title": "Integrations", + "integrations.password_label": "Password", + "integrations.port_label": "Port", + "integrations.title": "Integrations", + "integrations.username_label": "Username", + "language.bg": "Български", + "language.ca": "Català", + "language.change_success": "Language changed to {language}", + "language.changed": "Language changed to {language}", + "language.cs": "Čeština", + "language.da": "Dansk", + "language.de": "Deutsch", + "language.el": "Ελληνικά", + "language.en": "English", + "language.es": "Español", + "language.et": "Eesti", + "language.fi": "Suomi", + "language.fr": "Français", + "language.ga": "Gaeilge", + "language.hr": "Hrvatski", + "language.hu": "Magyar", + "language.is": "Íslenska", + "language.it": "Italiano", + "language.lb": "Lëtzebuergesch", + "language.lt": "Lietuvių", + "language.lv": "Latviešu", + "language.nb": "Norsk", + "language.nl": "Nederlands", + "language.pl": "Polski", + "language.pt": "Português", + "language.ro": "Română", + "language.ru": "Русский", + "language.selector": "Language", + "language.selector_label": "Select language", + "language.sk": "Slovenčina", + "language.sl": "Slovenščina", + "language.sv": "Svenska", + "language.tr": "Türkçe", + "language.uk": "Українська", + "language.zh": "中文", + "nav.about": "About", + "nav.admin": "Admin", + "nav.admin.audit_logs": "Audit Logs", + "nav.admin.backups": "Backups", + "nav.admin.plans": "Plans", + "nav.admin.scheduled_jobs": "Scheduled Jobs", + "nav.admin.users": "Users", + "nav.admin_actions": "Admin actions", + "nav.admin_menu": "Admin menu", + "nav.api_docs": "API Docs", + "nav.api_tokens": "API Tokens", + "nav.backup_restore": "Backup & Restore", + "nav.credentials": "Credentials", + "nav.dark_mode": "Dark Mode", + "nav.dashboard": "Dashboard", + "nav.developer_docs": "Developer Docs", + "nav.duplicates": "Duplicates", + "nav.file_manager": "File Manager", + "nav.files": "Files", + "nav.help": "Help", + "nav.help_center": "Help Center", + "nav.imap": "Email Import", + "nav.integrations": "Integrations", + "nav.light_mode": "Light Mode", + "nav.login": "Log In", + "nav.logout": "Log Out", + "nav.main_navigation": "Main navigation", + "nav.notifications": "Notifications", + "nav.open_main_menu": "Open main menu", + "nav.pipelines": "Pipelines", + "nav.plan_designer": "Plan Designer", + "nav.pricing": "Pricing", + "nav.profile": "Profile", + "nav.queue": "Queue", + "nav.queue_monitor": "Queue Monitor", + "nav.scheduled_jobs": "Scheduled Jobs", + "nav.search": "Search", + "nav.settings": "Settings", + "nav.shared_links": "Shared Links", + "nav.signup": "Sign Up", + "nav.similarity": "Similarity", + "nav.skip_to_content": "Skip to main content", + "nav.status": "Status", + "nav.subscription": "Subscription", + "nav.toggle_dark_mode": "Toggle dark mode", + "nav.toggle_nav": "Toggle navigation menu", + "nav.upload": "Upload", + "nav.users": "Users", + "nav.version": "Version Info", + "notifications.filter_all": "All", + "notifications.filter_read": "Read only", + "notifications.filter_unread": "Unread only", + "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", + "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read_btn": "Mark all read", + "notifications.mark_read": "Mark as Read", + "notifications.no_notifications": "No notifications", + "notifications.page_title": "Notifications", + "notifications.tab_inbox": "Inbox", + "notifications.tab_settings": "Settings", + "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", + "search.filter_document_type": "Document Type", + "search.filter_document_type_placeholder": "e.g. Invoice", + "search.filter_language": "Language", + "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", + "search.filter_text_quality_high": "High", + "search.filter_text_quality_low": "Low", + "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", + "search.page_title": "Search Documents", + "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", + "status.git_commit": "Git Commit", + "status.last_check": "Last Check", + "status.page_title": "System Status", + "status.setting_label": "Setting", + "status.value_label": "Value", + "upload.browse_button": "Browse Files", + "upload.button_processing": "Processing...", + "upload.camera_button": "Take Photo / Scan Document", + "upload.download_button": "Download and Process", + "upload.downloading": "Downloading file from URL...", + "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", + "upload.file_size_hint": "Maximum size: 500 MB per file", + "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", + "upload.filename_description": "Leave empty to use filename from URL", + "upload.filename_label": "Filename (optional)", + "upload.filename_placeholder": "my-document.pdf", + "upload.max_size": "Maximum file size: {size}", + "upload.page_title": "Upload Files", + "upload.section_device": "Upload from Device", + "upload.section_url": "Upload from URL", + "upload.select_file": "Select File", + "upload.success": "File uploaded successfully", + "upload.title": "Upload Document", + "upload.uploading": "Uploading...", + "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", + "upload.url_label": "File URL", + "upload.url_placeholder": "https://example.com/document.pdf" +} From 62764ec9eefede1069c15c54d183bd276479a626 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:44:49 +0100 Subject: [PATCH 57/71] New translations en.json (French) --- frontend/translations/fr.json | 296 +++++++++++++++++----------------- 1 file changed, 148 insertions(+), 148 deletions(-) diff --git a/frontend/translations/fr.json b/frontend/translations/fr.json index d36160ed..bf19fc9f 100644 --- a/frontend/translations/fr.json +++ b/frontend/translations/fr.json @@ -106,22 +106,22 @@ "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", "auth.forgot_username": "Forgot username?", - "auth.login": "Log In", + "auth.login": "Se connecter", "auth.login_title": "Log In", "auth.logo_alt": "DocuElevate Logo", - "auth.logout": "Log Out", - "auth.my_account": "My Account", + "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": "Profile", + "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": "Sign Up", + "auth.signup": "S'inscrire", "auth.signup_title": "Sign Up", "auth.username_label": "Username", "auth.username_or_email": "Username or Email", @@ -185,68 +185,68 @@ "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.active": "Actif", + "common.all": "Tout", + "common.back": "Retour", + "common.cancel": "Annuler", + "common.close": "Fermer", "common.col_pending": "Pending", - "common.completed": "Completed", - "common.confirm": "Confirm", - "common.copied": "Copied!", - "common.copy": "Copy", + "common.completed": "Terminé", + "common.confirm": "Confirmer", + "common.copied": "Copié !", + "common.copy": "Copier", "common.create": "Create", - "common.created": "Created", + "common.created": "Créé", "common.date": "Date", - "common.delete": "Delete", + "common.delete": "Supprimer", "common.description": "Description", - "common.details": "Details", - "common.disabled": "Disabled", - "common.download": "Download", + "common.details": "Détails", + "common.disabled": "Désactivé", + "common.download": "Télécharger", "common.duplicate": "Duplicate", - "common.edit": "Edit", - "common.enabled": "Enabled", - "common.error": "Error", - "common.failed": "Failed", - "common.filter": "Filter", - "common.inactive": "Inactive", + "common.edit": "Modifier", + "common.enabled": "Activé", + "common.error": "Erreur", + "common.failed": "Échoué", + "common.filter": "Filtrer", + "common.inactive": "Inactif", "common.info": "Info", - "common.loading": "Loading...", - "common.name": "Name", - "common.next": "Next", + "common.loading": "Chargement...", + "common.name": "Nom", + "common.next": "Suivant", "common.next_page": "Next page", - "common.no": "No", - "common.none": "None", + "common.no": "Non", + "common.none": "Aucun", "common.page": "Page", - "common.pending": "Pending", + "common.pending": "En attente", "common.prev_page": "Previous page", "common.previous": "Previous", - "common.processing": "Processing", - "common.refresh": "Refresh", - "common.reset": "Reset", - "common.retry": "Retry", - "common.save": "Save", - "common.search": "Search", - "common.select": "Select", + "common.processing": "En cours de traitement", + "common.refresh": "Actualiser", + "common.reset": "Réinitialiser", + "common.retry": "Réessayer", + "common.save": "Enregistrer", + "common.search": "Rechercher", + "common.select": "Sélectionner", "common.select_placeholder": "— select —", - "common.size": "Size", - "common.status": "Status", + "common.size": "Taille", + "common.status": "Statut", "common.submit": "Submit", - "common.success": "Success", + "common.success": "Succès", "common.tags": "Tags", "common.type": "Type", - "common.updated": "Updated", - "common.upload": "Upload", - "common.view": "View", - "common.warning": "Warning", - "common.yes": "Yes", - "cookie.accept": "Got it", + "common.updated": "Mis à jour", + "common.upload": "Téléverser", + "common.view": "Voir", + "common.warning": "Avertissement", + "common.yes": "Oui", + "cookie.accept": "Compris", "cookie.learn_more": "Learn more", "cookie.message": "This website uses cookies to improve your experience.", - "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", - "cookie.notice_label": "Cookie notice", - "cookie.policy_link": "Cookie Policy", - "cookie.privacy_link": "Privacy Notice", + "cookie.notice": "DocuElevate utilise uniquement des cookies de session essentiels nécessaires à l'authentification et au fonctionnement du service. Aucun cookie de suivi ou d'analyse n'est utilisé.", + "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", @@ -270,16 +270,16 @@ "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", - "dashboard.ocr_processed": "OCR Processed", - "dashboard.quick_actions": "Quick Actions", - "dashboard.recent_activity": "Recent Activity", - "dashboard.storage_targets": "Storage Targets", - "dashboard.title": "Dashboard", - "dashboard.total_files": "Total Files", - "dashboard.welcome": "Welcome to DocuElevate", + "dashboard.active_integrations": "Intégrations actives", + "dashboard.files_this_month": "Fichiers ce mois-ci", + "dashboard.files_today": "Fichiers aujourd'hui", + "dashboard.ocr_processed": "OCR traités", + "dashboard.quick_actions": "Actions rapides", + "dashboard.recent_activity": "Activité récente", + "dashboard.storage_targets": "Destinations de stockage", + "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", @@ -317,14 +317,14 @@ "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", - "error.not_found_message": "The page you are looking for does not exist.", - "error.server_error": "Internal Server Error", - "error.server_error_message": "Something went wrong. Please try again later.", - "error.unauthorized": "Unauthorized", - "error.unauthorized_message": "You need to log in to access this page.", + "error.forbidden": "Interdit", + "error.forbidden_message": "Vous n'avez pas la permission d'accéder à cette page.", + "error.not_found": "Page non trouvée", + "error.not_found_message": "La page que vous recherchez n'existe pas.", + "error.server_error": "Erreur interne du serveur", + "error.server_error_message": "Quelque chose s'est mal passé. Veuillez réessayer plus tard.", + "error.unauthorized": "Non autorisé", + "error.unauthorized_message": "Vous devez vous connecter pour accéder à cette page.", "files.action_delete": "Delete file", "files.action_details": "View details", "files.action_preview": "Quick preview", @@ -337,12 +337,12 @@ "files.delete_modal_confirm": "Delete", "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", - "files.document_title": "Document Title", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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": "File Size", - "files.filename": "Filename", + "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", @@ -366,10 +366,10 @@ "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 (OCR text, metadata, tags)", + "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.no_files": "Aucun fichier trouvé", + "files.ocr_status": "Statut OCR", "files.page_title": "File Records", "files.pagination_files": "files", "files.pagination_first": "First", @@ -399,22 +399,22 @@ "files.table_mime_type": "MIME Type", "files.table_original_filename": "Original Filename", "files.table_select_all": "Select all files on this page", - "files.tags": "Tags", - "files.title": "Files", + "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": "Uploaded", + "files.uploaded": "Téléversé", "footer.about": "About", "footer.attribution": "Attribution", "footer.attributions": "Attributions", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", - "footer.imprint": "Imprint", - "footer.license": "License", - "footer.navigation": "Footer navigation", - "footer.privacy": "Privacy", - "footer.terms": "Terms", + "footer.imprint": "Mentions légales", + "footer.license": "Licence", + "footer.navigation": "Navigation du pied de page", + "footer.privacy": "Confidentialité", + "footer.terms": "Conditions", "footer.version": "Version {version}", "help.destinations_dropbox": "Dropbox", "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", @@ -436,7 +436,7 @@ "help.destinations_webhook": "Webhook", "help.destinations_webhook_desc": "POST metadata to any external endpoint.", "help.documentation": "Documentation", - "help.faq": "Frequently Asked Questions", + "help.faq": "Questions fréquentes", "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", "help.faq_1_q": "How do I upload documents?", "help.faq_2_a": "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.", @@ -448,7 +448,7 @@ "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", "help.faq_5_q": "Is my data secure?", "help.faq_heading": "Frequently Asked Questions", - "help.getting_started": "Getting Started", + "help.getting_started": "Premiers pas", "help.heading": "Help Center", "help.page_title": "Help Center", "help.privacy_notice": "Privacy Notice", @@ -475,7 +475,7 @@ "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.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.", "help.workflows_heading": "Workflows & Pipelines", @@ -570,24 +570,24 @@ "index.usage_my_usage": "My usage", "index.usage_today": "Files today", "index.usage_unlimited": "Unlimited", - "integrations.configure": "Configure", - "integrations.connect": "Connect", - "integrations.connected": "Connected", - "integrations.disconnect": "Disconnect", + "integrations.configure": "Configurer", + "integrations.connect": "Connecter", + "integrations.connected": "Connecté", + "integrations.disconnect": "Déconnecter", "integrations.empty_state": "No integrations configured", "integrations.folder_label": "Folder", "integrations.host_label": "Host", "integrations.imap_settings": "IMAP Settings", - "integrations.not_connected": "Not Connected", + "integrations.not_connected": "Non connecté", "integrations.page_title": "Integrations", "integrations.password_label": "Password", "integrations.port_label": "Port", - "integrations.title": "Integrations", + "integrations.title": "Intégrations", "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Language changed to {language}", + "language.changed": "Langue changée en {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Language", + "language.selector": "Langue", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", @@ -619,77 +619,77 @@ "language.tr": "Türkçe", "language.uk": "Українська", "language.zh": "中文", - "nav.about": "About", + "nav.about": "À propos", "nav.admin": "Admin", "nav.admin.audit_logs": "Audit Logs", "nav.admin.backups": "Backups", "nav.admin.plans": "Plans", "nav.admin.scheduled_jobs": "Scheduled Jobs", "nav.admin.users": "Users", - "nav.admin_actions": "Admin actions", - "nav.admin_menu": "Admin menu", - "nav.api_docs": "API Docs", + "nav.admin_actions": "Actions admin", + "nav.admin_menu": "Menu admin", + "nav.api_docs": "Documentation API", "nav.api_tokens": "API Tokens", - "nav.backup_restore": "Backup & Restore", - "nav.credentials": "Credentials", - "nav.dark_mode": "Dark Mode", - "nav.dashboard": "Dashboard", - "nav.developer_docs": "Developer Docs", - "nav.duplicates": "Duplicates", - "nav.file_manager": "File Manager", - "nav.files": "Files", - "nav.help": "Help", - "nav.help_center": "Help Center", + "nav.backup_restore": "Sauvegarde et restauration", + "nav.credentials": "Identifiants", + "nav.dark_mode": "Mode sombre", + "nav.dashboard": "Tableau de bord", + "nav.developer_docs": "Documentation développeur", + "nav.duplicates": "Doublons", + "nav.file_manager": "Gestionnaire de fichiers", + "nav.files": "Fichiers", + "nav.help": "Aide", + "nav.help_center": "Centre d'aide", "nav.imap": "Email Import", - "nav.integrations": "Integrations", - "nav.light_mode": "Light Mode", + "nav.integrations": "Intégrations", + "nav.light_mode": "Mode clair", "nav.login": "Log In", "nav.logout": "Log Out", - "nav.main_navigation": "Main navigation", + "nav.main_navigation": "Navigation principale", "nav.notifications": "Notifications", - "nav.open_main_menu": "Open main menu", + "nav.open_main_menu": "Ouvrir le menu principal", "nav.pipelines": "Pipelines", - "nav.plan_designer": "Plan Designer", - "nav.pricing": "Pricing", + "nav.plan_designer": "Concepteur de plans", + "nav.pricing": "Tarifs", "nav.profile": "Profile", "nav.queue": "Queue", - "nav.queue_monitor": "Queue Monitor", - "nav.scheduled_jobs": "Scheduled Jobs", - "nav.search": "Search", - "nav.settings": "Settings", + "nav.queue_monitor": "File d'attente", + "nav.scheduled_jobs": "Tâches planifiées", + "nav.search": "Recherche", + "nav.settings": "Paramètres", "nav.shared_links": "Shared Links", "nav.signup": "Sign Up", - "nav.similarity": "Similarity", - "nav.skip_to_content": "Skip to main content", - "nav.status": "Status", + "nav.similarity": "Similarité", + "nav.skip_to_content": "Aller au contenu principal", + "nav.status": "Statut", "nav.subscription": "Subscription", - "nav.toggle_dark_mode": "Toggle dark mode", - "nav.toggle_nav": "Toggle navigation menu", - "nav.upload": "Upload", - "nav.users": "Users", + "nav.toggle_dark_mode": "Basculer le mode sombre", + "nav.toggle_nav": "Basculer le menu de navigation", + "nav.upload": "Téléverser", + "nav.users": "Utilisateurs", "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", - "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read": "Tout marquer comme lu", "notifications.mark_all_read_btn": "Mark all read", - "notifications.mark_read": "Mark as Read", - "notifications.no_notifications": "No notifications", + "notifications.mark_read": "Marquer comme lu", + "notifications.no_notifications": "Aucune notification", "notifications.page_title": "Notifications", "notifications.tab_inbox": "Inbox", "notifications.tab_settings": "Settings", "notifications.title": "Notifications", - "notifications.unread_count": "{count} unread notifications", + "notifications.unread_count": "{count} notifications non lues", "pipelines.active_label": "Active", "pipelines.add_step_btn": "Add Step", - "pipelines.create": "Create Pipeline", + "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": "Edit Pipeline", + "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", @@ -712,7 +712,7 @@ "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", + "pipelines.title": "Pipelines de traitement", "queue.active_tasks": "Active Tasks", "queue.auto_refresh_1": "Auto-refreshes every", "queue.auto_refresh_2": "seconds", @@ -762,18 +762,18 @@ "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", + "search.no_results": "Aucun résultat trouvé", "search.page_title": "Search Documents", - "search.placeholder": "Search by filename, content, tags...", + "search.placeholder": "Rechercher par nom, contenu, étiquettes...", "search.result_empty": "No documents found matching your query.", - "search.results_count": "{count} results found", + "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": "Search Documents", + "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", @@ -797,15 +797,15 @@ "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.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": "Failed to save setting", + "settings.save_error": "Échec de l'enregistrement du paramètre", "settings.save_setting_title": "Save this setting", - "settings.save_success": "Setting saved successfully", + "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", @@ -814,7 +814,7 @@ "settings.source_db_badge": "DB", "settings.source_default_badge": "DEFAULT", "settings.source_env_badge": "ENV", - "settings.title": "Settings", + "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", @@ -903,11 +903,11 @@ "upload.camera_button": "Take Photo / Scan Document", "upload.download_button": "Download and Process", "upload.downloading": "Downloading file from URL...", - "upload.drag_drop": "Drag & drop files here or click to browse", + "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": "Upload failed", + "upload.error": "Échec du téléversement", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", "upload.file_size_hint": "Maximum size: 500 MB per file", @@ -915,14 +915,14 @@ "upload.filename_description": "Leave empty to use filename from URL", "upload.filename_label": "Filename (optional)", "upload.filename_placeholder": "my-document.pdf", - "upload.max_size": "Maximum file size: {size}", + "upload.max_size": "Taille maximale du fichier : {size}", "upload.page_title": "Upload Files", "upload.section_device": "Upload from Device", "upload.section_url": "Upload from URL", - "upload.select_file": "Select File", - "upload.success": "File uploaded successfully", - "upload.title": "Upload Document", - "upload.uploading": "Uploading...", + "upload.select_file": "Sélectionner un fichier", + "upload.success": "Fichier téléversé avec succès", + "upload.title": "Téléverser un document", + "upload.uploading": "Téléversement en cours...", "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", "upload.url_label": "File URL", "upload.url_placeholder": "https://example.com/document.pdf" From 8408edbb939212000396e9deb7c40a8564f7936b Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:44:50 +0100 Subject: [PATCH 58/71] New translations en.json (Spanish) --- frontend/translations/es.json | 314 +++++++++++++++++----------------- 1 file changed, 157 insertions(+), 157 deletions(-) diff --git a/frontend/translations/es.json b/frontend/translations/es.json index d36160ed..bba56174 100644 --- a/frontend/translations/es.json +++ b/frontend/translations/es.json @@ -106,22 +106,22 @@ "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", "auth.forgot_username": "Forgot username?", - "auth.login": "Log In", + "auth.login": "Iniciar sesión", "auth.login_title": "Log In", "auth.logo_alt": "DocuElevate Logo", - "auth.logout": "Log Out", - "auth.my_account": "My Account", + "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": "Profile", + "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": "Sign Up", + "auth.signup": "Registrarse", "auth.signup_title": "Sign Up", "auth.username_label": "Username", "auth.username_or_email": "Username or Email", @@ -184,69 +184,69 @@ "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.actions": "Acciones", + "common.active": "Activo", + "common.all": "Todo", + "common.back": "Atrás", + "common.cancel": "Cancelar", + "common.close": "Cerrar", "common.col_pending": "Pending", - "common.completed": "Completed", - "common.confirm": "Confirm", - "common.copied": "Copied!", - "common.copy": "Copy", + "common.completed": "Completado", + "common.confirm": "Confirmar", + "common.copied": "¡Copiado!", + "common.copy": "Copiar", "common.create": "Create", - "common.created": "Created", - "common.date": "Date", - "common.delete": "Delete", - "common.description": "Description", - "common.details": "Details", - "common.disabled": "Disabled", - "common.download": "Download", + "common.created": "Creado", + "common.date": "Fecha", + "common.delete": "Eliminar", + "common.description": "Descripción", + "common.details": "Detalles", + "common.disabled": "Deshabilitado", + "common.download": "Descargar", "common.duplicate": "Duplicate", - "common.edit": "Edit", - "common.enabled": "Enabled", + "common.edit": "Editar", + "common.enabled": "Habilitado", "common.error": "Error", - "common.failed": "Failed", - "common.filter": "Filter", - "common.inactive": "Inactive", - "common.info": "Info", - "common.loading": "Loading...", - "common.name": "Name", - "common.next": "Next", + "common.failed": "Fallido", + "common.filter": "Filtrar", + "common.inactive": "Inactivo", + "common.info": "Información", + "common.loading": "Cargando...", + "common.name": "Nombre", + "common.next": "Siguiente", "common.next_page": "Next page", "common.no": "No", - "common.none": "None", + "common.none": "Ninguno", "common.page": "Page", - "common.pending": "Pending", + "common.pending": "Pendiente", "common.prev_page": "Previous page", "common.previous": "Previous", - "common.processing": "Processing", - "common.refresh": "Refresh", - "common.reset": "Reset", - "common.retry": "Retry", - "common.save": "Save", - "common.search": "Search", - "common.select": "Select", + "common.processing": "Procesando", + "common.refresh": "Actualizar", + "common.reset": "Restablecer", + "common.retry": "Reintentar", + "common.save": "Guardar", + "common.search": "Buscar", + "common.select": "Seleccionar", "common.select_placeholder": "— select —", - "common.size": "Size", - "common.status": "Status", + "common.size": "Tamaño", + "common.status": "Estado", "common.submit": "Submit", - "common.success": "Success", + "common.success": "Éxito", "common.tags": "Tags", - "common.type": "Type", - "common.updated": "Updated", - "common.upload": "Upload", - "common.view": "View", - "common.warning": "Warning", - "common.yes": "Yes", - "cookie.accept": "Got it", + "common.type": "Tipo", + "common.updated": "Actualizado", + "common.upload": "Subir", + "common.view": "Ver", + "common.warning": "Advertencia", + "common.yes": "Sí", + "cookie.accept": "Entendido", "cookie.learn_more": "Learn more", "cookie.message": "This website uses cookies to improve your experience.", - "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", - "cookie.notice_label": "Cookie notice", - "cookie.policy_link": "Cookie Policy", - "cookie.privacy_link": "Privacy Notice", + "cookie.notice": "DocuElevate utiliza solo cookies de sesión esenciales necesarias para la autenticación y el funcionamiento del servicio. No se utilizan cookies de seguimiento ni analíticas.", + "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", @@ -270,16 +270,16 @@ "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", - "dashboard.ocr_processed": "OCR Processed", - "dashboard.quick_actions": "Quick Actions", - "dashboard.recent_activity": "Recent Activity", - "dashboard.storage_targets": "Storage Targets", - "dashboard.title": "Dashboard", - "dashboard.total_files": "Total Files", - "dashboard.welcome": "Welcome to DocuElevate", + "dashboard.active_integrations": "Integraciones activas", + "dashboard.files_this_month": "Archivos este mes", + "dashboard.files_today": "Archivos hoy", + "dashboard.ocr_processed": "OCR procesados", + "dashboard.quick_actions": "Acciones rápidas", + "dashboard.recent_activity": "Actividad reciente", + "dashboard.storage_targets": "Destinos de almacenamiento", + "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", @@ -317,14 +317,14 @@ "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", - "error.not_found_message": "The page you are looking for does not exist.", - "error.server_error": "Internal Server Error", - "error.server_error_message": "Something went wrong. Please try again later.", - "error.unauthorized": "Unauthorized", - "error.unauthorized_message": "You need to log in to access this page.", + "error.forbidden": "Prohibido", + "error.forbidden_message": "No tiene permiso para acceder a esta página.", + "error.not_found": "Página no encontrada", + "error.not_found_message": "La página que busca no existe.", + "error.server_error": "Error interno del servidor", + "error.server_error_message": "Algo salió mal. Inténtelo de nuevo más tarde.", + "error.unauthorized": "No autorizado", + "error.unauthorized_message": "Debe iniciar sesión para acceder a esta página.", "files.action_delete": "Delete file", "files.action_details": "View details", "files.action_preview": "Quick preview", @@ -337,12 +337,12 @@ "files.delete_modal_confirm": "Delete", "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", - "files.document_title": "Document Title", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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": "File Size", - "files.filename": "Filename", + "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", @@ -366,10 +366,10 @@ "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 (OCR text, metadata, tags)", + "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.no_files": "No se encontraron archivos", + "files.ocr_status": "Estado OCR", "files.page_title": "File Records", "files.pagination_files": "files", "files.pagination_first": "First", @@ -399,23 +399,23 @@ "files.table_mime_type": "MIME Type", "files.table_original_filename": "Original Filename", "files.table_select_all": "Select all files on this page", - "files.tags": "Tags", - "files.title": "Files", + "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": "Uploaded", + "files.uploaded": "Subido", "footer.about": "About", "footer.attribution": "Attribution", - "footer.attributions": "Attributions", + "footer.attributions": "Atribuciones", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", - "footer.imprint": "Imprint", - "footer.license": "License", - "footer.navigation": "Footer navigation", - "footer.privacy": "Privacy", - "footer.terms": "Terms", - "footer.version": "Version {version}", + "footer.imprint": "Aviso legal", + "footer.license": "Licencia", + "footer.navigation": "Navegación del pie de página", + "footer.privacy": "Privacidad", + "footer.terms": "Términos", + "footer.version": "Versión {version}", "help.destinations_dropbox": "Dropbox", "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", "help.destinations_email": "Email Forwarding", @@ -435,8 +435,8 @@ "help.destinations_sftp_desc": "Secure file transfer to any server.", "help.destinations_webhook": "Webhook", "help.destinations_webhook_desc": "POST metadata to any external endpoint.", - "help.documentation": "Documentation", - "help.faq": "Frequently Asked Questions", + "help.documentation": "Documentación", + "help.faq": "Preguntas frecuentes", "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", "help.faq_1_q": "How do I upload documents?", "help.faq_2_a": "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.", @@ -448,7 +448,7 @@ "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", "help.faq_5_q": "Is my data secure?", "help.faq_heading": "Frequently Asked Questions", - "help.getting_started": "Getting Started", + "help.getting_started": "Primeros pasos", "help.heading": "Help Center", "help.page_title": "Help Center", "help.privacy_notice": "Privacy Notice", @@ -469,13 +469,13 @@ "help.sources_web_upload": "Web Upload", "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", - "help.support": "Support", + "help.support": "Soporte", "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", "help.support_ticket_button": "Submit a Ticket", "help.support_ticket_heading": "Open a Support Ticket", - "help.title": "Help Center", + "help.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.", "help.workflows_heading": "Workflows & Pipelines", @@ -570,24 +570,24 @@ "index.usage_my_usage": "My usage", "index.usage_today": "Files today", "index.usage_unlimited": "Unlimited", - "integrations.configure": "Configure", - "integrations.connect": "Connect", - "integrations.connected": "Connected", - "integrations.disconnect": "Disconnect", + "integrations.configure": "Configurar", + "integrations.connect": "Conectar", + "integrations.connected": "Conectado", + "integrations.disconnect": "Desconectar", "integrations.empty_state": "No integrations configured", "integrations.folder_label": "Folder", "integrations.host_label": "Host", "integrations.imap_settings": "IMAP Settings", - "integrations.not_connected": "Not Connected", + "integrations.not_connected": "No conectado", "integrations.page_title": "Integrations", "integrations.password_label": "Password", "integrations.port_label": "Port", - "integrations.title": "Integrations", + "integrations.title": "Integraciones", "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Language changed to {language}", + "language.changed": "Idioma cambiado a {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Language", + "language.selector": "Idioma", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", @@ -619,77 +619,77 @@ "language.tr": "Türkçe", "language.uk": "Українська", "language.zh": "中文", - "nav.about": "About", + "nav.about": "Acerca de", "nav.admin": "Admin", "nav.admin.audit_logs": "Audit Logs", "nav.admin.backups": "Backups", "nav.admin.plans": "Plans", "nav.admin.scheduled_jobs": "Scheduled Jobs", "nav.admin.users": "Users", - "nav.admin_actions": "Admin actions", - "nav.admin_menu": "Admin menu", - "nav.api_docs": "API Docs", + "nav.admin_actions": "Acciones de administración", + "nav.admin_menu": "Menú de administración", + "nav.api_docs": "Documentación API", "nav.api_tokens": "API Tokens", - "nav.backup_restore": "Backup & Restore", - "nav.credentials": "Credentials", - "nav.dark_mode": "Dark Mode", - "nav.dashboard": "Dashboard", - "nav.developer_docs": "Developer Docs", - "nav.duplicates": "Duplicates", - "nav.file_manager": "File Manager", - "nav.files": "Files", - "nav.help": "Help", - "nav.help_center": "Help Center", + "nav.backup_restore": "Copia de seguridad y restauración", + "nav.credentials": "Credenciales", + "nav.dark_mode": "Modo oscuro", + "nav.dashboard": "Panel", + "nav.developer_docs": "Documentación para desarrolladores", + "nav.duplicates": "Duplicados", + "nav.file_manager": "Gestor de archivos", + "nav.files": "Archivos", + "nav.help": "Ayuda", + "nav.help_center": "Centro de ayuda", "nav.imap": "Email Import", - "nav.integrations": "Integrations", - "nav.light_mode": "Light Mode", + "nav.integrations": "Integraciones", + "nav.light_mode": "Modo claro", "nav.login": "Log In", "nav.logout": "Log Out", - "nav.main_navigation": "Main navigation", - "nav.notifications": "Notifications", - "nav.open_main_menu": "Open main menu", + "nav.main_navigation": "Navegación principal", + "nav.notifications": "Notificaciones", + "nav.open_main_menu": "Abrir menú principal", "nav.pipelines": "Pipelines", - "nav.plan_designer": "Plan Designer", - "nav.pricing": "Pricing", + "nav.plan_designer": "Diseñador de planes", + "nav.pricing": "Precios", "nav.profile": "Profile", "nav.queue": "Queue", - "nav.queue_monitor": "Queue Monitor", - "nav.scheduled_jobs": "Scheduled Jobs", - "nav.search": "Search", - "nav.settings": "Settings", + "nav.queue_monitor": "Monitor de cola", + "nav.scheduled_jobs": "Tareas programadas", + "nav.search": "Buscar", + "nav.settings": "Configuración", "nav.shared_links": "Shared Links", "nav.signup": "Sign Up", - "nav.similarity": "Similarity", - "nav.skip_to_content": "Skip to main content", - "nav.status": "Status", + "nav.similarity": "Similitud", + "nav.skip_to_content": "Ir al contenido principal", + "nav.status": "Estado", "nav.subscription": "Subscription", - "nav.toggle_dark_mode": "Toggle dark mode", - "nav.toggle_nav": "Toggle navigation menu", - "nav.upload": "Upload", - "nav.users": "Users", + "nav.toggle_dark_mode": "Alternar modo oscuro", + "nav.toggle_nav": "Alternar menú de navegación", + "nav.upload": "Subir", + "nav.users": "Usuarios", "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", - "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read": "Marcar todo como leído", "notifications.mark_all_read_btn": "Mark all read", - "notifications.mark_read": "Mark as Read", - "notifications.no_notifications": "No notifications", + "notifications.mark_read": "Marcar como leído", + "notifications.no_notifications": "Sin notificaciones", "notifications.page_title": "Notifications", "notifications.tab_inbox": "Inbox", "notifications.tab_settings": "Settings", - "notifications.title": "Notifications", - "notifications.unread_count": "{count} unread notifications", + "notifications.title": "Notificaciones", + "notifications.unread_count": "{count} notificaciones no leídas", "pipelines.active_label": "Active", "pipelines.add_step_btn": "Add Step", - "pipelines.create": "Create Pipeline", + "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": "Edit Pipeline", + "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", @@ -712,7 +712,7 @@ "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", + "pipelines.title": "Pipelines de procesamiento", "queue.active_tasks": "Active Tasks", "queue.auto_refresh_1": "Auto-refreshes every", "queue.auto_refresh_2": "seconds", @@ -762,18 +762,18 @@ "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", + "search.no_results": "No se encontraron resultados", "search.page_title": "Search Documents", - "search.placeholder": "Search by filename, content, tags...", + "search.placeholder": "Buscar por nombre, contenido, etiquetas...", "search.result_empty": "No documents found matching your query.", - "search.results_count": "{count} results found", + "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": "Search Documents", + "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", @@ -797,15 +797,15 @@ "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.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": "Failed to save setting", + "settings.save_error": "Error al guardar la configuración", "settings.save_setting_title": "Save this setting", - "settings.save_success": "Setting saved successfully", + "settings.save_success": "Configuración guardada con éxito", "settings.saving_state": "Saving…", "settings.search_aria_label": "Search settings", "settings.search_clear_aria": "Clear search", @@ -814,7 +814,7 @@ "settings.source_db_badge": "DB", "settings.source_default_badge": "DEFAULT", "settings.source_env_badge": "ENV", - "settings.title": "Settings", + "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", @@ -903,11 +903,11 @@ "upload.camera_button": "Take Photo / Scan Document", "upload.download_button": "Download and Process", "upload.downloading": "Downloading file from URL...", - "upload.drag_drop": "Drag & drop files here or click to browse", + "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": "Upload failed", + "upload.error": "Error al subir", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", "upload.file_size_hint": "Maximum size: 500 MB per file", @@ -915,14 +915,14 @@ "upload.filename_description": "Leave empty to use filename from URL", "upload.filename_label": "Filename (optional)", "upload.filename_placeholder": "my-document.pdf", - "upload.max_size": "Maximum file size: {size}", + "upload.max_size": "Tamaño máximo del archivo: {size}", "upload.page_title": "Upload Files", "upload.section_device": "Upload from Device", "upload.section_url": "Upload from URL", - "upload.select_file": "Select File", - "upload.success": "File uploaded successfully", - "upload.title": "Upload Document", - "upload.uploading": "Uploading...", + "upload.select_file": "Seleccionar archivo", + "upload.success": "Archivo subido con éxito", + "upload.title": "Subir documento", + "upload.uploading": "Subiendo...", "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", "upload.url_label": "File URL", "upload.url_placeholder": "https://example.com/document.pdf" From 6c17e3e482059d62c0597b80c0c9f7c12e8ead2f Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:44:51 +0100 Subject: [PATCH 59/71] New translations en.json (Czech) --- frontend/translations/cs.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/cs.json b/frontend/translations/cs.json index d36160ed..6af65b34 100644 --- a/frontend/translations/cs.json +++ b/frontend/translations/cs.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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", @@ -366,7 +366,7 @@ "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 (OCR text, metadata, tags)", + "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", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Language changed to {language}", + "language.changed": "Jazyk byl změněn na {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Language", + "language.selector": "Čeština", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From 213c6fc944d9167fdc7f2d8e10b1a6b4e77575ce Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:44:52 +0100 Subject: [PATCH 60/71] New translations en.json (Danish) --- frontend/translations/da.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/da.json b/frontend/translations/da.json index d36160ed..0dfc33f5 100644 --- a/frontend/translations/da.json +++ b/frontend/translations/da.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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", @@ -366,7 +366,7 @@ "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 (OCR text, metadata, tags)", + "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", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Language changed to {language}", + "language.changed": "Sproget blev ændret til {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Language", + "language.selector": "Dansk", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From 6b92c91c02eb0d045cb26a4892fdcbe1272ca031 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:44:54 +0100 Subject: [PATCH 61/71] New translations en.json (German) --- frontend/translations/de.json | 924 +++++++++++++++++----------------- 1 file changed, 462 insertions(+), 462 deletions(-) diff --git a/frontend/translations/de.json b/frontend/translations/de.json index d36160ed..2ec4bfa6 100644 --- a/frontend/translations/de.json +++ b/frontend/translations/de.json @@ -100,30 +100,30 @@ "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.confirm_password": "Passwort bestätigen", "auth.create_account": "Create account", - "auth.display_name_label": "Display Name", - "auth.email_label": "Email", - "auth.forgot_password": "Forgot Password?", + "auth.display_name_label": "Anzeigename", + "auth.email_label": "E-Mail", + "auth.forgot_password": "Passwort vergessen?", "auth.forgot_username": "Forgot username?", - "auth.login": "Log In", - "auth.login_title": "Log In", + "auth.login": "Anmelden", + "auth.login_title": "Anmelden", "auth.logo_alt": "DocuElevate Logo", - "auth.logout": "Log Out", - "auth.my_account": "My Account", + "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": "Password", - "auth.profile": "Profile", - "auth.remember_me": "Remember me", + "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": "Sign Up", - "auth.signup_title": "Sign Up", - "auth.username_label": "Username", + "auth.signup": "Registrieren", + "auth.signup_title": "Registrieren", + "auth.username_label": "Benutzername", "auth.username_or_email": "Username or Email", "auth.verify_email_back_sign_in": "Back to sign in", "auth.verify_email_expiry": "The link expires in 24 hours. If you don’t see the email, check your spam folder.", @@ -184,69 +184,69 @@ "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.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": "Completed", - "common.confirm": "Confirm", - "common.copied": "Copied!", - "common.copy": "Copy", - "common.create": "Create", - "common.created": "Created", - "common.date": "Date", - "common.delete": "Delete", - "common.description": "Description", + "common.completed": "Abgeschlossen", + "common.confirm": "Bestätigen", + "common.copied": "Kopiert!", + "common.copy": "Kopieren", + "common.create": "Erstellen", + "common.created": "Erstellt", + "common.date": "Datum", + "common.delete": "Löschen", + "common.description": "Beschreibung", "common.details": "Details", - "common.disabled": "Disabled", - "common.download": "Download", - "common.duplicate": "Duplicate", - "common.edit": "Edit", - "common.enabled": "Enabled", - "common.error": "Error", - "common.failed": "Failed", - "common.filter": "Filter", - "common.inactive": "Inactive", + "common.disabled": "Deaktiviert", + "common.download": "Herunterladen", + "common.duplicate": "Duplikat", + "common.edit": "Bearbeiten", + "common.enabled": "Aktiviert", + "common.error": "Fehler", + "common.failed": "Fehlgeschlagen", + "common.filter": "Filtern", + "common.inactive": "Inaktiv", "common.info": "Info", - "common.loading": "Loading...", + "common.loading": "Laden...", "common.name": "Name", - "common.next": "Next", + "common.next": "Weiter", "common.next_page": "Next page", - "common.no": "No", - "common.none": "None", + "common.no": "Nein", + "common.none": "Keine", "common.page": "Page", - "common.pending": "Pending", + "common.pending": "Ausstehend", "common.prev_page": "Previous page", - "common.previous": "Previous", - "common.processing": "Processing", - "common.refresh": "Refresh", - "common.reset": "Reset", - "common.retry": "Retry", - "common.save": "Save", - "common.search": "Search", - "common.select": "Select", + "common.previous": "Zurück", + "common.processing": "Verarbeitung", + "common.refresh": "Aktualisieren", + "common.reset": "Zurücksetzen", + "common.retry": "Erneut versuchen", + "common.save": "Speichern", + "common.search": "Suche", + "common.select": "Auswählen", "common.select_placeholder": "— select —", - "common.size": "Size", + "common.size": "Größe", "common.status": "Status", - "common.submit": "Submit", - "common.success": "Success", + "common.submit": "Absenden", + "common.success": "Erfolg", "common.tags": "Tags", - "common.type": "Type", - "common.updated": "Updated", - "common.upload": "Upload", - "common.view": "View", - "common.warning": "Warning", - "common.yes": "Yes", - "cookie.accept": "Got it", - "cookie.learn_more": "Learn more", - "cookie.message": "This website uses cookies to improve your experience.", - "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", - "cookie.notice_label": "Cookie notice", - "cookie.policy_link": "Cookie Policy", - "cookie.privacy_link": "Privacy Notice", + "common.type": "Typ", + "common.updated": "Aktualisiert", + "common.upload": "Hochladen", + "common.view": "Ansehen", + "common.warning": "Warnung", + "common.yes": "Ja", + "cookie.accept": "Akzeptieren", + "cookie.learn_more": "Mehr erfahren", + "cookie.message": "Diese Website verwendet Cookies, um Ihr Erlebnis zu verbessern.", + "cookie.notice": "DocuElevate verwendet nur essentielle Sitzungscookies, die für die Authentifizierung und den Servicebetrieb erforderlich sind. Es werden keine Tracking- oder Analyse-Cookies verwendet.", + "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", @@ -270,16 +270,16 @@ "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", - "dashboard.ocr_processed": "OCR Processed", - "dashboard.quick_actions": "Quick Actions", - "dashboard.recent_activity": "Recent Activity", - "dashboard.storage_targets": "Storage Targets", - "dashboard.title": "Dashboard", - "dashboard.total_files": "Total Files", - "dashboard.welcome": "Welcome to DocuElevate", + "dashboard.active_integrations": "Aktive Integrationen", + "dashboard.files_this_month": "Dateien diesen Monat", + "dashboard.files_today": "Dateien heute", + "dashboard.ocr_processed": "OCR verarbeitet", + "dashboard.quick_actions": "Schnellaktionen", + "dashboard.recent_activity": "Letzte Aktivitäten", + "dashboard.storage_targets": "Speicherziele", + "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", @@ -304,397 +304,397 @@ "duplicates.view_dup_aria": "View duplicate file", "duplicates.view_original_aria": "View original file", "error.404_code": "404", - "error.404_heading": "Oops, we couldn’t find that page!", - "error.404_home": "Return Home", - "error.404_message": "It seems DocuElevate has misplaced the document you were looking for. Don’t worry – we’ve got your back.", + "error.404_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": "Our servers encountered a mishap and need a moment.", - "error.500_heading": "Oops! Something Went Wrong.", - "error.500_home": "Go Home", + "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": "Forbidden", - "error.forbidden_message": "You do not have permission to access this page.", - "error.not_found": "Page not found", - "error.not_found_message": "The page you are looking for does not exist.", - "error.server_error": "Internal Server Error", - "error.server_error_message": "Something went wrong. Please try again later.", - "error.unauthorized": "Unauthorized", - "error.unauthorized_message": "You need to log in to access this page.", - "files.action_delete": "Delete file", - "files.action_details": "View details", - "files.action_preview": "Quick preview", - "files.bulk_clear_selection": "Clear Selection", - "files.bulk_cloud_ocr": "Re-run Cloud OCR", - "files.bulk_delete": "Delete Selected", - "files.bulk_download": "Download as ZIP", - "files.bulk_reprocess": "Reprocess Selected", - "files.delete_modal_cancel": "Cancel", - "files.delete_modal_confirm": "Delete", - "files.delete_modal_message": "Are you sure you want to delete this file?", - "files.delete_modal_title": "Confirm Deletion", - "files.document_title": "Document Title", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", - "files.drop_overlay_title": "Drop files or folders anywhere to upload", + "error.forbidden": "Zugriff verweigert", + "error.forbidden_message": "Sie haben keine Berechtigung, auf diese Seite zuzugreifen.", + "error.not_found": "Seite nicht gefunden", + "error.not_found_message": "Die gesuchte Seite existiert nicht.", + "error.server_error": "Interner Serverfehler", + "error.server_error_message": "Etwas ist schiefgelaufen. Bitte versuchen Sie es später erneut.", + "error.unauthorized": "Nicht autorisiert", + "error.unauthorized_message": "Sie müssen sich anmelden, um auf diese Seite zuzugreifen.", + "files.action_delete": "Datei löschen", + "files.action_details": "Details anzeigen", + "files.action_preview": "Schnellvorschau", + "files.bulk_clear_selection": "Auswahl aufheben", + "files.bulk_cloud_ocr": "Cloud-OCR erneut ausführen", + "files.bulk_delete": "Ausgewählte löschen", + "files.bulk_download": "Als ZIP herunterladen", + "files.bulk_reprocess": "Ausgewählte erneut verarbeiten", + "files.delete_modal_cancel": "Abbrechen", + "files.delete_modal_confirm": "Löschen", + "files.delete_modal_message": "Sind Sie sicher, dass Sie diese Datei löschen möchten?", + "files.delete_modal_title": "Löschung bestätigen", + "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": "File Size", - "files.filename": "Filename", + "files.file_size": "Dateigröße", + "files.filename": "Dateiname", "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_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": "Date To", + "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 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_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": "Not yet assessed", + "files.filter_ocr_unchecked": "Noch nicht bewertet", "files.filter_search_label": "Search Filename", - "files.filter_search_placeholder": "Enter filename...", - "files.filter_storage_provider": "Storage Provider", + "files.filter_search_placeholder": "Dateinamen eingeben...", + "files.filter_storage_provider": "Speicheranbieter", "files.filter_tags_aria": "Filter by tags (comma-separated)", - "files.filter_tags_placeholder": "e.g. invoice,amazon", - "files.fulltext_search_label": "Full-Text Search (OCR text, metadata, tags)", - "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.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": "First", - "files.pagination_last": "Last", + "files.pagination_first": "Erste", + "files.pagination_last": "Letzte", "files.pagination_nav_aria": "File list pagination", - "files.pagination_next": "Next", + "files.pagination_next": "Nächste", "files.pagination_of": "of", - "files.pagination_previous": "Previous", + "files.pagination_previous": "Vorherige", "files.pagination_showing": "Showing", - "files.preview_modal_close": "Close preview", - "files.preview_modal_title": "Preview", + "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": "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.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": "No results found.", - "files.search_results_title": "Search Results", + "files.search_results_empty": "Keine Ergebnisse gefunden.", + "files.search_results_title": "Suchergebnisse", "files.status_duplicate": "Duplicate", - "files.table_actions": "Actions", + "files.table_actions": "Aktionen", "files.table_aria": "File records", - "files.table_created_at": "Created At", - "files.table_empty": "No files found", + "files.table_created_at": "Erstellt am", + "files.table_empty": "Keine Dateien gefunden", "files.table_id": "ID", - "files.table_mime_type": "MIME Type", - "files.table_original_filename": "Original Filename", - "files.table_select_all": "Select all files on this page", + "files.table_mime_type": "MIME-Typ", + "files.table_original_filename": "Originaler Dateiname", + "files.table_select_all": "Alle Dateien auf dieser Seite auswählen", "files.tags": "Tags", - "files.title": "Files", + "files.title": "Dateien", "files.upload_modal_aria": "Upload progress", "files.upload_modal_close": "Close upload progress", - "files.upload_modal_header": "Uploading Files", - "files.uploaded": "Uploaded", - "footer.about": "About", - "footer.attribution": "Attribution", - "footer.attributions": "Attributions", - "footer.cookies": "Cookies", - "footer.copyright": "DocuElevate {year}", - "footer.imprint": "Imprint", - "footer.license": "License", - "footer.navigation": "Footer navigation", - "footer.privacy": "Privacy", - "footer.terms": "Terms", - "footer.version": "Version {version}", + "files.upload_modal_header": "Dateien hochladen", + "files.uploaded": "Hochgeladen", + "footer.about": "Über uns", + "footer.attribution": "Namensnennung", + "footer.attributions": "Quellenangaben", + "footer.cookies": "Cookie-Richtlinie", + "footer.copyright": "© {year} DocuElevate", + "footer.imprint": "Impressum", + "footer.license": "Lizenz", + "footer.navigation": "Fußzeilennavigation", + "footer.privacy": "Datenschutz", + "footer.terms": "Nutzungsbedingungen", + "footer.version": "Version", "help.destinations_dropbox": "Dropbox", - "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", - "help.destinations_email": "Email Forwarding", - "help.destinations_email_desc": "Processed files sent as SMTP attachments.", + "help.destinations_dropbox_desc": "OAuth-verknüpft. Dateien landen in Ihrem gewählten Ordner.", + "help.destinations_email": "E-Mail-Weiterleitung", + "help.destinations_email_desc": "Verarbeitete Dateien als SMTP-Anhänge gesendet.", "help.destinations_google_drive": "Google Drive", - "help.destinations_google_drive_desc": "Service account or OAuth. Supports shared drives.", - "help.destinations_heading": "Destinations – Where Documents Go", + "help.destinations_google_drive_desc": "Dienstkonto oder OAuth. Unterstützt geteilte Laufwerke.", + "help.destinations_heading": "Ziele – Wohin die Dokumente gehen", "help.destinations_nextcloud": "Nextcloud / WebDAV", - "help.destinations_nextcloud_desc": "Self-hosted cloud storage via WebDAV.", + "help.destinations_nextcloud_desc": "Selbstgehosteter Cloud-Speicher über WebDAV.", "help.destinations_onedrive": "OneDrive", - "help.destinations_onedrive_desc": "Microsoft Graph API integration.", + "help.destinations_onedrive_desc": "Microsoft Graph API-Integration.", "help.destinations_paperless": "Paperless-ngx", - "help.destinations_paperless_desc": "Push documents straight into Paperless for archival.", + "help.destinations_paperless_desc": "Dokumente direkt in Paperless zur Archivierung übertragen.", "help.destinations_s3": "Amazon S3", - "help.destinations_s3_desc": "Any S3-compatible bucket (AWS, MinIO, Wasabi).", + "help.destinations_s3_desc": "Jeder S3-kompatible Bucket (AWS, MinIO, Wasabi).", "help.destinations_sftp": "SFTP / FTP", - "help.destinations_sftp_desc": "Secure file transfer to any server.", + "help.destinations_sftp_desc": "Sichere Dateiübertragung auf beliebige Server.", "help.destinations_webhook": "Webhook", - "help.destinations_webhook_desc": "POST metadata to any external endpoint.", - "help.documentation": "Documentation", - "help.faq": "Frequently Asked Questions", - "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", - "help.faq_1_q": "How do I upload documents?", - "help.faq_2_a": "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_q": "Which file formats are supported?", - "help.faq_3_a": "Yes. Go to Email Ingestion, add an IMAP account, and DocuElevate will poll for new messages and process attachments automatically.", - "help.faq_3_q": "Can I ingest documents from email?", - "help.faq_4_a": "Pipelines let you chain processing steps – OCR, AI extraction, format conversion – and route the result to one or more destinations. Create and manage them from the Pipelines page.", - "help.faq_4_q": "How do processing pipelines work?", - "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", - "help.faq_5_q": "Is my data secure?", - "help.faq_heading": "Frequently Asked Questions", - "help.getting_started": "Getting Started", - "help.heading": "Help Center", - "help.page_title": "Help Center", + "help.destinations_webhook_desc": "Metadaten per POST an einen externen Endpunkt senden.", + "help.documentation": "Dokumentation", + "help.faq": "Häufig gestellte Fragen", + "help.faq_1_a": "Navigieren Sie zur Upload-Seite, ziehen Sie Ihre Dateien per Drag-and-Drop oder klicken Sie auf Datei auswählen. DocuElevate konvertiert Bilder und Office-Dokumente in PDF, führt OCR durch und extrahiert Metadaten automatisch.", + "help.faq_1_q": "Wie lade ich Dokumente hoch?", + "help.faq_2_a": "PDF, JPEG, PNG, TIFF, BMP, GIF, DOCX, XLSX, PPTX, ODT, ODS, TXT, RTF und HTML. Nicht-PDF-Dateien werden vor der Verarbeitung automatisch in PDF konvertiert.", + "help.faq_2_q": "Welche Dateiformate werden unterstützt?", + "help.faq_3_a": "Ja. Gehen Sie zu E-Mail-Import, fügen Sie ein IMAP-Konto hinzu, und DocuElevate prüft auf neue Nachrichten und verarbeitet Anhänge automatisch.", + "help.faq_3_q": "Kann ich Dokumente per E-Mail importieren?", + "help.faq_4_a": "Pipelines ermöglichen es Ihnen, Verarbeitungsschritte zu verketten – OCR, KI-Extraktion, Formatkonvertierung – und das Ergebnis an ein oder mehrere Ziele weiterzuleiten. Erstellen und verwalten Sie diese auf der Pipelines-Seite.", + "help.faq_4_q": "Wie funktionieren Verarbeitungs-Pipelines?", + "help.faq_5_a": "DocuElevate verschlüsselt Anmeldedaten im Ruhezustand, kommuniziert über TLS und speichert Ihre Dokumente nie länger als nötig. Weitere Details finden Sie in der Datenschutzerklärung.", + "help.faq_5_q": "Sind meine Daten sicher?", + "help.faq_heading": "Häufig gestellte Fragen", + "help.getting_started": "Erste Schritte", + "help.heading": "Hilfezentrum", + "help.page_title": "Hilfezentrum", "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.", - "help.quickstart_upload": "Upload Documents", - "help.quickstart_upload_desc": "Drag & drop files onto the Upload page or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", - "help.quickstart_workflows": "Automate Workflows", - "help.quickstart_workflows_desc": "Create Pipelines to define multi-step processing and routing rules. Combine OCR, AI extraction, format conversion, and delivery in a single flow.", - "help.sources_email_ingestion": "Email Ingestion (IMAP)", - "help.sources_email_ingestion_desc": "Forward documents to a dedicated mailbox. Under Email Ingestion, add one or more IMAP accounts. DocuElevate polls for new messages and processes attachments automatically.", - "help.sources_heading": "Sources – Getting Documents In", - "help.sources_rest_api": "REST API", - "help.sources_rest_api_desc": "Integrate programmatically by POST-ing files to /api/upload. Ideal for scripts, watched folders, scanners, or third-party tools like Zapier and n8n.", - "help.sources_scanner": "Scanner & Mobile", - "help.sources_scanner_desc": "Point network scanners at DocuElevate's upload endpoint or use any mobile scanning app that supports custom HTTP destinations.", - "help.sources_web_upload": "Web Upload", - "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", - "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", + "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.", + "help.quickstart_upload": "Dokumente hochladen", + "help.quickstart_upload_desc": "Ziehen Sie Dateien auf die Upload-Seite oder klicken Sie auf Datei auswählen. DocuElevate konvertiert Bilder und Office-Dokumente in PDF, führt OCR durch und extrahiert Metadaten automatisch.", + "help.quickstart_workflows": "Arbeitsabläufe automatisieren", + "help.quickstart_workflows_desc": "Erstellen Sie Pipelines, um mehrstufige Verarbeitungs- und Weiterleitungsregeln zu definieren. Kombinieren Sie OCR, KI-Extraktion, Formatkonvertierung und Zustellung in einem einzigen Ablauf.", + "help.sources_email_ingestion": "E-Mail-Import (IMAP)", + "help.sources_email_ingestion_desc": "Leiten Sie Dokumente an ein dediziertes Postfach weiter. Unter E-Mail-Import fügen Sie ein oder mehrere IMAP-Konten hinzu. DocuElevate prüft auf neue Nachrichten und verarbeitet Anhänge automatisch.", + "help.sources_heading": "Quellen – Dokumente einbringen", + "help.sources_rest_api": "REST-API", + "help.sources_rest_api_desc": "Integrieren Sie programmgesteuert, indem Sie Dateien an /api/upload senden. Ideal für Skripte, überwachte Ordner, Scanner oder Drittanbieter-Tools wie Zapier und n8n.", + "help.sources_scanner": "Scanner & Mobil", + "help.sources_scanner_desc": "Richten Sie Netzwerkscanner auf den Upload-Endpunkt von DocuElevate oder verwenden Sie eine mobile Scan-App, die benutzerdefinierte HTTP-Ziele unterstützt.", + "help.sources_web_upload": "Web-Upload", + "help.sources_web_upload_desc": "Der schnellste Weg, um loszulegen. Öffnen Sie die Upload-Seite, legen Sie eine oder mehrere Dateien ab, und DocuElevate kümmert sich um den Rest. Unterstützte Formate sind PDF, JPEG, PNG, TIFF, DOCX, XLSX und mehr.", + "help.subheading": "Alles, was Sie brauchen, um DocuElevate optimal zu nutzen. Durchsuchen Sie die Themen unten oder suchen Sie nach dem, was Sie brauchen.", "help.support": "Support", - "help.support_admin_message": "Contact your administrator for support information.", - "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", - "help.support_heading": "Contact Support", + "help.support_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": "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.", - "help.workflows_heading": "Workflows & Pipelines", - "help.workflows_step_1": "Convert to PDF", - "help.workflows_step_1_create": "Go to Pipelines in the main menu.", - "help.workflows_step_2": "OCR – extract text", - "help.workflows_step_2_create": "Click New Pipeline and give it a name.", - "help.workflows_step_3": "AI metadata extraction", - "help.workflows_step_3_create": "Add the processing steps you need.", - "help.workflows_step_4": "Deliver to one or more destinations", - "help.workflows_step_4_create": "Choose one or more delivery destinations.", - "help.workflows_step_5_create": "Save – new documents will be processed through this pipeline automatically.", - "help.workflows_typical_steps": "Typical Steps", - "help.workflows_what_is": "What is a Pipeline?", - "index.badge_intelligent": "Intelligent Document Processing", + "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.", + "help.workflows_heading": "Arbeitsabläufe & Pipelines", + "help.workflows_step_1": "In PDF konvertieren", + "help.workflows_step_1_create": "Gehen Sie im Hauptmenü zu Pipelines.", + "help.workflows_step_2": "OCR – Text extrahieren", + "help.workflows_step_2_create": "Klicken Sie auf Neue Pipeline und geben Sie ihr einen Namen.", + "help.workflows_step_3": "KI-Metadatenextraktion", + "help.workflows_step_3_create": "Fügen Sie die benötigten Verarbeitungsschritte hinzu.", + "help.workflows_step_4": "An ein oder mehrere Ziele liefern", + "help.workflows_step_4_create": "Wählen Sie ein oder mehrere Zustellungsziele.", + "help.workflows_step_5_create": "Speichern – neue Dokumente werden automatisch durch diese Pipeline verarbeitet.", + "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 storage: Dropbox, OneDrive, Google Drive, NextCloud", - "index.capabilities_ingestion": "Email & URL-based document ingestion", - "index.capabilities_ocr": "OCR & metadata extraction with AI", - "index.capabilities_paperless": "Paperless-ngx integration for document management", - "index.capabilities_title": "Capabilities", - "index.capabilities_workflows": "Automated classification & routing workflows", - "index.cta_description": "Join teams already automating their document processing with DocuElevate.", - "index.cta_heading": "Ready to elevate your document workflow?", - "index.cta_pricing": "See pricing", - "index.cta_signup": "Create a free account", - "index.dashboard_subtitle": "Intelligent document processing & management", + "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", + "index.capabilities_paperless": "Paperless-ngx-Integration für Dokumentenverwaltung", + "index.capabilities_title": "Funktionen", + "index.capabilities_workflows": "Automatisierte Klassifizierung & Routing-Workflows", + "index.cta_description": "Schließen Sie sich Teams an, die ihre Dokumentenverarbeitung bereits mit DocuElevate automatisieren.", + "index.cta_heading": "Bereit, Ihren Dokumenten-Workflow zu verbessern?", + "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": "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", - "index.feature_cloud_desc": "Route processed files to Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP, and more.", - "index.feature_email": "Email & IMAP Ingestion", - "index.feature_email_desc": "Automatically pull documents from Gmail or any IMAP mailbox — no manual uploads needed.", - "index.feature_ocr": "OCR & Text Extraction", - "index.feature_ocr_desc": "Azure Document Intelligence converts scanned PDFs and images into fully searchable text automatically.", - "index.feature_pipelines": "Custom Pipelines", - "index.feature_pipelines_desc": "Build processing pipelines with configurable steps — OCR, AI extraction, format conversion, and storage routing in any order.", - "index.feature_search": "Full-Text Search", - "index.feature_search_desc": "Instantly find any document by content, metadata, or tags across your entire archive.", - "index.feature_section_title": "Everything you need for smart document workflows", - "index.getting_started": "Getting Started", - "index.getting_started_1": "Configure integrations via System Status", - "index.getting_started_2": "Upload your first document", - "index.getting_started_3": "Review results in Files", - "index.getting_started_learn": "Learn more about DocuElevate", - "index.hero_description": "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_heading": "From upload to insight — automatically.", - "index.hero_login": "Log In", - "index.hero_pricing": "View Plans & Pricing", - "index.hero_signup": "Get Started — it’s free", - "index.integrations_active": "Active integrations", - "index.integrations_storage": "Storage targets", - "index.integrations_title": "Integrations", - "index.integrations_view_status": "View system status", - "index.page_title_dashboard": "Dashboard", - "index.page_title_public": "Intelligent Document Processing", - "index.platform_overview": "Platform overview", - "index.quick_actions": "Quick Actions", - "index.quick_documents": "My Documents", - "index.quick_documents_desc": "Browse your processed files", - "index.quick_search": "Search", - "index.quick_search_desc": "Full-text search across documents", - "index.quick_subscription": "My Subscription", - "index.quick_subscription_desc": "View plan & usage details", + "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", + "index.feature_cloud_desc": "Leiten Sie verarbeitete Dateien an Dropbox, Google Drive, OneDrive, Amazon S3, Nextcloud, Paperless NGX, WebDAV, FTP/SFTP und mehr weiter.", + "index.feature_email": "E-Mail- & IMAP-Import", + "index.feature_email_desc": "Ziehen Sie Dokumente automatisch aus Gmail oder jedem IMAP-Postfach – keine manuellen Uploads nötig.", + "index.feature_ocr": "OCR & Texterkennung", + "index.feature_ocr_desc": "Azure Document Intelligence konvertiert gescannte PDFs und Bilder automatisch in vollständig durchsuchbaren Text.", + "index.feature_pipelines": "Benutzerdefinierte Pipelines", + "index.feature_pipelines_desc": "Erstellen Sie Verarbeitungs-Pipelines mit konfigurierbaren Schritten – OCR, KI-Extraktion, Formatkonvertierung und Speicher-Routing in beliebiger Reihenfolge.", + "index.feature_search": "Volltextsuche", + "index.feature_search_desc": "Finden Sie sofort jedes Dokument nach Inhalt, Metadaten oder Tags in Ihrem gesamten Archiv.", + "index.feature_section_title": "Alles, was Sie für intelligente Dokumenten-Workflows brauchen", + "index.getting_started": "Erste Schritte", + "index.getting_started_1": "Integrationen über Systemstatus konfigurieren", + "index.getting_started_2": "Erstes Dokument hochladen", + "index.getting_started_3": "Ergebnisse in Dateien überprüfen", + "index.getting_started_learn": "Mehr über DocuElevate erfahren", + "index.hero_description": "DocuElevate nimmt Ihre Dokumente auf, führt OCR durch, extrahiert Metadaten mit KI und leitet Dateien an Dropbox, Google Drive, OneDrive, S3, Nextcloud und mehr weiter – alles in einer nahtlosen Pipeline.", + "index.hero_heading": "Vom Hochladen zur Erkenntnis – automatisch.", + "index.hero_login": "Anmelden", + "index.hero_pricing": "Tarife & Preise ansehen", + "index.hero_signup": "Kostenlos starten", + "index.integrations_active": "Aktive Integrationen", + "index.integrations_storage": "Speicherziele", + "index.integrations_title": "Integrationen", + "index.integrations_view_status": "Systemstatus anzeigen", + "index.page_title_dashboard": "Übersicht", + "index.page_title_public": "Intelligente Dokumentenverarbeitung", + "index.platform_overview": "Plattformübersicht", + "index.quick_actions": "Schnellaktionen", + "index.quick_documents": "Meine Dokumente", + "index.quick_documents_desc": "Ihre verarbeiteten Dateien durchsuchen", + "index.quick_search": "Suche", + "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": "Upload Document", - "index.quick_upload_desc": "Process a new file", + "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": "Intelligent document processing & management", + "index.single_user_subtitle": "Intelligente Dokumentenverarbeitung & -verwaltung", "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_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": "Total files", - "index.tier_plan": "Plan", + "index.stat_total_files": "Dateien gesamt", + "index.tier_plan": "Tarif", "index.tier_upgrade": "Upgrade", - "index.tier_view_details": "View full details", - "index.upgrade_daily_limits": "Higher daily & monthly limits", - "index.upgrade_description": "Unlock more documents, more destinations and priority support.", - "index.upgrade_destinations": "More storage destinations", - "index.upgrade_ocr_pages": "More OCR pages", - "index.upgrade_plan": "Upgrade your plan", - "index.upgrade_view_pricing": "View plans & pricing", - "index.usage_lifetime": "Lifetime files", - "index.usage_month": "Files this month", - "index.usage_my_usage": "My usage", - "index.usage_today": "Files today", - "index.usage_unlimited": "Unlimited", - "integrations.configure": "Configure", - "integrations.connect": "Connect", - "integrations.connected": "Connected", - "integrations.disconnect": "Disconnect", - "integrations.empty_state": "No integrations configured", - "integrations.folder_label": "Folder", + "index.tier_view_details": "Alle Details ansehen", + "index.upgrade_daily_limits": "Höhere tägliche & monatliche Limits", + "index.upgrade_description": "Mehr Dokumente, mehr Ziele und Prioritäts-Support freischalten.", + "index.upgrade_destinations": "Mehr Speicherziele", + "index.upgrade_ocr_pages": "Mehr OCR-Seiten", + "index.upgrade_plan": "Tarif upgraden", + "index.upgrade_view_pricing": "Tarife & Preise ansehen", + "index.usage_lifetime": "Dateien gesamt", + "index.usage_month": "Dateien diesen Monat", + "index.usage_my_usage": "Meine Nutzung", + "index.usage_today": "Dateien heute", + "index.usage_unlimited": "Unbegrenzt", + "integrations.configure": "Konfigurieren", + "integrations.connect": "Verbinden", + "integrations.connected": "Verbunden", + "integrations.disconnect": "Trennen", + "integrations.empty_state": "Keine Integrationen konfiguriert", + "integrations.folder_label": "Ordner", "integrations.host_label": "Host", - "integrations.imap_settings": "IMAP Settings", - "integrations.not_connected": "Not Connected", - "integrations.page_title": "Integrations", - "integrations.password_label": "Password", + "integrations.imap_settings": "IMAP-Einstellungen", + "integrations.not_connected": "Nicht verbunden", + "integrations.page_title": "Integrationen", + "integrations.password_label": "Passwort", "integrations.port_label": "Port", - "integrations.title": "Integrations", - "integrations.username_label": "Username", + "integrations.title": "Integrationen", + "integrations.username_label": "Benutzername", "language.bg": "Български", "language.ca": "Català", - "language.change_success": "Language changed to {language}", - "language.changed": "Language changed to {language}", + "language.change_success": "Sprache geändert zu {language}", + "language.changed": "Sprache geändert zu {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", "language.el": "Ελληνικά", - "language.en": "English", - "language.es": "Español", + "language.en": "Englisch", + "language.es": "Spanisch", "language.et": "Eesti", "language.fi": "Suomi", - "language.fr": "Français", + "language.fr": "Französisch", "language.ga": "Gaeilge", "language.hr": "Hrvatski", "language.hu": "Magyar", "language.is": "Íslenska", - "language.it": "Italiano", + "language.it": "Italienisch", "language.lb": "Lëtzebuergesch", "language.lt": "Lietuvių", "language.lv": "Latviešu", "language.nb": "Norsk", - "language.nl": "Nederlands", - "language.pl": "Polski", - "language.pt": "Português", + "language.nl": "Niederländisch", + "language.pl": "Polnisch", + "language.pt": "Portugiesisch", "language.ro": "Română", - "language.ru": "Русский", - "language.selector": "Language", - "language.selector_label": "Select language", + "language.ru": "Russisch", + "language.selector": "Sprache", + "language.selector_label": "Sprache wählen", "language.sk": "Slovenčina", "language.sl": "Slovenščina", "language.sv": "Svenska", "language.tr": "Türkçe", "language.uk": "Українська", - "language.zh": "中文", - "nav.about": "About", - "nav.admin": "Admin", - "nav.admin.audit_logs": "Audit Logs", - "nav.admin.backups": "Backups", - "nav.admin.plans": "Plans", - "nav.admin.scheduled_jobs": "Scheduled Jobs", - "nav.admin.users": "Users", - "nav.admin_actions": "Admin actions", - "nav.admin_menu": "Admin menu", - "nav.api_docs": "API Docs", - "nav.api_tokens": "API Tokens", - "nav.backup_restore": "Backup & Restore", - "nav.credentials": "Credentials", - "nav.dark_mode": "Dark Mode", - "nav.dashboard": "Dashboard", - "nav.developer_docs": "Developer Docs", - "nav.duplicates": "Duplicates", - "nav.file_manager": "File Manager", - "nav.files": "Files", - "nav.help": "Help", - "nav.help_center": "Help Center", - "nav.imap": "Email Import", - "nav.integrations": "Integrations", - "nav.light_mode": "Light Mode", - "nav.login": "Log In", - "nav.logout": "Log Out", - "nav.main_navigation": "Main navigation", - "nav.notifications": "Notifications", - "nav.open_main_menu": "Open main menu", + "language.zh": "Chinesisch", + "nav.about": "Über uns", + "nav.admin": "Administration", + "nav.admin.audit_logs": "Prüfprotokolle", + "nav.admin.backups": "Sicherungen", + "nav.admin.plans": "Tarife", + "nav.admin.scheduled_jobs": "Geplante Aufgaben", + "nav.admin.users": "Benutzer", + "nav.admin_actions": "Admin-Aktionen", + "nav.admin_menu": "Admin-Menü", + "nav.api_docs": "API-Dokumentation", + "nav.api_tokens": "API-Token", + "nav.backup_restore": "Sicherung & Wiederherstellung", + "nav.credentials": "Zugangsdaten", + "nav.dark_mode": "Dunkelmodus", + "nav.dashboard": "Übersicht", + "nav.developer_docs": "Entwicklerdokumentation", + "nav.duplicates": "Duplikate", + "nav.file_manager": "Dateimanager", + "nav.files": "Dateien", + "nav.help": "Hilfe", + "nav.help_center": "Hilfecenter", + "nav.imap": "E-Mail-Import", + "nav.integrations": "Integrationen", + "nav.light_mode": "Hellmodus", + "nav.login": "Anmelden", + "nav.logout": "Abmelden", + "nav.main_navigation": "Hauptnavigation", + "nav.notifications": "Benachrichtigungen", + "nav.open_main_menu": "Hauptmenü öffnen", "nav.pipelines": "Pipelines", - "nav.plan_designer": "Plan Designer", - "nav.pricing": "Pricing", - "nav.profile": "Profile", - "nav.queue": "Queue", - "nav.queue_monitor": "Queue Monitor", - "nav.scheduled_jobs": "Scheduled Jobs", - "nav.search": "Search", - "nav.settings": "Settings", - "nav.shared_links": "Shared Links", - "nav.signup": "Sign Up", - "nav.similarity": "Similarity", - "nav.skip_to_content": "Skip to main content", - "nav.status": "Status", - "nav.subscription": "Subscription", - "nav.toggle_dark_mode": "Toggle dark mode", - "nav.toggle_nav": "Toggle navigation menu", - "nav.upload": "Upload", - "nav.users": "Users", - "nav.version": "Version Info", - "notifications.filter_all": "All", - "notifications.filter_read": "Read only", - "notifications.filter_unread": "Unread only", - "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", - "notifications.mark_all_read": "Mark All as Read", - "notifications.mark_all_read_btn": "Mark all read", - "notifications.mark_read": "Mark as Read", - "notifications.no_notifications": "No notifications", - "notifications.page_title": "Notifications", - "notifications.tab_inbox": "Inbox", - "notifications.tab_settings": "Settings", - "notifications.title": "Notifications", - "notifications.unread_count": "{count} unread notifications", - "pipelines.active_label": "Active", + "nav.plan_designer": "Plan-Designer", + "nav.pricing": "Preise", + "nav.profile": "Profil", + "nav.queue": "Warteschlange", + "nav.queue_monitor": "Warteschlangen-Monitor", + "nav.scheduled_jobs": "Geplante Aufgaben", + "nav.search": "Suche", + "nav.settings": "Einstellungen", + "nav.shared_links": "Geteilte Links", + "nav.signup": "Registrieren", + "nav.similarity": "Ähnlichkeit", + "nav.skip_to_content": "Zum Hauptinhalt springen", + "nav.status": "Systemstatus", + "nav.subscription": "Abonnement", + "nav.toggle_dark_mode": "Dunkelmodus umschalten", + "nav.toggle_nav": "Navigationsmenü umschalten", + "nav.upload": "Hochladen", + "nav.users": "Benutzer", + "nav.version": "Versionsinformationen", + "notifications.filter_all": "Alle", + "notifications.filter_read": "Nur gelesene", + "notifications.filter_unread": "Nur ungelesene", + "notifications.manage_desc": "Verwalten Sie Ihren Posteingang, Ziele und Ereignispräferenzen", + "notifications.mark_all_read": "Alle als gelesen markieren", + "notifications.mark_all_read_btn": "Alle als gelesen markieren", + "notifications.mark_read": "Als gelesen markieren", + "notifications.no_notifications": "Keine Benachrichtigungen", + "notifications.page_title": "Benachrichtigungen", + "notifications.tab_inbox": "Posteingang", + "notifications.tab_settings": "Einstellungen", + "notifications.title": "Benachrichtigungen", + "notifications.unread_count": "{count} ungelesene Benachrichtigungen", + "pipelines.active_label": "Aktiv", "pipelines.add_step_btn": "Add Step", - "pipelines.create": "Create Pipeline", + "pipelines.create": "Pipeline erstellen", "pipelines.custom_label_label": "Custom Label", - "pipelines.default_label": "Default", - "pipelines.description_label": "Description", + "pipelines.default_label": "Standard", + "pipelines.description_label": "Beschreibung", "pipelines.description_placeholder": "Optional description", - "pipelines.disabled_label": "Disabled", - "pipelines.edit": "Edit Pipeline", - "pipelines.empty_state": "No pipelines yet", + "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": "Enabled", + "pipelines.enabled_label": "Aktiviert", "pipelines.force_cloud_ocr_label": "Force cloud OCR (skip local text extraction)", - "pipelines.inactive_label": "Inactive", + "pipelines.inactive_label": "Inaktiv", "pipelines.loading": "Loading pipelines…", "pipelines.name_placeholder": "My pipeline", "pipelines.new_pipeline_btn": "New Pipeline", @@ -703,8 +703,8 @@ "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.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.", @@ -712,7 +712,7 @@ "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", + "pipelines.title": "Verarbeitungs-Pipelines", "queue.active_tasks": "Active Tasks", "queue.auto_refresh_1": "Auto-refreshes every", "queue.auto_refresh_2": "seconds", @@ -738,42 +738,42 @@ "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.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": "Clear Filters", - "search.filter_date_from": "Date From", - "search.filter_date_to": "Date To", - "search.filter_document_type": "Document Type", - "search.filter_document_type_placeholder": "e.g. Invoice", - "search.filter_language": "Language", - "search.filter_language_placeholder": "e.g. de", - "search.filter_sender": "Sender", - "search.filter_sender_placeholder": "e.g. ACME Corp", + "search.filter_clear_button": "Filter zurücksetzen", + "search.filter_date_from": "Datum von", + "search.filter_date_to": "Datum bis", + "search.filter_document_type": "Dokumenttyp", + "search.filter_document_type_placeholder": "z.B. Rechnung", + "search.filter_language": "Sprache", + "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": "e.g. amazon", - "search.filter_text_quality": "Text Quality", - "search.filter_text_quality_all": "All", - "search.filter_text_quality_high": "High", - "search.filter_text_quality_low": "Low", - "search.filter_text_quality_medium": "Medium", - "search.filter_text_quality_no_text": "No text", - "search.heading": "Document Search", + "search.filter_tags_placeholder": "z.B. Amazon", + "search.filter_text_quality": "Textqualität", + "search.filter_text_quality_all": "Alle", + "search.filter_text_quality_high": "Hoch", + "search.filter_text_quality_low": "Niedrig", + "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": "Search documents by content, sender, tags, type...", - "search.loading_indicator": "Searching…", - "search.no_results": "No results found", - "search.page_title": "Search Documents", - "search.placeholder": "Search by filename, content, tags...", - "search.result_empty": "No documents found matching your query.", - "search.results_count": "{count} results found", + "search.input_placeholder": "Dokumente nach Inhalt, Absender, Tags, Typ suchen...", + "search.loading_indicator": "Suche läuft…", + "search.no_results": "Keine Ergebnisse gefunden", + "search.page_title": "Dokumente suchen", + "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": "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", + "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", @@ -797,15 +797,15 @@ "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.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": "Failed to save setting", + "settings.save_error": "Einstellung konnte nicht gespeichert werden", "settings.save_setting_title": "Save this setting", - "settings.save_success": "Setting saved successfully", + "settings.save_success": "Einstellung erfolgreich gespeichert", "settings.saving_state": "Saving…", "settings.search_aria_label": "Search settings", "settings.search_clear_aria": "Clear search", @@ -814,7 +814,7 @@ "settings.source_db_badge": "DB", "settings.source_default_badge": "DEFAULT", "settings.source_env_badge": "ENV", - "settings.title": "Settings", + "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", @@ -890,40 +890,40 @@ "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", - "status.git_commit": "Git Commit", - "status.last_check": "Last Check", - "status.page_title": "System Status", - "status.setting_label": "Setting", - "status.value_label": "Value", - "upload.browse_button": "Browse Files", - "upload.button_processing": "Processing...", - "upload.camera_button": "Take Photo / Scan Document", - "upload.download_button": "Download and Process", - "upload.downloading": "Downloading file from URL...", - "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.", + "status.app_version": "App-Version", + "status.build_date": "Build-Datum", + "status.container_id": "Container-ID", + "status.git_commit": "Git-Commit", + "status.last_check": "Letzte Prüfung", + "status.page_title": "Systemstatus", + "status.setting_label": "Einstellung", + "status.value_label": "Wert", + "upload.browse_button": "Dateien durchsuchen", + "upload.button_processing": "Verarbeitung...", + "upload.camera_button": "Foto aufnehmen / Dokument scannen", + "upload.download_button": "Herunterladen und verarbeiten", + "upload.downloading": "Datei wird von URL heruntergeladen...", + "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 failed", - "upload.error_invalid_url": "Invalid URL format", - "upload.error_url_required": "Please enter a URL", - "upload.file_size_hint": "Maximum size: 500 MB per file", - "upload.file_types": "Allowed types: PDF, Office documents (Word, Excel, PowerPoint, etc.), Images", - "upload.filename_description": "Leave empty to use filename from URL", - "upload.filename_label": "Filename (optional)", - "upload.filename_placeholder": "my-document.pdf", - "upload.max_size": "Maximum file size: {size}", - "upload.page_title": "Upload Files", - "upload.section_device": "Upload from Device", - "upload.section_url": "Upload from URL", - "upload.select_file": "Select File", - "upload.success": "File uploaded successfully", - "upload.title": "Upload Document", - "upload.uploading": "Uploading...", - "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", - "upload.url_label": "File URL", - "upload.url_placeholder": "https://example.com/document.pdf" + "upload.error": "Upload fehlgeschlagen", + "upload.error_invalid_url": "Ungültiges URL-Format", + "upload.error_url_required": "Bitte geben Sie eine URL ein", + "upload.file_size_hint": "Maximale Größe: 500 MB pro Datei", + "upload.file_types": "Erlaubte Typen: PDF, Office-Dokumente (Word, Excel, PowerPoint usw.), Bilder", + "upload.filename_description": "Leer lassen, um den Dateinamen aus der URL zu verwenden", + "upload.filename_label": "Dateiname (optional)", + "upload.filename_placeholder": "mein-dokument.pdf", + "upload.max_size": "Maximale Dateigröße: {size}", + "upload.page_title": "Dateien hochladen", + "upload.section_device": "Vom Gerät hochladen", + "upload.section_url": "Von URL hochladen", + "upload.select_file": "Datei auswählen", + "upload.success": "Datei erfolgreich hochgeladen", + "upload.title": "Dokument hochladen", + "upload.uploading": "Wird hochgeladen...", + "upload.url_description": "Geben Sie einen direkten Link zu einer Datei ein (PDF, Office-Dokumente oder Bilder)", + "upload.url_label": "Datei-URL", + "upload.url_placeholder": "https://beispiel.de/dokument.pdf" } From 4fb7533ab66d675694d9a93fc720dd32cc90dcdf Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:44:55 +0100 Subject: [PATCH 62/71] New translations en.json (Finnish) --- frontend/translations/fi.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/fi.json b/frontend/translations/fi.json index d36160ed..edc89326 100644 --- a/frontend/translations/fi.json +++ b/frontend/translations/fi.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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", @@ -366,7 +366,7 @@ "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 (OCR text, metadata, tags)", + "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", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Language changed to {language}", + "language.changed": "Kieli vaihdettiin kieleen {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Language", + "language.selector": "Suomi", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From 564b6872c9c2edf33c0ea86c2556834bcaa4ff9b Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:44:56 +0100 Subject: [PATCH 63/71] New translations en.json (Italian) --- frontend/translations/it.json | 316 +++++++++++++++++----------------- 1 file changed, 158 insertions(+), 158 deletions(-) diff --git a/frontend/translations/it.json b/frontend/translations/it.json index d36160ed..673ec619 100644 --- a/frontend/translations/it.json +++ b/frontend/translations/it.json @@ -106,22 +106,22 @@ "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", "auth.forgot_username": "Forgot username?", - "auth.login": "Log In", + "auth.login": "Accedi", "auth.login_title": "Log In", "auth.logo_alt": "DocuElevate Logo", - "auth.logout": "Log Out", - "auth.my_account": "My Account", + "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": "Profile", + "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": "Sign Up", + "auth.signup": "Registrati", "auth.signup_title": "Sign Up", "auth.username_label": "Username", "auth.username_or_email": "Username or Email", @@ -184,69 +184,69 @@ "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.actions": "Azioni", + "common.active": "Attivo", + "common.all": "Tutto", + "common.back": "Indietro", + "common.cancel": "Annulla", + "common.close": "Chiudi", "common.col_pending": "Pending", - "common.completed": "Completed", - "common.confirm": "Confirm", - "common.copied": "Copied!", - "common.copy": "Copy", + "common.completed": "Completato", + "common.confirm": "Conferma", + "common.copied": "Copiato!", + "common.copy": "Copia", "common.create": "Create", - "common.created": "Created", - "common.date": "Date", - "common.delete": "Delete", - "common.description": "Description", - "common.details": "Details", - "common.disabled": "Disabled", - "common.download": "Download", + "common.created": "Creato", + "common.date": "Data", + "common.delete": "Elimina", + "common.description": "Descrizione", + "common.details": "Dettagli", + "common.disabled": "Disabilitato", + "common.download": "Scarica", "common.duplicate": "Duplicate", - "common.edit": "Edit", - "common.enabled": "Enabled", - "common.error": "Error", - "common.failed": "Failed", - "common.filter": "Filter", - "common.inactive": "Inactive", + "common.edit": "Modifica", + "common.enabled": "Abilitato", + "common.error": "Errore", + "common.failed": "Fallito", + "common.filter": "Filtra", + "common.inactive": "Inattivo", "common.info": "Info", - "common.loading": "Loading...", - "common.name": "Name", - "common.next": "Next", + "common.loading": "Caricamento...", + "common.name": "Nome", + "common.next": "Avanti", "common.next_page": "Next page", "common.no": "No", - "common.none": "None", + "common.none": "Nessuno", "common.page": "Page", - "common.pending": "Pending", + "common.pending": "In attesa", "common.prev_page": "Previous page", "common.previous": "Previous", - "common.processing": "Processing", - "common.refresh": "Refresh", - "common.reset": "Reset", - "common.retry": "Retry", - "common.save": "Save", - "common.search": "Search", - "common.select": "Select", + "common.processing": "In elaborazione", + "common.refresh": "Aggiorna", + "common.reset": "Reimposta", + "common.retry": "Riprova", + "common.save": "Salva", + "common.search": "Cerca", + "common.select": "Seleziona", "common.select_placeholder": "— select —", - "common.size": "Size", - "common.status": "Status", + "common.size": "Dimensione", + "common.status": "Stato", "common.submit": "Submit", - "common.success": "Success", + "common.success": "Successo", "common.tags": "Tags", - "common.type": "Type", - "common.updated": "Updated", - "common.upload": "Upload", - "common.view": "View", - "common.warning": "Warning", - "common.yes": "Yes", - "cookie.accept": "Got it", + "common.type": "Tipo", + "common.updated": "Aggiornato", + "common.upload": "Carica", + "common.view": "Visualizza", + "common.warning": "Avviso", + "common.yes": "Sì", + "cookie.accept": "Ho capito", "cookie.learn_more": "Learn more", "cookie.message": "This website uses cookies to improve your experience.", - "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", - "cookie.notice_label": "Cookie notice", - "cookie.policy_link": "Cookie Policy", - "cookie.privacy_link": "Privacy Notice", + "cookie.notice": "DocuElevate utilizza solo cookie di sessione essenziali necessari per l'autenticazione e il funzionamento del servizio. Non vengono utilizzati cookie di tracciamento o analisi.", + "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", @@ -270,16 +270,16 @@ "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", - "dashboard.ocr_processed": "OCR Processed", - "dashboard.quick_actions": "Quick Actions", - "dashboard.recent_activity": "Recent Activity", - "dashboard.storage_targets": "Storage Targets", - "dashboard.title": "Dashboard", - "dashboard.total_files": "Total Files", - "dashboard.welcome": "Welcome to DocuElevate", + "dashboard.active_integrations": "Integrazioni attive", + "dashboard.files_this_month": "File questo mese", + "dashboard.files_today": "File oggi", + "dashboard.ocr_processed": "OCR elaborati", + "dashboard.quick_actions": "Azioni rapide", + "dashboard.recent_activity": "Attività recente", + "dashboard.storage_targets": "Destinazioni di archiviazione", + "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", @@ -317,14 +317,14 @@ "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", - "error.not_found_message": "The page you are looking for does not exist.", - "error.server_error": "Internal Server Error", - "error.server_error_message": "Something went wrong. Please try again later.", - "error.unauthorized": "Unauthorized", - "error.unauthorized_message": "You need to log in to access this page.", + "error.forbidden": "Vietato", + "error.forbidden_message": "Non hai il permesso di accedere a questa pagina.", + "error.not_found": "Pagina non trovata", + "error.not_found_message": "La pagina che stai cercando non esiste.", + "error.server_error": "Errore interno del server", + "error.server_error_message": "Qualcosa è andato storto. Riprova più tardi.", + "error.unauthorized": "Non autorizzato", + "error.unauthorized_message": "Devi accedere per visualizzare questa pagina.", "files.action_delete": "Delete file", "files.action_details": "View details", "files.action_preview": "Quick preview", @@ -337,12 +337,12 @@ "files.delete_modal_confirm": "Delete", "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", - "files.document_title": "Document Title", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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": "File Size", - "files.filename": "Filename", + "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", @@ -366,10 +366,10 @@ "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 (OCR text, metadata, tags)", + "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.no_files": "Nessun file trovato", + "files.ocr_status": "Stato OCR", "files.page_title": "File Records", "files.pagination_files": "files", "files.pagination_first": "First", @@ -399,23 +399,23 @@ "files.table_mime_type": "MIME Type", "files.table_original_filename": "Original Filename", "files.table_select_all": "Select all files on this page", - "files.tags": "Tags", - "files.title": "Files", + "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": "Uploaded", + "files.uploaded": "Caricato", "footer.about": "About", "footer.attribution": "Attribution", - "footer.attributions": "Attributions", - "footer.cookies": "Cookies", + "footer.attributions": "Attribuzioni", + "footer.cookies": "Cookie", "footer.copyright": "DocuElevate {year}", - "footer.imprint": "Imprint", - "footer.license": "License", - "footer.navigation": "Footer navigation", + "footer.imprint": "Note legali", + "footer.license": "Licenza", + "footer.navigation": "Navigazione a piè di pagina", "footer.privacy": "Privacy", - "footer.terms": "Terms", - "footer.version": "Version {version}", + "footer.terms": "Termini", + "footer.version": "Versione {version}", "help.destinations_dropbox": "Dropbox", "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", "help.destinations_email": "Email Forwarding", @@ -435,8 +435,8 @@ "help.destinations_sftp_desc": "Secure file transfer to any server.", "help.destinations_webhook": "Webhook", "help.destinations_webhook_desc": "POST metadata to any external endpoint.", - "help.documentation": "Documentation", - "help.faq": "Frequently Asked Questions", + "help.documentation": "Documentazione", + "help.faq": "Domande frequenti", "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", "help.faq_1_q": "How do I upload documents?", "help.faq_2_a": "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.", @@ -448,7 +448,7 @@ "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", "help.faq_5_q": "Is my data secure?", "help.faq_heading": "Frequently Asked Questions", - "help.getting_started": "Getting Started", + "help.getting_started": "Per iniziare", "help.heading": "Help Center", "help.page_title": "Help Center", "help.privacy_notice": "Privacy Notice", @@ -469,13 +469,13 @@ "help.sources_web_upload": "Web Upload", "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", - "help.support": "Support", + "help.support": "Supporto", "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", "help.support_ticket_button": "Submit a Ticket", "help.support_ticket_heading": "Open a Support Ticket", - "help.title": "Help Center", + "help.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.", "help.workflows_heading": "Workflows & Pipelines", @@ -570,24 +570,24 @@ "index.usage_my_usage": "My usage", "index.usage_today": "Files today", "index.usage_unlimited": "Unlimited", - "integrations.configure": "Configure", - "integrations.connect": "Connect", - "integrations.connected": "Connected", - "integrations.disconnect": "Disconnect", + "integrations.configure": "Configura", + "integrations.connect": "Connetti", + "integrations.connected": "Connesso", + "integrations.disconnect": "Disconnetti", "integrations.empty_state": "No integrations configured", "integrations.folder_label": "Folder", "integrations.host_label": "Host", "integrations.imap_settings": "IMAP Settings", - "integrations.not_connected": "Not Connected", + "integrations.not_connected": "Non connesso", "integrations.page_title": "Integrations", "integrations.password_label": "Password", "integrations.port_label": "Port", - "integrations.title": "Integrations", + "integrations.title": "Integrazioni", "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Language changed to {language}", + "language.changed": "Lingua cambiata in {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Language", + "language.selector": "Lingua", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", @@ -619,77 +619,77 @@ "language.tr": "Türkçe", "language.uk": "Українська", "language.zh": "中文", - "nav.about": "About", + "nav.about": "Informazioni", "nav.admin": "Admin", "nav.admin.audit_logs": "Audit Logs", "nav.admin.backups": "Backups", "nav.admin.plans": "Plans", "nav.admin.scheduled_jobs": "Scheduled Jobs", "nav.admin.users": "Users", - "nav.admin_actions": "Admin actions", - "nav.admin_menu": "Admin menu", - "nav.api_docs": "API Docs", + "nav.admin_actions": "Azioni admin", + "nav.admin_menu": "Menu admin", + "nav.api_docs": "Documentazione API", "nav.api_tokens": "API Tokens", - "nav.backup_restore": "Backup & Restore", - "nav.credentials": "Credentials", - "nav.dark_mode": "Dark Mode", - "nav.dashboard": "Dashboard", - "nav.developer_docs": "Developer Docs", - "nav.duplicates": "Duplicates", - "nav.file_manager": "File Manager", - "nav.files": "Files", - "nav.help": "Help", - "nav.help_center": "Help Center", + "nav.backup_restore": "Backup e ripristino", + "nav.credentials": "Credenziali", + "nav.dark_mode": "Modalità scura", + "nav.dashboard": "Cruscotto", + "nav.developer_docs": "Documentazione sviluppatore", + "nav.duplicates": "Duplicati", + "nav.file_manager": "Gestore file", + "nav.files": "File", + "nav.help": "Aiuto", + "nav.help_center": "Centro assistenza", "nav.imap": "Email Import", - "nav.integrations": "Integrations", - "nav.light_mode": "Light Mode", + "nav.integrations": "Integrazioni", + "nav.light_mode": "Modalità chiara", "nav.login": "Log In", "nav.logout": "Log Out", - "nav.main_navigation": "Main navigation", - "nav.notifications": "Notifications", - "nav.open_main_menu": "Open main menu", - "nav.pipelines": "Pipelines", - "nav.plan_designer": "Plan Designer", - "nav.pricing": "Pricing", + "nav.main_navigation": "Navigazione principale", + "nav.notifications": "Notifiche", + "nav.open_main_menu": "Apri menu principale", + "nav.pipelines": "Pipeline", + "nav.plan_designer": "Designer dei piani", + "nav.pricing": "Prezzi", "nav.profile": "Profile", "nav.queue": "Queue", - "nav.queue_monitor": "Queue Monitor", - "nav.scheduled_jobs": "Scheduled Jobs", - "nav.search": "Search", - "nav.settings": "Settings", + "nav.queue_monitor": "Monitor coda", + "nav.scheduled_jobs": "Attività pianificate", + "nav.search": "Cerca", + "nav.settings": "Impostazioni", "nav.shared_links": "Shared Links", "nav.signup": "Sign Up", - "nav.similarity": "Similarity", - "nav.skip_to_content": "Skip to main content", - "nav.status": "Status", + "nav.similarity": "Similarità", + "nav.skip_to_content": "Vai al contenuto principale", + "nav.status": "Stato", "nav.subscription": "Subscription", - "nav.toggle_dark_mode": "Toggle dark mode", - "nav.toggle_nav": "Toggle navigation menu", - "nav.upload": "Upload", - "nav.users": "Users", + "nav.toggle_dark_mode": "Attiva/disattiva modalità scura", + "nav.toggle_nav": "Attiva/disattiva menu di navigazione", + "nav.upload": "Carica", + "nav.users": "Utenti", "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", - "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read": "Segna tutto come letto", "notifications.mark_all_read_btn": "Mark all read", - "notifications.mark_read": "Mark as Read", - "notifications.no_notifications": "No notifications", + "notifications.mark_read": "Segna come letto", + "notifications.no_notifications": "Nessuna notifica", "notifications.page_title": "Notifications", "notifications.tab_inbox": "Inbox", "notifications.tab_settings": "Settings", - "notifications.title": "Notifications", - "notifications.unread_count": "{count} unread notifications", + "notifications.title": "Notifiche", + "notifications.unread_count": "{count} notifiche non lette", "pipelines.active_label": "Active", "pipelines.add_step_btn": "Add Step", - "pipelines.create": "Create Pipeline", + "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": "Edit Pipeline", + "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", @@ -712,7 +712,7 @@ "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", + "pipelines.title": "Pipeline di elaborazione", "queue.active_tasks": "Active Tasks", "queue.auto_refresh_1": "Auto-refreshes every", "queue.auto_refresh_2": "seconds", @@ -762,18 +762,18 @@ "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", + "search.no_results": "Nessun risultato trovato", "search.page_title": "Search Documents", - "search.placeholder": "Search by filename, content, tags...", + "search.placeholder": "Cerca per nome, contenuto, tag...", "search.result_empty": "No documents found matching your query.", - "search.results_count": "{count} results found", + "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": "Search Documents", + "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", @@ -797,15 +797,15 @@ "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.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": "Failed to save setting", + "settings.save_error": "Salvataggio impostazione fallito", "settings.save_setting_title": "Save this setting", - "settings.save_success": "Setting saved successfully", + "settings.save_success": "Impostazione salvata con successo", "settings.saving_state": "Saving…", "settings.search_aria_label": "Search settings", "settings.search_clear_aria": "Clear search", @@ -814,7 +814,7 @@ "settings.source_db_badge": "DB", "settings.source_default_badge": "DEFAULT", "settings.source_env_badge": "ENV", - "settings.title": "Settings", + "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", @@ -903,11 +903,11 @@ "upload.camera_button": "Take Photo / Scan Document", "upload.download_button": "Download and Process", "upload.downloading": "Downloading file from URL...", - "upload.drag_drop": "Drag & drop files here or click to browse", + "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": "Upload failed", + "upload.error": "Caricamento fallito", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", "upload.file_size_hint": "Maximum size: 500 MB per file", @@ -915,14 +915,14 @@ "upload.filename_description": "Leave empty to use filename from URL", "upload.filename_label": "Filename (optional)", "upload.filename_placeholder": "my-document.pdf", - "upload.max_size": "Maximum file size: {size}", + "upload.max_size": "Dimensione massima del file: {size}", "upload.page_title": "Upload Files", "upload.section_device": "Upload from Device", "upload.section_url": "Upload from URL", - "upload.select_file": "Select File", - "upload.success": "File uploaded successfully", - "upload.title": "Upload Document", - "upload.uploading": "Uploading...", + "upload.select_file": "Seleziona file", + "upload.success": "File caricato con successo", + "upload.title": "Carica documento", + "upload.uploading": "Caricamento in corso...", "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", "upload.url_label": "File URL", "upload.url_placeholder": "https://example.com/document.pdf" From 805e67c622d6028dcfc606d8a98545ccc495858c Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:44:58 +0100 Subject: [PATCH 64/71] New translations en.json (Dutch) --- frontend/translations/nl.json | 298 +++++++++++++++++----------------- 1 file changed, 149 insertions(+), 149 deletions(-) diff --git a/frontend/translations/nl.json b/frontend/translations/nl.json index d36160ed..2ac89e9b 100644 --- a/frontend/translations/nl.json +++ b/frontend/translations/nl.json @@ -106,22 +106,22 @@ "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", "auth.forgot_username": "Forgot username?", - "auth.login": "Log In", + "auth.login": "Inloggen", "auth.login_title": "Log In", "auth.logo_alt": "DocuElevate Logo", - "auth.logout": "Log Out", - "auth.my_account": "My Account", + "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": "Profile", + "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": "Sign Up", + "auth.signup": "Registreren", "auth.signup_title": "Sign Up", "auth.username_label": "Username", "auth.username_or_email": "Username or Email", @@ -184,69 +184,69 @@ "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.actions": "Acties", + "common.active": "Actief", + "common.all": "Alles", + "common.back": "Terug", + "common.cancel": "Annuleren", + "common.close": "Sluiten", "common.col_pending": "Pending", - "common.completed": "Completed", - "common.confirm": "Confirm", - "common.copied": "Copied!", - "common.copy": "Copy", + "common.completed": "Voltooid", + "common.confirm": "Bevestigen", + "common.copied": "Gekopieerd!", + "common.copy": "Kopiëren", "common.create": "Create", - "common.created": "Created", - "common.date": "Date", - "common.delete": "Delete", - "common.description": "Description", + "common.created": "Aangemaakt", + "common.date": "Datum", + "common.delete": "Verwijderen", + "common.description": "Beschrijving", "common.details": "Details", - "common.disabled": "Disabled", - "common.download": "Download", + "common.disabled": "Uitgeschakeld", + "common.download": "Downloaden", "common.duplicate": "Duplicate", - "common.edit": "Edit", - "common.enabled": "Enabled", - "common.error": "Error", - "common.failed": "Failed", - "common.filter": "Filter", - "common.inactive": "Inactive", + "common.edit": "Bewerken", + "common.enabled": "Ingeschakeld", + "common.error": "Fout", + "common.failed": "Mislukt", + "common.filter": "Filteren", + "common.inactive": "Inactief", "common.info": "Info", - "common.loading": "Loading...", - "common.name": "Name", - "common.next": "Next", + "common.loading": "Laden...", + "common.name": "Naam", + "common.next": "Volgende", "common.next_page": "Next page", - "common.no": "No", - "common.none": "None", + "common.no": "Nee", + "common.none": "Geen", "common.page": "Page", - "common.pending": "Pending", + "common.pending": "In afwachting", "common.prev_page": "Previous page", "common.previous": "Previous", - "common.processing": "Processing", - "common.refresh": "Refresh", - "common.reset": "Reset", - "common.retry": "Retry", - "common.save": "Save", - "common.search": "Search", - "common.select": "Select", + "common.processing": "Verwerken", + "common.refresh": "Vernieuwen", + "common.reset": "Herstellen", + "common.retry": "Opnieuw proberen", + "common.save": "Opslaan", + "common.search": "Zoeken", + "common.select": "Selecteren", "common.select_placeholder": "— select —", - "common.size": "Size", + "common.size": "Grootte", "common.status": "Status", "common.submit": "Submit", - "common.success": "Success", + "common.success": "Succes", "common.tags": "Tags", "common.type": "Type", - "common.updated": "Updated", - "common.upload": "Upload", - "common.view": "View", - "common.warning": "Warning", - "common.yes": "Yes", - "cookie.accept": "Got it", + "common.updated": "Bijgewerkt", + "common.upload": "Uploaden", + "common.view": "Bekijken", + "common.warning": "Waarschuwing", + "common.yes": "Ja", + "cookie.accept": "Begrepen", "cookie.learn_more": "Learn more", "cookie.message": "This website uses cookies to improve your experience.", - "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", - "cookie.notice_label": "Cookie notice", - "cookie.policy_link": "Cookie Policy", - "cookie.privacy_link": "Privacy Notice", + "cookie.notice": "DocuElevate gebruikt alleen essentiële sessiecookies die nodig zijn voor authenticatie en werking van de service. Er worden geen tracking- of analysecookies gebruikt.", + "cookie.notice_label": "Cookiemelding", + "cookie.policy_link": "Cookiebeleid", + "cookie.privacy_link": "Privacyverklaring", "credentials.col_action": "Action", "credentials.col_credential": "Credential", "credentials.col_source": "Source", @@ -270,16 +270,16 @@ "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", - "dashboard.ocr_processed": "OCR Processed", - "dashboard.quick_actions": "Quick Actions", - "dashboard.recent_activity": "Recent Activity", - "dashboard.storage_targets": "Storage Targets", + "dashboard.active_integrations": "Actieve integraties", + "dashboard.files_this_month": "Bestanden deze maand", + "dashboard.files_today": "Bestanden vandaag", + "dashboard.ocr_processed": "OCR verwerkt", + "dashboard.quick_actions": "Snelle acties", + "dashboard.recent_activity": "Recente activiteit", + "dashboard.storage_targets": "Opslagdoelen", "dashboard.title": "Dashboard", - "dashboard.total_files": "Total Files", - "dashboard.welcome": "Welcome to DocuElevate", + "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", @@ -317,14 +317,14 @@ "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", - "error.not_found_message": "The page you are looking for does not exist.", - "error.server_error": "Internal Server Error", - "error.server_error_message": "Something went wrong. Please try again later.", - "error.unauthorized": "Unauthorized", - "error.unauthorized_message": "You need to log in to access this page.", + "error.forbidden": "Verboden", + "error.forbidden_message": "U heeft geen toestemming om deze pagina te openen.", + "error.not_found": "Pagina niet gevonden", + "error.not_found_message": "De pagina die u zoekt bestaat niet.", + "error.server_error": "Interne serverfout", + "error.server_error_message": "Er is iets misgegaan. Probeer het later opnieuw.", + "error.unauthorized": "Niet geautoriseerd", + "error.unauthorized_message": "U moet inloggen om deze pagina te openen.", "files.action_delete": "Delete file", "files.action_details": "View details", "files.action_preview": "Quick preview", @@ -337,12 +337,12 @@ "files.delete_modal_confirm": "Delete", "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", - "files.document_title": "Document Title", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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": "File Size", - "files.filename": "Filename", + "files.file_size": "Bestandsgrootte", + "files.filename": "Bestandsnaam", "files.files_selected": "files selected", "files.filter_all_providers": "All Providers", "files.filter_all_statuses": "All Statuses", @@ -366,10 +366,10 @@ "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 (OCR text, metadata, tags)", + "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.no_files": "Geen bestanden gevonden", + "files.ocr_status": "OCR-status", "files.page_title": "File Records", "files.pagination_files": "files", "files.pagination_first": "First", @@ -400,22 +400,22 @@ "files.table_original_filename": "Original Filename", "files.table_select_all": "Select all files on this page", "files.tags": "Tags", - "files.title": "Files", + "files.title": "Bestanden", "files.upload_modal_aria": "Upload progress", "files.upload_modal_close": "Close upload progress", "files.upload_modal_header": "Uploading Files", - "files.uploaded": "Uploaded", + "files.uploaded": "Geüpload", "footer.about": "About", "footer.attribution": "Attribution", - "footer.attributions": "Attributions", + "footer.attributions": "Attributies", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", - "footer.imprint": "Imprint", - "footer.license": "License", - "footer.navigation": "Footer navigation", + "footer.imprint": "Colofon", + "footer.license": "Licentie", + "footer.navigation": "Voettekstnavigatie", "footer.privacy": "Privacy", - "footer.terms": "Terms", - "footer.version": "Version {version}", + "footer.terms": "Voorwaarden", + "footer.version": "Versie {version}", "help.destinations_dropbox": "Dropbox", "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", "help.destinations_email": "Email Forwarding", @@ -435,8 +435,8 @@ "help.destinations_sftp_desc": "Secure file transfer to any server.", "help.destinations_webhook": "Webhook", "help.destinations_webhook_desc": "POST metadata to any external endpoint.", - "help.documentation": "Documentation", - "help.faq": "Frequently Asked Questions", + "help.documentation": "Documentatie", + "help.faq": "Veelgestelde vragen", "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", "help.faq_1_q": "How do I upload documents?", "help.faq_2_a": "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.", @@ -448,7 +448,7 @@ "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", "help.faq_5_q": "Is my data secure?", "help.faq_heading": "Frequently Asked Questions", - "help.getting_started": "Getting Started", + "help.getting_started": "Aan de slag", "help.heading": "Help Center", "help.page_title": "Help Center", "help.privacy_notice": "Privacy Notice", @@ -469,13 +469,13 @@ "help.sources_web_upload": "Web Upload", "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", - "help.support": "Support", + "help.support": "Ondersteuning", "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", "help.support_ticket_button": "Submit a Ticket", "help.support_ticket_heading": "Open a Support Ticket", - "help.title": "Help Center", + "help.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.", "help.workflows_heading": "Workflows & Pipelines", @@ -570,24 +570,24 @@ "index.usage_my_usage": "My usage", "index.usage_today": "Files today", "index.usage_unlimited": "Unlimited", - "integrations.configure": "Configure", - "integrations.connect": "Connect", - "integrations.connected": "Connected", - "integrations.disconnect": "Disconnect", + "integrations.configure": "Configureren", + "integrations.connect": "Verbinden", + "integrations.connected": "Verbonden", + "integrations.disconnect": "Verbreken", "integrations.empty_state": "No integrations configured", "integrations.folder_label": "Folder", "integrations.host_label": "Host", "integrations.imap_settings": "IMAP Settings", - "integrations.not_connected": "Not Connected", + "integrations.not_connected": "Niet verbonden", "integrations.page_title": "Integrations", "integrations.password_label": "Password", "integrations.port_label": "Port", - "integrations.title": "Integrations", + "integrations.title": "Integraties", "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Language changed to {language}", + "language.changed": "Taal gewijzigd naar {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Language", + "language.selector": "Taal", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", @@ -619,77 +619,77 @@ "language.tr": "Türkçe", "language.uk": "Українська", "language.zh": "中文", - "nav.about": "About", + "nav.about": "Over ons", "nav.admin": "Admin", "nav.admin.audit_logs": "Audit Logs", "nav.admin.backups": "Backups", "nav.admin.plans": "Plans", "nav.admin.scheduled_jobs": "Scheduled Jobs", "nav.admin.users": "Users", - "nav.admin_actions": "Admin actions", - "nav.admin_menu": "Admin menu", - "nav.api_docs": "API Docs", + "nav.admin_actions": "Admin-acties", + "nav.admin_menu": "Admin-menu", + "nav.api_docs": "API-documentatie", "nav.api_tokens": "API Tokens", - "nav.backup_restore": "Backup & Restore", - "nav.credentials": "Credentials", - "nav.dark_mode": "Dark Mode", + "nav.backup_restore": "Back-up en herstel", + "nav.credentials": "Referenties", + "nav.dark_mode": "Donkere modus", "nav.dashboard": "Dashboard", - "nav.developer_docs": "Developer Docs", - "nav.duplicates": "Duplicates", - "nav.file_manager": "File Manager", - "nav.files": "Files", + "nav.developer_docs": "Ontwikkelaarsdocumentatie", + "nav.duplicates": "Duplicaten", + "nav.file_manager": "Bestandsbeheer", + "nav.files": "Bestanden", "nav.help": "Help", - "nav.help_center": "Help Center", + "nav.help_center": "Helpcentrum", "nav.imap": "Email Import", - "nav.integrations": "Integrations", - "nav.light_mode": "Light Mode", + "nav.integrations": "Integraties", + "nav.light_mode": "Lichte modus", "nav.login": "Log In", "nav.logout": "Log Out", - "nav.main_navigation": "Main navigation", - "nav.notifications": "Notifications", - "nav.open_main_menu": "Open main menu", + "nav.main_navigation": "Hoofdnavigatie", + "nav.notifications": "Meldingen", + "nav.open_main_menu": "Hoofdmenu openen", "nav.pipelines": "Pipelines", - "nav.plan_designer": "Plan Designer", - "nav.pricing": "Pricing", + "nav.plan_designer": "Planontwerper", + "nav.pricing": "Prijzen", "nav.profile": "Profile", "nav.queue": "Queue", - "nav.queue_monitor": "Queue Monitor", - "nav.scheduled_jobs": "Scheduled Jobs", - "nav.search": "Search", - "nav.settings": "Settings", + "nav.queue_monitor": "Wachtrijmonitor", + "nav.scheduled_jobs": "Geplande taken", + "nav.search": "Zoeken", + "nav.settings": "Instellingen", "nav.shared_links": "Shared Links", "nav.signup": "Sign Up", - "nav.similarity": "Similarity", - "nav.skip_to_content": "Skip to main content", + "nav.similarity": "Gelijkenis", + "nav.skip_to_content": "Ga naar hoofdinhoud", "nav.status": "Status", "nav.subscription": "Subscription", - "nav.toggle_dark_mode": "Toggle dark mode", - "nav.toggle_nav": "Toggle navigation menu", - "nav.upload": "Upload", - "nav.users": "Users", + "nav.toggle_dark_mode": "Donkere modus schakelen", + "nav.toggle_nav": "Navigatiemenu schakelen", + "nav.upload": "Uploaden", + "nav.users": "Gebruikers", "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", - "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read": "Alles als gelezen markeren", "notifications.mark_all_read_btn": "Mark all read", - "notifications.mark_read": "Mark as Read", - "notifications.no_notifications": "No notifications", + "notifications.mark_read": "Markeren als gelezen", + "notifications.no_notifications": "Geen meldingen", "notifications.page_title": "Notifications", "notifications.tab_inbox": "Inbox", "notifications.tab_settings": "Settings", - "notifications.title": "Notifications", - "notifications.unread_count": "{count} unread notifications", + "notifications.title": "Meldingen", + "notifications.unread_count": "{count} ongelezen meldingen", "pipelines.active_label": "Active", "pipelines.add_step_btn": "Add Step", - "pipelines.create": "Create Pipeline", + "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": "Edit Pipeline", + "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", @@ -712,7 +712,7 @@ "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", + "pipelines.title": "Verwerkingspipelines", "queue.active_tasks": "Active Tasks", "queue.auto_refresh_1": "Auto-refreshes every", "queue.auto_refresh_2": "seconds", @@ -762,18 +762,18 @@ "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", + "search.no_results": "Geen resultaten gevonden", "search.page_title": "Search Documents", - "search.placeholder": "Search by filename, content, tags...", + "search.placeholder": "Zoeken op naam, inhoud, tags...", "search.result_empty": "No documents found matching your query.", - "search.results_count": "{count} results found", + "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": "Search Documents", + "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", @@ -797,15 +797,15 @@ "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.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": "Failed to save setting", + "settings.save_error": "Instelling opslaan mislukt", "settings.save_setting_title": "Save this setting", - "settings.save_success": "Setting saved successfully", + "settings.save_success": "Instelling succesvol opgeslagen", "settings.saving_state": "Saving…", "settings.search_aria_label": "Search settings", "settings.search_clear_aria": "Clear search", @@ -814,7 +814,7 @@ "settings.source_db_badge": "DB", "settings.source_default_badge": "DEFAULT", "settings.source_env_badge": "ENV", - "settings.title": "Settings", + "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", @@ -903,11 +903,11 @@ "upload.camera_button": "Take Photo / Scan Document", "upload.download_button": "Download and Process", "upload.downloading": "Downloading file from URL...", - "upload.drag_drop": "Drag & drop files here or click to browse", + "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 failed", + "upload.error": "Upload mislukt", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", "upload.file_size_hint": "Maximum size: 500 MB per file", @@ -915,14 +915,14 @@ "upload.filename_description": "Leave empty to use filename from URL", "upload.filename_label": "Filename (optional)", "upload.filename_placeholder": "my-document.pdf", - "upload.max_size": "Maximum file size: {size}", + "upload.max_size": "Maximale bestandsgrootte: {size}", "upload.page_title": "Upload Files", "upload.section_device": "Upload from Device", "upload.section_url": "Upload from URL", - "upload.select_file": "Select File", - "upload.success": "File uploaded successfully", - "upload.title": "Upload Document", - "upload.uploading": "Uploading...", + "upload.select_file": "Bestand selecteren", + "upload.success": "Bestand succesvol geüpload", + "upload.title": "Document uploaden", + "upload.uploading": "Uploaden...", "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", "upload.url_label": "File URL", "upload.url_placeholder": "https://example.com/document.pdf" From cfa7fdc68aa6c9d7764bdbf4280a19531e378415 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:44:59 +0100 Subject: [PATCH 65/71] New translations en.json (Polish) --- frontend/translations/pl.json | 316 +++++++++++++++++----------------- 1 file changed, 158 insertions(+), 158 deletions(-) diff --git a/frontend/translations/pl.json b/frontend/translations/pl.json index d36160ed..575a4905 100644 --- a/frontend/translations/pl.json +++ b/frontend/translations/pl.json @@ -106,22 +106,22 @@ "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", "auth.forgot_username": "Forgot username?", - "auth.login": "Log In", + "auth.login": "Zaloguj się", "auth.login_title": "Log In", "auth.logo_alt": "DocuElevate Logo", - "auth.logout": "Log Out", - "auth.my_account": "My Account", + "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": "Profile", + "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": "Sign Up", + "auth.signup": "Zarejestruj się", "auth.signup_title": "Sign Up", "auth.username_label": "Username", "auth.username_or_email": "Username or Email", @@ -184,69 +184,69 @@ "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.actions": "Akcje", + "common.active": "Aktywny", + "common.all": "Wszystko", + "common.back": "Wstecz", + "common.cancel": "Anuluj", + "common.close": "Zamknij", "common.col_pending": "Pending", - "common.completed": "Completed", - "common.confirm": "Confirm", - "common.copied": "Copied!", - "common.copy": "Copy", + "common.completed": "Zakończono", + "common.confirm": "Potwierdź", + "common.copied": "Skopiowano!", + "common.copy": "Kopiuj", "common.create": "Create", - "common.created": "Created", - "common.date": "Date", - "common.delete": "Delete", - "common.description": "Description", - "common.details": "Details", - "common.disabled": "Disabled", - "common.download": "Download", + "common.created": "Utworzono", + "common.date": "Data", + "common.delete": "Usuń", + "common.description": "Opis", + "common.details": "Szczegóły", + "common.disabled": "Wyłączony", + "common.download": "Pobierz", "common.duplicate": "Duplicate", - "common.edit": "Edit", - "common.enabled": "Enabled", - "common.error": "Error", - "common.failed": "Failed", - "common.filter": "Filter", - "common.inactive": "Inactive", - "common.info": "Info", - "common.loading": "Loading...", - "common.name": "Name", - "common.next": "Next", + "common.edit": "Edytuj", + "common.enabled": "Włączony", + "common.error": "Błąd", + "common.failed": "Nieudane", + "common.filter": "Filtruj", + "common.inactive": "Nieaktywny", + "common.info": "Informacja", + "common.loading": "Ładowanie...", + "common.name": "Nazwa", + "common.next": "Dalej", "common.next_page": "Next page", - "common.no": "No", - "common.none": "None", + "common.no": "Nie", + "common.none": "Brak", "common.page": "Page", - "common.pending": "Pending", + "common.pending": "Oczekujące", "common.prev_page": "Previous page", "common.previous": "Previous", - "common.processing": "Processing", - "common.refresh": "Refresh", - "common.reset": "Reset", - "common.retry": "Retry", - "common.save": "Save", - "common.search": "Search", - "common.select": "Select", + "common.processing": "Przetwarzanie", + "common.refresh": "Odśwież", + "common.reset": "Resetuj", + "common.retry": "Ponów", + "common.save": "Zapisz", + "common.search": "Szukaj", + "common.select": "Wybierz", "common.select_placeholder": "— select —", - "common.size": "Size", + "common.size": "Rozmiar", "common.status": "Status", "common.submit": "Submit", - "common.success": "Success", + "common.success": "Sukces", "common.tags": "Tags", - "common.type": "Type", - "common.updated": "Updated", - "common.upload": "Upload", - "common.view": "View", - "common.warning": "Warning", - "common.yes": "Yes", - "cookie.accept": "Got it", + "common.type": "Typ", + "common.updated": "Zaktualizowano", + "common.upload": "Prześlij", + "common.view": "Wyświetl", + "common.warning": "Ostrzeżenie", + "common.yes": "Tak", + "cookie.accept": "Rozumiem", "cookie.learn_more": "Learn more", "cookie.message": "This website uses cookies to improve your experience.", - "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", - "cookie.notice_label": "Cookie notice", - "cookie.policy_link": "Cookie Policy", - "cookie.privacy_link": "Privacy Notice", + "cookie.notice": "DocuElevate używa wyłącznie niezbędnych plików cookie sesji wymaganych do uwierzytelniania i działania usługi. Nie są używane pliki cookie śledzące ani analityczne.", + "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", @@ -270,16 +270,16 @@ "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", - "dashboard.ocr_processed": "OCR Processed", - "dashboard.quick_actions": "Quick Actions", - "dashboard.recent_activity": "Recent Activity", - "dashboard.storage_targets": "Storage Targets", - "dashboard.title": "Dashboard", - "dashboard.total_files": "Total Files", - "dashboard.welcome": "Welcome to DocuElevate", + "dashboard.active_integrations": "Aktywne integracje", + "dashboard.files_this_month": "Pliki w tym miesiącu", + "dashboard.files_today": "Pliki dzisiaj", + "dashboard.ocr_processed": "OCR przetworzone", + "dashboard.quick_actions": "Szybkie akcje", + "dashboard.recent_activity": "Ostatnia aktywność", + "dashboard.storage_targets": "Cele przechowywania", + "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", @@ -317,14 +317,14 @@ "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", - "error.not_found_message": "The page you are looking for does not exist.", - "error.server_error": "Internal Server Error", - "error.server_error_message": "Something went wrong. Please try again later.", - "error.unauthorized": "Unauthorized", - "error.unauthorized_message": "You need to log in to access this page.", + "error.forbidden": "Zabroniono", + "error.forbidden_message": "Nie masz uprawnień do dostępu do tej strony.", + "error.not_found": "Nie znaleziono strony", + "error.not_found_message": "Szukana strona nie istnieje.", + "error.server_error": "Wewnętrzny błąd serwera", + "error.server_error_message": "Coś poszło nie tak. Spróbuj ponownie później.", + "error.unauthorized": "Brak autoryzacji", + "error.unauthorized_message": "Musisz się zalogować, aby uzyskać dostęp do tej strony.", "files.action_delete": "Delete file", "files.action_details": "View details", "files.action_preview": "Quick preview", @@ -337,12 +337,12 @@ "files.delete_modal_confirm": "Delete", "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", - "files.document_title": "Document Title", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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": "File Size", - "files.filename": "Filename", + "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", @@ -366,10 +366,10 @@ "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 (OCR text, metadata, tags)", + "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.no_files": "Nie znaleziono plików", + "files.ocr_status": "Status OCR", "files.page_title": "File Records", "files.pagination_files": "files", "files.pagination_first": "First", @@ -399,23 +399,23 @@ "files.table_mime_type": "MIME Type", "files.table_original_filename": "Original Filename", "files.table_select_all": "Select all files on this page", - "files.tags": "Tags", - "files.title": "Files", + "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": "Uploaded", + "files.uploaded": "Przesłano", "footer.about": "About", "footer.attribution": "Attribution", - "footer.attributions": "Attributions", + "footer.attributions": "Atrybuty", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", - "footer.imprint": "Imprint", - "footer.license": "License", - "footer.navigation": "Footer navigation", - "footer.privacy": "Privacy", - "footer.terms": "Terms", - "footer.version": "Version {version}", + "footer.imprint": "Impressum", + "footer.license": "Licencja", + "footer.navigation": "Nawigacja stopki", + "footer.privacy": "Prywatność", + "footer.terms": "Regulamin", + "footer.version": "Wersja {version}", "help.destinations_dropbox": "Dropbox", "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", "help.destinations_email": "Email Forwarding", @@ -435,8 +435,8 @@ "help.destinations_sftp_desc": "Secure file transfer to any server.", "help.destinations_webhook": "Webhook", "help.destinations_webhook_desc": "POST metadata to any external endpoint.", - "help.documentation": "Documentation", - "help.faq": "Frequently Asked Questions", + "help.documentation": "Dokumentacja", + "help.faq": "Często zadawane pytania", "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", "help.faq_1_q": "How do I upload documents?", "help.faq_2_a": "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.", @@ -448,7 +448,7 @@ "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", "help.faq_5_q": "Is my data secure?", "help.faq_heading": "Frequently Asked Questions", - "help.getting_started": "Getting Started", + "help.getting_started": "Pierwsze kroki", "help.heading": "Help Center", "help.page_title": "Help Center", "help.privacy_notice": "Privacy Notice", @@ -469,13 +469,13 @@ "help.sources_web_upload": "Web Upload", "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", - "help.support": "Support", + "help.support": "Wsparcie", "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", "help.support_ticket_button": "Submit a Ticket", "help.support_ticket_heading": "Open a Support Ticket", - "help.title": "Help Center", + "help.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.", "help.workflows_heading": "Workflows & Pipelines", @@ -570,24 +570,24 @@ "index.usage_my_usage": "My usage", "index.usage_today": "Files today", "index.usage_unlimited": "Unlimited", - "integrations.configure": "Configure", - "integrations.connect": "Connect", - "integrations.connected": "Connected", - "integrations.disconnect": "Disconnect", + "integrations.configure": "Konfiguruj", + "integrations.connect": "Połącz", + "integrations.connected": "Połączono", + "integrations.disconnect": "Rozłącz", "integrations.empty_state": "No integrations configured", "integrations.folder_label": "Folder", "integrations.host_label": "Host", "integrations.imap_settings": "IMAP Settings", - "integrations.not_connected": "Not Connected", + "integrations.not_connected": "Nie połączono", "integrations.page_title": "Integrations", "integrations.password_label": "Password", "integrations.port_label": "Port", - "integrations.title": "Integrations", + "integrations.title": "Integracje", "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Language changed to {language}", + "language.changed": "Język zmieniony na {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Language", + "language.selector": "Język", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", @@ -619,77 +619,77 @@ "language.tr": "Türkçe", "language.uk": "Українська", "language.zh": "中文", - "nav.about": "About", + "nav.about": "O nas", "nav.admin": "Admin", "nav.admin.audit_logs": "Audit Logs", "nav.admin.backups": "Backups", "nav.admin.plans": "Plans", "nav.admin.scheduled_jobs": "Scheduled Jobs", "nav.admin.users": "Users", - "nav.admin_actions": "Admin actions", - "nav.admin_menu": "Admin menu", - "nav.api_docs": "API Docs", + "nav.admin_actions": "Akcje administratora", + "nav.admin_menu": "Menu administratora", + "nav.api_docs": "Dokumentacja API", "nav.api_tokens": "API Tokens", - "nav.backup_restore": "Backup & Restore", - "nav.credentials": "Credentials", - "nav.dark_mode": "Dark Mode", - "nav.dashboard": "Dashboard", - "nav.developer_docs": "Developer Docs", - "nav.duplicates": "Duplicates", - "nav.file_manager": "File Manager", - "nav.files": "Files", - "nav.help": "Help", - "nav.help_center": "Help Center", + "nav.backup_restore": "Kopia zapasowa i przywracanie", + "nav.credentials": "Poświadczenia", + "nav.dark_mode": "Tryb ciemny", + "nav.dashboard": "Pulpit", + "nav.developer_docs": "Dokumentacja dla programistów", + "nav.duplicates": "Duplikaty", + "nav.file_manager": "Menedżer plików", + "nav.files": "Pliki", + "nav.help": "Pomoc", + "nav.help_center": "Centrum pomocy", "nav.imap": "Email Import", - "nav.integrations": "Integrations", - "nav.light_mode": "Light Mode", + "nav.integrations": "Integracje", + "nav.light_mode": "Tryb jasny", "nav.login": "Log In", "nav.logout": "Log Out", - "nav.main_navigation": "Main navigation", - "nav.notifications": "Notifications", - "nav.open_main_menu": "Open main menu", - "nav.pipelines": "Pipelines", - "nav.plan_designer": "Plan Designer", - "nav.pricing": "Pricing", + "nav.main_navigation": "Nawigacja główna", + "nav.notifications": "Powiadomienia", + "nav.open_main_menu": "Otwórz menu główne", + "nav.pipelines": "Potoki", + "nav.plan_designer": "Projektant planów", + "nav.pricing": "Cennik", "nav.profile": "Profile", "nav.queue": "Queue", - "nav.queue_monitor": "Queue Monitor", - "nav.scheduled_jobs": "Scheduled Jobs", - "nav.search": "Search", - "nav.settings": "Settings", + "nav.queue_monitor": "Monitor kolejki", + "nav.scheduled_jobs": "Zaplanowane zadania", + "nav.search": "Szukaj", + "nav.settings": "Ustawienia", "nav.shared_links": "Shared Links", "nav.signup": "Sign Up", - "nav.similarity": "Similarity", - "nav.skip_to_content": "Skip to main content", + "nav.similarity": "Podobieństwo", + "nav.skip_to_content": "Przejdź do treści głównej", "nav.status": "Status", "nav.subscription": "Subscription", - "nav.toggle_dark_mode": "Toggle dark mode", - "nav.toggle_nav": "Toggle navigation menu", - "nav.upload": "Upload", - "nav.users": "Users", + "nav.toggle_dark_mode": "Przełącz tryb ciemny", + "nav.toggle_nav": "Przełącz menu nawigacji", + "nav.upload": "Prześlij", + "nav.users": "Użytkownicy", "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", - "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read": "Oznacz wszystkie jako przeczytane", "notifications.mark_all_read_btn": "Mark all read", - "notifications.mark_read": "Mark as Read", - "notifications.no_notifications": "No notifications", + "notifications.mark_read": "Oznacz jako przeczytane", + "notifications.no_notifications": "Brak powiadomień", "notifications.page_title": "Notifications", "notifications.tab_inbox": "Inbox", "notifications.tab_settings": "Settings", - "notifications.title": "Notifications", - "notifications.unread_count": "{count} unread notifications", + "notifications.title": "Powiadomienia", + "notifications.unread_count": "{count} nieprzeczytanych powiadomień", "pipelines.active_label": "Active", "pipelines.add_step_btn": "Add Step", - "pipelines.create": "Create Pipeline", + "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": "Edit Pipeline", + "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", @@ -712,7 +712,7 @@ "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", + "pipelines.title": "Potoki przetwarzania", "queue.active_tasks": "Active Tasks", "queue.auto_refresh_1": "Auto-refreshes every", "queue.auto_refresh_2": "seconds", @@ -762,18 +762,18 @@ "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", + "search.no_results": "Nie znaleziono wyników", "search.page_title": "Search Documents", - "search.placeholder": "Search by filename, content, tags...", + "search.placeholder": "Szukaj wg nazwy, treści, tagów...", "search.result_empty": "No documents found matching your query.", - "search.results_count": "{count} results found", + "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": "Search Documents", + "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", @@ -797,15 +797,15 @@ "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.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": "Failed to save setting", + "settings.save_error": "Nie udało się zapisać ustawienia", "settings.save_setting_title": "Save this setting", - "settings.save_success": "Setting saved successfully", + "settings.save_success": "Ustawienie zapisane pomyślnie", "settings.saving_state": "Saving…", "settings.search_aria_label": "Search settings", "settings.search_clear_aria": "Clear search", @@ -814,7 +814,7 @@ "settings.source_db_badge": "DB", "settings.source_default_badge": "DEFAULT", "settings.source_env_badge": "ENV", - "settings.title": "Settings", + "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", @@ -903,11 +903,11 @@ "upload.camera_button": "Take Photo / Scan Document", "upload.download_button": "Download and Process", "upload.downloading": "Downloading file from URL...", - "upload.drag_drop": "Drag & drop files here or click to browse", + "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": "Upload failed", + "upload.error": "Przesyłanie nie powiodło się", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", "upload.file_size_hint": "Maximum size: 500 MB per file", @@ -915,14 +915,14 @@ "upload.filename_description": "Leave empty to use filename from URL", "upload.filename_label": "Filename (optional)", "upload.filename_placeholder": "my-document.pdf", - "upload.max_size": "Maximum file size: {size}", + "upload.max_size": "Maksymalny rozmiar pliku: {size}", "upload.page_title": "Upload Files", "upload.section_device": "Upload from Device", "upload.section_url": "Upload from URL", - "upload.select_file": "Select File", - "upload.success": "File uploaded successfully", - "upload.title": "Upload Document", - "upload.uploading": "Uploading...", + "upload.select_file": "Wybierz plik", + "upload.success": "Plik przesłany pomyślnie", + "upload.title": "Prześlij dokument", + "upload.uploading": "Przesyłanie...", "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", "upload.url_label": "File URL", "upload.url_placeholder": "https://example.com/document.pdf" From da77f906a51c4986c09f370ccaae852af46ad774 Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:45:02 +0100 Subject: [PATCH 66/71] New translations en.json (Swedish) --- frontend/translations/sv.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/sv.json b/frontend/translations/sv.json index d36160ed..9a0dd1e5 100644 --- a/frontend/translations/sv.json +++ b/frontend/translations/sv.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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", @@ -366,7 +366,7 @@ "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 (OCR text, metadata, tags)", + "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", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Language changed to {language}", + "language.changed": "Språket ändrades till {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Language", + "language.selector": "Svenska", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From 3bc57827d92d54a5056e24fd0915806c6ed596bf Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:45:03 +0100 Subject: [PATCH 67/71] New translations en.json (Ukrainian) --- frontend/translations/uk.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/translations/uk.json b/frontend/translations/uk.json index d36160ed..a0d00101 100644 --- a/frontend/translations/uk.json +++ b/frontend/translations/uk.json @@ -338,7 +338,7 @@ "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", "files.document_title": "Document Title", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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", @@ -366,7 +366,7 @@ "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 (OCR text, metadata, tags)", + "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", @@ -587,7 +587,7 @@ "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Language changed to {language}", + "language.changed": "Мову змінено на {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Language", + "language.selector": "Українська", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", From d63175634586431d099b24b4115ffe05beab694e Mon Sep 17 00:00:00 2001 From: Christian Krakau-Louis Date: Thu, 12 Mar 2026 23:45:05 +0100 Subject: [PATCH 68/71] New translations en.json (Portuguese, Brazilian) --- frontend/translations/pt.json | 318 +++++++++++++++++----------------- 1 file changed, 159 insertions(+), 159 deletions(-) diff --git a/frontend/translations/pt.json b/frontend/translations/pt.json index d36160ed..10bac698 100644 --- a/frontend/translations/pt.json +++ b/frontend/translations/pt.json @@ -106,22 +106,22 @@ "auth.email_label": "Email", "auth.forgot_password": "Forgot Password?", "auth.forgot_username": "Forgot username?", - "auth.login": "Log In", + "auth.login": "Iniciar sessão", "auth.login_title": "Log In", "auth.logo_alt": "DocuElevate Logo", - "auth.logout": "Log Out", - "auth.my_account": "My Account", + "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": "Profile", + "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": "Sign Up", + "auth.signup": "Registar", "auth.signup_title": "Sign Up", "auth.username_label": "Username", "auth.username_or_email": "Username or Email", @@ -184,69 +184,69 @@ "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.actions": "Ações", + "common.active": "Ativo", + "common.all": "Tudo", + "common.back": "Voltar", + "common.cancel": "Cancelar", + "common.close": "Fechar", "common.col_pending": "Pending", - "common.completed": "Completed", - "common.confirm": "Confirm", - "common.copied": "Copied!", - "common.copy": "Copy", + "common.completed": "Concluído", + "common.confirm": "Confirmar", + "common.copied": "Copiado!", + "common.copy": "Copiar", "common.create": "Create", - "common.created": "Created", - "common.date": "Date", - "common.delete": "Delete", - "common.description": "Description", - "common.details": "Details", - "common.disabled": "Disabled", - "common.download": "Download", + "common.created": "Criado", + "common.date": "Data", + "common.delete": "Eliminar", + "common.description": "Descrição", + "common.details": "Detalhes", + "common.disabled": "Desativado", + "common.download": "Descarregar", "common.duplicate": "Duplicate", - "common.edit": "Edit", - "common.enabled": "Enabled", - "common.error": "Error", - "common.failed": "Failed", - "common.filter": "Filter", - "common.inactive": "Inactive", - "common.info": "Info", - "common.loading": "Loading...", - "common.name": "Name", - "common.next": "Next", + "common.edit": "Editar", + "common.enabled": "Ativado", + "common.error": "Erro", + "common.failed": "Falhado", + "common.filter": "Filtrar", + "common.inactive": "Inativo", + "common.info": "Informação", + "common.loading": "A carregar...", + "common.name": "Nome", + "common.next": "Seguinte", "common.next_page": "Next page", - "common.no": "No", - "common.none": "None", + "common.no": "Não", + "common.none": "Nenhum", "common.page": "Page", - "common.pending": "Pending", + "common.pending": "Pendente", "common.prev_page": "Previous page", "common.previous": "Previous", - "common.processing": "Processing", - "common.refresh": "Refresh", - "common.reset": "Reset", - "common.retry": "Retry", - "common.save": "Save", - "common.search": "Search", - "common.select": "Select", + "common.processing": "A processar", + "common.refresh": "Atualizar", + "common.reset": "Repor", + "common.retry": "Tentar novamente", + "common.save": "Guardar", + "common.search": "Pesquisar", + "common.select": "Selecionar", "common.select_placeholder": "— select —", - "common.size": "Size", - "common.status": "Status", + "common.size": "Tamanho", + "common.status": "Estado", "common.submit": "Submit", - "common.success": "Success", + "common.success": "Sucesso", "common.tags": "Tags", - "common.type": "Type", - "common.updated": "Updated", - "common.upload": "Upload", - "common.view": "View", - "common.warning": "Warning", - "common.yes": "Yes", - "cookie.accept": "Got it", + "common.type": "Tipo", + "common.updated": "Atualizado", + "common.upload": "Carregar", + "common.view": "Ver", + "common.warning": "Aviso", + "common.yes": "Sim", + "cookie.accept": "Entendido", "cookie.learn_more": "Learn more", "cookie.message": "This website uses cookies to improve your experience.", - "cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.", - "cookie.notice_label": "Cookie notice", - "cookie.policy_link": "Cookie Policy", - "cookie.privacy_link": "Privacy Notice", + "cookie.notice": "O DocuElevate utiliza apenas cookies de sessão essenciais necessários para a autenticação e o funcionamento do serviço. Não são utilizados cookies de rastreamento ou analíticos.", + "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", @@ -270,16 +270,16 @@ "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", - "dashboard.ocr_processed": "OCR Processed", - "dashboard.quick_actions": "Quick Actions", - "dashboard.recent_activity": "Recent Activity", - "dashboard.storage_targets": "Storage Targets", - "dashboard.title": "Dashboard", - "dashboard.total_files": "Total Files", - "dashboard.welcome": "Welcome to DocuElevate", + "dashboard.active_integrations": "Integrações ativas", + "dashboard.files_this_month": "Ficheiros este mês", + "dashboard.files_today": "Ficheiros hoje", + "dashboard.ocr_processed": "OCR processados", + "dashboard.quick_actions": "Ações rápidas", + "dashboard.recent_activity": "Atividade recente", + "dashboard.storage_targets": "Destinos de armazenamento", + "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", @@ -317,14 +317,14 @@ "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", - "error.not_found_message": "The page you are looking for does not exist.", - "error.server_error": "Internal Server Error", - "error.server_error_message": "Something went wrong. Please try again later.", - "error.unauthorized": "Unauthorized", - "error.unauthorized_message": "You need to log in to access this page.", + "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", + "error.not_found_message": "A página que procura não existe.", + "error.server_error": "Erro interno do servidor", + "error.server_error_message": "Algo correu mal. Tente novamente mais tarde.", + "error.unauthorized": "Não autorizado", + "error.unauthorized_message": "Precisa de iniciar sessão para aceder a esta página.", "files.action_delete": "Delete file", "files.action_details": "View details", "files.action_preview": "Quick preview", @@ -337,12 +337,12 @@ "files.delete_modal_confirm": "Delete", "files.delete_modal_message": "Are you sure you want to delete this file?", "files.delete_modal_title": "Confirm Deletion", - "files.document_title": "Document Title", - "files.drop_overlay_hint": "Supports PDF, Office docs, images, HTML, Markdown, and more – folders are processed recursively", + "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": "File Size", - "files.filename": "Filename", + "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", @@ -366,10 +366,10 @@ "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 (OCR text, metadata, tags)", + "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.no_files": "Nenhum ficheiro encontrado", + "files.ocr_status": "Estado OCR", "files.page_title": "File Records", "files.pagination_files": "files", "files.pagination_first": "First", @@ -399,23 +399,23 @@ "files.table_mime_type": "MIME Type", "files.table_original_filename": "Original Filename", "files.table_select_all": "Select all files on this page", - "files.tags": "Tags", - "files.title": "Files", + "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": "Uploaded", + "files.uploaded": "Carregado", "footer.about": "About", "footer.attribution": "Attribution", - "footer.attributions": "Attributions", + "footer.attributions": "Atribuições", "footer.cookies": "Cookies", "footer.copyright": "DocuElevate {year}", - "footer.imprint": "Imprint", - "footer.license": "License", - "footer.navigation": "Footer navigation", - "footer.privacy": "Privacy", - "footer.terms": "Terms", - "footer.version": "Version {version}", + "footer.imprint": "Aviso legal", + "footer.license": "Licença", + "footer.navigation": "Navegação do rodapé", + "footer.privacy": "Privacidade", + "footer.terms": "Termos", + "footer.version": "Versão {version}", "help.destinations_dropbox": "Dropbox", "help.destinations_dropbox_desc": "OAuth-linked. Files land in your chosen folder.", "help.destinations_email": "Email Forwarding", @@ -435,8 +435,8 @@ "help.destinations_sftp_desc": "Secure file transfer to any server.", "help.destinations_webhook": "Webhook", "help.destinations_webhook_desc": "POST metadata to any external endpoint.", - "help.documentation": "Documentation", - "help.faq": "Frequently Asked Questions", + "help.documentation": "Documentação", + "help.faq": "Perguntas frequentes", "help.faq_1_a": "Navigate to the Upload page, drag-and-drop your files or click Choose File. DocuElevate converts images and office documents to PDF, runs OCR, and extracts metadata automatically.", "help.faq_1_q": "How do I upload documents?", "help.faq_2_a": "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.", @@ -448,7 +448,7 @@ "help.faq_5_a": "DocuElevate encrypts credentials at rest, communicates over TLS, and never stores your documents longer than necessary. See the Privacy Notice for full details.", "help.faq_5_q": "Is my data secure?", "help.faq_heading": "Frequently Asked Questions", - "help.getting_started": "Getting Started", + "help.getting_started": "Primeiros passos", "help.heading": "Help Center", "help.page_title": "Help Center", "help.privacy_notice": "Privacy Notice", @@ -469,13 +469,13 @@ "help.sources_web_upload": "Web Upload", "help.sources_web_upload_desc": "The fastest way to get started. Open the Upload page, drop one or more files, and DocuElevate takes care of the rest. Supported formats include PDF, JPEG, PNG, TIFF, DOCX, XLSX, and more.", "help.subheading": "Everything you need to get the most out of DocuElevate. Browse topics below or search for what you need.", - "help.support": "Support", + "help.support": "Suporte", "help.support_admin_message": "Contact your administrator for support information.", "help.support_description": "Can’t find what you’re looking for? Our support team is here to help.", "help.support_heading": "Contact Support", "help.support_ticket_button": "Submit a Ticket", "help.support_ticket_heading": "Open a Support Ticket", - "help.title": "Help Center", + "help.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.", "help.workflows_heading": "Workflows & Pipelines", @@ -570,24 +570,24 @@ "index.usage_my_usage": "My usage", "index.usage_today": "Files today", "index.usage_unlimited": "Unlimited", - "integrations.configure": "Configure", - "integrations.connect": "Connect", - "integrations.connected": "Connected", - "integrations.disconnect": "Disconnect", + "integrations.configure": "Configurar", + "integrations.connect": "Ligar", + "integrations.connected": "Ligado", + "integrations.disconnect": "Desligar", "integrations.empty_state": "No integrations configured", "integrations.folder_label": "Folder", "integrations.host_label": "Host", "integrations.imap_settings": "IMAP Settings", - "integrations.not_connected": "Not Connected", + "integrations.not_connected": "Não ligado", "integrations.page_title": "Integrations", "integrations.password_label": "Password", "integrations.port_label": "Port", - "integrations.title": "Integrations", + "integrations.title": "Integrações", "integrations.username_label": "Username", "language.bg": "Български", "language.ca": "Català", "language.change_success": "Language changed to {language}", - "language.changed": "Language changed to {language}", + "language.changed": "Idioma alterado para {language}", "language.cs": "Čeština", "language.da": "Dansk", "language.de": "Deutsch", @@ -611,7 +611,7 @@ "language.pt": "Português", "language.ro": "Română", "language.ru": "Русский", - "language.selector": "Language", + "language.selector": "Idioma", "language.selector_label": "Select language", "language.sk": "Slovenčina", "language.sl": "Slovenščina", @@ -619,77 +619,77 @@ "language.tr": "Türkçe", "language.uk": "Українська", "language.zh": "中文", - "nav.about": "About", + "nav.about": "Sobre", "nav.admin": "Admin", "nav.admin.audit_logs": "Audit Logs", "nav.admin.backups": "Backups", "nav.admin.plans": "Plans", "nav.admin.scheduled_jobs": "Scheduled Jobs", "nav.admin.users": "Users", - "nav.admin_actions": "Admin actions", - "nav.admin_menu": "Admin menu", - "nav.api_docs": "API Docs", + "nav.admin_actions": "Ações de administração", + "nav.admin_menu": "Menu de administração", + "nav.api_docs": "Documentação API", "nav.api_tokens": "API Tokens", - "nav.backup_restore": "Backup & Restore", - "nav.credentials": "Credentials", - "nav.dark_mode": "Dark Mode", - "nav.dashboard": "Dashboard", - "nav.developer_docs": "Developer Docs", - "nav.duplicates": "Duplicates", - "nav.file_manager": "File Manager", - "nav.files": "Files", - "nav.help": "Help", - "nav.help_center": "Help Center", + "nav.backup_restore": "Cópia de segurança e restauro", + "nav.credentials": "Credenciais", + "nav.dark_mode": "Modo escuro", + "nav.dashboard": "Painel", + "nav.developer_docs": "Documentação para programadores", + "nav.duplicates": "Duplicados", + "nav.file_manager": "Gestor de ficheiros", + "nav.files": "Ficheiros", + "nav.help": "Ajuda", + "nav.help_center": "Centro de ajuda", "nav.imap": "Email Import", - "nav.integrations": "Integrations", - "nav.light_mode": "Light Mode", + "nav.integrations": "Integrações", + "nav.light_mode": "Modo claro", "nav.login": "Log In", "nav.logout": "Log Out", - "nav.main_navigation": "Main navigation", - "nav.notifications": "Notifications", - "nav.open_main_menu": "Open main menu", + "nav.main_navigation": "Navegação principal", + "nav.notifications": "Notificações", + "nav.open_main_menu": "Abrir menu principal", "nav.pipelines": "Pipelines", - "nav.plan_designer": "Plan Designer", - "nav.pricing": "Pricing", + "nav.plan_designer": "Designer de planos", + "nav.pricing": "Preços", "nav.profile": "Profile", "nav.queue": "Queue", - "nav.queue_monitor": "Queue Monitor", - "nav.scheduled_jobs": "Scheduled Jobs", - "nav.search": "Search", - "nav.settings": "Settings", + "nav.queue_monitor": "Monitor de fila", + "nav.scheduled_jobs": "Tarefas agendadas", + "nav.search": "Pesquisar", + "nav.settings": "Definições", "nav.shared_links": "Shared Links", "nav.signup": "Sign Up", - "nav.similarity": "Similarity", - "nav.skip_to_content": "Skip to main content", - "nav.status": "Status", + "nav.similarity": "Similaridade", + "nav.skip_to_content": "Ir para o conteúdo principal", + "nav.status": "Estado", "nav.subscription": "Subscription", - "nav.toggle_dark_mode": "Toggle dark mode", - "nav.toggle_nav": "Toggle navigation menu", - "nav.upload": "Upload", - "nav.users": "Users", + "nav.toggle_dark_mode": "Alternar modo escuro", + "nav.toggle_nav": "Alternar menu de navegação", + "nav.upload": "Carregar", + "nav.users": "Utilizadores", "nav.version": "Version Info", "notifications.filter_all": "All", "notifications.filter_read": "Read only", "notifications.filter_unread": "Unread only", "notifications.manage_desc": "Manage your notification inbox, targets, and event preferences", - "notifications.mark_all_read": "Mark All as Read", + "notifications.mark_all_read": "Marcar todas como lidas", "notifications.mark_all_read_btn": "Mark all read", - "notifications.mark_read": "Mark as Read", - "notifications.no_notifications": "No notifications", + "notifications.mark_read": "Marcar como lida", + "notifications.no_notifications": "Sem notificações", "notifications.page_title": "Notifications", "notifications.tab_inbox": "Inbox", "notifications.tab_settings": "Settings", - "notifications.title": "Notifications", - "notifications.unread_count": "{count} unread notifications", + "notifications.title": "Notificações", + "notifications.unread_count": "{count} notificações por ler", "pipelines.active_label": "Active", "pipelines.add_step_btn": "Add Step", - "pipelines.create": "Create Pipeline", + "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": "Edit Pipeline", + "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", @@ -712,7 +712,7 @@ "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", + "pipelines.title": "Pipelines de processamento", "queue.active_tasks": "Active Tasks", "queue.auto_refresh_1": "Auto-refreshes every", "queue.auto_refresh_2": "seconds", @@ -762,18 +762,18 @@ "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", + "search.no_results": "Nenhum resultado encontrado", "search.page_title": "Search Documents", - "search.placeholder": "Search by filename, content, tags...", + "search.placeholder": "Pesquisar por nome, conteúdo, etiquetas...", "search.result_empty": "No documents found matching your query.", - "search.results_count": "{count} results found", + "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": "Search Documents", + "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", @@ -797,15 +797,15 @@ "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.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": "Failed to save setting", + "settings.save_error": "Falha ao guardar definição", "settings.save_setting_title": "Save this setting", - "settings.save_success": "Setting saved successfully", + "settings.save_success": "Definição guardada com sucesso", "settings.saving_state": "Saving…", "settings.search_aria_label": "Search settings", "settings.search_clear_aria": "Clear search", @@ -814,7 +814,7 @@ "settings.source_db_badge": "DB", "settings.source_default_badge": "DEFAULT", "settings.source_env_badge": "ENV", - "settings.title": "Settings", + "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", @@ -903,11 +903,11 @@ "upload.camera_button": "Take Photo / Scan Document", "upload.download_button": "Download and Process", "upload.downloading": "Downloading file from URL...", - "upload.drag_drop": "Drag & drop files here or click to browse", + "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": "Upload failed", + "upload.error": "Falha ao carregar", "upload.error_invalid_url": "Invalid URL format", "upload.error_url_required": "Please enter a URL", "upload.file_size_hint": "Maximum size: 500 MB per file", @@ -915,14 +915,14 @@ "upload.filename_description": "Leave empty to use filename from URL", "upload.filename_label": "Filename (optional)", "upload.filename_placeholder": "my-document.pdf", - "upload.max_size": "Maximum file size: {size}", + "upload.max_size": "Tamanho máximo do ficheiro: {size}", "upload.page_title": "Upload Files", "upload.section_device": "Upload from Device", "upload.section_url": "Upload from URL", - "upload.select_file": "Select File", - "upload.success": "File uploaded successfully", - "upload.title": "Upload Document", - "upload.uploading": "Uploading...", + "upload.select_file": "Selecionar ficheiro", + "upload.success": "Ficheiro carregado com sucesso", + "upload.title": "Carregar documento", + "upload.uploading": "A carregar...", "upload.url_description": "Enter a direct link to a file (PDF, Office documents, or images)", "upload.url_label": "File URL", "upload.url_placeholder": "https://example.com/document.pdf" From fd4ea5c71b4ac3204bb9cf21b115333c0db24927 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 13 Mar 2026 07:53:19 +0000 Subject: [PATCH 69/71] docs(changelog): update changelog [skip ci] --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a982a2f..ecbb7335 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +## Unreleased + +### Documentation + +- **changelog**: Update changelog [skip ci] + ([`95af9ff`](https://github.com/christianlouis/DocuElevate/commit/95af9ffe5e493470caaf09dc784ba12f5d19a8e7)) + +- **changelog**: Update changelog [skip ci] + ([`ca88d7d`](https://github.com/christianlouis/DocuElevate/commit/ca88d7d4250b3b9ee384d05b53d854056c5eccb4)) + + ## Unreleased ### Documentation From 76e2aaa5f1bbbbf97cba2ea52fb22625a14b17d9 Mon Sep 17 00:00:00 2001 From: semantic-release Date: Fri, 13 Mar 2026 07:54:39 +0000 Subject: [PATCH 70/71] 0.126.0 Automatically generated by python-semantic-release --- CHANGELOG.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ecbb7335..b962b302 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +## v0.126.0 (2026-03-13) + +### Documentation + +- **changelog**: Update changelog [skip ci] + ([`fd4ea5c`](https://github.com/christianlouis/DocuElevate/commit/fd4ea5c71b4ac3204bb9cf21b115333c0db24927)) + +- **changelog**: Update changelog [skip ci] + ([`95af9ff`](https://github.com/christianlouis/DocuElevate/commit/95af9ffe5e493470caaf09dc784ba12f5d19a8e7)) + +- **changelog**: Update changelog [skip ci] + ([`ca88d7d`](https://github.com/christianlouis/DocuElevate/commit/ca88d7d4250b3b9ee384d05b53d854056c5eccb4)) + +- **routing**: Add routing rules documentation to API.md and UserGuide.md + ([`e95693d`](https://github.com/christianlouis/DocuElevate/commit/e95693d684076ef87c436840caf2c5aa4581456d)) + +### Features + +- **routing**: Add conditional routing rules for document-to-pipeline assignment + ([`40d56f0`](https://github.com/christianlouis/DocuElevate/commit/40d56f0396b42754954cea03e4efa2e442121313)) + +### Refactoring + +- **routing**: Address code review feedback - simplify list filter, fix docs example + ([`1e5e35a`](https://github.com/christianlouis/DocuElevate/commit/1e5e35a26af47db925f77514a3bfdbccf417c0f5)) + + ## Unreleased ### Documentation From 6cd76caebb659a1d50d2a8be4011d4d0c7dc101a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 13 Mar 2026 07:54:42 +0000 Subject: [PATCH 71/71] chore(release): update build metadata files [skip ci] --- BUILD_DATE | 2 +- GIT_SHA | 2 +- RUNTIME_INFO | 12 ++++++------ VERSION | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/BUILD_DATE b/BUILD_DATE index a7772eb6..7196e740 100644 --- a/BUILD_DATE +++ b/BUILD_DATE @@ -1 +1 @@ -2026-03-12T22:06:54Z +2026-03-13T07:54:39Z diff --git a/GIT_SHA b/GIT_SHA index 66609dfa..17bf353e 100644 --- a/GIT_SHA +++ b/GIT_SHA @@ -1 +1 @@ -2c36b7d +603bcaa diff --git a/RUNTIME_INFO b/RUNTIME_INFO index 19fa7473..48337976 100644 --- a/RUNTIME_INFO +++ b/RUNTIME_INFO @@ -1,10 +1,10 @@ DocuElevate Build Information ============================== -Version: 0.125.1 -Build Date: 2026-03-12T22:06:54Z -Git Commit: 2c36b7dc95283473154e9fe2fd4b2ef110979670 -Git Short SHA: 2c36b7d +Version: 0.126.0 +Build Date: 2026-03-13T07:54:39Z +Git Commit: 603bcaad6a06371ad4cb929672fd653c4d4e6cf0 +Git Short SHA: 603bcaa Git Branch: main -Commit Date: 2026-03-12T23:06:30+01:00 -Build Timestamp: 2026-03-12T22:06:54Z +Commit Date: 2026-03-13T08:54:20+01:00 +Build Timestamp: 2026-03-13T07:54:39Z ============================== diff --git a/VERSION b/VERSION index 33e061fe..bcc9c284 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.125.1 +0.126.0