feat(i18n): add internationalization framework with 10 languages

- Create i18n utility module (app/utils/i18n.py) with translation loading,
  browser language detection, AI fallback, and l10n helpers
- Add JSON translation files for EN, DE, FR, ES, IT, PT, NL, PL, ZH, RU
- Add preferred_language column to UserProfile model with migration
- Register _() translation function as Jinja2 global
- Update base.html with translated navigation, footer, cookie notice
- Add language selector dropdown in nav bar (desktop + mobile)
- Create API endpoints for language preference (POST/GET /api/i18n/)
- Support language detection: user profile > cookie > Accept-Language > default

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-03-09 23:28:02 +00:00
parent 95f1798908
commit ff76855f29
17 changed files with 2618 additions and 76 deletions
+140 -76
View File
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en" data-color-scheme-default="{{ ui_default_color_scheme | default('system') }}">
<html lang="{{ current_locale | default('en') }}" data-color-scheme-default="{{ ui_default_color_scheme | default('system') }}">
<head>
<meta charset="UTF-8" />
<title>{% block title %}DocuElevate{% endblock %}</title>
@@ -37,10 +37,10 @@
data-multi-user="{{ 'true' if multi_user_enabled else 'false' }}"
data-allow-signup="{{ 'true' if allow_signup else 'false' }}">
<!-- Skip to main content link for keyboard/screen reader users -->
<a href="#main-content" class="skip-link">Skip to main content</a>
<a href="#main-content" class="skip-link">{{ _("nav.skip_to_content") }}</a>
<!-- Global Nav -->
<nav class="bg-white shadow relative" aria-label="Main navigation">
<nav class="bg-white shadow relative" aria-label="{{ _('nav.main_navigation') }}">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 flex justify-between h-16 items-center">
<!-- Brand + Icon -->
@@ -70,12 +70,12 @@
<a href="/pricing"
class="px-3 py-2 rounded-md text-sm font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-100"
{% if request and request.url.path == '/pricing' %}aria-current="page"{% endif %}>
Pricing
{{ _("nav.pricing") }}
</a>
<a href="/about"
class="px-3 py-2 rounded-md text-sm font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-100"
{% if request and request.url.path == '/about' %}aria-current="page"{% endif %}>
About
{{ _("nav.about") }}
</a>
{% else %}
@@ -84,32 +84,32 @@
<a href="/"
class="px-3 py-2 rounded-md text-sm font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-100"
{% if request and request.url.path == '/' %}aria-current="page"{% endif %}>
<i class="fas fa-home mr-1 text-gray-400" aria-hidden="true"></i>Dashboard
<i class="fas fa-home mr-1 text-gray-400" aria-hidden="true"></i>{{ _("nav.dashboard") }}
</a>
<a href="/upload"
class="px-3 py-2 rounded-md text-sm font-medium text-blue-600 hover:text-blue-800 hover:bg-blue-50"
{% if request and request.url.path == '/upload' %}aria-current="page"{% endif %}>
<i class="fas fa-upload mr-1" aria-hidden="true"></i>Upload
<i class="fas fa-upload mr-1" aria-hidden="true"></i>{{ _("nav.upload") }}
</a>
<a href="/files"
class="px-3 py-2 rounded-md text-sm font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-100"
{% if request and request.url.path == '/files' %}aria-current="page"{% endif %}>
<i class="fas fa-folder-open mr-1 text-gray-400" aria-hidden="true"></i>Files
<i class="fas fa-folder-open mr-1 text-gray-400" aria-hidden="true"></i>{{ _("nav.files") }}
</a>
<a href="/search"
class="px-3 py-2 rounded-md text-sm font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-100"
{% if request and request.url.path == '/search' %}aria-current="page"{% endif %}>
<i class="fas fa-search mr-1 text-gray-400" aria-hidden="true"></i>Search
<i class="fas fa-search mr-1 text-gray-400" aria-hidden="true"></i>{{ _("nav.search") }}
</a>
<a href="/pipelines"
class="px-3 py-2 rounded-md text-sm font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-100"
{% if request and request.url.path == '/pipelines' %}aria-current="page"{% endif %}>
<i class="fas fa-project-diagram mr-1 text-gray-400" aria-hidden="true"></i>Pipelines
<i class="fas fa-project-diagram mr-1 text-gray-400" aria-hidden="true"></i>{{ _("nav.pipelines") }}
</a>
<a href="/integrations"
class="px-3 py-2 rounded-md text-sm font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-100"
{% if request and request.url.path == '/integrations' %}aria-current="page"{% endif %}>
<i class="fas fa-plug mr-1 text-gray-400" aria-hidden="true"></i>Integrations
<i class="fas fa-plug mr-1 text-gray-400" aria-hidden="true"></i>{{ _("nav.integrations") }}
</a>
<!-- Admin dropdown shown only for admin users via JS -->
@@ -124,7 +124,7 @@
:aria-expanded="adminMenuOpen"
>
<i class="fas fa-shield-alt mr-1 text-red-500" aria-hidden="true"></i>
Admin
{{ _("nav.admin") }}
<i class="fas fa-chevron-down ml-1 text-xs" aria-hidden="true"></i>
</button>
<div
@@ -141,46 +141,46 @@
>
<div class="py-1">
<a href="/settings" role="menuitem" class="flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">
<i class="fas fa-cog w-4 mr-2 text-gray-500" aria-hidden="true"></i> Settings
<i class="fas fa-cog w-4 mr-2 text-gray-500" aria-hidden="true"></i> {{ _("nav.settings") }}
</a>
<a href="/admin/users" role="menuitem" class="flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">
<i class="fas fa-users w-4 mr-2 text-blue-500" aria-hidden="true"></i> Users
<i class="fas fa-users w-4 mr-2 text-blue-500" aria-hidden="true"></i> {{ _("nav.users") }}
</a>
<a href="/admin/plans" role="menuitem" class="flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">
<i class="fas fa-layer-group w-4 mr-2 text-indigo-500" aria-hidden="true"></i> Plan Designer
<i class="fas fa-layer-group w-4 mr-2 text-indigo-500" aria-hidden="true"></i> {{ _("nav.plan_designer") }}
</a>
<a href="/admin/credentials" role="menuitem" class="flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">
<i class="fas fa-key w-4 mr-2 text-yellow-500" aria-hidden="true"></i> Credentials
<i class="fas fa-key w-4 mr-2 text-yellow-500" aria-hidden="true"></i> {{ _("nav.credentials") }}
</a>
<a href="/admin/files" role="menuitem" class="flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">
<i class="fas fa-folder-open w-4 mr-2 text-gray-500" aria-hidden="true"></i> File Manager
<i class="fas fa-folder-open w-4 mr-2 text-gray-500" aria-hidden="true"></i> {{ _("nav.file_manager") }}
</a>
<div class="border-t border-gray-100 my-1"></div>
<a href="/duplicates" role="menuitem" class="flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">
<i class="fas fa-clone w-4 mr-2 text-orange-500" aria-hidden="true"></i> Duplicates
<i class="fas fa-clone w-4 mr-2 text-orange-500" aria-hidden="true"></i> {{ _("nav.duplicates") }}
</a>
<a href="/similarity" role="menuitem" class="flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">
<i class="fas fa-sitemap w-4 mr-2 text-purple-500" aria-hidden="true"></i> Similarity
<i class="fas fa-sitemap w-4 mr-2 text-purple-500" aria-hidden="true"></i> {{ _("nav.similarity") }}
</a>
<a href="/admin/queue" role="menuitem" class="flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">
<i class="fas fa-stream w-4 mr-2 text-blue-500" aria-hidden="true"></i> Queue Monitor
<i class="fas fa-stream w-4 mr-2 text-blue-500" aria-hidden="true"></i> {{ _("nav.queue_monitor") }}
</a>
<a href="/admin/scheduled-jobs" role="menuitem" class="flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">
<i class="fas fa-clock w-4 mr-2 text-indigo-500" aria-hidden="true"></i> Scheduled Jobs
<i class="fas fa-clock w-4 mr-2 text-indigo-500" aria-hidden="true"></i> {{ _("nav.scheduled_jobs") }}
</a>
<a href="/admin/backup" role="menuitem" class="flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">
<i class="fas fa-database w-4 mr-2 text-green-600" aria-hidden="true"></i> Backup &amp; Restore
<i class="fas fa-database w-4 mr-2 text-green-600" aria-hidden="true"></i> {{ _("nav.backup_restore") }}
</a>
<a href="/status" role="menuitem" class="flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-100"
{% if request and request.url.path == '/status' %}aria-current="page"{% endif %}>
<i class="fas fa-circle-dot w-4 mr-2 text-gray-500" aria-hidden="true"></i> Status
<i class="fas fa-circle-dot w-4 mr-2 text-gray-500" aria-hidden="true"></i> {{ _("nav.status") }}
</a>
<div class="border-t border-gray-100 my-1"></div>
<a href="/admin/api-docs" role="menuitem" class="flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">
<i class="fas fa-code w-4 mr-2 text-teal-500" aria-hidden="true"></i> API Docs
<i class="fas fa-code w-4 mr-2 text-teal-500" aria-hidden="true"></i> {{ _("nav.api_docs") }}
</a>
<a href="/developer-docs/" role="menuitem" class="flex items-center px-4 py-2 text-sm text-gray-700 hover:bg-gray-100">
<i class="fas fa-book w-4 mr-2 text-teal-500" aria-hidden="true"></i> Developer Docs
<i class="fas fa-book w-4 mr-2 text-teal-500" aria-hidden="true"></i> {{ _("nav.developer_docs") }}
</a>
</div>
</div>
@@ -191,18 +191,18 @@
<!-- Help always visible, for every visitor regardless of auth state -->
<a href="/help"
class="px-3 py-2 rounded-md text-sm font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-100"
aria-label="Help Center"
title="Help Center"
aria-label="{{ _('nav.help_center') }}"
title="{{ _('nav.help_center') }}"
{% if request and request.url.path == '/help' %}aria-current="page"{% endif %}>
<i class="fas fa-circle-question mr-1 text-gray-400" aria-hidden="true"></i>Help
<i class="fas fa-circle-question mr-1 text-gray-400" aria-hidden="true"></i>{{ _("nav.help") }}
</a>
<!-- Bell notification icon -->
<a href="/notifications"
id="notificationBell"
class="relative p-1.5 rounded-md text-gray-500 hover:text-gray-700 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-blue-500"
aria-label="Notifications"
title="Notifications"
aria-label="{{ _('nav.notifications') }}"
title="{{ _('nav.notifications') }}"
{% if request and request.url.path == '/notifications' %}aria-current="page"{% endif %}>
<i class="fas fa-bell" aria-hidden="true"></i>
<span id="notificationBadge"
@@ -210,14 +210,59 @@
aria-live="polite"></span>
</a>
<!-- Language selector dropdown -->
<div x-data="{ langOpen: false }" class="relative">
<button
@click="langOpen = !langOpen"
@click.outside="langOpen = false"
type="button"
class="p-1.5 rounded-md text-gray-500 hover:text-gray-700 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-blue-500"
aria-label="{{ _('language.selector') }}"
title="{{ _('language.selector') }}"
:aria-expanded="langOpen"
aria-haspopup="true"
>
<i class="fas fa-globe"></i>
</button>
<div
x-show="langOpen"
x-transition:enter="transition ease-out duration-100 transform"
x-transition:enter-start="opacity-0 scale-95"
x-transition:enter-end="opacity-100 scale-100"
x-transition:leave="transition ease-in duration-75 transform"
x-transition:leave-start="opacity-100 scale-100"
x-transition:leave-end="opacity-0 scale-95"
class="absolute right-0 mt-2 w-48 bg-white rounded-md shadow-lg ring-1 ring-black ring-opacity-5 z-50"
role="menu"
aria-label="{{ _('language.selector') }}"
>
<div class="py-1">
{% for lang in supported_languages %}
<button
type="button"
role="menuitem"
class="flex items-center w-full px-4 py-2 text-sm text-left hover:bg-gray-100 {% if current_locale == lang.code %}bg-blue-50 text-blue-700 font-medium{% else %}text-gray-700{% endif %}"
onclick="setLanguage('{{ lang.code }}')"
>
<span class="mr-2">{{ lang.flag }}</span>
<span>{{ lang.native }}</span>
{% if current_locale == lang.code %}
<i class="fas fa-check ml-auto text-blue-500" aria-hidden="true"></i>
{% endif %}
</button>
{% endfor %}
</div>
</div>
</div>
<!-- Dark mode toggle -->
<button
id="darkModeToggle"
onclick="toggleDarkMode()"
type="button"
class="p-1.5 rounded-md text-gray-500 hover:text-gray-700 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-blue-500"
aria-label="Toggle dark mode"
title="Toggle dark mode"
aria-label="{{ _('nav.toggle_dark_mode') }}"
title="{{ _('nav.toggle_dark_mode') }}"
>
<i class="fas fa-moon"></i>
</button>
@@ -232,10 +277,10 @@
type="button"
class="md:hidden inline-flex items-center justify-center p-3 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500"
style="min-height:44px;min-width:44px;"
aria-label="Toggle navigation menu"
aria-label="{{ _('nav.toggle_nav') }}"
:aria-expanded="mobileMenuOpen"
>
<span class="sr-only">Open main menu</span>
<span class="sr-only">{{ _("nav.open_main_menu") }}</span>
<svg class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
</svg>
@@ -259,12 +304,12 @@
<a href="/pricing"
class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50"
{% if request and request.url.path == '/pricing' %}aria-current="page"{% endif %}>
<i class="fas fa-tag mr-2 text-gray-400" aria-hidden="true"></i>Pricing
<i class="fas fa-tag mr-2 text-gray-400" aria-hidden="true"></i>{{ _("nav.pricing") }}
</a>
<a href="/about"
class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50"
{% if request and request.url.path == '/about' %}aria-current="page"{% endif %}>
<i class="fas fa-info-circle mr-2 text-gray-400" aria-hidden="true"></i>About
<i class="fas fa-info-circle mr-2 text-gray-400" aria-hidden="true"></i>{{ _("nav.about") }}
</a>
{% else %}
@@ -272,84 +317,84 @@
<a href="/"
class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50"
{% if request and request.url.path == '/' %}aria-current="page"{% endif %}>
<i class="fas fa-home mr-2 text-gray-400" aria-hidden="true"></i>Dashboard
<i class="fas fa-home mr-2 text-gray-400" aria-hidden="true"></i>{{ _("nav.dashboard") }}
</a>
<a href="/upload"
class="block px-3 py-3 rounded-md text-base font-medium text-blue-600 hover:text-blue-800 hover:bg-blue-50"
{% if request and request.url.path == '/upload' %}aria-current="page"{% endif %}>
<i class="fas fa-upload mr-2" aria-hidden="true"></i>Upload
<i class="fas fa-upload mr-2" aria-hidden="true"></i>{{ _("nav.upload") }}
</a>
<a href="/files"
class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50"
{% if request and request.url.path == '/files' %}aria-current="page"{% endif %}>
<i class="fas fa-folder-open mr-2 text-gray-400" aria-hidden="true"></i>Files
<i class="fas fa-folder-open mr-2 text-gray-400" aria-hidden="true"></i>{{ _("nav.files") }}
</a>
<a href="/search"
class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50"
{% if request and request.url.path == '/search' %}aria-current="page"{% endif %}>
<i class="fas fa-search mr-2 text-gray-400" aria-hidden="true"></i>Search
<i class="fas fa-search mr-2 text-gray-400" aria-hidden="true"></i>{{ _("nav.search") }}
</a>
<a href="/pipelines"
class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50"
{% if request and request.url.path == '/pipelines' %}aria-current="page"{% endif %}>
<i class="fas fa-project-diagram mr-2 text-gray-400" aria-hidden="true"></i>Pipelines
<i class="fas fa-project-diagram mr-2 text-gray-400" aria-hidden="true"></i>{{ _("nav.pipelines") }}
</a>
<a href="/integrations"
class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50"
{% if request and request.url.path == '/integrations' %}aria-current="page"{% endif %}>
<i class="fas fa-plug mr-2 text-gray-400" aria-hidden="true"></i>Integrations
<i class="fas fa-plug mr-2 text-gray-400" aria-hidden="true"></i>{{ _("nav.integrations") }}
</a>
<a href="/notifications"
class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50"
{% if request and request.url.path == '/notifications' %}aria-current="page"{% endif %}>
<i class="fas fa-bell mr-2 text-gray-400" aria-hidden="true"></i>Notifications
<i class="fas fa-bell mr-2 text-gray-400" aria-hidden="true"></i>{{ _("nav.notifications") }}
</a>
<!-- Admin section in mobile menu shown only for admin users via JS -->
<div id="mobileAdminSection" class="hidden">
<div class="border-t border-gray-200 mt-1 pt-1">
<p class="px-3 py-1 text-xs font-semibold text-red-600 uppercase tracking-wider flex items-center">
<i class="fas fa-shield-alt mr-1" aria-hidden="true"></i> Admin
<i class="fas fa-shield-alt mr-1" aria-hidden="true"></i> {{ _("nav.admin") }}
</p>
<a href="/settings" class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50">
<i class="fas fa-cog mr-2 text-gray-400" aria-hidden="true"></i> Settings
<i class="fas fa-cog mr-2 text-gray-400" aria-hidden="true"></i> {{ _("nav.settings") }}
</a>
<a href="/admin/users" class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50">
<i class="fas fa-users mr-2 text-blue-400" aria-hidden="true"></i> Users
<i class="fas fa-users mr-2 text-blue-400" aria-hidden="true"></i> {{ _("nav.users") }}
</a>
<a href="/admin/plans" class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50">
<i class="fas fa-layer-group mr-2 text-indigo-400" aria-hidden="true"></i> Plan Designer
<i class="fas fa-layer-group mr-2 text-indigo-400" aria-hidden="true"></i> {{ _("nav.plan_designer") }}
</a>
<a href="/admin/credentials" class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50">
<i class="fas fa-key mr-2 text-yellow-400" aria-hidden="true"></i> Credentials
<i class="fas fa-key mr-2 text-yellow-400" aria-hidden="true"></i> {{ _("nav.credentials") }}
</a>
<a href="/admin/files" class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50">
<i class="fas fa-folder-open mr-2 text-gray-400" aria-hidden="true"></i> File Manager
<i class="fas fa-folder-open mr-2 text-gray-400" aria-hidden="true"></i> {{ _("nav.file_manager") }}
</a>
<a href="/duplicates" class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50">
<i class="fas fa-clone mr-2 text-orange-400" aria-hidden="true"></i> Duplicates
<i class="fas fa-clone mr-2 text-orange-400" aria-hidden="true"></i> {{ _("nav.duplicates") }}
</a>
<a href="/similarity" class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50">
<i class="fas fa-sitemap mr-2 text-purple-400" aria-hidden="true"></i> Similarity
<i class="fas fa-sitemap mr-2 text-purple-400" aria-hidden="true"></i> {{ _("nav.similarity") }}
</a>
<a href="/admin/queue" class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50">
<i class="fas fa-stream mr-2 text-blue-400" aria-hidden="true"></i> Queue Monitor
<i class="fas fa-stream mr-2 text-blue-400" aria-hidden="true"></i> {{ _("nav.queue_monitor") }}
</a>
<a href="/admin/scheduled-jobs" class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50">
<i class="fas fa-clock mr-2 text-indigo-500" aria-hidden="true"></i> Scheduled Jobs
<i class="fas fa-clock mr-2 text-indigo-500" aria-hidden="true"></i> {{ _("nav.scheduled_jobs") }}
</a>
<a href="/admin/backup" class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50">
<i class="fas fa-database mr-2 text-green-500" aria-hidden="true"></i> Backup &amp; Restore
<i class="fas fa-database mr-2 text-green-500" aria-hidden="true"></i> {{ _("nav.backup_restore") }}
</a>
<a href="/status" class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50"
{% if request and request.url.path == '/status' %}aria-current="page"{% endif %}>
<i class="fas fa-circle-dot mr-2 text-gray-400" aria-hidden="true"></i> Status
<i class="fas fa-circle-dot mr-2 text-gray-400" aria-hidden="true"></i> {{ _("nav.status") }}
</a>
<a href="/admin/api-docs" class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50">
<i class="fas fa-code mr-2 text-teal-400" aria-hidden="true"></i> API Docs
<i class="fas fa-code mr-2 text-teal-400" aria-hidden="true"></i> {{ _("nav.api_docs") }}
</a>
<a href="/developer-docs/" class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50">
<i class="fas fa-book mr-2 text-teal-400" aria-hidden="true"></i> Developer Docs
<i class="fas fa-book mr-2 text-teal-400" aria-hidden="true"></i> {{ _("nav.developer_docs") }}
</a>
</div>
</div>
@@ -359,9 +404,9 @@
<!-- Help always visible, for every visitor regardless of auth state -->
<a href="/help"
class="block px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50"
aria-label="Help Center"
aria-label="{{ _('nav.help_center') }}"
{% if request and request.url.path == '/help' %}aria-current="page"{% endif %}>
<i class="fas fa-circle-question mr-2 text-gray-400" aria-hidden="true"></i>Help
<i class="fas fa-circle-question mr-2 text-gray-400" aria-hidden="true"></i>{{ _("nav.help") }}
</a>
<!-- Dark mode toggle (mobile) -->
@@ -370,10 +415,10 @@
type="button"
class="flex items-center w-full px-3 py-3 rounded-md text-base font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50"
id="darkModeToggleMobile"
aria-label="Toggle dark mode"
aria-label="{{ _('nav.toggle_dark_mode') }}"
>
<i class="fas fa-moon mr-2" id="darkModeIconMobile" aria-hidden="true"></i>
<span id="darkModeTextMobile">Dark Mode</span>
<span id="darkModeTextMobile">{{ _("nav.dark_mode") }}</span>
</button>
<!-- Mobile Auth / Account section (populated by common.js) -->
@@ -394,14 +439,14 @@
<!-- Footer -->
<footer class="bg-white shadow" role="contentinfo">
<div class="max-w-7xl mx-auto px-4 py-4 text-center text-gray-600">
DocuElevate 2025 -
<nav aria-label="Footer navigation" class="inline">
<a href="/privacy" class="text-blue-500 hover:underline">Privacy</a> -
<a href="/imprint" class="text-blue-500 hover:underline">Imprint</a> -
<a href="/terms" class="text-blue-500 hover:underline">Terms</a> -
<a href="/cookies" class="text-blue-500 hover:underline">Cookies</a> -
<a href="/license" class="text-blue-500 hover:underline">License</a> -
<a href="/attribution" class="text-blue-500 hover:underline">Attributions</a>
{{ _("footer.copyright", year="2025") }} -
<nav aria-label="{{ _('footer.navigation') }}" class="inline">
<a href="/privacy" class="text-blue-500 hover:underline">{{ _("footer.privacy") }}</a> -
<a href="/imprint" class="text-blue-500 hover:underline">{{ _("footer.imprint") }}</a> -
<a href="/terms" class="text-blue-500 hover:underline">{{ _("footer.terms") }}</a> -
<a href="/cookies" class="text-blue-500 hover:underline">{{ _("footer.cookies") }}</a> -
<a href="/license" class="text-blue-500 hover:underline">{{ _("footer.license") }}</a> -
<a href="/attribution" class="text-blue-500 hover:underline">{{ _("footer.attributions") }}</a>
</nav> -
<span class="text-xs">Version {{ app_version|default(version, true) }}{% if release_name %} "{{ release_name }}"{% endif %}</span>
</div>
@@ -416,19 +461,18 @@
style="display:none!important"
aria-live="polite"
role="region"
aria-label="Cookie notice">
aria-label="{{ _('cookie.notice_label') }}">
<p class="text-center sm:text-left">
DocuElevate uses only essential session cookies required for authentication and service operation.
No tracking or analytics cookies are used.
<a href="/cookies" class="underline hover:text-blue-300 ml-1">Cookie Policy</a> &middot;
<a href="/privacy" class="underline hover:text-blue-300 ml-1">Privacy Notice</a>
{{ _("cookie.notice") }}
<a href="/cookies" class="underline hover:text-blue-300 ml-1">{{ _("cookie.policy_link") }}</a> &middot;
<a href="/privacy" class="underline hover:text-blue-300 ml-1">{{ _("cookie.privacy_link") }}</a>
</p>
<button
id="cookieNoticeAccept"
type="button"
class="flex-shrink-0 bg-blue-600 hover:bg-blue-700 text-white font-semibold px-4 py-1.5 rounded focus:outline-none focus:ring-2 focus:ring-blue-400"
aria-label="Acknowledge cookie notice">
Got it
aria-label="{{ _('cookie.accept') }}">
{{ _("cookie.accept") }}
</button>
</div>
<script>
@@ -451,6 +495,26 @@
<!-- Common JS (shared) -->
<script src="/static/js/common.js"></script>
<!-- Language selector -->
<script>
function setLanguage(langCode) {
var csrfToken = document.querySelector('meta[name="csrf-token"]');
var headers = { 'Content-Type': 'application/json' };
if (csrfToken && csrfToken.content) {
headers['X-CSRF-Token'] = csrfToken.content;
}
fetch('/api/i18n/language', {
method: 'POST',
headers: headers,
body: JSON.stringify({ language: langCode })
}).then(function() {
window.location.reload();
}).catch(function() {
window.location.reload();
});
}
</script>
<!-- Notification badge updater -->
<script>
(function() {
+190
View File
@@ -0,0 +1,190 @@
{
"app.name": "DocuElevate",
"nav.dashboard": "Übersicht",
"nav.upload": "Hochladen",
"nav.files": "Dateien",
"nav.search": "Suche",
"nav.pipelines": "Pipelines",
"nav.integrations": "Integrationen",
"nav.help": "Hilfe",
"nav.notifications": "Benachrichtigungen",
"nav.pricing": "Preise",
"nav.about": "Über uns",
"nav.admin": "Admin",
"nav.settings": "Einstellungen",
"nav.users": "Benutzer",
"nav.plan_designer": "Tarifdesigner",
"nav.credentials": "Zugangsdaten",
"nav.file_manager": "Dateimanager",
"nav.duplicates": "Duplikate",
"nav.similarity": "Ähnlichkeit",
"nav.queue_monitor": "Warteschlange",
"nav.scheduled_jobs": "Geplante Aufgaben",
"nav.backup_restore": "Sicherung & Wiederherstellung",
"nav.status": "Status",
"nav.api_docs": "API-Dokumentation",
"nav.developer_docs": "Entwicklerdokumentation",
"nav.dark_mode": "Dunkelmodus",
"nav.light_mode": "Hellmodus",
"nav.toggle_dark_mode": "Dunkelmodus umschalten",
"nav.toggle_nav": "Navigationsmenü umschalten",
"nav.open_main_menu": "Hauptmenü öffnen",
"nav.skip_to_content": "Zum Hauptinhalt springen",
"nav.main_navigation": "Hauptnavigation",
"nav.admin_menu": "Admin-Menü",
"nav.admin_actions": "Admin-Aktionen",
"nav.help_center": "Hilfezentrum",
"auth.login": "Anmelden",
"auth.logout": "Abmelden",
"auth.signup": "Registrieren",
"auth.my_account": "Mein Konto",
"auth.profile": "Profil",
"footer.copyright": "DocuElevate {year}",
"footer.privacy": "Datenschutz",
"footer.imprint": "Impressum",
"footer.terms": "AGB",
"footer.cookies": "Cookies",
"footer.license": "Lizenz",
"footer.attributions": "Danksagungen",
"footer.version": "Version {version}",
"footer.navigation": "Fußnavigation",
"cookie.notice": "DocuElevate verwendet nur wesentliche Sitzungscookies, die für die Authentifizierung und den Betrieb erforderlich sind. Es werden keine Tracking- oder Analysecookies verwendet.",
"cookie.policy_link": "Cookie-Richtlinie",
"cookie.privacy_link": "Datenschutzhinweis",
"cookie.accept": "Verstanden",
"cookie.notice_label": "Cookie-Hinweis",
"common.save": "Speichern",
"common.cancel": "Abbrechen",
"common.delete": "Löschen",
"common.edit": "Bearbeiten",
"common.close": "Schließen",
"common.confirm": "Bestätigen",
"common.back": "Zurück",
"common.next": "Weiter",
"common.loading": "Wird geladen...",
"common.error": "Fehler",
"common.success": "Erfolg",
"common.warning": "Warnung",
"common.info": "Info",
"common.yes": "Ja",
"common.no": "Nein",
"common.search": "Suchen",
"common.filter": "Filter",
"common.reset": "Zurücksetzen",
"common.refresh": "Aktualisieren",
"common.download": "Herunterladen",
"common.actions": "Aktionen",
"common.details": "Details",
"common.name": "Name",
"common.description": "Beschreibung",
"common.type": "Typ",
"common.status": "Status",
"common.date": "Datum",
"common.size": "Größe",
"common.created": "Erstellt",
"common.updated": "Aktualisiert",
"common.enabled": "Aktiviert",
"common.disabled": "Deaktiviert",
"common.active": "Aktiv",
"common.inactive": "Inaktiv",
"common.all": "Alle",
"common.none": "Keine",
"common.select": "Auswählen",
"common.upload": "Hochladen",
"common.processing": "Wird verarbeitet",
"common.completed": "Abgeschlossen",
"common.failed": "Fehlgeschlagen",
"common.pending": "Ausstehend",
"common.retry": "Wiederholen",
"common.view": "Anzeigen",
"common.copy": "Kopieren",
"common.copied": "Kopiert!",
"language.selector": "Sprache",
"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": "Sprache geändert zu {language}",
"dashboard.title": "Übersicht",
"dashboard.total_files": "Dateien gesamt",
"dashboard.files_today": "Dateien heute",
"dashboard.files_this_month": "Dateien diesen Monat",
"dashboard.ocr_processed": "OCR verarbeitet",
"dashboard.active_integrations": "Aktive Integrationen",
"dashboard.storage_targets": "Speicherziele",
"dashboard.recent_activity": "Letzte Aktivität",
"dashboard.quick_actions": "Schnellaktionen",
"dashboard.welcome": "Willkommen bei DocuElevate",
"upload.title": "Dokument hochladen",
"upload.drag_drop": "Dateien hierher ziehen oder klicken zum Durchsuchen",
"upload.select_file": "Datei auswählen",
"upload.uploading": "Wird hochgeladen...",
"upload.success": "Datei erfolgreich hochgeladen",
"upload.error": "Hochladen fehlgeschlagen",
"upload.max_size": "Maximale Dateigröße: {size}",
"files.title": "Dateien",
"files.no_files": "Keine Dateien gefunden",
"files.filename": "Dateiname",
"files.document_title": "Dokumenttitel",
"files.uploaded": "Hochgeladen",
"files.file_size": "Dateigröße",
"files.ocr_status": "OCR-Status",
"files.tags": "Schlagwörter",
"search.title": "Dokumente suchen",
"search.placeholder": "Nach Dateiname, Inhalt, Schlagwörtern suchen...",
"search.no_results": "Keine Ergebnisse gefunden",
"search.results_count": "{count} Ergebnisse gefunden",
"settings.title": "Einstellungen",
"settings.save_success": "Einstellung erfolgreich gespeichert",
"settings.save_error": "Einstellung konnte nicht gespeichert werden",
"settings.reset_confirm": "Möchten Sie diese Einstellung wirklich zurücksetzen?",
"integrations.title": "Integrationen",
"integrations.connect": "Verbinden",
"integrations.disconnect": "Trennen",
"integrations.connected": "Verbunden",
"integrations.not_connected": "Nicht verbunden",
"integrations.configure": "Konfigurieren",
"pipelines.title": "Verarbeitungspipelines",
"pipelines.create": "Pipeline erstellen",
"pipelines.edit": "Pipeline bearbeiten",
"help.title": "Hilfezentrum",
"help.getting_started": "Erste Schritte",
"help.faq": "Häufig gestellte Fragen",
"help.documentation": "Dokumentation",
"help.support": "Support",
"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.",
"error.forbidden": "Zugriff verweigert",
"error.forbidden_message": "Sie haben keine Berechtigung, auf diese Seite zuzugreifen.",
"notifications.title": "Benachrichtigungen",
"notifications.mark_read": "Als gelesen markieren",
"notifications.mark_all_read": "Alle als gelesen markieren",
"notifications.no_notifications": "Keine Benachrichtigungen",
"notifications.unread_count": "{count} ungelesene Benachrichtigungen"
}
+190
View File
@@ -0,0 +1,190 @@
{
"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",
"auth.login": "Log In",
"auth.logout": "Log Out",
"auth.signup": "Sign Up",
"auth.my_account": "My Account",
"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",
"cookie.notice": "DocuElevate uses only essential session cookies required for authentication and service operation. No tracking or analytics cookies are used.",
"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}",
"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",
"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"
}
+190
View File
@@ -0,0 +1,190 @@
{
"app.name": "DocuElevate",
"nav.dashboard": "Panel",
"nav.upload": "Subir",
"nav.files": "Archivos",
"nav.search": "Buscar",
"nav.pipelines": "Pipelines",
"nav.integrations": "Integraciones",
"nav.help": "Ayuda",
"nav.notifications": "Notificaciones",
"nav.pricing": "Precios",
"nav.about": "Acerca de",
"nav.admin": "Admin",
"nav.settings": "Configuración",
"nav.users": "Usuarios",
"nav.plan_designer": "Diseñador de planes",
"nav.credentials": "Credenciales",
"nav.file_manager": "Gestor de archivos",
"nav.duplicates": "Duplicados",
"nav.similarity": "Similitud",
"nav.queue_monitor": "Monitor de cola",
"nav.scheduled_jobs": "Tareas programadas",
"nav.backup_restore": "Copia de seguridad y restauración",
"nav.status": "Estado",
"nav.api_docs": "Documentación API",
"nav.developer_docs": "Documentación para desarrolladores",
"nav.dark_mode": "Modo oscuro",
"nav.light_mode": "Modo claro",
"nav.toggle_dark_mode": "Alternar modo oscuro",
"nav.toggle_nav": "Alternar menú de navegación",
"nav.open_main_menu": "Abrir menú principal",
"nav.skip_to_content": "Ir al contenido principal",
"nav.main_navigation": "Navegación principal",
"nav.admin_menu": "Menú de administración",
"nav.admin_actions": "Acciones de administración",
"nav.help_center": "Centro de ayuda",
"auth.login": "Iniciar sesión",
"auth.logout": "Cerrar sesión",
"auth.signup": "Registrarse",
"auth.my_account": "Mi cuenta",
"auth.profile": "Perfil",
"footer.copyright": "DocuElevate {year}",
"footer.privacy": "Privacidad",
"footer.imprint": "Aviso legal",
"footer.terms": "Términos",
"footer.cookies": "Cookies",
"footer.license": "Licencia",
"footer.attributions": "Atribuciones",
"footer.version": "Versión {version}",
"footer.navigation": "Navegación del pie de página",
"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.policy_link": "Política de cookies",
"cookie.privacy_link": "Aviso de privacidad",
"cookie.accept": "Entendido",
"cookie.notice_label": "Aviso de cookies",
"common.save": "Guardar",
"common.cancel": "Cancelar",
"common.delete": "Eliminar",
"common.edit": "Editar",
"common.close": "Cerrar",
"common.confirm": "Confirmar",
"common.back": "Atrás",
"common.next": "Siguiente",
"common.loading": "Cargando...",
"common.error": "Error",
"common.success": "Éxito",
"common.warning": "Advertencia",
"common.info": "Información",
"common.yes": "Sí",
"common.no": "No",
"common.search": "Buscar",
"common.filter": "Filtrar",
"common.reset": "Restablecer",
"common.refresh": "Actualizar",
"common.download": "Descargar",
"common.actions": "Acciones",
"common.details": "Detalles",
"common.name": "Nombre",
"common.description": "Descripción",
"common.type": "Tipo",
"common.status": "Estado",
"common.date": "Fecha",
"common.size": "Tamaño",
"common.created": "Creado",
"common.updated": "Actualizado",
"common.enabled": "Habilitado",
"common.disabled": "Deshabilitado",
"common.active": "Activo",
"common.inactive": "Inactivo",
"common.all": "Todo",
"common.none": "Ninguno",
"common.select": "Seleccionar",
"common.upload": "Subir",
"common.processing": "Procesando",
"common.completed": "Completado",
"common.failed": "Fallido",
"common.pending": "Pendiente",
"common.retry": "Reintentar",
"common.view": "Ver",
"common.copy": "Copiar",
"common.copied": "¡Copiado!",
"language.selector": "Idioma",
"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": "Idioma cambiado a {language}",
"dashboard.title": "Panel",
"dashboard.total_files": "Total de archivos",
"dashboard.files_today": "Archivos hoy",
"dashboard.files_this_month": "Archivos este mes",
"dashboard.ocr_processed": "OCR procesados",
"dashboard.active_integrations": "Integraciones activas",
"dashboard.storage_targets": "Destinos de almacenamiento",
"dashboard.recent_activity": "Actividad reciente",
"dashboard.quick_actions": "Acciones rápidas",
"dashboard.welcome": "Bienvenido a DocuElevate",
"upload.title": "Subir documento",
"upload.drag_drop": "Arrastre archivos aquí o haga clic para buscar",
"upload.select_file": "Seleccionar archivo",
"upload.uploading": "Subiendo...",
"upload.success": "Archivo subido con éxito",
"upload.error": "Error al subir",
"upload.max_size": "Tamaño máximo del archivo: {size}",
"files.title": "Archivos",
"files.no_files": "No se encontraron archivos",
"files.filename": "Nombre del archivo",
"files.document_title": "Título del documento",
"files.uploaded": "Subido",
"files.file_size": "Tamaño del archivo",
"files.ocr_status": "Estado OCR",
"files.tags": "Etiquetas",
"search.title": "Buscar documentos",
"search.placeholder": "Buscar por nombre, contenido, etiquetas...",
"search.no_results": "No se encontraron resultados",
"search.results_count": "{count} resultados encontrados",
"settings.title": "Configuración",
"settings.save_success": "Configuración guardada con éxito",
"settings.save_error": "Error al guardar la configuración",
"settings.reset_confirm": "¿Está seguro de que desea restablecer esta configuración?",
"integrations.title": "Integraciones",
"integrations.connect": "Conectar",
"integrations.disconnect": "Desconectar",
"integrations.connected": "Conectado",
"integrations.not_connected": "No conectado",
"integrations.configure": "Configurar",
"pipelines.title": "Pipelines de procesamiento",
"pipelines.create": "Crear pipeline",
"pipelines.edit": "Editar pipeline",
"help.title": "Centro de ayuda",
"help.getting_started": "Primeros pasos",
"help.faq": "Preguntas frecuentes",
"help.documentation": "Documentación",
"help.support": "Soporte",
"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": "Prohibido",
"error.forbidden_message": "No tiene permiso para acceder a esta página.",
"notifications.title": "Notificaciones",
"notifications.mark_read": "Marcar como leído",
"notifications.mark_all_read": "Marcar todo como leído",
"notifications.no_notifications": "Sin notificaciones",
"notifications.unread_count": "{count} notificaciones no leídas"
}
+190
View File
@@ -0,0 +1,190 @@
{
"app.name": "DocuElevate",
"nav.dashboard": "Tableau de bord",
"nav.upload": "Téléverser",
"nav.files": "Fichiers",
"nav.search": "Recherche",
"nav.pipelines": "Pipelines",
"nav.integrations": "Intégrations",
"nav.help": "Aide",
"nav.notifications": "Notifications",
"nav.pricing": "Tarifs",
"nav.about": "À propos",
"nav.admin": "Admin",
"nav.settings": "Paramètres",
"nav.users": "Utilisateurs",
"nav.plan_designer": "Concepteur de plans",
"nav.credentials": "Identifiants",
"nav.file_manager": "Gestionnaire de fichiers",
"nav.duplicates": "Doublons",
"nav.similarity": "Similarité",
"nav.queue_monitor": "File d'attente",
"nav.scheduled_jobs": "Tâches planifiées",
"nav.backup_restore": "Sauvegarde et restauration",
"nav.status": "Statut",
"nav.api_docs": "Documentation API",
"nav.developer_docs": "Documentation développeur",
"nav.dark_mode": "Mode sombre",
"nav.light_mode": "Mode clair",
"nav.toggle_dark_mode": "Basculer le mode sombre",
"nav.toggle_nav": "Basculer le menu de navigation",
"nav.open_main_menu": "Ouvrir le menu principal",
"nav.skip_to_content": "Aller au contenu principal",
"nav.main_navigation": "Navigation principale",
"nav.admin_menu": "Menu admin",
"nav.admin_actions": "Actions admin",
"nav.help_center": "Centre d'aide",
"auth.login": "Se connecter",
"auth.logout": "Se déconnecter",
"auth.signup": "S'inscrire",
"auth.my_account": "Mon compte",
"auth.profile": "Profil",
"footer.copyright": "DocuElevate {year}",
"footer.privacy": "Confidentialité",
"footer.imprint": "Mentions légales",
"footer.terms": "Conditions",
"footer.cookies": "Cookies",
"footer.license": "Licence",
"footer.attributions": "Attributions",
"footer.version": "Version {version}",
"footer.navigation": "Navigation du pied de page",
"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.policy_link": "Politique de cookies",
"cookie.privacy_link": "Avis de confidentialité",
"cookie.accept": "Compris",
"cookie.notice_label": "Avis relatif aux cookies",
"common.save": "Enregistrer",
"common.cancel": "Annuler",
"common.delete": "Supprimer",
"common.edit": "Modifier",
"common.close": "Fermer",
"common.confirm": "Confirmer",
"common.back": "Retour",
"common.next": "Suivant",
"common.loading": "Chargement...",
"common.error": "Erreur",
"common.success": "Succès",
"common.warning": "Avertissement",
"common.info": "Info",
"common.yes": "Oui",
"common.no": "Non",
"common.search": "Rechercher",
"common.filter": "Filtrer",
"common.reset": "Réinitialiser",
"common.refresh": "Actualiser",
"common.download": "Télécharger",
"common.actions": "Actions",
"common.details": "Détails",
"common.name": "Nom",
"common.description": "Description",
"common.type": "Type",
"common.status": "Statut",
"common.date": "Date",
"common.size": "Taille",
"common.created": "Créé",
"common.updated": "Mis à jour",
"common.enabled": "Activé",
"common.disabled": "Désactivé",
"common.active": "Actif",
"common.inactive": "Inactif",
"common.all": "Tout",
"common.none": "Aucun",
"common.select": "Sélectionner",
"common.upload": "Téléverser",
"common.processing": "En cours de traitement",
"common.completed": "Terminé",
"common.failed": "Échoué",
"common.pending": "En attente",
"common.retry": "Réessayer",
"common.view": "Voir",
"common.copy": "Copier",
"common.copied": "Copié !",
"language.selector": "Langue",
"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": "Langue changée en {language}",
"dashboard.title": "Tableau de bord",
"dashboard.total_files": "Total des fichiers",
"dashboard.files_today": "Fichiers aujourd'hui",
"dashboard.files_this_month": "Fichiers ce mois-ci",
"dashboard.ocr_processed": "OCR traités",
"dashboard.active_integrations": "Intégrations actives",
"dashboard.storage_targets": "Destinations de stockage",
"dashboard.recent_activity": "Activité récente",
"dashboard.quick_actions": "Actions rapides",
"dashboard.welcome": "Bienvenue sur DocuElevate",
"upload.title": "Téléverser un document",
"upload.drag_drop": "Glissez-déposez vos fichiers ici ou cliquez pour parcourir",
"upload.select_file": "Sélectionner un fichier",
"upload.uploading": "Téléversement en cours...",
"upload.success": "Fichier téléversé avec succès",
"upload.error": "Échec du téléversement",
"upload.max_size": "Taille maximale du fichier : {size}",
"files.title": "Fichiers",
"files.no_files": "Aucun fichier trouvé",
"files.filename": "Nom du fichier",
"files.document_title": "Titre du document",
"files.uploaded": "Téléversé",
"files.file_size": "Taille du fichier",
"files.ocr_status": "Statut OCR",
"files.tags": "Étiquettes",
"search.title": "Rechercher des documents",
"search.placeholder": "Rechercher par nom, contenu, étiquettes...",
"search.no_results": "Aucun résultat trouvé",
"search.results_count": "{count} résultats trouvés",
"settings.title": "Paramètres",
"settings.save_success": "Paramètre enregistré avec succès",
"settings.save_error": "Échec de l'enregistrement du paramètre",
"settings.reset_confirm": "Êtes-vous sûr de vouloir réinitialiser ce paramètre ?",
"integrations.title": "Intégrations",
"integrations.connect": "Connecter",
"integrations.disconnect": "Déconnecter",
"integrations.connected": "Connecté",
"integrations.not_connected": "Non connecté",
"integrations.configure": "Configurer",
"pipelines.title": "Pipelines de traitement",
"pipelines.create": "Créer un pipeline",
"pipelines.edit": "Modifier le pipeline",
"help.title": "Centre d'aide",
"help.getting_started": "Premiers pas",
"help.faq": "Questions fréquentes",
"help.documentation": "Documentation",
"help.support": "Support",
"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": "Interdit",
"error.forbidden_message": "Vous n'avez pas la permission d'accéder à cette page.",
"notifications.title": "Notifications",
"notifications.mark_read": "Marquer comme lu",
"notifications.mark_all_read": "Tout marquer comme lu",
"notifications.no_notifications": "Aucune notification",
"notifications.unread_count": "{count} notifications non lues"
}
+190
View File
@@ -0,0 +1,190 @@
{
"app.name": "DocuElevate",
"nav.dashboard": "Cruscotto",
"nav.upload": "Carica",
"nav.files": "File",
"nav.search": "Cerca",
"nav.pipelines": "Pipeline",
"nav.integrations": "Integrazioni",
"nav.help": "Aiuto",
"nav.notifications": "Notifiche",
"nav.pricing": "Prezzi",
"nav.about": "Informazioni",
"nav.admin": "Admin",
"nav.settings": "Impostazioni",
"nav.users": "Utenti",
"nav.plan_designer": "Designer dei piani",
"nav.credentials": "Credenziali",
"nav.file_manager": "Gestore file",
"nav.duplicates": "Duplicati",
"nav.similarity": "Similarità",
"nav.queue_monitor": "Monitor coda",
"nav.scheduled_jobs": "Attività pianificate",
"nav.backup_restore": "Backup e ripristino",
"nav.status": "Stato",
"nav.api_docs": "Documentazione API",
"nav.developer_docs": "Documentazione sviluppatore",
"nav.dark_mode": "Modalità scura",
"nav.light_mode": "Modalità chiara",
"nav.toggle_dark_mode": "Attiva/disattiva modalità scura",
"nav.toggle_nav": "Attiva/disattiva menu di navigazione",
"nav.open_main_menu": "Apri menu principale",
"nav.skip_to_content": "Vai al contenuto principale",
"nav.main_navigation": "Navigazione principale",
"nav.admin_menu": "Menu admin",
"nav.admin_actions": "Azioni admin",
"nav.help_center": "Centro assistenza",
"auth.login": "Accedi",
"auth.logout": "Esci",
"auth.signup": "Registrati",
"auth.my_account": "Il mio account",
"auth.profile": "Profilo",
"footer.copyright": "DocuElevate {year}",
"footer.privacy": "Privacy",
"footer.imprint": "Note legali",
"footer.terms": "Termini",
"footer.cookies": "Cookie",
"footer.license": "Licenza",
"footer.attributions": "Attribuzioni",
"footer.version": "Versione {version}",
"footer.navigation": "Navigazione a piè di pagina",
"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.policy_link": "Politica sui cookie",
"cookie.privacy_link": "Informativa sulla privacy",
"cookie.accept": "Ho capito",
"cookie.notice_label": "Avviso sui cookie",
"common.save": "Salva",
"common.cancel": "Annulla",
"common.delete": "Elimina",
"common.edit": "Modifica",
"common.close": "Chiudi",
"common.confirm": "Conferma",
"common.back": "Indietro",
"common.next": "Avanti",
"common.loading": "Caricamento...",
"common.error": "Errore",
"common.success": "Successo",
"common.warning": "Avviso",
"common.info": "Info",
"common.yes": "Sì",
"common.no": "No",
"common.search": "Cerca",
"common.filter": "Filtra",
"common.reset": "Reimposta",
"common.refresh": "Aggiorna",
"common.download": "Scarica",
"common.actions": "Azioni",
"common.details": "Dettagli",
"common.name": "Nome",
"common.description": "Descrizione",
"common.type": "Tipo",
"common.status": "Stato",
"common.date": "Data",
"common.size": "Dimensione",
"common.created": "Creato",
"common.updated": "Aggiornato",
"common.enabled": "Abilitato",
"common.disabled": "Disabilitato",
"common.active": "Attivo",
"common.inactive": "Inattivo",
"common.all": "Tutto",
"common.none": "Nessuno",
"common.select": "Seleziona",
"common.upload": "Carica",
"common.processing": "In elaborazione",
"common.completed": "Completato",
"common.failed": "Fallito",
"common.pending": "In attesa",
"common.retry": "Riprova",
"common.view": "Visualizza",
"common.copy": "Copia",
"common.copied": "Copiato!",
"language.selector": "Lingua",
"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": "Lingua cambiata in {language}",
"dashboard.title": "Cruscotto",
"dashboard.total_files": "File totali",
"dashboard.files_today": "File oggi",
"dashboard.files_this_month": "File questo mese",
"dashboard.ocr_processed": "OCR elaborati",
"dashboard.active_integrations": "Integrazioni attive",
"dashboard.storage_targets": "Destinazioni di archiviazione",
"dashboard.recent_activity": "Attività recente",
"dashboard.quick_actions": "Azioni rapide",
"dashboard.welcome": "Benvenuto su DocuElevate",
"upload.title": "Carica documento",
"upload.drag_drop": "Trascina i file qui o fai clic per sfogliare",
"upload.select_file": "Seleziona file",
"upload.uploading": "Caricamento in corso...",
"upload.success": "File caricato con successo",
"upload.error": "Caricamento fallito",
"upload.max_size": "Dimensione massima del file: {size}",
"files.title": "File",
"files.no_files": "Nessun file trovato",
"files.filename": "Nome del file",
"files.document_title": "Titolo del documento",
"files.uploaded": "Caricato",
"files.file_size": "Dimensione del file",
"files.ocr_status": "Stato OCR",
"files.tags": "Tag",
"search.title": "Cerca documenti",
"search.placeholder": "Cerca per nome, contenuto, tag...",
"search.no_results": "Nessun risultato trovato",
"search.results_count": "{count} risultati trovati",
"settings.title": "Impostazioni",
"settings.save_success": "Impostazione salvata con successo",
"settings.save_error": "Salvataggio impostazione fallito",
"settings.reset_confirm": "Sei sicuro di voler reimpostare questa impostazione?",
"integrations.title": "Integrazioni",
"integrations.connect": "Connetti",
"integrations.disconnect": "Disconnetti",
"integrations.connected": "Connesso",
"integrations.not_connected": "Non connesso",
"integrations.configure": "Configura",
"pipelines.title": "Pipeline di elaborazione",
"pipelines.create": "Crea pipeline",
"pipelines.edit": "Modifica pipeline",
"help.title": "Centro assistenza",
"help.getting_started": "Per iniziare",
"help.faq": "Domande frequenti",
"help.documentation": "Documentazione",
"help.support": "Supporto",
"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": "Vietato",
"error.forbidden_message": "Non hai il permesso di accedere a questa pagina.",
"notifications.title": "Notifiche",
"notifications.mark_read": "Segna come letto",
"notifications.mark_all_read": "Segna tutto come letto",
"notifications.no_notifications": "Nessuna notifica",
"notifications.unread_count": "{count} notifiche non lette"
}
+190
View File
@@ -0,0 +1,190 @@
{
"app.name": "DocuElevate",
"nav.dashboard": "Dashboard",
"nav.upload": "Uploaden",
"nav.files": "Bestanden",
"nav.search": "Zoeken",
"nav.pipelines": "Pipelines",
"nav.integrations": "Integraties",
"nav.help": "Help",
"nav.notifications": "Meldingen",
"nav.pricing": "Prijzen",
"nav.about": "Over ons",
"nav.admin": "Admin",
"nav.settings": "Instellingen",
"nav.users": "Gebruikers",
"nav.plan_designer": "Planontwerper",
"nav.credentials": "Referenties",
"nav.file_manager": "Bestandsbeheer",
"nav.duplicates": "Duplicaten",
"nav.similarity": "Gelijkenis",
"nav.queue_monitor": "Wachtrijmonitor",
"nav.scheduled_jobs": "Geplande taken",
"nav.backup_restore": "Back-up en herstel",
"nav.status": "Status",
"nav.api_docs": "API-documentatie",
"nav.developer_docs": "Ontwikkelaarsdocumentatie",
"nav.dark_mode": "Donkere modus",
"nav.light_mode": "Lichte modus",
"nav.toggle_dark_mode": "Donkere modus schakelen",
"nav.toggle_nav": "Navigatiemenu schakelen",
"nav.open_main_menu": "Hoofdmenu openen",
"nav.skip_to_content": "Ga naar hoofdinhoud",
"nav.main_navigation": "Hoofdnavigatie",
"nav.admin_menu": "Admin-menu",
"nav.admin_actions": "Admin-acties",
"nav.help_center": "Helpcentrum",
"auth.login": "Inloggen",
"auth.logout": "Uitloggen",
"auth.signup": "Registreren",
"auth.my_account": "Mijn account",
"auth.profile": "Profiel",
"footer.copyright": "DocuElevate {year}",
"footer.privacy": "Privacy",
"footer.imprint": "Colofon",
"footer.terms": "Voorwaarden",
"footer.cookies": "Cookies",
"footer.license": "Licentie",
"footer.attributions": "Attributies",
"footer.version": "Versie {version}",
"footer.navigation": "Voettekstnavigatie",
"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.policy_link": "Cookiebeleid",
"cookie.privacy_link": "Privacyverklaring",
"cookie.accept": "Begrepen",
"cookie.notice_label": "Cookiemelding",
"common.save": "Opslaan",
"common.cancel": "Annuleren",
"common.delete": "Verwijderen",
"common.edit": "Bewerken",
"common.close": "Sluiten",
"common.confirm": "Bevestigen",
"common.back": "Terug",
"common.next": "Volgende",
"common.loading": "Laden...",
"common.error": "Fout",
"common.success": "Succes",
"common.warning": "Waarschuwing",
"common.info": "Info",
"common.yes": "Ja",
"common.no": "Nee",
"common.search": "Zoeken",
"common.filter": "Filteren",
"common.reset": "Herstellen",
"common.refresh": "Vernieuwen",
"common.download": "Downloaden",
"common.actions": "Acties",
"common.details": "Details",
"common.name": "Naam",
"common.description": "Beschrijving",
"common.type": "Type",
"common.status": "Status",
"common.date": "Datum",
"common.size": "Grootte",
"common.created": "Aangemaakt",
"common.updated": "Bijgewerkt",
"common.enabled": "Ingeschakeld",
"common.disabled": "Uitgeschakeld",
"common.active": "Actief",
"common.inactive": "Inactief",
"common.all": "Alles",
"common.none": "Geen",
"common.select": "Selecteren",
"common.upload": "Uploaden",
"common.processing": "Verwerken",
"common.completed": "Voltooid",
"common.failed": "Mislukt",
"common.pending": "In afwachting",
"common.retry": "Opnieuw proberen",
"common.view": "Bekijken",
"common.copy": "Kopiëren",
"common.copied": "Gekopieerd!",
"language.selector": "Taal",
"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": "Taal gewijzigd naar {language}",
"dashboard.title": "Dashboard",
"dashboard.total_files": "Totaal bestanden",
"dashboard.files_today": "Bestanden vandaag",
"dashboard.files_this_month": "Bestanden deze maand",
"dashboard.ocr_processed": "OCR verwerkt",
"dashboard.active_integrations": "Actieve integraties",
"dashboard.storage_targets": "Opslagdoelen",
"dashboard.recent_activity": "Recente activiteit",
"dashboard.quick_actions": "Snelle acties",
"dashboard.welcome": "Welkom bij DocuElevate",
"upload.title": "Document uploaden",
"upload.drag_drop": "Sleep bestanden hierheen of klik om te bladeren",
"upload.select_file": "Bestand selecteren",
"upload.uploading": "Uploaden...",
"upload.success": "Bestand succesvol geüpload",
"upload.error": "Upload mislukt",
"upload.max_size": "Maximale bestandsgrootte: {size}",
"files.title": "Bestanden",
"files.no_files": "Geen bestanden gevonden",
"files.filename": "Bestandsnaam",
"files.document_title": "Documenttitel",
"files.uploaded": "Geüpload",
"files.file_size": "Bestandsgrootte",
"files.ocr_status": "OCR-status",
"files.tags": "Tags",
"search.title": "Documenten zoeken",
"search.placeholder": "Zoeken op naam, inhoud, tags...",
"search.no_results": "Geen resultaten gevonden",
"search.results_count": "{count} resultaten gevonden",
"settings.title": "Instellingen",
"settings.save_success": "Instelling succesvol opgeslagen",
"settings.save_error": "Instelling opslaan mislukt",
"settings.reset_confirm": "Weet u zeker dat u deze instelling wilt herstellen?",
"integrations.title": "Integraties",
"integrations.connect": "Verbinden",
"integrations.disconnect": "Verbreken",
"integrations.connected": "Verbonden",
"integrations.not_connected": "Niet verbonden",
"integrations.configure": "Configureren",
"pipelines.title": "Verwerkingspipelines",
"pipelines.create": "Pipeline maken",
"pipelines.edit": "Pipeline bewerken",
"help.title": "Helpcentrum",
"help.getting_started": "Aan de slag",
"help.faq": "Veelgestelde vragen",
"help.documentation": "Documentatie",
"help.support": "Ondersteuning",
"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": "Verboden",
"error.forbidden_message": "U heeft geen toestemming om deze pagina te openen.",
"notifications.title": "Meldingen",
"notifications.mark_read": "Markeren als gelezen",
"notifications.mark_all_read": "Alles als gelezen markeren",
"notifications.no_notifications": "Geen meldingen",
"notifications.unread_count": "{count} ongelezen meldingen"
}
+190
View File
@@ -0,0 +1,190 @@
{
"app.name": "DocuElevate",
"nav.dashboard": "Pulpit",
"nav.upload": "Prześlij",
"nav.files": "Pliki",
"nav.search": "Szukaj",
"nav.pipelines": "Potoki",
"nav.integrations": "Integracje",
"nav.help": "Pomoc",
"nav.notifications": "Powiadomienia",
"nav.pricing": "Cennik",
"nav.about": "O nas",
"nav.admin": "Admin",
"nav.settings": "Ustawienia",
"nav.users": "Użytkownicy",
"nav.plan_designer": "Projektant planów",
"nav.credentials": "Poświadczenia",
"nav.file_manager": "Menedżer plików",
"nav.duplicates": "Duplikaty",
"nav.similarity": "Podobieństwo",
"nav.queue_monitor": "Monitor kolejki",
"nav.scheduled_jobs": "Zaplanowane zadania",
"nav.backup_restore": "Kopia zapasowa i przywracanie",
"nav.status": "Status",
"nav.api_docs": "Dokumentacja API",
"nav.developer_docs": "Dokumentacja dla programistów",
"nav.dark_mode": "Tryb ciemny",
"nav.light_mode": "Tryb jasny",
"nav.toggle_dark_mode": "Przełącz tryb ciemny",
"nav.toggle_nav": "Przełącz menu nawigacji",
"nav.open_main_menu": "Otwórz menu główne",
"nav.skip_to_content": "Przejdź do treści głównej",
"nav.main_navigation": "Nawigacja główna",
"nav.admin_menu": "Menu administratora",
"nav.admin_actions": "Akcje administratora",
"nav.help_center": "Centrum pomocy",
"auth.login": "Zaloguj się",
"auth.logout": "Wyloguj się",
"auth.signup": "Zarejestruj się",
"auth.my_account": "Moje konto",
"auth.profile": "Profil",
"footer.copyright": "DocuElevate {year}",
"footer.privacy": "Prywatność",
"footer.imprint": "Impressum",
"footer.terms": "Regulamin",
"footer.cookies": "Cookies",
"footer.license": "Licencja",
"footer.attributions": "Atrybuty",
"footer.version": "Wersja {version}",
"footer.navigation": "Nawigacja stopki",
"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.policy_link": "Polityka plików cookie",
"cookie.privacy_link": "Informacja o prywatności",
"cookie.accept": "Rozumiem",
"cookie.notice_label": "Informacja o plikach cookie",
"common.save": "Zapisz",
"common.cancel": "Anuluj",
"common.delete": "Usuń",
"common.edit": "Edytuj",
"common.close": "Zamknij",
"common.confirm": "Potwierdź",
"common.back": "Wstecz",
"common.next": "Dalej",
"common.loading": "Ładowanie...",
"common.error": "Błąd",
"common.success": "Sukces",
"common.warning": "Ostrzeżenie",
"common.info": "Informacja",
"common.yes": "Tak",
"common.no": "Nie",
"common.search": "Szukaj",
"common.filter": "Filtruj",
"common.reset": "Resetuj",
"common.refresh": "Odśwież",
"common.download": "Pobierz",
"common.actions": "Akcje",
"common.details": "Szczegóły",
"common.name": "Nazwa",
"common.description": "Opis",
"common.type": "Typ",
"common.status": "Status",
"common.date": "Data",
"common.size": "Rozmiar",
"common.created": "Utworzono",
"common.updated": "Zaktualizowano",
"common.enabled": "Włączony",
"common.disabled": "Wyłączony",
"common.active": "Aktywny",
"common.inactive": "Nieaktywny",
"common.all": "Wszystko",
"common.none": "Brak",
"common.select": "Wybierz",
"common.upload": "Prześlij",
"common.processing": "Przetwarzanie",
"common.completed": "Zakończono",
"common.failed": "Nieudane",
"common.pending": "Oczekujące",
"common.retry": "Ponów",
"common.view": "Wyświetl",
"common.copy": "Kopiuj",
"common.copied": "Skopiowano!",
"language.selector": "Język",
"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": "Język zmieniony na {language}",
"dashboard.title": "Pulpit",
"dashboard.total_files": "Pliki ogółem",
"dashboard.files_today": "Pliki dzisiaj",
"dashboard.files_this_month": "Pliki w tym miesiącu",
"dashboard.ocr_processed": "OCR przetworzone",
"dashboard.active_integrations": "Aktywne integracje",
"dashboard.storage_targets": "Cele przechowywania",
"dashboard.recent_activity": "Ostatnia aktywność",
"dashboard.quick_actions": "Szybkie akcje",
"dashboard.welcome": "Witamy w DocuElevate",
"upload.title": "Prześlij dokument",
"upload.drag_drop": "Przeciągnij pliki tutaj lub kliknij, aby przeglądać",
"upload.select_file": "Wybierz plik",
"upload.uploading": "Przesyłanie...",
"upload.success": "Plik przesłany pomyślnie",
"upload.error": "Przesyłanie nie powiodło się",
"upload.max_size": "Maksymalny rozmiar pliku: {size}",
"files.title": "Pliki",
"files.no_files": "Nie znaleziono plików",
"files.filename": "Nazwa pliku",
"files.document_title": "Tytuł dokumentu",
"files.uploaded": "Przesłano",
"files.file_size": "Rozmiar pliku",
"files.ocr_status": "Status OCR",
"files.tags": "Tagi",
"search.title": "Szukaj dokumentów",
"search.placeholder": "Szukaj wg nazwy, treści, tagów...",
"search.no_results": "Nie znaleziono wyników",
"search.results_count": "Znaleziono {count} wyników",
"settings.title": "Ustawienia",
"settings.save_success": "Ustawienie zapisane pomyślnie",
"settings.save_error": "Nie udało się zapisać ustawienia",
"settings.reset_confirm": "Czy na pewno chcesz zresetować to ustawienie?",
"integrations.title": "Integracje",
"integrations.connect": "Połącz",
"integrations.disconnect": "Rozłącz",
"integrations.connected": "Połączono",
"integrations.not_connected": "Nie połączono",
"integrations.configure": "Konfiguruj",
"pipelines.title": "Potoki przetwarzania",
"pipelines.create": "Utwórz potok",
"pipelines.edit": "Edytuj potok",
"help.title": "Centrum pomocy",
"help.getting_started": "Pierwsze kroki",
"help.faq": "Często zadawane pytania",
"help.documentation": "Dokumentacja",
"help.support": "Wsparcie",
"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": "Zabroniono",
"error.forbidden_message": "Nie masz uprawnień do dostępu do tej strony.",
"notifications.title": "Powiadomienia",
"notifications.mark_read": "Oznacz jako przeczytane",
"notifications.mark_all_read": "Oznacz wszystkie jako przeczytane",
"notifications.no_notifications": "Brak powiadomień",
"notifications.unread_count": "{count} nieprzeczytanych powiadomień"
}
+190
View File
@@ -0,0 +1,190 @@
{
"app.name": "DocuElevate",
"nav.dashboard": "Painel",
"nav.upload": "Carregar",
"nav.files": "Ficheiros",
"nav.search": "Pesquisar",
"nav.pipelines": "Pipelines",
"nav.integrations": "Integrações",
"nav.help": "Ajuda",
"nav.notifications": "Notificações",
"nav.pricing": "Preços",
"nav.about": "Sobre",
"nav.admin": "Admin",
"nav.settings": "Definições",
"nav.users": "Utilizadores",
"nav.plan_designer": "Designer de planos",
"nav.credentials": "Credenciais",
"nav.file_manager": "Gestor de ficheiros",
"nav.duplicates": "Duplicados",
"nav.similarity": "Similaridade",
"nav.queue_monitor": "Monitor de fila",
"nav.scheduled_jobs": "Tarefas agendadas",
"nav.backup_restore": "Cópia de segurança e restauro",
"nav.status": "Estado",
"nav.api_docs": "Documentação API",
"nav.developer_docs": "Documentação para programadores",
"nav.dark_mode": "Modo escuro",
"nav.light_mode": "Modo claro",
"nav.toggle_dark_mode": "Alternar modo escuro",
"nav.toggle_nav": "Alternar menu de navegação",
"nav.open_main_menu": "Abrir menu principal",
"nav.skip_to_content": "Ir para o conteúdo principal",
"nav.main_navigation": "Navegação principal",
"nav.admin_menu": "Menu de administração",
"nav.admin_actions": "Ações de administração",
"nav.help_center": "Centro de ajuda",
"auth.login": "Iniciar sessão",
"auth.logout": "Terminar sessão",
"auth.signup": "Registar",
"auth.my_account": "A minha conta",
"auth.profile": "Perfil",
"footer.copyright": "DocuElevate {year}",
"footer.privacy": "Privacidade",
"footer.imprint": "Aviso legal",
"footer.terms": "Termos",
"footer.cookies": "Cookies",
"footer.license": "Licença",
"footer.attributions": "Atribuições",
"footer.version": "Versão {version}",
"footer.navigation": "Navegação do rodapé",
"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.policy_link": "Política de cookies",
"cookie.privacy_link": "Aviso de privacidade",
"cookie.accept": "Entendido",
"cookie.notice_label": "Aviso de cookies",
"common.save": "Guardar",
"common.cancel": "Cancelar",
"common.delete": "Eliminar",
"common.edit": "Editar",
"common.close": "Fechar",
"common.confirm": "Confirmar",
"common.back": "Voltar",
"common.next": "Seguinte",
"common.loading": "A carregar...",
"common.error": "Erro",
"common.success": "Sucesso",
"common.warning": "Aviso",
"common.info": "Informação",
"common.yes": "Sim",
"common.no": "Não",
"common.search": "Pesquisar",
"common.filter": "Filtrar",
"common.reset": "Repor",
"common.refresh": "Atualizar",
"common.download": "Descarregar",
"common.actions": "Ações",
"common.details": "Detalhes",
"common.name": "Nome",
"common.description": "Descrição",
"common.type": "Tipo",
"common.status": "Estado",
"common.date": "Data",
"common.size": "Tamanho",
"common.created": "Criado",
"common.updated": "Atualizado",
"common.enabled": "Ativado",
"common.disabled": "Desativado",
"common.active": "Ativo",
"common.inactive": "Inativo",
"common.all": "Tudo",
"common.none": "Nenhum",
"common.select": "Selecionar",
"common.upload": "Carregar",
"common.processing": "A processar",
"common.completed": "Concluído",
"common.failed": "Falhado",
"common.pending": "Pendente",
"common.retry": "Tentar novamente",
"common.view": "Ver",
"common.copy": "Copiar",
"common.copied": "Copiado!",
"language.selector": "Idioma",
"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": "Idioma alterado para {language}",
"dashboard.title": "Painel",
"dashboard.total_files": "Total de ficheiros",
"dashboard.files_today": "Ficheiros hoje",
"dashboard.files_this_month": "Ficheiros este mês",
"dashboard.ocr_processed": "OCR processados",
"dashboard.active_integrations": "Integrações ativas",
"dashboard.storage_targets": "Destinos de armazenamento",
"dashboard.recent_activity": "Atividade recente",
"dashboard.quick_actions": "Ações rápidas",
"dashboard.welcome": "Bem-vindo ao DocuElevate",
"upload.title": "Carregar documento",
"upload.drag_drop": "Arraste ficheiros para aqui ou clique para procurar",
"upload.select_file": "Selecionar ficheiro",
"upload.uploading": "A carregar...",
"upload.success": "Ficheiro carregado com sucesso",
"upload.error": "Falha ao carregar",
"upload.max_size": "Tamanho máximo do ficheiro: {size}",
"files.title": "Ficheiros",
"files.no_files": "Nenhum ficheiro encontrado",
"files.filename": "Nome do ficheiro",
"files.document_title": "Título do documento",
"files.uploaded": "Carregado",
"files.file_size": "Tamanho do ficheiro",
"files.ocr_status": "Estado OCR",
"files.tags": "Etiquetas",
"search.title": "Pesquisar documentos",
"search.placeholder": "Pesquisar por nome, conteúdo, etiquetas...",
"search.no_results": "Nenhum resultado encontrado",
"search.results_count": "{count} resultados encontrados",
"settings.title": "Definições",
"settings.save_success": "Definição guardada com sucesso",
"settings.save_error": "Falha ao guardar definição",
"settings.reset_confirm": "Tem a certeza de que pretende repor esta definição?",
"integrations.title": "Integrações",
"integrations.connect": "Ligar",
"integrations.disconnect": "Desligar",
"integrations.connected": "Ligado",
"integrations.not_connected": "Não ligado",
"integrations.configure": "Configurar",
"pipelines.title": "Pipelines de processamento",
"pipelines.create": "Criar pipeline",
"pipelines.edit": "Editar pipeline",
"help.title": "Centro de ajuda",
"help.getting_started": "Primeiros passos",
"help.faq": "Perguntas frequentes",
"help.documentation": "Documentação",
"help.support": "Suporte",
"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": "Proibido",
"error.forbidden_message": "Não tem permissão para aceder a esta página.",
"notifications.title": "Notificações",
"notifications.mark_read": "Marcar como lida",
"notifications.mark_all_read": "Marcar todas como lidas",
"notifications.no_notifications": "Sem notificações",
"notifications.unread_count": "{count} notificações por ler"
}
+190
View File
@@ -0,0 +1,190 @@
{
"app.name": "DocuElevate",
"nav.dashboard": "Панель управления",
"nav.upload": "Загрузить",
"nav.files": "Файлы",
"nav.search": "Поиск",
"nav.pipelines": "Конвейеры",
"nav.integrations": "Интеграции",
"nav.help": "Помощь",
"nav.notifications": "Уведомления",
"nav.pricing": "Цены",
"nav.about": "О нас",
"nav.admin": "Админ",
"nav.settings": "Настройки",
"nav.users": "Пользователи",
"nav.plan_designer": "Конструктор планов",
"nav.credentials": "Учётные данные",
"nav.file_manager": "Менеджер файлов",
"nav.duplicates": "Дубликаты",
"nav.similarity": "Сходство",
"nav.queue_monitor": "Монитор очереди",
"nav.scheduled_jobs": "Запланированные задачи",
"nav.backup_restore": "Резервное копирование и восстановление",
"nav.status": "Статус",
"nav.api_docs": "Документация API",
"nav.developer_docs": "Документация для разработчиков",
"nav.dark_mode": "Тёмная тема",
"nav.light_mode": "Светлая тема",
"nav.toggle_dark_mode": "Переключить тёмную тему",
"nav.toggle_nav": "Переключить меню навигации",
"nav.open_main_menu": "Открыть главное меню",
"nav.skip_to_content": "Перейти к основному содержанию",
"nav.main_navigation": "Основная навигация",
"nav.admin_menu": "Меню администратора",
"nav.admin_actions": "Действия администратора",
"nav.help_center": "Центр помощи",
"auth.login": "Войти",
"auth.logout": "Выйти",
"auth.signup": "Регистрация",
"auth.my_account": "Мой аккаунт",
"auth.profile": "Профиль",
"footer.copyright": "DocuElevate {year}",
"footer.privacy": "Конфиденциальность",
"footer.imprint": "Выходные данные",
"footer.terms": "Условия",
"footer.cookies": "Файлы cookie",
"footer.license": "Лицензия",
"footer.attributions": "Атрибуции",
"footer.version": "Версия {version}",
"footer.navigation": "Навигация подвала",
"cookie.notice": "DocuElevate использует только необходимые сессионные файлы cookie для аутентификации и работы сервиса. Файлы cookie для отслеживания и аналитики не используются.",
"cookie.policy_link": "Политика файлов cookie",
"cookie.privacy_link": "Уведомление о конфиденциальности",
"cookie.accept": "Понятно",
"cookie.notice_label": "Уведомление о файлах cookie",
"common.save": "Сохранить",
"common.cancel": "Отмена",
"common.delete": "Удалить",
"common.edit": "Редактировать",
"common.close": "Закрыть",
"common.confirm": "Подтвердить",
"common.back": "Назад",
"common.next": "Далее",
"common.loading": "Загрузка...",
"common.error": "Ошибка",
"common.success": "Успешно",
"common.warning": "Предупреждение",
"common.info": "Информация",
"common.yes": "Да",
"common.no": "Нет",
"common.search": "Поиск",
"common.filter": "Фильтр",
"common.reset": "Сбросить",
"common.refresh": "Обновить",
"common.download": "Скачать",
"common.actions": "Действия",
"common.details": "Подробности",
"common.name": "Название",
"common.description": "Описание",
"common.type": "Тип",
"common.status": "Статус",
"common.date": "Дата",
"common.size": "Размер",
"common.created": "Создано",
"common.updated": "Обновлено",
"common.enabled": "Включено",
"common.disabled": "Отключено",
"common.active": "Активно",
"common.inactive": "Неактивно",
"common.all": "Все",
"common.none": "Нет",
"common.select": "Выбрать",
"common.upload": "Загрузить",
"common.processing": "Обработка",
"common.completed": "Завершено",
"common.failed": "Ошибка",
"common.pending": "В ожидании",
"common.retry": "Повторить",
"common.view": "Просмотр",
"common.copy": "Копировать",
"common.copied": "Скопировано!",
"language.selector": "Язык",
"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}",
"dashboard.title": "Панель управления",
"dashboard.total_files": "Всего файлов",
"dashboard.files_today": "Файлы сегодня",
"dashboard.files_this_month": "Файлы за месяц",
"dashboard.ocr_processed": "OCR обработано",
"dashboard.active_integrations": "Активные интеграции",
"dashboard.storage_targets": "Хранилища",
"dashboard.recent_activity": "Последняя активность",
"dashboard.quick_actions": "Быстрые действия",
"dashboard.welcome": "Добро пожаловать в DocuElevate",
"upload.title": "Загрузить документ",
"upload.drag_drop": "Перетащите файлы сюда или нажмите для выбора",
"upload.select_file": "Выбрать файл",
"upload.uploading": "Загрузка...",
"upload.success": "Файл успешно загружен",
"upload.error": "Ошибка загрузки",
"upload.max_size": "Максимальный размер файла: {size}",
"files.title": "Файлы",
"files.no_files": "Файлы не найдены",
"files.filename": "Имя файла",
"files.document_title": "Название документа",
"files.uploaded": "Загружено",
"files.file_size": "Размер файла",
"files.ocr_status": "Статус OCR",
"files.tags": "Теги",
"search.title": "Поиск документов",
"search.placeholder": "Поиск по имени, содержимому, тегам...",
"search.no_results": "Результаты не найдены",
"search.results_count": "Найдено результатов: {count}",
"settings.title": "Настройки",
"settings.save_success": "Настройка сохранена",
"settings.save_error": "Не удалось сохранить настройку",
"settings.reset_confirm": "Вы уверены, что хотите сбросить эту настройку?",
"integrations.title": "Интеграции",
"integrations.connect": "Подключить",
"integrations.disconnect": "Отключить",
"integrations.connected": "Подключено",
"integrations.not_connected": "Не подключено",
"integrations.configure": "Настроить",
"pipelines.title": "Конвейеры обработки",
"pipelines.create": "Создать конвейер",
"pipelines.edit": "Редактировать конвейер",
"help.title": "Центр помощи",
"help.getting_started": "Начало работы",
"help.faq": "Часто задаваемые вопросы",
"help.documentation": "Документация",
"help.support": "Поддержка",
"error.not_found": "Страница не найдена",
"error.not_found_message": "Запрашиваемая страница не существует.",
"error.server_error": "Внутренняя ошибка сервера",
"error.server_error_message": "Что-то пошло не так. Пожалуйста, попробуйте позже.",
"error.unauthorized": "Не авторизован",
"error.unauthorized_message": "Для доступа к этой странице необходимо войти в систему.",
"error.forbidden": "Доступ запрещён",
"error.forbidden_message": "У вас нет прав для доступа к этой странице.",
"notifications.title": "Уведомления",
"notifications.mark_read": "Отметить как прочитанное",
"notifications.mark_all_read": "Отметить все как прочитанные",
"notifications.no_notifications": "Нет уведомлений",
"notifications.unread_count": "{count} непрочитанных уведомлений"
}
+190
View File
@@ -0,0 +1,190 @@
{
"app.name": "DocuElevate",
"nav.dashboard": "仪表盘",
"nav.upload": "上传",
"nav.files": "文件",
"nav.search": "搜索",
"nav.pipelines": "处理流程",
"nav.integrations": "集成",
"nav.help": "帮助",
"nav.notifications": "通知",
"nav.pricing": "价格",
"nav.about": "关于",
"nav.admin": "管理",
"nav.settings": "设置",
"nav.users": "用户",
"nav.plan_designer": "方案设计",
"nav.credentials": "凭据",
"nav.file_manager": "文件管理器",
"nav.duplicates": "重复文件",
"nav.similarity": "相似度",
"nav.queue_monitor": "队列监控",
"nav.scheduled_jobs": "计划任务",
"nav.backup_restore": "备份与恢复",
"nav.status": "状态",
"nav.api_docs": "API 文档",
"nav.developer_docs": "开发者文档",
"nav.dark_mode": "深色模式",
"nav.light_mode": "浅色模式",
"nav.toggle_dark_mode": "切换深色模式",
"nav.toggle_nav": "切换导航菜单",
"nav.open_main_menu": "打开主菜单",
"nav.skip_to_content": "跳至主要内容",
"nav.main_navigation": "主导航",
"nav.admin_menu": "管理菜单",
"nav.admin_actions": "管理操作",
"nav.help_center": "帮助中心",
"auth.login": "登录",
"auth.logout": "退出",
"auth.signup": "注册",
"auth.my_account": "我的账户",
"auth.profile": "个人资料",
"footer.copyright": "DocuElevate {year}",
"footer.privacy": "隐私",
"footer.imprint": "法律声明",
"footer.terms": "条款",
"footer.cookies": "Cookie",
"footer.license": "许可",
"footer.attributions": "致谢",
"footer.version": "版本 {version}",
"footer.navigation": "页脚导航",
"cookie.notice": "DocuElevate 仅使用身份验证和服务运行所需的基本会话 Cookie。不使用任何跟踪或分析 Cookie。",
"cookie.policy_link": "Cookie 政策",
"cookie.privacy_link": "隐私声明",
"cookie.accept": "我知道了",
"cookie.notice_label": "Cookie 通知",
"common.save": "保存",
"common.cancel": "取消",
"common.delete": "删除",
"common.edit": "编辑",
"common.close": "关闭",
"common.confirm": "确认",
"common.back": "返回",
"common.next": "下一步",
"common.loading": "加载中...",
"common.error": "错误",
"common.success": "成功",
"common.warning": "警告",
"common.info": "信息",
"common.yes": "是",
"common.no": "否",
"common.search": "搜索",
"common.filter": "筛选",
"common.reset": "重置",
"common.refresh": "刷新",
"common.download": "下载",
"common.actions": "操作",
"common.details": "详情",
"common.name": "名称",
"common.description": "描述",
"common.type": "类型",
"common.status": "状态",
"common.date": "日期",
"common.size": "大小",
"common.created": "创建时间",
"common.updated": "更新时间",
"common.enabled": "已启用",
"common.disabled": "已禁用",
"common.active": "活跃",
"common.inactive": "不活跃",
"common.all": "全部",
"common.none": "无",
"common.select": "选择",
"common.upload": "上传",
"common.processing": "处理中",
"common.completed": "已完成",
"common.failed": "失败",
"common.pending": "待处理",
"common.retry": "重试",
"common.view": "查看",
"common.copy": "复制",
"common.copied": "已复制!",
"language.selector": "语言",
"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}",
"dashboard.title": "仪表盘",
"dashboard.total_files": "文件总数",
"dashboard.files_today": "今日文件",
"dashboard.files_this_month": "本月文件",
"dashboard.ocr_processed": "OCR 已处理",
"dashboard.active_integrations": "活跃集成",
"dashboard.storage_targets": "存储目标",
"dashboard.recent_activity": "最近活动",
"dashboard.quick_actions": "快捷操作",
"dashboard.welcome": "欢迎使用 DocuElevate",
"upload.title": "上传文档",
"upload.drag_drop": "将文件拖放到此处或点击浏览",
"upload.select_file": "选择文件",
"upload.uploading": "上传中...",
"upload.success": "文件上传成功",
"upload.error": "上传失败",
"upload.max_size": "最大文件大小:{size}",
"files.title": "文件",
"files.no_files": "未找到文件",
"files.filename": "文件名",
"files.document_title": "文档标题",
"files.uploaded": "已上传",
"files.file_size": "文件大小",
"files.ocr_status": "OCR 状态",
"files.tags": "标签",
"search.title": "搜索文档",
"search.placeholder": "按文件名、内容、标签搜索...",
"search.no_results": "未找到结果",
"search.results_count": "找到 {count} 个结果",
"settings.title": "设置",
"settings.save_success": "设置保存成功",
"settings.save_error": "设置保存失败",
"settings.reset_confirm": "确定要重置此设置吗?",
"integrations.title": "集成",
"integrations.connect": "连接",
"integrations.disconnect": "断开",
"integrations.connected": "已连接",
"integrations.not_connected": "未连接",
"integrations.configure": "配置",
"pipelines.title": "处理流程",
"pipelines.create": "创建流程",
"pipelines.edit": "编辑流程",
"help.title": "帮助中心",
"help.getting_started": "入门指南",
"help.faq": "常见问题",
"help.documentation": "文档",
"help.support": "支持",
"error.not_found": "页面未找到",
"error.not_found_message": "您要查找的页面不存在。",
"error.server_error": "服务器内部错误",
"error.server_error_message": "出了点问题,请稍后再试。",
"error.unauthorized": "未授权",
"error.unauthorized_message": "您需要登录才能访问此页面。",
"error.forbidden": "禁止访问",
"error.forbidden_message": "您没有权限访问此页面。",
"notifications.title": "通知",
"notifications.mark_read": "标记为已读",
"notifications.mark_all_read": "全部标记为已读",
"notifications.no_notifications": "没有通知",
"notifications.unread_count": "{count} 条未读通知"
}