Compare commits

..
Author SHA1 Message Date
Crowdin Bot 1f4090f12a New Crowdin translations by GitHub Action 2026-10-09 01:01:00 +00:00
70 changed files with 1418 additions and 2900 deletions

No files matched your search

+1 -1
View File
@@ -8525,7 +8525,7 @@
<context context-type="sourcefile">src/app/components/common/suggestions-dropdown/suggestions-dropdown.component.html</context>
<context context-type="linenumber">54</context>
</context-group>
<target state="needs-translation">{VAR_PLURAL, plural, =1 {1 suggestion available below} other {<x id="INTERPOLATION"/> suggestions available below}}</target>
<target state="translated">{VAR_PLURAL, plural, =1 {1 Vorschlag unten verfügbar} other {<x id="INTERPOLATION"/> Vorschläge unten verfügbar}}</target>
</trans-unit>
<trans-unit id="4169875112244042673" datatype="html" approved="yes">
<source>Suggestion options</source>
+1 -1
View File
@@ -9219,7 +9219,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-barcodes/document-barcodes.component.html</context>
<context context-type="linenumber">40,41</context>
</context-group>
<target state="needs-translation">Copy content</target>
<target state="translated">Copia contenuto</target>
</trans-unit>
<trans-unit id="2266163016683537825" datatype="html">
<source>of <x id="INTERPOLATION" equiv-text="{{previewNumPages()}}"/></source>
+18 -18
View File
@@ -17,7 +17,7 @@
<context context-type="linenumber">386,393</context>
</context-group>
<note priority="1" from="description">Currently selected slide number read by screen reader</note>
<target state="needs-translation"> Slide <x id="INTERPOLATION" equiv-text="xt(source?: Ngb"/> of <x id="INTERPOLATION_1" equiv-text="this._cycleToSe"/> </target>
<target state="translated"> Slajd <x id="INTERPOLATION" equiv-text="xt(source?: Ngb"/> z <x id="INTERPOLATION_1" equiv-text="this._cycleToSe"/> </target>
</trans-unit>
<trans-unit id="ngb.carousel.previous" datatype="html">
<source>Previous</source>
@@ -507,7 +507,7 @@
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">225</context>
</context-group>
<target state="needs-translation">Tasks helps you track background work, what needs attention, and what recently completed.</target>
<target state="translated">Zadania pomagają śledzić pracę w tle, to, co wymaga uwagi i co zostało ostatnio ukończone.</target>
</trans-unit>
<trans-unit id="2755033621682206902" datatype="html">
<source>Check out the settings for various tweaks to the web app.</source>
@@ -571,7 +571,7 @@
<context context-type="sourcefile">src/app/components/admin/config/config.component.html</context>
<context context-type="linenumber">35</context>
</context-group>
<target state="needs-translation">This value overrides <x id="INTERPOLATION" equiv-text="{{option.config_key}}"/>, which is set outside Paperless.</target>
<target state="translated">Ta wartość zastępuje <x id="INTERPOLATION" equiv-text="{{option.config_key}}"/>, która jest ustawiona poza Paperless.</target>
</trans-unit>
<trans-unit id="7221396516204435584" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{option.config_key}}"/> is set outside Paperless. Enter a value here to override it.</source>
@@ -579,7 +579,7 @@
<context context-type="sourcefile">src/app/components/admin/config/config.component.html</context>
<context context-type="linenumber">37</context>
</context-group>
<target state="needs-translation"><x id="INTERPOLATION" equiv-text="{{option.config_key}}"/> is set outside Paperless. Enter a value here to override it.</target>
<target state="translated"><x id="INTERPOLATION" equiv-text="{{option.config_key}}"/> jest ustawiony poza Paperless. Wpisz tutaj wartość, aby go zastąpić.</target>
</trans-unit>
<trans-unit id="8318849619178340389" datatype="html">
<source>Use the externally configured value</source>
@@ -587,7 +587,7 @@
<context context-type="sourcefile">src/app/components/admin/config/config.component.html</context>
<context context-type="linenumber">42</context>
</context-group>
<target state="needs-translation">Use the externally configured value</target>
<target state="translated">Użyj wartości skonfigurowanej zewnętrznie</target>
</trans-unit>
<trans-unit id="6032629623003430385" datatype="html">
<source>Reset to external</source>
@@ -595,7 +595,7 @@
<context context-type="sourcefile">src/app/components/admin/config/config.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target state="needs-translation">Reset to external</target>
<target state="translated">Zresetuj na zewnętrzny</target>
</trans-unit>
<trans-unit id="7808756054397155068" datatype="html">
<source>Reset</source>
@@ -1411,7 +1411,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">264</context>
</context-group>
<target state="needs-translation">Both</target>
<target state="translated">Obydwa</target>
</trans-unit>
<trans-unit id="8967224283122923634" datatype="html">
<source>ML only</source>
@@ -1419,7 +1419,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">266</context>
</context-group>
<target state="needs-translation">ML only</target>
<target state="translated">Tylko ML</target>
</trans-unit>
<trans-unit id="6418969597665857901" datatype="html">
<source>AI only</source>
@@ -1427,7 +1427,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">268</context>
</context-group>
<target state="needs-translation">AI only</target>
<target state="translated">Tylko SI</target>
</trans-unit>
<trans-unit id="1043449647727456069" datatype="html">
<source>Automatically request suggestions for inbox documents</source>
@@ -2211,7 +2211,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.html</context>
<context context-type="linenumber">4,5</context>
</context-group>
<target state="needs-translation">Tasks shows detailed information about document consumption and system tasks.</target>
<target state="translated">Zadania zawierają szczegóły dotyczące przetwarzania dokumentów i zadań systemowych.</target>
</trans-unit>
<trans-unit id="103921551219467537" datatype="html">
<source>Clear selection</source>
@@ -2327,7 +2327,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.html</context>
<context context-type="linenumber">92,93</context>
</context-group>
<target state="needs-translation">Search tasks</target>
<target state="translated">Szukaj w zadaniach</target>
</trans-unit>
<trans-unit id="6849725902312323996" datatype="html" approved="yes">
<source>Reset filters</source>
@@ -2651,7 +2651,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.html</context>
<context context-type="linenumber">207</context>
</context-group>
<target state="needs-translation">View task details</target>
<target state="translated">Wyświetl szczegóły zadania</target>
</trans-unit>
<trans-unit id="1536087519743707362" datatype="html">
<source>Dismiss</source>
@@ -4555,7 +4555,7 @@
<context context-type="sourcefile">src/app/components/common/confirm-dialog/rotate-confirm-dialog/rotate-confirm-dialog.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<target state="needs-translation">Rotate counterclockwise</target>
<target state="translated">Obróć w lewo</target>
</trans-unit>
<trans-unit id="631338357809243389" datatype="html">
<source>Rotate clockwise</source>
@@ -4563,7 +4563,7 @@
<context context-type="sourcefile">src/app/components/common/confirm-dialog/rotate-confirm-dialog/rotate-confirm-dialog.component.html</context>
<context context-type="linenumber">19</context>
</context-group>
<target state="needs-translation">Rotate clockwise</target>
<target state="translated">Obróć w prawo</target>
</trans-unit>
<trans-unit id="8157388568390631653" datatype="html">
<source>Note that only PDFs will be rotated.</source>
@@ -7641,7 +7641,7 @@
<context context-type="sourcefile">src/app/components/common/pdf-editor/pdf-editor.component.html</context>
<context context-type="linenumber">17</context>
</context-group>
<target state="translated">Obróć wybrane strony przeciwnie do ruchu wskazówek zegara</target>
<target state="translated">Obróć zaznaczone strony w lewo</target>
</trans-unit>
<trans-unit id="4787219034890830544" datatype="html">
<source>Rotate selected pages clockwise</source>
@@ -7649,7 +7649,7 @@
<context context-type="sourcefile">src/app/components/common/pdf-editor/pdf-editor.component.html</context>
<context context-type="linenumber">20</context>
</context-group>
<target state="translated">Obróć wybrane strony zgodnie z ruchem wskazówek zegara</target>
<target state="translated">Obróć zaznaczone strony w prawo</target>
</trans-unit>
<trans-unit id="3441043765105475130" datatype="html">
<source>Delete selected pages</source>
@@ -7665,7 +7665,7 @@
<context context-type="sourcefile">src/app/components/common/pdf-editor/pdf-editor.component.html</context>
<context context-type="linenumber">33</context>
</context-group>
<target state="translated">Obróć stronę przeciwnie do ruchu wskazówek zegara</target>
<target state="translated">Obróć stronę w lewo</target>
</trans-unit>
<trans-unit id="3450236521040548507" datatype="html">
<source>Rotate page clockwise</source>
@@ -7673,7 +7673,7 @@
<context context-type="sourcefile">src/app/components/common/pdf-editor/pdf-editor.component.html</context>
<context context-type="linenumber">36</context>
</context-group>
<target state="translated">Obróć stronę zgodnie z ruchem wskazówek zegara</target>
<target state="translated">Obróć stronę w prawo</target>
</trans-unit>
<trans-unit id="7647925464077975347" datatype="html">
<source>Delete page</source>
+14 -14
View File
@@ -17,7 +17,7 @@
<context context-type="linenumber">386,393</context>
</context-group>
<note priority="1" from="description">Currently selected slide number read by screen reader</note>
<target state="needs-translation"> Slide <x id="INTERPOLATION" equiv-text="xt(source?: Ngb"/> of <x id="INTERPOLATION_1" equiv-text="this._cycleToSe"/> </target>
<target state="translated"> Слайд <x id="INTERPOLATION" equiv-text="xt(source?: Ngb"/> из <x id="INTERPOLATION_1" equiv-text="this._cycleToSe"/> </target>
</trans-unit>
<trans-unit id="ngb.carousel.previous" datatype="html">
<source>Previous</source>
@@ -1403,7 +1403,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">259,260</context>
</context-group>
<target state="needs-translation">Suggestions default to</target>
<target state="translated">Предложения по умолчанию для</target>
</trans-unit>
<trans-unit id="6251586038459969294" datatype="html">
<source>Both</source>
@@ -1411,7 +1411,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">264</context>
</context-group>
<target state="needs-translation">Both</target>
<target state="translated">Оба</target>
</trans-unit>
<trans-unit id="8967224283122923634" datatype="html">
<source>ML only</source>
@@ -1419,7 +1419,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">266</context>
</context-group>
<target state="needs-translation">ML only</target>
<target state="translated">Только ML</target>
</trans-unit>
<trans-unit id="6418969597665857901" datatype="html">
<source>AI only</source>
@@ -1427,7 +1427,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">268</context>
</context-group>
<target state="needs-translation">AI only</target>
<target state="translated">Только ИИ</target>
</trans-unit>
<trans-unit id="1043449647727456069" datatype="html">
<source>Automatically request suggestions for inbox documents</source>
@@ -8525,7 +8525,7 @@
<context context-type="sourcefile">src/app/components/common/suggestions-dropdown/suggestions-dropdown.component.html</context>
<context context-type="linenumber">54</context>
</context-group>
<target state="needs-translation">{VAR_PLURAL, plural, =1 {1 suggestion available below} other {<x id="INTERPOLATION"/> suggestions available below}}</target>
<target state="translated">{VAR_PLURAL, plural, =1 {1 совет} other {<x id="INTERPOLATION"/> советов}}</target>
</trans-unit>
<trans-unit id="4169875112244042673" datatype="html">
<source>Suggestion options</source>
@@ -8533,7 +8533,7 @@
<context context-type="sourcefile">src/app/components/common/suggestions-dropdown/suggestions-dropdown.component.html</context>
<context context-type="linenumber">65,66</context>
</context-group>
<target state="needs-translation">Suggestion options</target>
<target state="translated">Настройки советов</target>
</trans-unit>
<trans-unit id="3145824396228856507" datatype="html">
<source>Not using default</source>
@@ -8541,7 +8541,7 @@
<context context-type="sourcefile">src/app/components/common/suggestions-dropdown/suggestions-dropdown.component.html</context>
<context context-type="linenumber">69,70</context>
</context-group>
<target state="needs-translation">Not using default</target>
<target state="translated">Не использует по умолчанию</target>
</trans-unit>
<trans-unit id="8102623853570619759" datatype="html">
<source>Suggest using:</source>
@@ -8549,7 +8549,7 @@
<context context-type="sourcefile">src/app/components/common/suggestions-dropdown/suggestions-dropdown.component.html</context>
<context context-type="linenumber">74,75</context>
</context-group>
<target state="needs-translation">Suggest using:</target>
<target state="translated">Предложить используя:</target>
</trans-unit>
<trans-unit id="5799391967036896978" datatype="html">
<source>ML</source>
@@ -8557,7 +8557,7 @@
<context context-type="sourcefile">src/app/components/common/suggestions-dropdown/suggestions-dropdown.component.html</context>
<context context-type="linenumber">77</context>
</context-group>
<target state="needs-translation">ML</target>
<target state="translated">ML</target>
</trans-unit>
<trans-unit id="3484984238852181071" datatype="html">
<source>AI</source>
@@ -8565,7 +8565,7 @@
<context context-type="sourcefile">src/app/components/common/suggestions-dropdown/suggestions-dropdown.component.html</context>
<context context-type="linenumber">81</context>
</context-group>
<target state="needs-translation">AI</target>
<target state="translated">ИИ</target>
</trans-unit>
<trans-unit id="9180110319941008393" datatype="html">
<source>Environment</source>
@@ -9219,7 +9219,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-barcodes/document-barcodes.component.html</context>
<context context-type="linenumber">40,41</context>
</context-group>
<target state="needs-translation">Copy content</target>
<target state="translated">Скопировать содержимое</target>
</trans-unit>
<trans-unit id="2266163016683537825" datatype="html">
<source>of <x id="INTERPOLATION" equiv-text="{{previewNumPages()}}"/></source>
@@ -9479,7 +9479,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
<context context-type="linenumber">360,361</context>
</context-group>
<target state="needs-translation">Barcodes</target>
<target state="translated">Штрихкоды</target>
</trans-unit>
<trans-unit id="6992781481378431874" datatype="html" approved="yes">
<source>Original document metadata</source>
@@ -13375,7 +13375,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">335</context>
</context-group>
<target state="needs-translation">Store Barcode Contents</target>
<target state="translated">Сохранить содержимое штрихкодов</target>
</trans-unit>
<trans-unit id="7011909364081812031" datatype="html">
<source>AI Enabled</source>
File diff suppressed because it is too large. Load diff
@@ -67,22 +67,18 @@ class Command(PaperlessCommand):
if options.get("recreate"):
wipe_index(settings.INDEX_DIR)
documents = (
Document.objects.filter(root_document__isnull=True)
.select_related(
"correspondent",
"document_type",
"storage_path",
"owner",
)
.prefetch_related(
"tags",
"notes__user",
"custom_fields__field",
"versions",
"barcodes",
"versions__barcodes",
)
documents = Document.objects.select_related(
"correspondent",
"document_type",
"storage_path",
"owner",
).prefetch_related(
"tags",
"notes__user",
"custom_fields__field",
"versions",
"barcodes",
"versions__barcodes",
)
total = documents.count()
rebuild_kwargs = {}
+34 -64
View File
@@ -6,13 +6,9 @@ from django.contrib.auth.models import Permission
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
from django.db.models import Case
from django.db.models import CharField
from django.db.models import Count
from django.db.models import Exists
from django.db.models import F
from django.db.models import IntegerField
from django.db.models import Model
from django.db.models import OuterRef
from django.db.models import Q
from django.db.models import QuerySet
from django.db.models import Value
@@ -30,7 +26,6 @@ from rest_framework.permissions import BasePermission
from rest_framework.permissions import DjangoObjectPermissions
from documents.models import Document
from documents.versioning import get_root_document
class PaperlessObjectPermissions(DjangoObjectPermissions):
@@ -354,7 +349,6 @@ def permitted_object_ids(
perm: str,
*,
include_deleted: bool = False,
parent_field: str | None = None,
) -> QuerySet[int]:
"""
Generic version of ``permitted_document_ids`` for any model with an
@@ -363,20 +357,6 @@ def permitted_object_ids(
soft-delete pattern (currently only ``Document``); for every other model
it is accepted but has no effect, since those models have no soft-delete
concept.
``parent_field`` names a self-referencing foreign key whose target
authorizes the row (``Document.root_document``). A row with a parent is
visible exactly when its parent is, judged by the parent's owner and
grants, so the row's own owner and grants are ignored.
Guardian stores ``object_pk`` as a string, so each grant is an ``EXISTS``
keyed on the row's id cast to a string, which can use guardian's
(user, permission, object_pk) unique index. Casting every ``object_pk`` to
an integer for an ``id IN (...)`` is not indexable, and MariaDB cannot
materialize it inside the owner ``OR``, so it re-scans the user's grants
for every row. The user's groups are matched with an ``IN`` subquery
rather than a join through the membership table, which SQLite plans badly
once the grant tables grow.
"""
has_soft_delete = hasattr(model, "global_objects")
manager = (
@@ -384,21 +364,8 @@ def permitted_object_ids(
)
base_qs = manager.all().only("id", "owner")
owner_field, key_field = "owner", "pk"
if parent_field is not None:
owner_field, key_field = "authorizing_owner", "authorizing_id"
base_qs = base_qs.annotate(
authorizing_id=Coalesce(f"{parent_field}_id", "id"),
authorizing_owner=Case(
When(**{f"{parent_field}_id__isnull": True}, then=F("owner_id")),
default=F(f"{parent_field}__owner_id"),
output_field=IntegerField(),
),
)
unowned = Q(**{f"{owner_field}__isnull": True})
if user is None or not getattr(user, "is_authenticated", False):
return base_qs.filter(unowned).values_list("id", flat=True)
return base_qs.filter(owner__isnull=True).values_list("id", flat=True)
# Deactivated users get nothing, deactivated superusers included, so this
# has to come before the superuser shortcut. guardian's
@@ -422,24 +389,20 @@ def permitted_object_ids(
"permission__content_type": content_type,
}
key_as_text = Cast(OuterRef(key_field), CharField(max_length=64))
granted_to_user = Exists(
UserObjectPermission.objects.filter(
user=user,
object_pk=key_as_text,
**perm_filter,
),
user_perm_ids = (
UserObjectPermission.objects.filter(user=user, **perm_filter)
.annotate(object_pk_int=Cast("object_pk", IntegerField()))
.values_list("object_pk_int", flat=True)
)
granted_to_group = Exists(
GroupObjectPermission.objects.filter(
group_id__in=user.groups.values("id"),
object_pk=key_as_text,
**perm_filter,
),
group_perm_ids = (
GroupObjectPermission.objects.filter(group__user=user, **perm_filter)
.annotate(object_pk_int=Cast("object_pk", IntegerField()))
.values_list("object_pk_int", flat=True)
)
permitted_ids = user_perm_ids.union(group_perm_ids)
return base_qs.filter(
Q(**{owner_field: user.pk}) | unowned | granted_to_user | granted_to_group,
Q(owner=user) | Q(owner__isnull=True) | Q(id__in=permitted_ids),
).values_list("id", flat=True)
@@ -508,16 +471,30 @@ def permitted_document_ids(
``include_deleted=True`` for callers that need to check permission on
soft-deleted documents (e.g. trash restore). This intentionally avoids
``get_objects_for_user`` to keep the subquery small and index-friendly.
A version is authorized by its root document, so a version's own owner and
grants never matter.
"""
return permitted_object_ids(
user,
Document,
perm,
include_deleted=include_deleted,
parent_field="root_document",
return permitted_object_ids(user, Document, perm, include_deleted=include_deleted)
def documents_without_permitted_root(
documents: QuerySet[Document],
user: User | None,
*,
perm: str = "view_document",
include_deleted: bool = False,
) -> QuerySet[Document]:
"""
The documents the user lacks ``perm`` on. Versions are authorized by their
root document, so a version's own owner is ignored. A single query, without
loading the documents or joining the root.
"""
return documents.annotate(
root_id=Coalesce("root_document_id", "id"),
).exclude(
root_id__in=permitted_document_ids(
user,
perm=perm,
include_deleted=include_deleted,
),
)
@@ -677,14 +654,7 @@ def has_perms_owner_aware(user, perms, obj):
single-object check still has many production callers. Several callers
remain across ``documents/``, ``paperless_mail/``, and ``paperless_ai/``
-- grep for this function name before removing it.
A document version is authorized by its root document, like in
``permitted_document_ids``, so a version's own owner and grants never
matter. Fetch the root with ``select_related("root_document__owner")`` to
avoid extra queries.
"""
if isinstance(obj, Document):
obj = get_root_document(obj)
checker = ObjectPermissionChecker(user)
return obj.owner is None or obj.owner == user or checker.has_perm(perms, obj)
+2 -9
View File
@@ -284,14 +284,9 @@ class WriteBatch:
and adding the new version. This ensures stale document data (e.g., after
permission changes) doesn't persist in the index.
Only root documents are indexed, with their effective content, so a
version is indexed as its root document.
Args:
document: Django Document instance to index
"""
if document.root_document_id is not None:
document = document.root_document
self.remove(document.pk)
doc = self._backend._build_tantivy_doc(document)
self._writer.add_document(doc)
@@ -316,22 +311,20 @@ class WriteBatch:
An id with no matching document (e.g. deleted between the caller
collecting ids and the batch running) is silently skipped, matching
``add_or_update()``'s existing single-document deferred-task behavior
rather than erroring or leaving a stale index entry. The id of a
version stands for its root document.
rather than erroring or leaving a stale index entry.
Args:
ids: Primary keys of Document instances to index
"""
from documents.models import Document
from documents.versioning import annotate_effective_content
from documents.versioning import root_document_ids
ids = list(ids)
if not ids:
return
queryset = annotate_effective_content(
Document.objects.filter(pk__in=root_document_ids(ids))
Document.objects.filter(pk__in=ids)
.select_related("correspondent", "document_type", "storage_path", "owner")
.prefetch_related(
"tags",
+2 -1
View File
@@ -90,6 +90,7 @@ from documents.templating.utils import convert_format_str_to_template_format
from documents.templating.workflows import validate_workflow_template
from documents.validators import uri_validator
from documents.validators import url_validator
from documents.versioning import get_root_document
from documents.versioning import has_prefetched_effective_content
from documents.versioning import sort_versions_newest_first
@@ -2894,7 +2895,7 @@ class ShareLinkSerializer(OwnedObjectSerializer):
and has_perms_owner_aware(
self.user,
"view_document",
document,
get_root_document(document),
)
):
return document
+8 -5
View File
@@ -490,20 +490,23 @@ def update_document_content_maybe_archive_file(
shutil.move(thumbnail, document.thumbnail_path)
document.refresh_from_db()
root_document = (
document.root_document if document.root_document_id else document
)
logger.info(
f"Updating index for document {document_id} ({document.archive_checksum})",
f"Updating index for document {root_document.pk} ({document.archive_checksum})",
)
from documents.search import get_backend
get_backend().add_or_update(document)
get_backend().add_or_update(root_document)
ai_config = AIConfig()
if ai_config.llm_index_enabled:
llm_index_add_or_update_document(document)
llm_index_add_or_update_document(root_document)
clear_document_caches(document.pk)
if document.root_document_id is not None:
clear_document_caches(document.root_document_id)
if root_document.pk != document.pk:
clear_document_caches(root_document.pk)
except Exception:
logger.exception(
@@ -293,80 +293,6 @@ class TestAddOrUpdateIds:
assert backend.search_ids("updated", user=None) == [doc.pk]
class TestVersionsAreIndexedAsTheirRoot:
"""Only root documents are indexed, with their effective content, so
every write path that is handed a version indexes its root instead."""
@staticmethod
def _root_with_version() -> tuple[Document, Document]:
root = DocumentFactory(title="Statement", content="stale text")
version = DocumentFactory(
title="Statement",
content="latest text",
root_document=root,
version_index=1,
)
return root, version
def test_add_or_update_indexes_the_root_of_a_version(
self,
backend: TantivyBackend,
) -> None:
"""
GIVEN:
- A root document with a version
WHEN:
- The version is passed to add_or_update
THEN:
- The root is indexed with the version's text, and the version is not
"""
root, version = self._root_with_version()
backend.add_or_update(version)
assert backend.search_ids("latest", user=None) == [root.pk]
assert backend.search_ids("stale", user=None) == []
def test_add_or_update_ids_indexes_each_root_once(
self,
backend: TantivyBackend,
) -> None:
"""
GIVEN:
- A root document with a version
WHEN:
- Both ids are passed to add_or_update_ids
THEN:
- The root is indexed once and the version is not indexed
"""
root, version = self._root_with_version()
with backend.batch_update() as batch:
batch.add_or_update_ids([version.pk, root.pk])
assert backend.search_ids("Statement", user=None) == [root.pk]
assert backend.search_ids("latest", user=None) == [root.pk]
def test_add_or_update_ids_resolves_a_lone_version(
self,
backend: TantivyBackend,
) -> None:
"""
GIVEN:
- A root document with a version
WHEN:
- Only the version's id is passed to add_or_update_ids
THEN:
- The root is indexed
"""
root, version = self._root_with_version()
with backend.batch_update() as batch:
batch.add_or_update_ids([version.pk])
assert backend.search_ids("latest", user=None) == [root.pk]
class TestSearch:
"""Test search query parsing and matching via search_ids."""
-53
View File
@@ -1196,59 +1196,6 @@ class TestDocumentSearchApi(DirectoriesMixin, APITestCase):
self.assertIn(d3.id, result_ids)
self.assertNotIn(d4.id, result_ids)
def test_search_more_like_version_uses_its_root(self) -> None:
"""
GIVEN:
- A document similar in content to a root document, and one that is not
- A version of the root document, which is never indexed
WHEN:
- API request for more like the version
THEN:
- The documents similar to the root are returned, not the version
"""
indexed = {}
for name, title, content, day in (
("root", "bank statement 1", "things i paid for in august", (2019, 3, 4)),
(
"similar",
"bank statement 3",
"things i paid for in september",
(2020, 7, 9),
),
(
"other",
"Quarterly Report",
"quarterly revenue profit margin",
(2021, 11, 30),
),
):
with time_machine.travel(
timezone.make_aware(datetime.datetime(*day)),
tick=False,
):
indexed[name] = DocumentFactory(
title=title,
content=content,
created=datetime.date(*day),
added=timezone.make_aware(datetime.datetime(*day)),
)
version = DocumentFactory(
root_document=indexed["root"],
version_index=1,
content="things i paid for in august",
)
backend = get_backend()
for document in indexed.values():
backend.add_or_update(document)
response = self.client.get(f"/api/documents/?more_like_id={version.id}")
self.assertEqual(response.status_code, status.HTTP_200_OK)
result_ids = [r["id"] for r in response.data["results"]]
self.assertIn(indexed["similar"].id, result_ids)
self.assertNotIn(indexed["other"].id, result_ids)
self.assertNotIn(version.id, result_ids)
def test_more_like_requires_id_of_existing_document(self) -> None:
"""
GIVEN:
-22
View File
@@ -22,7 +22,6 @@ from documents.models import Document
from documents.tasks import update_document_content_maybe_archive_file
from paperless_testing.assertions import FileSystemAssertsMixin
from paperless_testing.dirs import DirectoriesMixin
from paperless_testing.factories import DocumentFactory
sample_file: Path = Path(__file__).parent / "samples" / "simple.pdf"
@@ -117,27 +116,6 @@ class TestMakeIndex:
call_command("document_index", "reindex", skip_checks=True)
mock_get_backend.return_value.rebuild.assert_called_once()
def test_reindex_skips_versions(self, mocker: MockerFixture) -> None:
"""
GIVEN:
- A root document with a version
WHEN:
- The reindex command runs
THEN:
- Only the root document is handed to the rebuild, since a version
is indexed as its root
"""
root = DocumentFactory()
DocumentFactory(root_document=root, version_index=1)
mock_get_backend = mocker.patch(
"documents.management.commands.document_index.get_backend",
)
call_command("document_index", "reindex", skip_checks=True)
documents = mock_get_backend.return_value.rebuild.call_args.args[0]
assert list(documents.values_list("pk", flat=True)) == [root.pk]
def test_optimize(self) -> None:
"""Optimize command must execute without error (Tantivy handles optimization automatically)."""
call_command("document_index", "optimize", skip_checks=True)
@@ -18,7 +18,6 @@ from documents.models import Correspondent
from documents.models import DocumentType
from documents.models import StoragePath
from documents.models import Tag
from documents.permissions import has_perms_owner_aware
from documents.permissions import permitted_document_ids
from documents.permissions import permitted_object_ids
from documents.permissions import restrict_queryset_to_visible
@@ -33,8 +32,6 @@ from paperless_testing.permissions import grant_global
from paperless_testing.permissions import grant_object
if TYPE_CHECKING:
from django.contrib.auth.models import User
from paperless_testing.dirs import PaperlessDirs
@@ -181,382 +178,6 @@ class TestPermittedDocumentIdsIncludeDeleted:
)
@pytest.mark.django_db
class TestPermittedDocumentIdsVersions:
"""
A version is authorized by its root document: the version's own owner and
grants never matter.
"""
@pytest.mark.parametrize(
("root_owner", "version_owner", "expected_visible"),
[
pytest.param(
"other",
"nobody",
False,
id="unowned-version-of-private-root",
),
pytest.param("other", "user", False, id="own-version-of-private-root"),
pytest.param("user", "other", True, id="foreign-version-of-own-root"),
pytest.param("user", "nobody", True, id="unowned-version-of-own-root"),
pytest.param("nobody", "other", True, id="private-version-of-unowned-root"),
],
)
def test_version_follows_root_owner(
self,
root_owner: str,
version_owner: str,
*,
expected_visible: bool,
) -> None:
"""
GIVEN:
- A root document and a version with differing owners
WHEN:
- The permitted document ids are resolved for the user
THEN:
- The version is visible exactly when its root is
"""
user = UserFactory()
owners = {"user": user, "other": UserFactory(), "nobody": None}
root = DocumentFactory(owner=owners[root_owner])
version = DocumentFactory(root_document=root, owner=owners[version_owner])
visible = set(permitted_document_ids(user))
assert (version.pk in visible) is expected_visible
assert (root.pk in visible) is expected_visible
@staticmethod
def grantee(user: User, kind: str) -> User | Group:
"""The user itself, or a new group the user belongs to."""
if kind == "user":
return user
group = Group.objects.create(name="shared")
user.groups.add(group)
return group
@pytest.mark.parametrize(
"grantee_kind",
[pytest.param("user", id="user"), pytest.param("group", id="group")],
)
def test_grant_on_root_applies_to_version(self, grantee_kind: str) -> None:
"""
GIVEN:
- A private root document shared with a user or one of their groups
- A version of it owned by someone else
WHEN:
- The permitted document ids are resolved for the user
THEN:
- Both the root and the version are visible
- A user without the grant sees neither
"""
user = UserFactory()
stranger = UserFactory()
root = DocumentFactory(owner=UserFactory())
version = DocumentFactory(root_document=root, owner=UserFactory())
grant_object(self.grantee(user, grantee_kind), root, "view_document")
assert_visible_document_ids(
permitted_document_ids(user),
expected_visible=[root.pk, version.pk],
expected_hidden=[],
)
assert_visible_document_ids(
permitted_document_ids(stranger),
expected_visible=[],
expected_hidden=[root.pk, version.pk],
)
@pytest.mark.parametrize(
"grantee_kind",
[pytest.param("user", id="user"), pytest.param("group", id="group")],
)
def test_grant_on_version_is_ignored(self, grantee_kind: str) -> None:
"""
GIVEN:
- A private root document
- A version with an explicit grant for the user or one of their groups
WHEN:
- The permitted document ids are resolved for the user
THEN:
- Neither the root nor the version is visible
"""
user = UserFactory()
root = DocumentFactory(owner=UserFactory())
version = DocumentFactory(root_document=root, owner=UserFactory())
grant_object(self.grantee(user, grantee_kind), version, "view_document")
assert_visible_document_ids(
permitted_document_ids(user),
expected_visible=[],
expected_hidden=[root.pk, version.pk],
)
def test_grant_on_one_root_does_not_reach_another_roots_version(self) -> None:
"""
GIVEN:
- Two private roots, each with a version
- The user may view only the first root
WHEN:
- The permitted document ids are resolved for the user
THEN:
- Only the first root and its version are visible
"""
user = UserFactory()
first = DocumentFactory(owner=UserFactory())
first_version = DocumentFactory(root_document=first, owner=UserFactory())
second = DocumentFactory(owner=UserFactory())
second_version = DocumentFactory(root_document=second, owner=user)
grant_object(user, first, "view_document")
assert_visible_document_ids(
permitted_document_ids(user),
expected_visible=[first.pk, first_version.pk],
expected_hidden=[second.pk, second_version.pk],
)
def test_user_in_several_groups(self) -> None:
"""
GIVEN:
- A user in two groups
- Two private roots shared with one group each, and a third shared with nobody
- A version of each root
WHEN:
- The permitted document ids are resolved for the user
THEN:
- The two shared roots and their versions are visible
- The third root and its version are not
"""
user = UserFactory()
groups = [Group.objects.create(name=f"group{i}") for i in range(2)]
user.groups.add(*groups)
shared = [DocumentFactory(owner=UserFactory()) for _ in groups]
for root, group in zip(shared, groups, strict=True):
grant_object(group, root, "view_document")
unshared = DocumentFactory(owner=UserFactory())
shared_versions = [
DocumentFactory(root_document=root, owner=UserFactory()) for root in shared
]
unshared_version = DocumentFactory(root_document=unshared, owner=None)
assert_visible_document_ids(
permitted_document_ids(user),
expected_visible=[
*(root.pk for root in shared),
*(version.pk for version in shared_versions),
],
expected_hidden=[unshared.pk, unshared_version.pk],
)
def test_permission_is_resolved_through_the_root(self) -> None:
"""
GIVEN:
- A private root document where the user may view and change
WHEN:
- The permitted ids are resolved for view, change and delete
THEN:
- The version is visible for view and change only
"""
user = UserFactory()
root = DocumentFactory(owner=UserFactory())
version = DocumentFactory(root_document=root, owner=UserFactory())
grant_object(user, root, "view_document", "change_document")
assert version.pk in set(permitted_document_ids(user))
assert version.pk in set(permitted_document_ids(user, perm="change_document"))
assert version.pk in set(
permitted_document_ids(user, perm="documents.change_document"),
)
assert version.pk not in set(
permitted_document_ids(user, perm="delete_document"),
)
def test_anonymous_sees_versions_of_unowned_roots_only(self) -> None:
"""
GIVEN:
- A version owned by nobody under a private root
- A version owned by someone under an unowned root
WHEN:
- The permitted document ids are resolved for an anonymous user
THEN:
- Only the version of the unowned root is visible
"""
private_root = DocumentFactory(owner=UserFactory())
private_version = DocumentFactory(root_document=private_root, owner=None)
open_root = DocumentFactory(owner=None)
open_version = DocumentFactory(root_document=open_root, owner=UserFactory())
assert_visible_document_ids(
permitted_document_ids(AnonymousUser()),
expected_visible=[open_root.pk, open_version.pk],
expected_hidden=[private_root.pk, private_version.pk],
)
def test_deleted_versions_follow_their_deleted_root(self) -> None:
"""
GIVEN:
- A soft-deleted root document and its version, which deleting the
root soft-deletes too; the version is owned by someone else
WHEN:
- The permitted document ids are resolved with and without deleted
documents
THEN:
- Nothing is visible by default
- With deleted documents included, the version is visible to the
root's owner and not to the version's own owner
"""
owner = UserFactory()
version_owner = UserFactory()
root = DocumentFactory(owner=owner)
version = DocumentFactory(root_document=root, owner=version_owner)
root.delete()
assert not {root.pk, version.pk} & set(permitted_document_ids(owner))
assert_visible_document_ids(
permitted_document_ids(owner, include_deleted=True),
expected_visible=[root.pk, version.pk],
expected_hidden=[],
)
assert_visible_document_ids(
permitted_document_ids(version_owner, include_deleted=True),
expected_visible=[],
expected_hidden=[root.pk, version.pk],
)
@pytest.mark.parametrize(
"is_superuser",
[
pytest.param(False, id="regular-user"),
pytest.param(True, id="superuser"),
],
)
def test_inactive_user_sees_no_versions(self, *, is_superuser: bool) -> None:
"""
GIVEN:
- An inactive user, possibly a superuser, who owns a root and its version
WHEN:
- The permitted document ids are resolved for them
THEN:
- Nothing is visible
"""
user = UserFactory(is_active=False, is_superuser=is_superuser)
root = DocumentFactory(owner=user)
version = DocumentFactory(root_document=root, owner=user)
assert_visible_document_ids(
permitted_document_ids(user),
expected_visible=[],
expected_hidden=[root.pk, version.pk],
)
def test_superuser_sees_all_versions(self) -> None:
"""
GIVEN:
- A private root owned by someone else, with a version
WHEN:
- The permitted document ids are resolved for a superuser
THEN:
- Both the root and the version are visible
"""
superuser = UserFactory(superuser=True)
root = DocumentFactory(owner=UserFactory())
version = DocumentFactory(root_document=root, owner=UserFactory())
assert_visible_document_ids(
permitted_document_ids(superuser),
expected_visible=[root.pk, version.pk],
expected_hidden=[],
)
@pytest.mark.django_db
class TestHasPermsOwnerAwareVersions:
"""
The single-object check agrees with permitted_document_ids: a version is
authorized by its root document.
"""
@pytest.mark.parametrize(
("root_owner", "version_owner", "expected"),
[
pytest.param(
"other",
"nobody",
False,
id="unowned-version-of-private-root",
),
pytest.param("other", "user", False, id="own-version-of-private-root"),
pytest.param("user", "other", True, id="foreign-version-of-own-root"),
pytest.param("nobody", "other", True, id="private-version-of-unowned-root"),
],
)
def test_version_follows_root_owner(
self,
root_owner: str,
version_owner: str,
*,
expected: bool,
) -> None:
"""
GIVEN:
- A root document and a version with differing owners
WHEN:
- The single-object check runs for the version
THEN:
- The version is allowed exactly when its root is
"""
user = UserFactory()
owners = {"user": user, "other": UserFactory(), "nobody": None}
root = DocumentFactory(owner=owners[root_owner])
version = DocumentFactory(root_document=root, owner=owners[version_owner])
assert has_perms_owner_aware(user, "view_document", version) is expected
assert has_perms_owner_aware(user, "view_document", root) is expected
def test_grant_on_root_applies_and_grant_on_version_does_not(self) -> None:
"""
GIVEN:
- A private root with a version, and a second private root with a version
- The user may change only the first root, and was granted the second
root's version directly
WHEN:
- The single-object check runs for each version
THEN:
- Only the first root's version is allowed
"""
user = UserFactory()
shared_root = DocumentFactory(owner=UserFactory())
shared_version = DocumentFactory(root_document=shared_root, owner=UserFactory())
private_root = DocumentFactory(owner=UserFactory())
private_version = DocumentFactory(
root_document=private_root,
owner=UserFactory(),
)
grant_object(user, shared_root, "change_document")
grant_object(user, private_version, "change_document")
assert has_perms_owner_aware(user, "change_document", shared_version)
assert not has_perms_owner_aware(user, "change_document", private_version)
def test_other_models_use_their_own_owner(self) -> None:
"""
GIVEN:
- A tag owned by someone else, and one owned by the user
WHEN:
- The single-object check runs for each
THEN:
- Only the user's own tag is allowed without a grant
"""
user = UserFactory()
mine = TagFactory(owner=user)
theirs = TagFactory(owner=UserFactory())
assert has_perms_owner_aware(user, "view_tag", mine)
assert not has_perms_owner_aware(user, "view_tag", theirs)
@pytest.mark.django_db
class TestAiChatAllDocumentsPermissionBoundary:
"""
+9 -7
View File
@@ -310,7 +310,7 @@ class TestUpdateContent(DirectoriesMixin, TestCase):
@mock.patch("documents.tasks.clear_document_caches")
@mock.patch("documents.search.get_backend")
def test_update_content_version_clears_caches_for_root(
def test_update_content_version_indexes_root(
self,
mock_get_backend: mock.Mock,
mock_clear_caches: mock.Mock,
@@ -321,8 +321,8 @@ class TestUpdateContent(DirectoriesMixin, TestCase):
WHEN:
- Update content task is called for the version
THEN:
- The version's content is updated, not the root's
- The document is indexed
- The version's content is updated
- The root document is indexed rather than the version
- Caches are cleared for both
"""
root, version = self._create_root_with_version()
@@ -334,7 +334,8 @@ class TestUpdateContent(DirectoriesMixin, TestCase):
"my document",
)
self.assertEqual(Document.objects.get(pk=root.pk).content, "root content")
mock_get_backend.return_value.add_or_update.assert_called_once()
indexed = mock_get_backend.return_value.add_or_update.call_args.args[0]
self.assertEqual(indexed.pk, root.pk)
mock_clear_caches.assert_has_calls(
[mock.call(version.pk), mock.call(root.pk)],
)
@@ -342,7 +343,7 @@ class TestUpdateContent(DirectoriesMixin, TestCase):
@override_settings(AI_ENABLED=True, LLM_EMBEDDING_BACKEND="huggingface")
@mock.patch("documents.tasks.llm_index_add_or_update_document")
@mock.patch("documents.search.get_backend")
def test_update_content_version_updates_llm_index(
def test_update_content_version_updates_llm_index_for_root(
self,
mock_get_backend: mock.Mock,
mock_llm_index: mock.Mock,
@@ -354,13 +355,14 @@ class TestUpdateContent(DirectoriesMixin, TestCase):
WHEN:
- Update content task is called for the version
THEN:
- The LLM index is updated
- The LLM index is updated for the root document, not the version
"""
_, version = self._create_root_with_version()
root, version = self._create_root_with_version()
tasks.update_document_content_maybe_archive_file(version.pk)
mock_llm_index.assert_called_once()
self.assertEqual(mock_llm_index.call_args.args[0].pk, root.pk)
class TestUpdateContentRemoteOCR(DirectoriesMixin, TestCase):
-17
View File
@@ -17,26 +17,9 @@ from django.db.models.functions import RowNumber
from documents.models import Document
if TYPE_CHECKING:
from collections.abc import Iterable
from rest_framework.request import Request
def root_document_ids(ids: Iterable[int]) -> QuerySet[int]:
"""
The ids of the root documents of the given documents: a root stands for
itself and a version for its root. Only the indexes' bookkeeping needs
this, since they hold root documents only.
"""
return (
Document.objects.filter(pk__in=ids)
.annotate(root_id=Coalesce("root_document_id", "id"))
.order_by()
.values_list("root_id", flat=True)
.distinct()
)
def versions_newest_first(documents: QuerySet[Document]) -> QuerySet[Document]:
"""
Sorts versions so the newest one comes first using version_index and not on id,
+37 -30
View File
@@ -174,6 +174,7 @@ from documents.permissions import TrashPermissions
from documents.permissions import ViewDocumentsPermissions
from documents.permissions import annotate_document_count_by_ids
from documents.permissions import annotate_document_count_for_related_queryset
from documents.permissions import documents_without_permitted_root
from documents.permissions import get_document_count_filter_for_user
from documents.permissions import get_objects_for_user_owner_aware
from documents.permissions import has_global_statistics_permission
@@ -329,10 +330,9 @@ def _get_tantivy_query_and_mode(params):
def _get_more_like_id(query_params: dict[str, Any], user: User | None) -> int:
try:
more_like_doc_id = int(query_params["more_like_id"])
more_like_doc = Document.objects.select_related(
"owner",
"root_document__owner",
).get(pk=more_like_doc_id)
more_like_doc = Document.objects.select_related("owner").get(
pk=more_like_doc_id,
)
except (TypeError, ValueError, Document.DoesNotExist):
raise PermissionDenied(_("Invalid more_like_id"))
@@ -343,8 +343,7 @@ def _get_more_like_id(query_params: dict[str, Any], user: User | None) -> int:
):
raise PermissionDenied(_("Insufficient permissions."))
# Only root documents are indexed, a version stands for its root
return more_like_doc.root_document_id or more_like_doc.pk
return more_like_doc_id
class SearchParams(NamedTuple):
@@ -1561,7 +1560,7 @@ class DocumentViewSet(
if request.user is not None and not has_perms_owner_aware(
request.user,
"change_document",
doc,
get_root_document(doc),
):
return HttpResponseForbidden("Insufficient permissions")
@@ -1624,7 +1623,7 @@ class DocumentViewSet(
if request.user is not None and not has_perms_owner_aware(
request.user,
"change_document",
doc,
get_root_document(doc),
):
return HttpResponseForbidden("Insufficient permissions")
@@ -1877,7 +1876,7 @@ class DocumentViewSet(
if currentUser is not None and not has_perms_owner_aware(
currentUser,
"view_document",
doc,
get_root_document(doc),
):
return HttpResponseForbidden("Insufficient permissions to view notes")
except Document.DoesNotExist:
@@ -1899,7 +1898,7 @@ class DocumentViewSet(
if currentUser is not None and not has_perms_owner_aware(
currentUser,
"change_document",
doc,
get_root_document(doc),
):
return HttpResponseForbidden(
"Insufficient permissions to create notes",
@@ -1942,7 +1941,7 @@ class DocumentViewSet(
if currentUser is not None and not has_perms_owner_aware(
currentUser,
"change_document",
doc,
get_root_document(doc),
):
return HttpResponseForbidden("Insufficient permissions to delete notes")
@@ -1992,7 +1991,7 @@ class DocumentViewSet(
if currentUser is not None and not has_perms_owner_aware(
currentUser,
"change_document",
doc,
get_root_document(doc),
):
return HttpResponseForbidden(
"Insufficient permissions to add share link",
@@ -2118,7 +2117,7 @@ class DocumentViewSet(
documents = Document.objects.filter(pk__in=document_ids)
if (
request.user is not None
and documents.exclude(id__in=permitted_document_ids(request.user)).exists()
and documents_without_permitted_root(documents, request.user).exists()
):
return HttpResponseForbidden("Insufficient permissions")
@@ -2453,7 +2452,7 @@ class ChatStreamingView(GenericAPIView[Any]):
if not has_perms_owner_aware(
request.user,
"view_document",
document,
get_root_document(document),
):
return HttpResponseForbidden("Insufficient permissions")
@@ -3010,8 +3009,12 @@ class DocumentOperationPermissionMixin(PassUserMixin, DocumentSelectionMixin):
user.has_perm(
"documents.change_document",
)
and not Document.global_objects.filter(pk__in=documents)
.exclude(pk__in=permitted_document_ids(user, perm="change_document"))
and not Document.global_objects.filter(
pk__in=[doc.pk for doc in root_docs],
)
.exclude(
pk__in=permitted_document_ids(user, perm="change_document"),
)
.exists()
)
@@ -3624,7 +3627,7 @@ class SelectionDataView(DocumentSelectionMixin, GenericAPIView[Any]):
documents = Document.objects.filter(pk__in=ids)
if (
documents.count() != len(ids)
or documents.exclude(id__in=permitted_document_ids(request.user)).exists()
or documents_without_permitted_root(documents, request.user).exists()
):
return HttpResponseForbidden("Insufficient permissions")
@@ -4121,16 +4124,21 @@ class BulkDownloadView(DocumentSelectionMixin, GenericAPIView[Any]):
validated_data=serializer.validated_data,
)
documents = Document.objects.filter(pk__in=ids)
versioned_documents = []
compression = serializer.validated_data.get("compression")
content = serializer.validated_data.get("content")
follow_filename_format = serializer.validated_data.get("follow_formatting")
if documents.exclude(id__in=permitted_document_ids(request.user)).exists():
return HttpResponseForbidden("Insufficient permissions")
versioned_documents = [
get_latest_version_for_root(get_root_document(document))
for document in documents
]
permitted_ids = set(permitted_document_ids(request.user))
for document in documents:
root_doc = get_root_document(document)
if root_doc.pk not in permitted_ids:
return HttpResponseForbidden("Insufficient permissions")
versioned_documents.append(
get_latest_version_for_root(
root_doc,
),
)
if content == "both":
strategy_class = OriginalAndArchiveStrategy
@@ -4803,7 +4811,7 @@ class ShareLinkBundleViewSet(PassUserMixin, ModelViewSet[ShareLinkBundle]):
)
denied_id = (
documents_qs.exclude(id__in=permitted_document_ids(request.user))
documents_without_permitted_root(documents_qs, request.user)
.order_by("pk")
.values_list("pk", flat=True)
.first()
@@ -5649,12 +5657,11 @@ class TrashView(ListModelMixin, PassUserMixin):
if doc_ids is not None
else self.filter_queryset(self.get_queryset()).all()
)
if docs.exclude(
id__in=permitted_document_ids(
request.user,
perm="delete_document",
include_deleted=True,
),
if documents_without_permitted_root(
docs,
request.user,
perm="delete_document",
include_deleted=True,
).exists():
return HttpResponseForbidden("Insufficient permissions")
action = serializer.validated_data.get("action")
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Afrikaans\n"
"Language: af_ZA\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Ongeldige kleur."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Lêertipe %(type)s word nie ondersteun nie"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Ongeldige veranderlike bespeur."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1912,59 +1912,44 @@ msgstr ""
msgid "As a final step, please complete the following form:"
msgstr ""
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Amharic\n"
"Language: am_ET\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr ""
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1912,59 +1912,44 @@ msgstr ""
msgid "As a final step, please complete the following form:"
msgstr ""
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Arabic\n"
"Language: ar_SA\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "لون خاطئ."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "نوع الملف %(type)s غير مدعوم"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "اكتشاف متغير خاطئ."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1913,59 +1913,44 @@ msgstr "أنت على وشك استعمال حسابك في %(provider_name)s ل
msgid "As a final step, please complete the following form:"
msgstr "كخطوة أخيرة، يرجى ملء النموذج التالي:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Belarusian\n"
"Language: be_BY\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Няправільны колер."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Тып файла %(type)s не падтрымліваецца"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Выяўлена няправільная зменная."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1912,59 +1912,44 @@ msgstr ""
msgid "As a final step, please complete the following form:"
msgstr ""
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Bulgarian\n"
"Language: bg_BG\n"
@@ -1635,48 +1635,48 @@ msgstr "стартиране на работния процес"
msgid "workflow runs"
msgstr "стартиране на работните процеси"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Невалиден цвят."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Файловия тип %(type)s не се поддържа"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Засечена е невалидна променлива."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1913,59 +1913,44 @@ msgstr "На път сте да използвате профила си в %(pr
msgid "As a final step, please complete the following form:"
msgstr "Като последна стъпка, моля, попълнете следната форма:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Catalan\n"
"Language: ca_ES\n"
@@ -1635,48 +1635,48 @@ msgstr "data del flux"
msgid "workflow runs"
msgstr "flux corrents"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Permisos insuficients."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Color Invàlid."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tipus arxiu %(type)s no suportat"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "ID de camp personalizat ha de ser enter: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Camp personalitzat amb ID %(id)s no existeix"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Camps personalitzats han de ser una llista d'enters o un objecte que mapegi els identificadors amb els valors."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Alguns camps personalitzats no existeixen o s'han especificat dues vegades."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Variable detectada invàlida."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Duplicat d'identificadors de documents no permès."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Documents no trobats: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "Estàs a punt d'emprar el teu %(provider_name)s compte per a fer login."
msgid "As a final step, please complete the following form:"
msgstr "Com a pas final, completa el següent formulari:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "No es pot analitzar l'URI {value}, falta l'esquema"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "No es pot analitzar l'URI {value}, falta la ubicació de xarxa o la ruta"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "L'esquema d'URI '{parts.scheme}' no està permès. Esquemes permesos: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "No s'ha pogut analitzar l'URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "Invalid more_like_id"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Configuració AI invàlida."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Especifica només un dels següents valors: text, title_search, query o more_like_id."
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Permisos insuficients per compartir document %(id)s."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Paquet ja s'està processant."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "El paquet de link encarà s'està preparant. Prova de nou més tard."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "El paquet d'enllaç no està disponible."
+24 -40
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Language: cs_CZ\n"
@@ -1635,48 +1635,48 @@ msgstr "spuštění pracovního postupu"
msgid "workflow runs"
msgstr "spuštění pracovních postupů"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Nedostatečná oprávnění."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Neplatná barva."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Typ souboru %(type)s není podporován"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "Vlastní ID pole musí být celé číslo: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Vlastní pole s ID %(id)s neexistuje"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Vlastní pole musí být seznam celých čísel nebo ID pro mapování objektů na hodnoty."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Některá vlastní pole neexistují nebo byla zadána dvakrát."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Zjištěna neplatná proměnná."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1913,60 +1913,44 @@ msgstr "Chystáte se použít svůj účet %(provider_name)s k přihlášení."
msgid "As a final step, please complete the following form:"
msgstr "Jako poslední krok vyplňte následující formulář:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Nelze analyzovat URI {value}, chybí schéma"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Nelze analyzovat URI {value}, chybí síťové umístění nebo cesta"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "URI schéma '{parts.scheme}' není povoleno. Povolená schémata: {',\n"
"'.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Nelze zpracovat URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Nedostatečná oprávnění ke sdílení dokumentu %(id)s."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Danish\n"
"Language: da_DK\n"
@@ -1635,48 +1635,48 @@ msgstr "workflow-kørsel"
msgid "workflow runs"
msgstr "workflow-kørsler"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Ugyldig farve."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Filtype %(type)s understøttes ikke"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Ugyldig variabel fundet."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1913,59 +1913,44 @@ msgstr "En %(provider_name)s-konto er ved at blive brugt til indlogning."
msgid "As a final step, please complete the following form:"
msgstr "Som sidste trin, udfyld venligst flg. formular:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: German, Switzerland\n"
"Language: de_CH\n"
@@ -1635,48 +1635,48 @@ msgstr "Arbeitsablauf-Ausführung"
msgid "workflow runs"
msgstr "Arbeitsablauf wird ausgeführt"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Unzureichende Berechtigungen."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Ungültige Farbe."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Dateityp %(type)s nicht unterstützt"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "Feld-ID eines benutzerdefinierten Felds muss eine Ganzzahl sein: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Benutzerdefiniertes Feld mit ID %(id)s existiert nicht"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Benutzerdefinierte Felder müssen eine Liste von Ganzzahlen oder ein Objekt mit Zuordnung von IDs zu Werten sein."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Einige benutzerdefinierte Felder existieren nicht oder wurden zweimal angegeben."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Ungültige Variable erkannt."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Doppelte Dokumentbezeichner sind nicht erlaubt."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumente nicht gefunden: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "Sie sind dabei, Ihr %(provider_name)s-Konto zur Anmeldung zu verwenden."
msgid "As a final step, please complete the following form:"
msgstr "Bitte füllen Sie zum Abschluss folgendes Formular aus:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "URI {value} kann nicht gelesen werden, fehlendes Schema"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "URI {value} kann nicht gelesen werden, Netzadresse oder Pfad fehlt"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "URI-Schema „{parts.scheme}“ ist nicht erlaubt. Erlaubte Schemata: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "URI {value} kann nicht gelesen werden"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "Ungültige more_like_id"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Ungültige KI-Konfiguration."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Geben Sie nur einen von text, title_search, query, oder more_like_id an."
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Unzureichende Berechtigungen, um Dokument %(id)s zu teilen."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Paket wird bereits verarbeitet."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Das Freigabelink-Paket wird noch vorbereitet. Bitte versuchen Sie es später erneut."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "Das Freigabelink-Paket ist nicht verfügbar."
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-06 00:56\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -1635,48 +1635,48 @@ msgstr "Arbeitsablauf-Ausführung"
msgid "workflow runs"
msgstr "Arbeitsablauf wird ausgeführt"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Unzureichende Berechtigungen."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Ungültige Farbe."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Dateityp %(type)s nicht unterstützt"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "Zusatzfeld-ID muss eine Ganzzahl sein: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Zusatzfeld mit ID %(id)s existiert nicht"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Zusatzfelder müssen eine Liste von Ganzzahlen oder ein Objekt mit Zuordnung von IDs zu Werten sein."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Einige Zusatzfelder existieren nicht oder wurden zweimal angegeben."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Ungültige Variable erkannt."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Doppelte Dokumentbezeichner sind nicht erlaubt."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumente nicht gefunden: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "Sie sind dabei, Ihr %(provider_name)s-Konto zur Anmeldung zu verwenden."
msgid "As a final step, please complete the following form:"
msgstr "Bitte füllen Sie zum Abschluss folgendes Formular aus:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "URI {value} kann nicht gelesen werden, fehlendes Schema"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "URI {value} kann nicht gelesen werden, Netzadresse oder Pfad fehlt"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "URI-Schema „{parts.scheme}“ ist nicht erlaubt. Erlaubte Schemata: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "URI {value} kann nicht gelesen werden"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "Ungültige more_like_id"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Ungültige KI-Konfiguration."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr "Zeitüberschreitung bei der KI-Backendanfrage."
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr "Das KI-Backend hat die Anfrage abgelehnt. Details in den Protokollen."
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Geben Sie nur einen von text, title_search, query, oder more_like_id an."
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Unzureichende Berechtigungen, um Dokument %(id)s zu teilen."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Paket wird bereits verarbeitet."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Das Freigabelink-Paket wird noch vorbereitet. Bitte versuchen Sie es später erneut."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "Das Freigabelink-Paket ist nicht verfügbar."
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Language: el_GR\n"
@@ -1635,48 +1635,48 @@ msgstr "εκτέλεση ροής εργασίας"
msgid "workflow runs"
msgstr "εκτελέσεις ροής εργασίας"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Άκυρο χρώμα."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Ο τύπος αρχείου %(type)s δεν υποστηρίζεται"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Εντοπίστηκε μη έγκυρη μεταβλητή."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1913,59 +1913,44 @@ msgstr "Πρόκειται να χρησιμοποιήσετε το λογαρι
msgid "As a final step, please complete the following form:"
msgstr "Ως τελικό βήμα, παρακαλούμε να συμπληρώσετε την ακόλουθη φόρμα:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@@ -1635,48 +1635,48 @@ msgstr "ejecución del flujo de trabajo"
msgid "workflow runs"
msgstr "ejecuciones de flujo de trabajo"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Permisos insuficientes."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Color inválido."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tipo de fichero %(type)s no suportado"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "El id del campo personalizado debe ser un entero: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "El campo personalizado con identificador %(id)s no existe"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Los campos personalizados deben ser una lista de enteros o un identificador de mapeo de objetos a valores."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Algunos campos personalizados no existen o fueron especificados dos veces."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Variable inválida."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "No se permiten identificadores de documento duplicados."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Documentos no encontrados: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "Estás a punto de usar tu cuenta de %(provider_name)s para iniciar sesi
msgid "As a final step, please complete the following form:"
msgstr "Como último paso, por favor complete el siguiente formulario:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "No se puede analizar la URI {value}, falta el esquema"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "No se puede analizar la URI {value}, falta la ubicación de la red o la ruta"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "El esquema URI '{parts.scheme}' no está permitido. Esquemas permitidos: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "No se puede analizar la URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Configuración de IA inválida."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Especifique solo uno entre text, title_search, query, o more_like_id."
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Permisos insuficientes para compartir el documento %(id)s."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "El paquete ya está siendo procesado."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "El paquete de enlace compartido aún está siendo preparado. Por favor, inténtalo de nuevo más tarde."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "El paquete de enlace compartido no está disponible."
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Estonian\n"
"Language: et_EE\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr ""
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1912,59 +1912,44 @@ msgstr ""
msgid "As a final step, please complete the following form:"
msgstr ""
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Persian\n"
"Language: fa_IR\n"
@@ -1635,48 +1635,48 @@ msgstr "گردش کار"
msgid "workflow runs"
msgstr "گردش کار اجرا می شود"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "رنگ نامعتبر"
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "متغیر نامعتبر شناسایی شده است."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1912,59 +1912,44 @@ msgstr ""
msgid "As a final step, please complete the following form:"
msgstr "به عنوان مرحله آخر ، لطفاً فرم زیر را تکمیل کنید:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Finnish\n"
"Language: fi_FI\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Virheellinen väri."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tiedostotyyppiä %(type)s ei tueta"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Virheellinen muuttuja havaittu."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1913,59 +1913,44 @@ msgstr ""
msgid "As a final step, please complete the following form:"
msgstr ""
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -1635,48 +1635,48 @@ msgstr "exécution du workflow"
msgid "workflow runs"
msgstr "le flux de travail s'exécute"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Droits insuffisants."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Couleur incorrecte."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Type de fichier %(type)s non pris en charge"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "L'id du champ personnalisé doit être un entier : %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Le champ personnalisé avec l'id %(id)s n'existe pas"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Les champs personnalisés doivent être une liste d'entiers ou un mappage d'identifiants à des valeurs."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Certains champs personnalisés n'existent pas ou ont été spécifiés deux fois."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Variable invalide détectée."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Les identificateurs de document en double ne sont pas autorisés."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Documents introuvables : %(ids)s"
@@ -1912,59 +1912,44 @@ msgstr "Vous vous apprêtez à utiliser votre compte %(provider_name)s pour vous
msgid "As a final step, please complete the following form:"
msgstr "Pour finir, veuillez remplir le formulaire suivant :"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Impossible d'analyser l'URI {value}, schéma manquant"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Impossible d'analyser l'URI {value}, emplacement réseau ou chemin manquant"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "Le schéma d'URI « {parts.scheme} » n'est pas autorisé. Schémas autorisés : {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Impossible d'analyser l'URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "More_like_id invalide"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Configuration IA invalide."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr "La requête d'arrière-plan IA a expiré."
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Spécifiez seulement un texte, titre, recherche ou more_like_id."
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Droits d'accès insuffisant pour partager %(id)s document."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Le paquet est déjà en cours de traitement."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Le lot de liens de partage est en cours de préparation. Veuillez réessayer plus tard."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "Le lot de liens de partage n'est pas disponible."
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Language: he_IL\n"
@@ -1636,48 +1636,48 @@ msgstr "הרצת זרימת עבודה"
msgid "workflow runs"
msgstr "הרצות זרימת עבודה"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "הרשאות אינן מספיקות."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "צבע לא חוקי."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "סוג קובץ %(type)s לא נתמך"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "שדה מותאם אישית id חייב להיות מספרי: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "שדה מותאם אישית עם מזהה %(id)s איננו קיים"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "שדות מותאמים אישית חייבים להיות רשימה של מספרים שלמים או אובייקט הממפה מזהים לערכים."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "חלק מהשדות המותאמים אישית אינם קיימים או שהוגדרו פעמיים."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "משתנה לא חוקי זוהה."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "מזהי מסמכים כפולים אינם מורשים."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "מסמכים לא נמצאו: %(ids)s"
@@ -1914,59 +1914,44 @@ msgstr "שלך כדי להתחבר %(provider_name)s אתה עומד להשתמ
msgid "As a final step, please complete the following form:"
msgstr ": כצעד אחרון, אנא מלא את הטופס הבא:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "לא ניתן לפענח את ה-URI ‏{value}, חסר פרוטוקול (scheme)"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "לא ניתן לפענח את ה-URI ‏{value}, חסר מיקום רשת (net location) או נתיב"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "פרוטוקול ה-URI ‏'{parts.scheme}' אינו מורשה. הפרוטוקולים המורשים הם: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "לא ניתן לפענח את ה URI ‏{value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "מזהה more_like_id אינו תקין"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "הגדרות בינה מלאכותית שגויות."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "יש לציין רק אחד מהבאים: text‏, title_search‏, query או more_like_id."
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "הרשאות לא מספיקות לשיתוף מסמך %(id)s."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "החבילה (Bundle) כבר נמצאת בתהליך עיבוד."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "חבילת קישור השיתוף עדיין בהכנה. נא לנסות שוב מאוחר יותר."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "חבילת קישור השיתוף אינה זמינה."
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Hindi\n"
"Language: hi_IN\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr ""
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1912,59 +1912,44 @@ msgstr ""
msgid "As a final step, please complete the following form:"
msgstr ""
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Croatian\n"
"Language: hr_HR\n"
@@ -1635,48 +1635,48 @@ msgstr "pokretanje tijeka rada"
msgid "workflow runs"
msgstr "tijek rada pokrenut"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Nedovoljne ovlasti."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Nevažeća boja."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Vrsta datoteke %(type)s nije podržana"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "ID prilagođenog polja mora biti cijeli broj: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Prilagođeno polje s ID-om %(id)s ne postoji"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Prilagođena polja moraju biti popis cijelih brojeva ili ID-ova objekata koji preslikavaju vrijednosti."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Neka prilagođena polja ne postoje ili su navedena dvaput."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Otkrivena je nevaljana vrsta datoteke."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Duplicirani identifikatori dokumenata nisu dopušteni."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumenti nisu pronađeni: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "Upravo ćete koristiti svoj račun %(provider_name)s za prijavu."
msgid "As a final step, please complete the following form:"
msgstr "Kao posljednji korak ispunite sljedeći obrazac:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Nije moguće analizirati URI {value}, nedostaje shema"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Nije moguće analizirati URI {value}, nedostaje mrežna lokacija ili put"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "URI shema '{parts.scheme}' nije dopuštena. Dopuštene sheme: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Nije moguće raščlaniti URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "Nevažeći more_like_id"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Nevažeća AI konfiguracija."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr "Zahtjev prema AI pozadinskom sustavu je istekao."
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr "AI pozadinski sustav je odbio zahtjev. Provjerite zapise (logs) za više detalja."
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Navedite samo jedno od: text, title_search, query ili more_like_id."
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Nedovoljne ovlasti za dijeljenje dokumenta %(id)s."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Paket se već obrađuje."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Paket linka za dijeljenje se još priprema. Pokušajte ponovo kasnije."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "Paket linka za dijeljenje nije dostupan."
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Language: hu_HU\n"
@@ -1635,48 +1635,48 @@ msgstr "munkafolyamat futtatás"
msgid "workflow runs"
msgstr "munkafolyamat futtatások"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Nincs jogosúltsága."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Érvénytelen szín."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "%(type)s fájltípus nem támogatott"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "Az egyéni mező azonosítójának egész számnak kell lennie: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "A(z) %(id)s azonosítójú egyéni mező nem létezik"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Az egyéni mezőknek egész számok listájának vagy azonosítókat értékekhez rendelő objektumnak kell lenniük."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Néhány egyéni mező nem létezik, vagy kétszer lett megadva."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Érvénytelen változó észlelve."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "A dokumentumazonosítók duplikálása nem megengedett."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumentumok nem találhatók: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "A %(provider_name)s felhasználói fiókkal fogsz belépni."
msgid "As a final step, please complete the following form:"
msgstr "Utolsó lépésként kérjük válaszoljon az alábbi kérdésekre:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "A {value} URI értelmezése sikertelen, hiányzó séma"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "A {value} URI értelmezése sikertelen, hiányzó hálózati vagy elérési útvonal"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "A '{parts.scheme}' séma nem engedélyezett. Engedélyezett sémák: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "A {value} URI értelmezése sikertelen"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "Érvénytelen more_like_id"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Érvénytelen MI konfiguráció."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "A text, title_search, query, vagy more_like_id közül csak egyet adjon meg."
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Nincs megfelelő jogosultság a %(id)s dokumentum megosztásához."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "A csomag feldolgozása már folyamatban van."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "A megosztási linkcsomag készítése folyamatban. Kérjük, próbálja meg később."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "A megosztási linkcsomag nem elérhető."
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Language: id_ID\n"
@@ -1635,48 +1635,48 @@ msgstr "jalankan alur kerja"
msgid "workflow runs"
msgstr "daftar jalankan alur kerja"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Izin tidak mencukupi"
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Warna tidak sesuai."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Jenis berkas %(type)s tidak didukung"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "Id kolom kustom harus berupa bilangan bulat: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Kolom kustom dengan id %(id)s tidak ada"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Kolom kustom harus berupa daftar bilangan bulat atau objek yang memetakan id ke nilai."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Beberapa kolom kustom tidak ada atau ditentukan dua kali."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Variabel ilegal terdeteksi."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Penggunaan pengenal dokumen ganda tidak diperbolehkan."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumen tidak ditemukan: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "Anda akan menggunakan akun %(provider_name)s Anda untuk masuk."
msgid "As a final step, please complete the following form:"
msgstr "Sebagai langkah terakhir, mohon formulir berikut:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Gagal membaca URI {value}, skema tidak ditemukan"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Gagal membaca URI {value}, lokasi jaringan atau path tidak ditemukan"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "Skema URI '{parts.scheme}' tidak diizinkan. Skema yang diizinkan: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Gagal membaca URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Izin tidak mencukupi untuk berbagi dokumen %(id)s"
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Paket sedang diproses."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Bundel tautan berbagi masih dalam proses persiapan. Silakan coba lagi nanti."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "Bundel tautan berbagi tidak tersedia."
+33 -48
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -253,7 +253,7 @@ msgstr "documento radice per questa versione"
#: documents/models.py:325
msgid "version index"
msgstr "indice della versione"
msgstr "indice versione"
#: documents/models.py:329
msgid "Index of this version within the root document."
@@ -261,11 +261,11 @@ msgstr "Indice di questa versione all'interno del documento radice."
#: documents/models.py:333
msgid "version label"
msgstr "etichetta della versione"
msgstr "etichetta versione"
#: documents/models.py:337
msgid "Optional short label for a document version."
msgstr "Etichetta breve facoltativa per una versione del documento."
msgstr "Etichetta abbreviata facoltativa per una versione del documento."
#: documents/models.py:342 documents/models.py:961 documents/models.py:992
#: documents/models.py:1096 documents/models.py:2126
@@ -1006,23 +1006,23 @@ msgstr "note"
#: documents/models.py:996
msgid "page"
msgstr ""
msgstr "pagina"
#: documents/models.py:997
msgid "Page of the original file, starting at 1"
msgstr ""
msgstr "Pagina del file originale, partendo da 1"
#: documents/models.py:1052
msgid "format"
msgstr ""
msgstr "formato"
#: documents/models.py:1056
msgid "document barcode"
msgstr ""
msgstr "codice a barre del documento"
#: documents/models.py:1057
msgid "document barcodes"
msgstr ""
msgstr "codici a barre del documento"
#: documents/models.py:1066
msgid "Original"
@@ -1635,48 +1635,48 @@ msgstr "esecuzione del flusso di lavoro"
msgid "workflow runs"
msgstr "esecuzioni del flusso di lavoro"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Autorizzazioni insufficienti."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Colore non valido."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Il tipo di file %(type)s non è supportato"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "L'ID del campo personalizzato deve essere un numero intero: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Il campo personalizzato con ID %(id)s non esiste"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "I campi personalizzati devono essere un elenco di numeri interi o un oggetto che mappa gli ID ai valori."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Alcuni campi personalizzati non esistono o sono stati specificati due volte."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Variabile non valida rilevata."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Non sono consentiti identificatori di documenti duplicati."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Documenti non trovati: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "Stai per utilizzare il tuo account %(provider_name)s per effettuare il l
msgid "As a final step, please complete the following form:"
msgstr "Come ultimo passo, compila il seguente modulo:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Impossibile analizzare l'URI {value}, schema mancante"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Impossibile analizzare l'URI {value}, posizione o percorso di rete mancante"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "Lo schema URI '{parts.scheme}' non è consentito. Schemi consentiti: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ", "
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Impossibile analizzare l'URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "more_like_id non valido"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Configurazione AI non valida."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr "Richiesta di backend AI scaduta."
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr "Il backend IA ha rifiutato la richiesta. Controlla i log per i dettagli."
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Specificare solo uno tra text, title_search, query o more_like_id."
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Autorizzazioni insufficienti per condividere il documento %(id)s."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Il pacchetto è già in fase di elaborazione."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Il pacchetto di link di condivisione è ancora in fase di preparazione. Riprova più tardi."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "Il pacchetto di link di condivisione non è disponibile."
@@ -2183,7 +2168,7 @@ msgstr "Abilita la suddivisione sui codici a barre dei tag"
#: paperless/models.py:308
msgid "Stores the values of detected barcodes"
msgstr ""
msgstr "Memorizza i valori dei codici a barre individuati"
#: paperless/models.py:318
msgid "Sets the remote OCR engine"
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Language: ja_JP\n"
@@ -1635,48 +1635,48 @@ msgstr "ワークフローの実行"
msgid "workflow runs"
msgstr "ワークフローの実行"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "無効な色"
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "ファイルタイプ %(type)s はサポートされていません"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "無効な変数を検出しました"
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1913,59 +1913,44 @@ msgstr "%(provider_name)s アカウントでログインしようとしていま
msgid "As a final step, please complete the following form:"
msgstr "最後のステップとして、以下のフォームに記入してください"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Language: ko_KR\n"
@@ -1635,48 +1635,48 @@ msgstr "워크플로 실행"
msgid "workflow runs"
msgstr "워크플로우 실행"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "사용자 정의 ID 필드는 반드시 정수여야 합니다: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "%(id)s를 ID로 가지는 사용자 정의 필드가 존재하지 않습니다."
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "사용자 정의 필드는 정수 리스트이거나, ID를 값에 매핑하는 객체여야 합니다."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "존재하지 않거나 중복된 사용자 정의 필드가 있습니다."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "잘못된 변수가 감지되었습니다."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1913,59 +1913,44 @@ msgstr "%(provider_name)s 의 계정을 사용하여 로그인하려고 합니
msgid "As a final step, please complete the following form:"
msgstr "마지막 단계로 다음 양식을 작성해 주세요:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "{value} URI를 파싱할 수 없습니다: 스킴이 누락되었습니다."
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "{value} URI를 파싱할 수 없습니다: 네트워크 위치 또는 경로가 누락되었습니다."
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "URI 스킴 '{parts.scheme}'는 허용되지 않습니다. 허용된 스킴: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "{value} URI를 파싱할 수 없음"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Luxembourgish\n"
"Language: lb_LU\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Ongëlteg Faarf."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Fichierstyp %(type)s net ënnerstëtzt"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Ongëlteg Zeechen detektéiert."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1912,59 +1912,44 @@ msgstr ""
msgid "As a final step, please complete the following form:"
msgstr ""
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Lithuanian\n"
"Language: lt_LT\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr ""
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1912,59 +1912,44 @@ msgstr "Ketinate prisijungimui naudoti savo %(provider_name)s paskyrą."
msgid "As a final step, please complete the following form:"
msgstr "Galiausiai užpildykite šią formą:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Nepavyko apdoroti URI {value}, trūksta schemos"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Nepavyko apdoroti URI {value}, trūksta tinklo vietos arba kelio"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "URI schema '{parts.scheme}' nėra leistina. Galimos schemos: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Nepavyko apdoroti URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Nepakanka leidimų bendrinti dokumentą %(id)s."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Rinkinys jau apdorojamas."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Bendrinimo nuorodų rinkinys vis dar ruošiamas. Bandykite dar kartą vėliau."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "Dalinimos nuorodų rinkinys yra nepasiekiamas."
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Latvian\n"
"Language: lv_LV\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr ""
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1912,59 +1912,44 @@ msgstr ""
msgid "As a final step, please complete the following form:"
msgstr ""
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Macedonian\n"
"Language: mk_MK\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr ""
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1912,59 +1912,44 @@ msgstr ""
msgid "As a final step, please complete the following form:"
msgstr ""
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Malay\n"
"Language: ms_MY\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr ""
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1912,59 +1912,44 @@ msgstr ""
msgid "As a final step, please complete the following form:"
msgstr ""
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Ongeldig kleur."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Bestandstype %(type)s niet ondersteund"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Aangepast veld met id %(id)s bestaat niet"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Aangepaste velden moeten een lijst van numerieke waarden zijn of een object mapping id naar waarden."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Sommige aangepaste velden bestaan niet of zijn dubbel opgegeven."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Ongeldige variabele ontdekt."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1913,59 +1913,44 @@ msgstr "Je staat op het punt om met je %(provider_name)s account in te loggen."
msgid "As a final step, please complete the following form:"
msgstr "Vul als laatste stap het volgende formulier in:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Language: no_NO\n"
@@ -1635,48 +1635,48 @@ msgstr "workflow run (NO)"
msgid "workflow runs"
msgstr "workflow runs (NO)"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Utilstrekkelige tillatelser."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Ugyldig farge."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Filtype %(type)s støttes ikke"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "Egendefinert felt-id må være et heltall: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Egendefinert felt med id %(id)s finnes ikke"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Custom fields must be a list of integers or an object mapping ids to values. (NO)"
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Some custom fields don't exist or were specified twice. (NO)"
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Ugyldig variabel oppdaget."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Duplicate document identifiers are not allowed. (NO)"
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Documents not found: %(ids)s (NO)"
@@ -1913,59 +1913,44 @@ msgstr "You are about to use your %(provider_name)s account to login. (NO)"
msgid "As a final step, please complete the following form:"
msgstr "As a final step, please complete the following form: (NO)"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Unable to parse URI {value}, missing scheme (NO)"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Unable to parse URI {value}, missing net location or path (NO)"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)} (NO)"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Unable to parse URI {value} (NO)"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "Invalid more_like_id (NO)"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Invalid AI configuration. (NO)"
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr "Forespørselen til KI-tjenesten fikk tidsavbrudd."
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Specify only one of text, title_search, query, or more_like_id. (NO)"
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Insufficient permissions to share document %(id)s. (NO)"
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Bundle is already being processed. (NO)"
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "The share link bundle is still being prepared. Please try again later. (NO)"
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "The share link bundle is unavailable. (NO)"
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
@@ -1635,48 +1635,48 @@ msgstr "uruchomienie przepływu pracy"
msgid "workflow runs"
msgstr "uruchomienia przepływu pracy"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Niewystarczające uprawnienia."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Nieprawidłowy kolor."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Typ pliku %(type)s nie jest obsługiwany"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "Identyfikator pola niestandardowego musi być liczbą całkowitą: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Pole niestandardowe z id %(id)s nie istnieje"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Pola niestandardowe muszą być listą liczb całkowitych lub obiektem mapującym identyfikatory na wartości."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Niektóre niestandardowe pola nie istnieją lub zostały określone dwukrotnie."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Wykryto nieprawidłową zmienną."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Nie dopuszcza się powielania identyfikatorów dokumentów."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Nie znaleziono dokumentów: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "Zamierzasz użyć konta %(provider_name)s aby się zalogować."
msgid "As a final step, please complete the following form:"
msgstr "Na koniec należy wypełnić poniższy formularz:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Nie można przeanalizować URI {value}, brak schematu"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Nie można przeanalizować URI {value}, brak lokalizacji sieciowej lub ścieżki"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "Schemat URI '{parts.scheme}' jest niedozwolony. Dozwolone schematy: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Nie można przetworzyć URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "Nieprawidłowy more_like_id"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Brak uprawnień do udostępnienia dokumentu %(id)s."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Pakiet jest już przetwarzany."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Pakiet do udostępnienia jest nadal przygotowywany. Spróbuj ponownie później."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "Pakiet do udostępnienia jest niedostępny."
+24 -40
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt_BR\n"
@@ -1636,48 +1636,48 @@ msgstr "execução do fluxo de trabalho"
msgid "workflow runs"
msgstr "execução de fluxo de trabalho"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Permissões insuficientes."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Cor inválida."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tipo de arquivo %(type)s não suportado"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "O ID do campo personalizado deve ser um número inteiro: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Não existe um campo personalizado com o ID %(id)s"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Campos personalizados devem estar em uma lista de números inteiros ou em um objeto que relacione IDs a valores."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Campos personalizados inválidos ou duplicados."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Variável inválida detectada."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Não são permitidos identificadores de documento duplicados."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Documentos não encontrados: %(ids)s"
@@ -1914,60 +1914,44 @@ msgstr "Você está prestes a usar sua conta %(provider_name)s para entrar."
msgid "As a final step, please complete the following form:"
msgstr "Como etapa final, por favor preencha o seguinte formulário:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Não é possível analisar o URI {value}, esquema ausente"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
#: documents/validators.py:36
msgid ", "
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "Esquema URI '{parts.scheme}' não é permitido. Esquemas permitidos:\n"
"{', '.join(allowed_schemes)}"
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Não é possível analisar o URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "more_like_id inválido"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Configuração de IA inválida."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr "A requisição backend da IA expirou."
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Especifique apenas um text, title_search, consulta ou mais_like_id."
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Permissões insuficientes para compartilhar o documento %(id)s."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Pacote já está sendo processado."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "O pacote de link de compartilhamento ainda está sendo preparado. Tente novamente mais tarde."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "O pacote de link de compartilhamento não está disponível."
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Portuguese\n"
"Language: pt_PT\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Cor invalida."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tipo de arquivo %(type)s não suportado"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Variável inválida detetada."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1913,59 +1913,44 @@ msgstr ""
msgid "As a final step, please complete the following form:"
msgstr ""
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Não foi possível analisar o URI {value}, o esquema está em falta"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Não foi possível analisar o URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Romanian\n"
"Language: ro_RO\n"
@@ -1635,48 +1635,48 @@ msgstr "rulare flux de lucru"
msgid "workflow runs"
msgstr "rulări flux de lucru"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Culoare invalidă."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tip de fișier %(type)s nesuportat"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "Id-ul câmpului personalizat trebuie să fie un număr întreg: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Câmp personalizat cu id %(id)s nu există"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Câmpurile personalizate trebuie să fie o listă de numere întregi sau un obiect mapping ids la valori."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Unele câmpuri personalizate nu există sau au fost specificate de două ori."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Variabilă nevalidă detectată."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1913,59 +1913,44 @@ msgstr "Sunteți pe cale să vă utilizați contul %(provider_name)s pentru a v
msgid "As a final step, please complete the following form:"
msgstr "În etapa finală, vă rugăm să completați următorul formular:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Imposibil de analizat URI {value}, schemă lipsă"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Imposibil de analizat URI {value}, lipsă locație sau cale"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "Schema URI '{parts.scheme}' nu este permisă. Schemele permise: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Nu se poate analiza URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+30 -45
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@@ -1006,23 +1006,23 @@ msgstr "заметки"
#: documents/models.py:996
msgid "page"
msgstr ""
msgstr "страница"
#: documents/models.py:997
msgid "Page of the original file, starting at 1"
msgstr ""
msgstr "Страница исходного файла, начиная с 1"
#: documents/models.py:1052
msgid "format"
msgstr ""
msgstr "формат"
#: documents/models.py:1056
msgid "document barcode"
msgstr ""
msgstr "штрих-код документа"
#: documents/models.py:1057
msgid "document barcodes"
msgstr ""
msgstr "штрих-коды документа"
#: documents/models.py:1066
msgid "Original"
@@ -1635,48 +1635,48 @@ msgstr "запуск рабочего процесса"
msgid "workflow runs"
msgstr "запуски рабочего процесса"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Недостаточно прав."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Неверный цвет."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Тип файла %(type)s не поддерживается"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "Идентификатор настраиваемого поля должен быть целым числом: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Пользовательское поле с идентификатором %(id)s не существует"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Пользовательские поля должны быть списком целых чисел или идентификаторами отображения объектов значений."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Некоторые пользовательские поля не существуют или были указаны дважды."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Обнаружена неверная переменная."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Повторяющиеся идентификаторы документа не допускаются."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Документы не найдены: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "Вы собираетесь войти через сторонний с
msgid "As a final step, please complete the following form:"
msgstr "На завершение, пожалуйста заполните следующую форму:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Не удается распознать URI {value}, отсутствует схема"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Не удалось распознать URI {value}, отсутствует сетевое расположение или путь"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "Недопустимая схема URI '{parts.scheme}'. Разрешенные схемы: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ", "
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Невозможно распознать URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "Недопустимый more_like_id"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Неверная конфигурация ИИ."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr "Таймаут запроса ИИ."
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr "Движок ИИ отклонил запрос. Проверьте логи."
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Укажите только одно: текст, title_search, query или more _like_id."
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Недостаточно прав для совместного доступа к документу %(id)s."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Пакет уже обрабатывается."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Набор ссылок все еще готовится. Пожалуйста, повторите попытку позже."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "Пакет общих ссылок недоступен."
@@ -2183,7 +2168,7 @@ msgstr "Включает разделение на штрих-коды тего
#: paperless/models.py:308
msgid "Stores the values of detected barcodes"
msgstr ""
msgstr "Сохраняет значения обнаруженных штрих-кодов"
#: paperless/models.py:318
msgid "Sets the remote OCR engine"
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-06 02:00\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Slovak\n"
"Language: sk_SK\n"
@@ -1635,48 +1635,48 @@ msgstr "spustenie pracovného postupu"
msgid "workflow runs"
msgstr "spustenia pracovných postupov"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Nedostatočné oprávnenia."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Neplatná farba."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Typ súboru %(type)s nie je podporovaný"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "ID vlastného poľa musí byť celé číslo: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Vlastné pole s ID %(id)s neexistuje."
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Vlastné polia musia byť zoznamom celých čísel alebo objektom mapujúcim identifikátory na hodnoty."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Niektoré vlastné polia neexistujú alebo boli zadané dvakrát."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Zistená neplatná premenná."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Duplicitné identifikátory dokumentov nie sú povolené."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumenty sa nenašli: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "Chystáte sa na prihlásenie použiť svoj účet %(provider_name)s."
msgid "As a final step, please complete the following form:"
msgstr "Ako posledný krok vyplňte nasledujúci formulár:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Nepodarilo sa analyzovať URI {value}, chýba schéma"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Nepodarilo sa analyzovať URI {value}; chýba sieťové umiestnenie alebo cesta."
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "Schéma URI „{parts.scheme}“ nie je povolená. Povolené schémy: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Nepodarilo sa analyzovať URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "Neplatné more_like_id"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Neplatná konfigurácia umelej inteligencie."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr "Vypršal časový limit požiadavky na backend umelej inteligencie."
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr "Backend umelej inteligencie zamietol požiadavku. Podrobnosti nájdete v záznamoch."
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Zadajte iba jednu z možností: text, title_search, query alebo more_like_id."
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Nedostatočné oprávnenia na zdieľanie dokumentu %(id)s."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Balík sa už spracúva."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Balík odkazov na zdieľanie sa stále pripravuje. Skúste to znova neskôr."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "Balík odkazov na zdieľanie nie je k dispozícii."
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Slovenian\n"
"Language: sl_SI\n"
@@ -1635,48 +1635,48 @@ msgstr "izvajanje poteka dela"
msgid "workflow runs"
msgstr "poteka dela"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Nezadostna dovoljenja."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Napačna barva."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Vrsta datoteke %(type)s ni podprta"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "ID polja po meri mora biti celo število: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Polje po meri z ID-jem %(id)s ne obstaja"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Polja po meri morajo biti seznam celih števil ali objekt, ki preslika ID-je v vrednosti."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Nekatera polja po meri ne obstajajo ali pa so bila navedena dvakrat."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Zaznani neveljavni znaki."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Podvojeni identifikatorji dokumentov niso dovoljeni."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumentov ni bilo mogoče najti: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "Za prijavo boste uporabili račun ponudnika %(provider_name)s."
msgid "As a final step, please complete the following form:"
msgstr "Kot zadnji korak vas prosimo, da izpolnite naslednji obrazec:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Ni mogoče razčleniti URI-ja {value}, manjka shema"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Ni mogoče razčleniti URI-ja {value}, manjka omrežna lokacija ali pot"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "Shema URI '{parts.scheme}' ni dovoljena. Dovoljene sheme: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Ni mogoče razčleniti URI-ja {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "Neveljaven more_like_id"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Neveljavna konfiguracija umetne inteligence."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr "Časovna omejitev zahteve za umetno inteligenco je potekla."
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr "Zaledni sistem umetne inteligence je zavrnil zahtevo. Za podrobnosti preverite dnevnike."
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Navedite samo eno od naslednjih vrednosti: text, title_search, query ali more_like_id."
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Nezadostna dovoljenja za skupno rabo dokumenta %(id)s."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Paket se že obdeluje."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Paket povezav za deljenje je še vedno v pripravi. Poskusite znova pozneje."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "Paket povezav za deljenje ni na voljo."
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Albanian\n"
"Language: sq_AL\n"
@@ -1635,48 +1635,48 @@ msgstr "ekzekutim rrjedhe pune"
msgid "workflow runs"
msgstr "ekzekutime rrjedhash pune"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Leje të pamjaftueshme."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Ngjyrë e pavlefshme."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Lloji i skedarit %(type)s nuk mbështetet"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "ID-ja e fushës së personalizuar duhet të jetë numër i plotë: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Fusha e personalizuar me ID %(id)s nuk ekziston"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Disa fusha të personalizuara nuk ekzistojnë ose janë specifikuar dy herë."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "U zbulua variabël e pavlefshme."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Identifikuesit dublikatë të dokumenteve nuk lejohen."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumentet nuk u gjetën: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "You are about to use your %(provider_name)s llogari to login."
msgid "As a final step, please complete the following form:"
msgstr "Si hap i fundit, ju lutemi plotësoni formularin e mëposhtëm:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Konfigurim AI i pavlefshëm."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Leje të pamjaftueshme për të ndarë dokumentin %(id)s."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Paketa po përpunohet tashmë."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Paketa e lidhjes së ndarjes ende po përgatitet. Ju lutemi provoni përsëri më vonë."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "Paketa e lidhjes së ndarjes nuk është e disponueshme."
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Serbian (Latin)\n"
"Language: sr_CS\n"
@@ -1635,48 +1635,48 @@ msgstr "pokretanje radnog toka"
msgid "workflow runs"
msgstr "pokretanje tokova rada"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Nedovoljne dozvole."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Nevažeća boja."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Vrsta datoteke %(type)s nije podržana"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "ID prilagođenog polja mora biti ceo broj: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Prilagođeno polje sa ID-em %(id)s ne postoji"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Prilagođena polja moraju biti lista celih brojeva ili objekat koji mapira identifikatore na vrednosti."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Neka prilagođena polja ne postoje ili su navedena dva puta."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Otkrivena je nevažeća promenljiva."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Duplirani identifikatori dokumenata nisu dozvoljeni."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumenti nisu pronađeni: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "Uskoro ćete koristiti svoj nalog na %(provider_name)s za prijavu."
msgid "As a final step, please complete the following form:"
msgstr "Kao poslednji korak, molimo Vas da popunite sledeći obrazac:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Nije moguće analizirati URI {value}, nedostaje šema"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Nije moguće analizirati URI {value}, nedostaje mrežan lokacija ili putanja"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "Šema URI-ja '{parts.scheme}' nije dozvoljena. Dozvoljene šeme {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Nije moguće analizirati URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "Nevažeći more_like_id"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Nevažeća konfiguracija veštačke inteligencije."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Navedite samo jedno od sledećeg: text, title_search, query ili more_like_id."
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Nedovoljne dozvole za deljenje dokumenta %(id)s."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Paket se već obrađuje."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Paket linkova za deljenje se još uvek priprema. Molimo pokušajte ponovo kasnije."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "Paket linkova za deljenje nije dostupan."
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@@ -1635,48 +1635,48 @@ msgstr "Arbetsflödeskörning"
msgid "workflow runs"
msgstr "arbetsflöde körs"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Otillräckliga behörigheter."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Ogiltig färg."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Filtypen %(type)s stöds inte"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "Anpassat fält-id måste vara ett heltal: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Anpassat fält med id %(id)s finns inte"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Anpassade fält måste vara en lista med heltal eller ett objekt som mappar ID:n till värden."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Vissa anpassade fält finns inte eller har angetts två gånger."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Ogiltig variabel upptäckt."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Dubbletter av dokumentidentifierare är inte tillåtna."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumenten hittades inte: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "Du håller på att använda ditt %(provider_name)s-konto för att logga
msgid "As a final step, please complete the following form:"
msgstr "Slutför följande formulär som ett sista steg:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Kunde inte tolka URI {value}, schema saknas"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Kunde inte tolka URI {value}, nätverksplats eller sökväg saknas"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "URI-schemat '{parts.scheme}' är inte tillåtet. Tillåtna scheman: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Kunde inte tolka URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "Ogiltig more_like_id"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Ogiltig AI-konfiguration."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr "Begäran till AI-serverdelen tog för lång tid."
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr "AI-serverdelen avvisade begäran. Kontrollera loggarna för detaljer."
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Ange endast ett av text, title_search, query och more_like_id."
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Otillräckliga behörigheter för att dela dokument %(id)s."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Paketet behandlas redan."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Delningslänkpaketet förbereds fortfarande. Försök igen senare."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "Delningslänkpaketet är inte tillgängligt."
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Thai\n"
"Language: th_TH\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "สีไม่ถูกต้อง"
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "ไม่รองรับไฟล์ประเภท %(type)s"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "ตรวจพบตัวแปรไม่ถูกต้อง"
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1912,59 +1912,44 @@ msgstr ""
msgid "As a final step, please complete the following form:"
msgstr ""
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Language: tr_TR\n"
@@ -1635,48 +1635,48 @@ msgstr "iş akışı çalıştırma"
msgid "workflow runs"
msgstr "iş akışı çalıştırma"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Yetersiz izin."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Geçersiz renk."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Dosya türü %(type)s desteklenmiyor"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "%(id)s özel alan numarası tam sayı olmalıdır"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "%(id)s numaralı özel alan mevcut değil"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Özel alanlar bir tam sayı olarak veya bir nesne haritası numaraları olmalıdır."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Bazı õzel alan numaraları mevcut değil yada iki kez tanımlanmıș."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Geçersiz değişken algılandı."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Doküman kimliği çakışmasına izin verilmiyor."
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dosyalar bulunamadı: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "Giriş yapmak için %(provider_name)s hesabınızı kullanmak üzeresini
msgid "As a final step, please complete the following form:"
msgstr "Son adım olarak, lütfen aşağıdaki formu doldurun:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "URI {value} ayrıştırılamıyor, şema eksik"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "URI {value} ayrıştırılamıyor, ağ konumu veya yol eksik"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "URI şeması ‘{parts.scheme}’ izin verilmez. İzin verilen şemalar: {‘, ’.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "URI {value} işlenemiyor"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "Geçersiz more_like_id"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "Geçersiz yapay zeka konfigürasyonu."
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr "Yapay zeka isteği zaman aşımına uğradı."
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Yalnızca bir metin, title_search, sorgu veya more_like_id"
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "%(id)s dosyasını paylaşmak için yetkiniz yok."
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Paket zaten işlemede."
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+23 -38
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Ukrainian\n"
"Language: uk_UA\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Неправильний колір."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Тип файлу %(type)s не підтримується"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Виявлено неправильну змінну."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1913,59 +1913,44 @@ msgstr "Ви збираєтеся використовувати ваш облі
msgid "As a final step, please complete the following form:"
msgstr "Як останній крок, будь ласка, заповніть наступну форму:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr ""
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"Language: vi_VN\n"
@@ -1635,48 +1635,48 @@ msgstr "lần chạy quy trình"
msgid "workflow runs"
msgstr "các lần chạy quy trình"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Không có đủ quyền."
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "Màu không hợp lệ."
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "Loại tập tin %(type)s không được hỗ trợ"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "ID trường tùy chỉnh phải là số nguyên: %(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Trường tùy chỉnh với ID %(id)s không tồn tại"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Trường tùy chỉnh phải là danh sách số nguyên hoặc đối tượng ánh xạ ID sang giá trị."
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "Một số trường tùy chỉnh không tồn tại hoặc được chỉ định hai lần."
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "Đã phát hiện biến số không hợp lệ."
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "Không cho phép các định danh tài liệu trùng lặp"
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Không tìm thấy tài liệu: %(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "Bạn sắp sử dụng tài khoản %(provider_name)s của bạn để
msgid "As a final step, please complete the following form:"
msgstr "Là bước cuối cùng, vui lòng hoàn thành mẫu đơn sau:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Không thể phân tích URI {value}, thiếu giao thức"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Không thể phân tích URI {value}, thiếu tên miền hoặc đường dẫn"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "Giao thức URI '{parts.scheme}' không được phép. Các giao thức được phép: {', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Không thể phân tích URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Không đủ quyền để chia sẻ tài liệu %(id)s"
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "Gói đang được xử lý"
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Liên kết chia sẻ gói vẫn đang được chuẩn bị. Vui lòng thử lại sau."
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "Không tồn tại liên kết chia sẻ gói"
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -1635,48 +1635,48 @@ msgstr "工作流运行"
msgid "workflow runs"
msgstr "工作流运行"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "权限不足。"
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "无效的颜色"
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "不支持文件类型 %(type)s"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "自定义字段 id 必须是数字:%(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "自定义字段 id %(id)s 不存在"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "自定义字段必须为整数列表,或是一个将ID映射到值的对象。"
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "部分自定义字段不存在或重复指定。"
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "检测到无效变量。"
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "不允许重复文档标识符。"
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "未找到文档:%(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "您将使用您的 %(provider_name)s 账户登录."
msgid "As a final step, please complete the following form:"
msgstr "作为最后一步,请填写以下表格:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "无法解析 URI {value},缺少scheme"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "无法解析 URI {value},缺少网络位置或路径"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "URI 格式 '{parts.scheme}' 不支持。支持的格式有:{', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "无法解析 URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "无效的more_like_id"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "无效的 AI 配置。"
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr "AI 后端请求超时。"
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "只能指定 text、title_search、query 或 more_like_id 中的一项。"
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "权限不足以分享文件:%(id)s。"
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "捆绑包已在处理中。"
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "分享链接包仍在准备中,请稍后再试。"
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "分享链接包不可用。"
+24 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-05 16:26+0000\n"
"PO-Revision-Date: 2026-10-05 16:27\n"
"POT-Creation-Date: 2026-10-08 18:39+0000\n"
"PO-Revision-Date: 2026-10-08 18:40\n"
"Last-Translator: \n"
"Language-Team: Chinese Traditional\n"
"Language: zh_TW\n"
@@ -1635,48 +1635,48 @@ msgstr "執行工作流程"
msgid "workflow runs"
msgstr "執行工作流程"
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:343 documents/views.py:2732
#: documents/serialisers.py:516 documents/serialisers.py:873
#: documents/serialisers.py:2903 documents/views.py:344 documents/views.py:2751
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "權限不足。"
#: documents/serialisers.py:708
#: documents/serialisers.py:709
msgid "Invalid color."
msgstr "無效的顏色。"
#: documents/serialisers.py:2369
#: documents/serialisers.py:2370
#, python-format
msgid "File type %(type)s not supported"
msgstr "不支援檔案類型 %(type)s"
#: documents/serialisers.py:2413
#: documents/serialisers.py:2414
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "自定欄位 ID 必須是整數:%(id)s"
#: documents/serialisers.py:2420
#: documents/serialisers.py:2421
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "自定欄位 ID %(id)s 不存在"
#: documents/serialisers.py:2437 documents/serialisers.py:2447
#: documents/serialisers.py:2438 documents/serialisers.py:2448
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "自定欄位必須為整數列表,或是將 ID 對應到參數值的物件。"
#: documents/serialisers.py:2442
#: documents/serialisers.py:2443
msgid "Some custom fields don't exist or were specified twice."
msgstr "部分自定欄位不存在或重復指定。"
#: documents/serialisers.py:2589
#: documents/serialisers.py:2590
msgid "Invalid variable detected."
msgstr "偵測到無效的變數。"
#: documents/serialisers.py:2958
#: documents/serialisers.py:2959
msgid "Duplicate document identifiers are not allowed."
msgstr "文件識別碼不得重複。"
#: documents/serialisers.py:2988 documents/views.py:4787
#: documents/serialisers.py:2989 documents/views.py:4807
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "找不到文件:%(ids)s"
@@ -1913,59 +1913,44 @@ msgstr "即將使用 %(provider_name)s 帳號登入。"
msgid "As a final step, please complete the following form:"
msgstr "最後一步,請填寫以下表單:"
#: documents/validators.py:24
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "無法解析 URI {value},缺少協定"
#: documents/validators.py:29
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "無法解析 URI {value},缺少網路位置或路徑"
#: documents/validators.py:36
msgid "URI scheme '{parts.scheme}' is not allowed. Allowed schemes: {', '.join(allowed_schemes)}"
msgstr "URI 協定「{parts.scheme}」不被允許。允許的協定有:{', '.join(allowed_schemes)}"
msgid ", "
msgstr ""
#: documents/validators.py:45
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "無法解析 URI {value}"
#: documents/views.py:336 documents/views.py:2729
#: documents/views.py:337 documents/views.py:2748
msgid "Invalid more_like_id"
msgstr "無效的 more_like_id"
#: documents/views.py:1676
#: documents/views.py:1683
msgid "Invalid AI configuration."
msgstr "無效的 AI 配置。"
#: documents/views.py:1687
#: documents/views.py:1694
msgid "AI backend request timed out."
msgstr "AI 後端請求逾時。"
#: documents/views.py:1699
#: documents/views.py:1706
msgid "AI backend rejected the request. Check logs for details."
msgstr "AI 後端拒絕了請求。請檢查日誌以取得詳細資訊。"
#: documents/views.py:2554 documents/views.py:2870
#: documents/views.py:2573 documents/views.py:2889
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "只能指定 text、title_search、query 或 more_like_id 的其中一項。"
#: documents/views.py:4800
#: documents/views.py:4823
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "權限不足,無法共用文件:%(id)s"
#: documents/views.py:4846
#: documents/views.py:4870
msgid "Bundle is already being processed."
msgstr "組合已在處理中。"
#: documents/views.py:4910
#: documents/views.py:4934
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "共用連結組合仍在準備中,請稍後再試。"
#: documents/views.py:4924
#: documents/views.py:4948
msgid "The share link bundle is unavailable."
msgstr "共用連結組合無法使用。"
+3 -6
View File
@@ -7,7 +7,6 @@ from documents.models import Document
from documents.permissions import permitted_object_ids
from documents.permissions import restrict_queryset_to_visible
from documents.permissions import user_is_unrestricted
from documents.versioning import annotate_effective_content
from paperless.config import AIConfig
from paperless_ai.base_model import ClassificationSuggestions
from paperless_ai.base_model import TaxonomyChoiceDict
@@ -114,7 +113,7 @@ def build_prompt_without_rag(
) -> str:
filename = document.filename or ""
content = truncate_content(
(document.get_effective_content() or "")[:4000],
document.content[:4000] or "",
chunk_size=config.llm_embedding_chunk_size,
context_size=config.llm_context_size,
)
@@ -228,9 +227,7 @@ def get_taxonomy_context(
# similar_documents is already ordered by descending weight; don't lose it.
similar_document_ids = [s["document_id"] for s in similar_documents]
similar_documents_by_id = annotate_effective_content(
Document.objects.all(),
).in_bulk(similar_document_ids)
similar_documents_by_id = Document.objects.in_bulk(similar_document_ids)
similar_docs = [
similar_documents_by_id[document_id]
for document_id in similar_document_ids
@@ -238,7 +235,7 @@ def get_taxonomy_context(
][:max_docs]
context_blocks = []
for similar in similar_docs:
text = (similar.get_effective_content() or "")[:1000]
text = similar.content[:1000] or ""
title = similar.title or similar.filename or "Untitled"
context_blocks.append(f"TITLE: {title}\n{text}")
except Exception:
+1 -1
View File
@@ -135,6 +135,6 @@ def build_llm_index_text(doc: Document) -> str:
lines.append(f"Custom Field - {instance.field.name}: {instance}")
lines.append("\nContent:\n")
lines.append(doc.get_effective_content() or "")
lines.append(doc.content or "")
return _normalize_llm_index_text("\n".join(lines))
+8 -15
View File
@@ -17,8 +17,6 @@ from documents.models import PaperlessTask
from documents.utils import IterWrapper
from documents.utils import QuerySetStream
from documents.utils import identity
from documents.versioning import annotate_effective_content
from documents.versioning import root_document_ids
from paperless.config import AIConfig
from paperless_ai.db import db_connection_released
from paperless_ai.embedding import build_llm_index_text
@@ -445,11 +443,11 @@ def update_llm_index(
"Skipping LLM index update: migration check deferred; "
"will retry next run."
)
documents = annotate_effective_content(
Document.objects.filter(root_document__isnull=True)
.select_related("correspondent", "document_type", "storage_path")
.prefetch_related("tags", "notes", "custom_fields__field"),
)
documents = Document.objects.select_related(
"correspondent",
"document_type",
"storage_path",
).prefetch_related("tags", "notes", "custom_fields__field")
no_documents = not documents.exists()
# Fast exit before touching config: nothing to index and no existing index.
@@ -485,7 +483,7 @@ def update_llm_index(
msg = "LLM index rebuilt successfully."
else:
scoped_documents = (
documents.filter(id__in=root_document_ids(document_ids))
documents.filter(id__in=document_ids)
if document_ids is not None
else documents
)
@@ -512,12 +510,7 @@ def update_llm_index(
def llm_index_add_or_update_document(document: Document):
"""
Add or atomically replace a document's chunks in the index. Only root
documents are indexed, so a version is indexed as its root document.
"""
if document.root_document_id is not None:
document = document.root_document
"""Add or atomically replace a document's chunks in the index."""
config = AIConfig()
new_nodes = build_document_node(
document,
@@ -695,7 +688,7 @@ def retrieve_similar_nodes(
)
query_text = truncate_embedding_query(
(document.title or "") + "\n" + (document.get_effective_content() or ""),
(document.title or "") + "\n" + (document.content or ""),
chunk_size=config.llm_embedding_chunk_size,
)
# Hold the shared read lock for the whole retrieval so the connection is
@@ -55,7 +55,6 @@ def mock_document():
doc.storage_path = None
doc.archive_serial_number = "12345"
doc.content = "This is the document content."
doc.get_effective_content.return_value = "This is the document content."
cf1 = MagicMock(__str__=lambda x: "Value1")
cf1.field = MagicMock()
@@ -435,55 +434,6 @@ def test_get_taxonomy_context_preserves_similarity_order_and_distinct_documents(
)
@pytest.mark.django_db
class TestClassifierEffectiveContent:
"""A root document's text for the LLM is its newest version's content."""
@staticmethod
def _root_with_version() -> Document:
root = DocumentFactory(title="Statement", content="stale text")
DocumentFactory(root_document=root, version_index=1, content="latest text")
return root
def test_prompt_uses_the_newest_versions_content(self) -> None:
"""
GIVEN:
- A root document with a version
WHEN:
- The classification prompt is built for the root
THEN:
- It contains the newest version's content
"""
prompt = build_prompt_without_rag(self._root_with_version(), AIConfig())
assert "latest text" in prompt
assert "stale text" not in prompt
@override_settings(LLM_EMBEDDING_BACKEND="huggingface")
def test_similar_document_context_uses_the_newest_versions_content(self) -> None:
"""
GIVEN:
- A similar root document with a version
WHEN:
- The similar-document context is built
THEN:
- It contains the newest version's content
"""
similar = self._root_with_version()
document = DocumentFactory(content="Some content")
fake_nodes = [
SimpleNamespace(metadata={"document_id": str(similar.pk)}, score=0.9),
]
with patch(
"paperless_ai.ai_classifier.retrieve_similar_nodes",
return_value=fake_nodes,
):
_candidates, context = get_taxonomy_context(document, user=None)
assert context == "TITLE: Statement\nlatest text"
@pytest.mark.django_db
@override_settings(LLM_EMBEDDING_BACKEND="huggingface")
def test_get_taxonomy_context_no_similar_docs():
-103
View File
@@ -388,108 +388,6 @@ def test_update_llm_index_partial_update(
assert after[str(doc2.pk)] == before[str(doc2.pk)]
@pytest.mark.django_db
class TestLlmIndexVersions:
"""The LLM index holds root documents only: a version is indexed as its root."""
def test_add_or_update_document_indexes_a_version_as_its_root(
self,
temp_llm_index_dir: Path,
mock_embed_model: FakeEmbedding,
) -> None:
"""
GIVEN:
- A root document with a version
WHEN:
- The version is passed to llm_index_add_or_update_document
THEN:
- Only the root document is in the index
"""
root = DocumentFactory(content="root content")
version = DocumentFactory(root_document=root, version_index=1)
indexing.llm_index_add_or_update_document(version)
with indexing.get_vector_store() as store:
indexed = store.get_modified_times()
assert set(indexed) == {str(root.pk)}
def test_rebuild_skips_versions(
self,
temp_llm_index_dir: Path,
mock_embed_model: FakeEmbedding,
) -> None:
"""
GIVEN:
- A root document with a version
WHEN:
- The LLM index is rebuilt
THEN:
- Only the root document is in the index
"""
root = DocumentFactory()
DocumentFactory(root_document=root, version_index=1)
indexing.update_llm_index(rebuild=True)
with indexing.get_vector_store() as store:
indexed = store.get_modified_times()
assert set(indexed) == {str(root.pk)}
def test_rebuild_indexes_the_newest_versions_content(
self,
temp_llm_index_dir: Path,
mock_embed_model: FakeEmbedding,
mocker: pytest_mock.MockerFixture,
) -> None:
"""
GIVEN:
- A root document with a version
WHEN:
- The LLM index is rebuilt
THEN:
- The root's text for the index is the version's content, answered
from the query rather than a query per document
"""
root = DocumentFactory(content="stale text")
DocumentFactory(root_document=root, version_index=1, content="latest text")
spy = mocker.spy(indexing, "build_document_node")
indexing.update_llm_index(rebuild=True)
indexed = spy.call_args.args[0]
assert indexed.pk == root.pk
assert indexed.effective_content == "latest text"
def test_incremental_update_by_version_id_refreshes_the_root(
self,
temp_llm_index_dir: Path,
mock_embed_model: FakeEmbedding,
) -> None:
"""
GIVEN:
- An indexed root document with a version whose root was modified since
WHEN:
- An incremental update is scoped to the version's id
THEN:
- The root's entry is refreshed and no entry exists for the version
"""
root = DocumentFactory()
version = DocumentFactory(root_document=root, version_index=1)
indexing.update_llm_index(rebuild=True)
Document.objects.filter(pk=root.pk).update(modified=timezone.now())
root.refresh_from_db()
indexing.update_llm_index(document_ids=[version.pk])
with indexing.get_vector_store() as store:
indexed = store.get_modified_times()
assert indexed == {str(root.pk): root.modified.isoformat()}
@pytest.mark.django_db
def test_add_or_update_document_updates_existing_entry(
temp_llm_index_dir: Path,
@@ -739,7 +637,6 @@ class TestLlmIndexAddOrUpdateDocumentEmptyContent:
doc = MagicMock(spec=Document)
doc.id = 42
doc.root_document_id = None
# Must not raise
indexing.llm_index_add_or_update_document(doc)
+1 -40
View File
@@ -12,7 +12,6 @@ from paperless_ai.embedding import _normalize_llm_index_text
from paperless_ai.embedding import build_llm_index_text
from paperless_ai.embedding import get_configured_model_name
from paperless_ai.embedding import get_embedding_model
from paperless_testing.factories import DocumentFactory
@pytest.fixture
@@ -47,7 +46,6 @@ def mock_document():
doc.correspondent.name = "Test Correspondent"
doc.archive_serial_number = "12345"
doc.content = "This is the document content."
doc.get_effective_content.return_value = "This is the document content."
cf1 = MagicMock(__str__=lambda x: "Value1")
cf1.field = MagicMock()
@@ -282,7 +280,7 @@ def test_build_llm_index_text(mock_document):
def test_build_llm_index_text_normalizes_ocr_punctuation_runs(mock_document):
mock_document.get_effective_content.return_value = (
mock_document.content = (
"Introduction ................................................ 7\n"
"Hardware Limitation ________________________________________ 9\n"
"Keep short punctuation like INV-100 and ellipses..."
@@ -296,43 +294,6 @@ def test_build_llm_index_text_normalizes_ocr_punctuation_runs(mock_document):
assert "ellipses..." in result
@pytest.mark.django_db
class TestBuildLlmIndexTextVersions:
"""A root document is indexed with its effective content, like in the search index."""
def test_root_uses_the_newest_versions_content(self) -> None:
"""
GIVEN:
- A root document with two versions
WHEN:
- The LLM index text is built for the root
THEN:
- It contains the newest version's content and not the others'
"""
root = DocumentFactory(content="stale text")
DocumentFactory(root_document=root, version_index=1, content="older text")
DocumentFactory(root_document=root, version_index=2, content="latest text")
text = build_llm_index_text(root)
assert "latest text" in text
assert "stale text" not in text
assert "older text" not in text
def test_root_without_versions_uses_its_own_content(self) -> None:
"""
GIVEN:
- A root document without versions
WHEN:
- The LLM index text is built for it
THEN:
- It contains the document's own content
"""
root = DocumentFactory(content="own text")
assert "own text" in build_llm_index_text(root)
def test_normalize_llm_index_text_collapses_ocr_leaders_without_joining_lines():
assert _normalize_llm_index_text("A........B\nC____D----E") == "A B\nC D E"