Compare commits

..
Author SHA1 Message Date
stumpylog 51d1173438 Fixes the E2E test that depended on the old location 2026-10-24 15:17:57 -07:00
Trenton HandClaude Sonnet 5.5 72402ff9eb Chore: Drop the sample duplicate guard test
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 15:17:57 -07:00
Trenton HandClaude Sonnet 5.5 16994187c6 Chore: Use shared samples in tests that arrived from dev
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 15:17:57 -07:00
Trenton HandClaude Sonnet 5.5 577691a445 Chore: Tidy leftover parentheses and the samples module docstring
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 15:17:57 -07:00
Trenton HandClaude Sonnet 5.5 3b9f252f47 Chore: Remove duplicate and unreferenced test sample files
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 15:17:57 -07:00
Trenton HandClaude Sonnet 5.5 e396fce5ec Chore: Materialise duplicated media-tree samples from the shared copies
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 15:17:57 -07:00
Trenton HandClaude Sonnet 5.5 014231b88f Chore: Use the shared simple-digital.pdf in documents tests and drop the unreferenced simple.txt
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 15:17:57 -07:00
Trenton HandClaude Sonnet 5.5 64ca9caaf2 Chore: Move the four duplicated parser sample PDFs into a shared paperless_testing location
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 15:17:57 -07:00
143 changed files with 32177 additions and 37652 deletions

No files matched your search

+2 -2
View File
@@ -256,8 +256,8 @@ isort.force-single-line = true
[tool.codespell]
ignore-words-list = "criterias,afterall,valeu,ureue,equest,ure,assertIn,Oktober,commitish,NIN,nin,reprot"
skip = """\
src-ui/src/locale/*,src-ui/pnpm-lock.yaml,src-ui/e2e/*,src/paperless_mail/tests/samples/*,src/paperless/tests/samples\
/mail/*,src/documents/tests/samples/*,*.po,*.json\
src-ui/src/locale/*,src-ui/pnpm-lock.yaml,src-ui/e2e/*,src/paperless/tests/samples/mail/*,src/documents/tests/samples\
/*,src/paperless_testing/sample_files/*,*.po,*.json\
"""
write-changes = true
+3 -1
View File
@@ -134,7 +134,9 @@ def seed_database() -> None:
originals.mkdir(parents=True)
thumbnails = Path(os.environ["PAPERLESS_MEDIA_ROOT"]) / "documents" / "thumbnails"
thumbnails.mkdir(parents=True)
sample_pdf = SOURCE_ROOT / "documents" / "tests" / "samples" / "simple.pdf"
sample_pdf = (
SOURCE_ROOT / "paperless_testing" / "sample_files" / "simple-digital.pdf"
)
for document in documents:
shutil.copyfile(sample_pdf, originals / document.filename)
shutil.copyfile(
@@ -19,6 +19,7 @@ import {
PaperlessTaskTriggerSource,
PaperlessTaskType,
} from 'src/app/data/paperless-task'
import { Results } from 'src/app/data/results'
import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive'
import { PermissionsGuard } from 'src/app/guards/permissions.guard'
import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe'
@@ -152,6 +153,11 @@ const tasks: PaperlessTask[] = [
},
]
const paginatedTasks: Results<PaperlessTask> = {
count: tasks.length,
results: tasks,
}
const sectionCountResponse = {
all: 7,
needs_attention: 2,
@@ -198,7 +204,7 @@ describe('TasksComponent', () => {
}).compileComponents()
tasksService = TestBed.inject(TasksService)
reloadSpy = jest.spyOn(tasksService, 'reload').mockImplementation(() => {})
reloadSpy = jest.spyOn(tasksService, 'reload')
httpTestingController = TestBed.inject(HttpTestingController)
modalService = TestBed.inject(NgbModal)
router = TestBed.inject(Router)
@@ -208,6 +214,15 @@ describe('TasksComponent', () => {
jest.useFakeTimers()
fixture.detectChanges()
httpTestingController
.expectOne(
(req) =>
req.url === `${environment.apiBaseUrl}tasks/` &&
req.params.get('acknowledged') === 'false' &&
req.params.get('page_size') === '1000'
)
.flush(paginatedTasks)
httpTestingController
.expectOne(
(req) =>
@@ -344,11 +344,11 @@
ngbPopover="Tasks" i18n-ngbPopover [disablePopover]="!slimSidebarPopoversEnabled" placement="end"
container="body" triggers="mouseenter:mouseleave" popoverClass="popover-slim">
<i-bs class="me-2" name="list-task"></i-bs><span class="nav-link-label"><ng-container i18n>Tasks</ng-container></span>
@if (tasksService.needsAttentionTasksCount > 0 && !slimSidebarEnabled) {
<span class="badge bg-danger ms-2 d-inline flex-shrink-0">{{tasksService.needsAttentionTasksCount}}</span>
@if (tasksService.needsAttentionTasks.length > 0 && !slimSidebarEnabled) {
<span class="badge bg-danger ms-2 d-inline flex-shrink-0">{{tasksService.needsAttentionTasks.length}}</span>
}
@if (tasksService.needsAttentionTasksCount > 0 && slimSidebarEnabled) {
<span class="badge bg-danger position-absolute top-0 end-0 d-none d-md-block">{{tasksService.needsAttentionTasksCount}}</span>
@if (tasksService.needsAttentionTasks.length > 0 && slimSidebarEnabled) {
<span class="badge bg-danger position-absolute top-0 end-0 d-none d-md-block">{{tasksService.needsAttentionTasks.length}}</span>
}
</a>
</li>
@@ -588,8 +588,8 @@ describe('AppFrameComponent', () => {
it('should show tasks badge for needs-attention tasks', () => {
jest
.spyOn(tasksService, 'needsAttentionTasksCount', 'get')
.mockReturnValue(2)
.spyOn(tasksService, 'needsAttentionTasks', 'get')
.mockReturnValue([{} as any, {} as any])
fixture.detectChanges()
+82 -22
View File
@@ -9,7 +9,11 @@ import {
} from '@angular/common/http/testing'
import { TestBed } from '@angular/core/testing'
import { environment } from 'src/environments/environment'
import { PaperlessTaskType } from '../data/paperless-task'
import {
PaperlessTaskStatus,
PaperlessTaskTriggerSource,
PaperlessTaskType,
} from '../data/paperless-task'
import { TasksService } from './tasks.service'
describe('TasksService', () => {
@@ -34,23 +38,23 @@ describe('TasksService', () => {
httpTestingController.verify()
})
it('calls tasks status counts api endpoint on reload', () => {
it('calls tasks api endpoint on reload', () => {
tasksService.reload()
const req = httpTestingController.expectOne(
(req: HttpRequest<unknown>) =>
req.url === `${environment.apiBaseUrl}tasks/status_counts/` &&
req.params.get('acknowledged') === 'false'
req.url === `${environment.apiBaseUrl}tasks/` &&
req.params.get('acknowledged') === 'false' &&
req.params.get('page_size') === '1000'
)
expect(req.request.method).toEqual('GET')
req.flush({ all: 5, needs_attention: 3, in_progress: 1, completed: 1 })
expect(tasksService.needsAttentionTasksCount).toEqual(3)
req.flush({ count: 0, results: [] })
})
it('cancels an in-progress reload when reloading again', () => {
tasksService.reload()
const staleReload = httpTestingController.expectOne(
(req: HttpRequest<unknown>) =>
req.url === `${environment.apiBaseUrl}tasks/status_counts/`
req.url === `${environment.apiBaseUrl}tasks/`
)
tasksService.reload()
@@ -58,9 +62,9 @@ describe('TasksService', () => {
httpTestingController
.expectOne(
(req: HttpRequest<unknown>) =>
req.url === `${environment.apiBaseUrl}tasks/status_counts/`
req.url === `${environment.apiBaseUrl}tasks/`
)
.flush({ all: 0, needs_attention: 0, in_progress: 0, completed: 0 })
.flush({ count: 0, results: [] })
})
it('continues reloading after a reload request fails', () => {
@@ -68,7 +72,7 @@ describe('TasksService', () => {
httpTestingController
.expectOne(
(req: HttpRequest<unknown>) =>
req.url === `${environment.apiBaseUrl}tasks/status_counts/`
req.url === `${environment.apiBaseUrl}tasks/`
)
.flush('error', { status: 500, statusText: 'error' })
@@ -78,16 +82,16 @@ describe('TasksService', () => {
httpTestingController
.expectOne(
(req: HttpRequest<unknown>) =>
req.url === `${environment.apiBaseUrl}tasks/status_counts/`
req.url === `${environment.apiBaseUrl}tasks/`
)
.flush({ all: 0, needs_attention: 0, in_progress: 0, completed: 0 })
.flush({ count: 0, results: [] })
})
it('reloads after dismissing a task while a reload is already in progress', () => {
tasksService.reload()
const staleReload = httpTestingController.expectOne(
(req: HttpRequest<unknown>) =>
req.url === `${environment.apiBaseUrl}tasks/status_counts/` &&
req.url === `${environment.apiBaseUrl}tasks/` &&
req.params.get('acknowledged') === 'false'
)
@@ -100,12 +104,12 @@ describe('TasksService', () => {
httpTestingController
.expectOne(
(req: HttpRequest<unknown>) =>
req.url === `${environment.apiBaseUrl}tasks/status_counts/` &&
req.url === `${environment.apiBaseUrl}tasks/` &&
req.params.get('acknowledged') === 'false'
)
.flush({ all: 50, needs_attention: 42, in_progress: 3, completed: 5 })
.flush({ count: 0, results: [] })
expect(tasksService.needsAttentionTasksCount).toEqual(42)
expect(tasksService.needsAttentionTasks).toHaveLength(0)
})
it('calls acknowledge_tasks api endpoint on dismiss and reloads', () => {
@@ -122,10 +126,11 @@ describe('TasksService', () => {
httpTestingController
.expectOne(
(req: HttpRequest<unknown>) =>
req.url === `${environment.apiBaseUrl}tasks/status_counts/` &&
req.params.get('acknowledged') === 'false'
req.url === `${environment.apiBaseUrl}tasks/` &&
req.params.get('acknowledged') === 'false' &&
req.params.get('page_size') === '1000'
)
.flush({ all: 0, needs_attention: 0, in_progress: 0, completed: 0 })
.flush({ count: 0, results: [] })
})
it('calls acknowledge_tasks api endpoint on dismiss all and reloads', () => {
@@ -142,10 +147,65 @@ describe('TasksService', () => {
httpTestingController
.expectOne(
(req: HttpRequest<unknown>) =>
req.url === `${environment.apiBaseUrl}tasks/status_counts/` &&
req.params.get('acknowledged') === 'false'
req.url === `${environment.apiBaseUrl}tasks/` &&
req.params.get('acknowledged') === 'false' &&
req.params.get('page_size') === '1000'
)
.flush({ all: 0, needs_attention: 0, in_progress: 0, completed: 0 })
.flush({ count: 0, results: [] })
})
it('includes revoked tasks in needs attention', () => {
const mockTasks = [
{
task_type: PaperlessTaskType.SanityCheck,
trigger_source: PaperlessTaskTriggerSource.System,
status: PaperlessTaskStatus.Failure,
acknowledged: false,
task_id: '1235',
input_data: {},
date_created: new Date(),
related_document_ids: [],
},
{
task_type: PaperlessTaskType.MailFetch,
trigger_source: PaperlessTaskTriggerSource.Scheduled,
status: PaperlessTaskStatus.Revoked,
acknowledged: false,
task_id: '1236',
input_data: {},
date_created: new Date(),
related_document_ids: [],
},
{
task_type: PaperlessTaskType.EmptyTrash,
trigger_source: PaperlessTaskTriggerSource.Manual,
status: PaperlessTaskStatus.Success,
acknowledged: false,
task_id: '1238',
input_data: {},
date_created: new Date(),
related_document_ids: [],
},
]
tasksService.reload()
const req = httpTestingController.expectOne(
(req: HttpRequest<unknown>) =>
req.url === `${environment.apiBaseUrl}tasks/` &&
req.params.get('acknowledged') === 'false' &&
req.params.get('page_size') === '1000'
)
req.flush({ count: mockTasks.length, results: mockTasks })
expect(tasksService.needsAttentionTasks).toHaveLength(2)
expect(tasksService.needsAttentionTasks.map((task) => task.status)).toEqual(
expect.arrayContaining([
PaperlessTaskStatus.Failure,
PaperlessTaskStatus.Revoked,
])
)
})
it('supports running tasks', () => {
+33 -23
View File
@@ -5,12 +5,14 @@ import {
catchError,
finalize,
first,
map,
switchMap,
takeUntil,
tap,
} from 'rxjs/operators'
import {
PaperlessTask,
PaperlessTaskStatus,
PaperlessTaskStatusCounts,
PaperlessTaskType,
} from 'src/app/data/paperless-task'
@@ -25,42 +27,50 @@ export class TasksService {
private baseUrl: string = environment.apiBaseUrl
private endpoint: string = 'tasks'
private readonly defaultReloadPageSize = 1000
public loading: boolean = false
private readonly tasksStatusCounts = signal<PaperlessTaskStatusCounts>({
all: 0,
needs_attention: 0,
in_progress: 0,
completed: 0,
})
private readonly tasks = signal<PaperlessTask[]>([])
private readonly reloadNotifier = new Subject<void>()
private unsubscribeNotifer: Subject<any> = new Subject()
constructor() {
this.reloadNotifier
.pipe(switchMap(() => this.fetchUnacknowledgedTasksCounts()))
.subscribe((taskStatusCounts) => {
this.tasksStatusCounts.set(taskStatusCounts)
.pipe(
switchMap(() => {
this.loading = true
return this.http
.get<Results<PaperlessTask>>(`${this.baseUrl}${this.endpoint}/`, {
params: {
acknowledged: 'false',
page_size: this.defaultReloadPageSize,
},
})
.pipe(
map((response) => response.results),
takeUntil(this.unsubscribeNotifer),
catchError(() => EMPTY),
finalize(() => {
this.loading = false
})
)
})
)
.subscribe((tasks) => {
this.tasks.set(tasks)
})
}
private fetchUnacknowledgedTasksCounts(): Observable<PaperlessTaskStatusCounts> {
this.loading = true
return this.statusCounts({ acknowledged: false }).pipe(
takeUntil(this.unsubscribeNotifer),
catchError(() => EMPTY),
finalize(() => {
this.loading = false
})
public get needsAttentionTasks(): PaperlessTask[] {
return this.tasks().filter((t) =>
[PaperlessTaskStatus.Failure, PaperlessTaskStatus.Revoked].includes(
t.status
)
)
}
public get needsAttentionTasksCount(): number {
return this.tasksStatusCounts().needs_attention
}
public reload() {
this.reloadNotifier.next()
}
@@ -95,7 +105,7 @@ export class TasksService {
public dismissTasks(task_ids: Set<number>): Observable<any> {
return this.http
.post(`${this.baseUrl}${this.endpoint}/acknowledge/`, {
.post(`${this.baseUrl}tasks/acknowledge/`, {
tasks: [...task_ids],
})
.pipe(
@@ -109,7 +119,7 @@ export class TasksService {
public dismissAllTasks(): Observable<any> {
return this.http
.post(`${this.baseUrl}${this.endpoint}/acknowledge/`, {
.post(`${this.baseUrl}tasks/acknowledge/`, {
all: true,
})
.pipe(
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+38
View File
@@ -11,6 +11,8 @@ from typing import TYPE_CHECKING
import pytest
from paperless_testing import samples
if TYPE_CHECKING:
from collections.abc import Generator
from pathlib import Path
@@ -149,3 +151,39 @@ def fake_progress_manager(
monkeypatch.setattr("documents.tasks.ProgressManager", FakeProgressManager)
return FakeProgressManager
@pytest.fixture(scope="session")
def shared_samples_dir() -> Path:
"""Directory of sample files used by more than one app's tests."""
return samples.SHARED_SAMPLES_DIR
@pytest.fixture(scope="session")
def simple_digital_pdf_file() -> Path:
"""One-page PDF with a text layer."""
return samples.SIMPLE_DIGITAL_PDF
@pytest.fixture(scope="session")
def multi_page_digital_pdf_file() -> Path:
"""Three-page PDF with a text layer."""
return samples.MULTI_PAGE_DIGITAL_PDF
@pytest.fixture(scope="session")
def with_form_pdf_file() -> Path:
"""PDF containing a fillable form."""
return samples.WITH_FORM_PDF
@pytest.fixture(scope="session")
def multi_page_images_pdf_file() -> Path:
"""Multi-page PDF of scanned images, no text layer."""
return samples.MULTI_PAGE_IMAGES_PDF
@pytest.fixture(scope="session")
def thumbnail_webp_file() -> Path:
"""Small WebP thumbnail."""
return samples.THUMBNAIL_WEBP
+6 -10
View File
@@ -12,29 +12,25 @@ if TYPE_CHECKING:
from paperless_testing.dirs import PaperlessDirs
@pytest.fixture(scope="session")
def document_samples_dir() -> Path:
"""Path to the shared test sample documents."""
return Path(__file__).parent / "samples" / "documents"
@pytest.fixture()
def sample_doc(
paperless_dirs: "PaperlessDirs",
document_samples_dir: Path,
simple_digital_pdf_file: Path,
multi_page_images_pdf_file: Path,
thumbnail_webp_file: Path,
) -> "Document":
"""Create a document with valid files and matching checksums."""
with filelock.FileLock(paperless_dirs.media_lock):
shutil.copy(
document_samples_dir / "originals" / "0000001.pdf",
simple_digital_pdf_file,
paperless_dirs.originals_dir / "0000001.pdf",
)
shutil.copy(
document_samples_dir / "archive" / "0000001.pdf",
multi_page_images_pdf_file,
paperless_dirs.archive_dir / "0000001.pdf",
)
shutil.copy(
document_samples_dir / "thumbnails" / "0000001.webp",
thumbnail_webp_file,
paperless_dirs.thumbnail_dir / "0000001.webp",
)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.
-1
View File
@@ -1 +0,0 @@
This is a test file.
@@ -53,7 +53,7 @@ class TestBulkDownload(DirectoriesMixin, SampleDirMixin, APITestCase):
archive_checksum="D",
)
shutil.copy(self.SAMPLE_DIR / "simple.pdf", self.doc2.source_path)
shutil.copy(self.SIMPLE_PDF, self.doc2.source_path)
shutil.copy(self.SAMPLE_DIR / "simple.png", self.doc2b.source_path)
shutil.copy(self.SAMPLE_DIR / "simple.jpg", self.doc3.source_path)
shutil.copy(self.SAMPLE_DIR / "test_with_bom.pdf", self.doc3.archive_path)
+49 -98
View File
@@ -46,7 +46,6 @@ from documents.models import UiSettings
from documents.models import Workflow
from documents.models import WorkflowAction
from documents.models import WorkflowTrigger
from documents.search import get_backend
from documents.signals.handlers import run_workflows
from documents.tests.utils import ConsumeTaskMixin
from paperless_testing.dirs import DirectoriesMixin
@@ -57,6 +56,8 @@ from paperless_testing.http import read_streaming_response
from paperless_testing.permissions import grant_all_global
from paperless_testing.permissions import grant_global
from paperless_testing.permissions import grant_object
from paperless_testing.samples import SIMPLE_DIGITAL_PDF
from paperless_testing.samples import THUMBNAIL_WEBP
class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
@@ -67,70 +68,6 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
self.client.force_authenticate(user=self.user)
cache.clear()
def test_detail_save_indexes_final_workflow_state(self) -> None:
viewer = UserFactory()
grant_global(viewer, "view_document")
inbox = TagFactory(is_inbox_tag=True)
doc = DocumentFactory(owner=self.user, content="distinctiveword")
doc.tags.add(inbox)
trigger = WorkflowTrigger.objects.create(
type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED,
)
action = WorkflowAction.objects.create(assign_title="Workflow title")
action.assign_view_users.add(viewer)
action.remove_view_users.add(viewer)
workflow = Workflow.objects.create(name="Update document")
workflow.triggers.add(trigger)
workflow.actions.add(action)
backend = get_backend()
backend.add_or_update(doc)
for action_type in (
WorkflowAction.WorkflowActionType.ASSIGNMENT,
WorkflowAction.WorkflowActionType.REMOVAL,
WorkflowAction.WorkflowActionType.MOVE_TO_TRASH,
):
with self.subTest(action_type=action_type):
grant = action_type == WorkflowAction.WorkflowActionType.ASSIGNMENT
action.type = action_type
action.save()
trigger.filter_has_not_tags.set([inbox] if grant else [])
trigger.filter_has_tags.set([] if grant else [inbox])
self.client.force_authenticate(self.user)
response = self.client.patch(
f"/api/documents/{doc.pk}/",
{"tags": [] if grant else [inbox.pk]},
format="json",
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.client.force_authenticate(viewer)
self.assertEqual(
self.client.get(f"/api/documents/{doc.pk}/").status_code,
status.HTTP_200_OK if grant else status.HTTP_404_NOT_FOUND,
)
# Check the index directly: the API's DB permission filtering
# would otherwise hide stale grants and trashed index entries.
self.assertEqual(
list(backend.search_ids("distinctiveword", user=viewer)),
[doc.pk] if grant else [],
)
if grant:
response = self.client.get(
"/api/documents/",
{"query": "distinctiveword AND title:workflow"},
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(
[result["id"] for result in response.data["results"]],
[doc.pk],
)
elif action_type == WorkflowAction.WorkflowActionType.MOVE_TO_TRASH:
self.assertFalse(Document.objects.filter(pk=doc.pk).exists())
self.assertEqual(
list(backend.search_ids("distinctiveword", user=None)),
[],
)
def testDocuments(self) -> None:
response = self.client.get("/api/documents/").data
@@ -1917,7 +1854,11 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
id=str(uuid.uuid4()),
)
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SimpleUploadedFile(
"simple.pdf",
SIMPLE_DIGITAL_PDF.read_bytes(),
content_type="application/pdf",
) as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f},
@@ -1945,7 +1886,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
payload = SimpleUploadedFile(
"../../outside.pdf",
(Path(__file__).parent / "samples" / "simple.pdf").read_bytes(),
SIMPLE_DIGITAL_PDF.read_bytes(),
content_type="application/pdf",
)
@@ -1974,7 +1915,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
id=str(uuid.uuid4()),
)
pdf_bytes = (Path(__file__).parent / "samples" / "simple.pdf").read_bytes()
pdf_bytes = SIMPLE_DIGITAL_PDF.read_bytes()
boundary = "paperless-boundary"
payload = (
(
@@ -2050,7 +1991,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
def test_upload_insufficient_permissions(self) -> None:
self.client.force_authenticate(user=UserFactory(username="testuser2"))
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SIMPLE_DIGITAL_PDF.open("rb") as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f},
@@ -2063,7 +2004,11 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
id=str(uuid.uuid4()),
)
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SimpleUploadedFile(
"simple.pdf",
SIMPLE_DIGITAL_PDF.read_bytes(),
content_type="application/pdf",
) as f:
response = self.client.post(
"/api/documents/post_document/",
{
@@ -2096,7 +2041,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
id=str(uuid.uuid4()),
)
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SIMPLE_DIGITAL_PDF.open("rb") as f:
response = self.client.post(
"/api/documents/post_document/",
{"documenst": f},
@@ -2122,7 +2067,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
id=str(uuid.uuid4()),
)
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SIMPLE_DIGITAL_PDF.open("rb") as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f, "title": "my custom title"},
@@ -2142,7 +2087,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
)
c = Correspondent.objects.create(name="test-corres")
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SIMPLE_DIGITAL_PDF.open("rb") as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f, "correspondent": c.id},
@@ -2161,7 +2106,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
id=str(uuid.uuid4()),
)
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SIMPLE_DIGITAL_PDF.open("rb") as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f, "correspondent": 3456},
@@ -2176,7 +2121,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
)
dt = DocumentType.objects.create(name="invoice")
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SIMPLE_DIGITAL_PDF.open("rb") as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f, "document_type": dt.id},
@@ -2195,7 +2140,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
id=str(uuid.uuid4()),
)
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SIMPLE_DIGITAL_PDF.open("rb") as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f, "document_type": 34578},
@@ -2210,7 +2155,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
)
sp = StoragePath.objects.create(name="invoices")
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SIMPLE_DIGITAL_PDF.open("rb") as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f, "storage_path": sp.id},
@@ -2229,7 +2174,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
id=str(uuid.uuid4()),
)
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SIMPLE_DIGITAL_PDF.open("rb") as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f, "storage_path": 34578},
@@ -2245,7 +2190,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
t1 = Tag.objects.create(name="tag1")
t2 = Tag.objects.create(name="tag2")
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SIMPLE_DIGITAL_PDF.open("rb") as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f, "tags": [t2.id, t1.id]},
@@ -2266,7 +2211,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
t1 = Tag.objects.create(name="tag1")
t2 = Tag.objects.create(name="tag2")
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SIMPLE_DIGITAL_PDF.open("rb") as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f, "tags": [t2.id, t1.id, 734563]},
@@ -2290,7 +2235,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
0,
tzinfo=zoneinfo.ZoneInfo("America/Los_Angeles"),
)
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SIMPLE_DIGITAL_PDF.open("rb") as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f, "created": created},
@@ -2306,7 +2251,11 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
id=str(uuid.uuid4()),
)
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SimpleUploadedFile(
"simple.pdf",
SIMPLE_DIGITAL_PDF.read_bytes(),
content_type="application/pdf",
) as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f, "archive_serial_number": 500},
@@ -2333,7 +2282,11 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
data_type=CustomField.FieldDataType.STRING,
)
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SimpleUploadedFile(
"simple.pdf",
SIMPLE_DIGITAL_PDF.read_bytes(),
content_type="application/pdf",
) as f:
response = self.client.post(
"/api/documents/post_document/",
{
@@ -2388,7 +2341,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
w1.actions.add(action1)
w1.save()
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SIMPLE_DIGITAL_PDF.open("rb") as f:
response = self.client.post(
"/api/documents/post_document/",
{
@@ -2429,7 +2382,11 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
data_type=CustomField.FieldDataType.INT,
)
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SimpleUploadedFile(
"simple.pdf",
SIMPLE_DIGITAL_PDF.read_bytes(),
content_type="application/pdf",
) as f:
response = self.client.post(
"/api/documents/post_document/",
{
@@ -2478,7 +2435,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
]
for payload in error_payloads:
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SIMPLE_DIGITAL_PDF.open("rb") as f:
data = {"document": f, **payload}
response = self.client.post(
"/api/documents/post_document/",
@@ -2536,7 +2493,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
id=str(uuid.uuid4()),
)
with (Path(__file__).parent / "samples" / "simple.pdf").open("rb") as f:
with SIMPLE_DIGITAL_PDF.open("rb") as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f, "from_webui": True},
@@ -2575,14 +2532,8 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
archive_filename="archive.pdf",
)
source_file: Path = (
Path(__file__).parent
/ "samples"
/ "documents"
/ "thumbnails"
/ "0000001.webp"
)
archive_file: Path = Path(__file__).parent / "samples" / "simple.pdf"
source_file: Path = THUMBNAIL_WEBP
archive_file: Path = SIMPLE_DIGITAL_PDF
shutil.copy(source_file, doc.source_path)
shutil.copy(archive_file, doc.archive_path)
@@ -2615,7 +2566,7 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
mime_type="application/pdf",
)
shutil.copy(Path(__file__).parent / "samples" / "simple.pdf", doc.source_path)
shutil.copy(SIMPLE_DIGITAL_PDF, doc.source_path)
response = self.client.get(f"/api/documents/{doc.pk}/metadata/")
self.assertEqual(response.status_code, status.HTTP_200_OK)
@@ -4381,8 +4332,8 @@ class TestDocumentApi(DirectoriesMixin, ConsumeTaskMixin, APITestCase):
filename="test2.pdf",
)
archive_file = Path(__file__).parent / "samples" / "simple.pdf"
source_file = Path(__file__).parent / "samples" / "simple.pdf"
archive_file = SIMPLE_DIGITAL_PDF
source_file = SIMPLE_DIGITAL_PDF
shutil.copy(archive_file, doc.archive_path)
shutil.copy(source_file, doc2.source_path)
+8 -5
View File
@@ -12,6 +12,9 @@ from documents.tests.utils import SampleDirMixin
from paperless_testing.dirs import DirectoriesMixin
from paperless_testing.factories import UserFactory
from paperless_testing.permissions import grant_global
from paperless_testing.samples import MULTI_PAGE_DIGITAL_PDF
from paperless_testing.samples import SIMPLE_DIGITAL_PDF
from paperless_testing.samples import WITH_FORM_PDF
class TestEmail(DirectoriesMixin, SampleDirMixin, APITestCase):
@@ -42,15 +45,15 @@ class TestEmail(DirectoriesMixin, SampleDirMixin, APITestCase):
# Copy sample files to document paths (using different files to distinguish versions)
shutil.copy(
self.SAMPLE_DIR / "documents" / "originals" / "0000001.pdf",
SIMPLE_DIGITAL_PDF,
self.doc1.archive_path,
)
shutil.copy(
self.SAMPLE_DIR / "documents" / "originals" / "0000002.pdf",
MULTI_PAGE_DIGITAL_PDF,
self.doc1.source_path,
)
shutil.copy(
self.SAMPLE_DIR / "documents" / "originals" / "0000003.pdf",
WITH_FORM_PDF,
self.doc2.source_path,
)
@@ -377,7 +380,7 @@ class TestEmail(DirectoriesMixin, SampleDirMixin, APITestCase):
checksum="3",
filename="test3.pdf",
)
shutil.copy(self.SAMPLE_DIR / "simple.pdf", doc3.source_path)
shutil.copy(self.SIMPLE_PDF, doc3.source_path)
doc4 = Document.objects.create(
title="test1",
@@ -386,7 +389,7 @@ class TestEmail(DirectoriesMixin, SampleDirMixin, APITestCase):
checksum="4",
filename="test4.pdf",
)
shutil.copy(self.SAMPLE_DIR / "simple.pdf", doc4.source_path)
shutil.copy(self.SIMPLE_PDF, doc4.source_path)
response = self.client.post(
self.ENDPOINT,
+2 -2
View File
@@ -169,7 +169,7 @@ class TestBarcode(
- No barcodes detected
- No pages to split on
"""
test_file = self.SAMPLE_DIR / "simple.pdf"
test_file = self.SIMPLE_PDF
with self.get_reader(test_file) as reader:
reader.detect()
separator_page_numbers = reader.get_separation_pages()
@@ -461,7 +461,7 @@ class TestBarcode(
THEN:
- Nothing happens
"""
test_file = self.SAMPLE_DIR / "simple.pdf"
test_file = self.SIMPLE_PDF
with self.get_reader(test_file) as reader:
try:
+9 -30
View File
@@ -29,6 +29,9 @@ from documents.permissions import set_permissions_for_objects
from paperless_testing.dirs import DirectoriesMixin
from paperless_testing.factories import DocumentFactory
from paperless_testing.permissions import grant_object
from paperless_testing.samples import MULTI_PAGE_DIGITAL_PDF
from paperless_testing.samples import SIMPLE_DIGITAL_PDF
from paperless_testing.samples import WITH_FORM_PDF
class TestBulkEdit(DirectoriesMixin, TestCase):
@@ -706,47 +709,27 @@ class TestPDFActions(DirectoriesMixin, TestCase):
super().setUp()
sample1 = self.dirs.scratch_dir / "sample.pdf"
shutil.copy(
Path(__file__).parent
/ "samples"
/ "documents"
/ "originals"
/ "0000001.pdf",
SIMPLE_DIGITAL_PDF,
sample1,
)
sample1_archive = self.dirs.archive_dir / "sample_archive.pdf"
shutil.copy(
Path(__file__).parent
/ "samples"
/ "documents"
/ "originals"
/ "0000001.pdf",
SIMPLE_DIGITAL_PDF,
sample1_archive,
)
sample2 = self.dirs.scratch_dir / "sample2.pdf"
shutil.copy(
Path(__file__).parent
/ "samples"
/ "documents"
/ "originals"
/ "0000002.pdf",
MULTI_PAGE_DIGITAL_PDF,
sample2,
)
sample2_archive = self.dirs.archive_dir / "sample2_archive.pdf"
shutil.copy(
Path(__file__).parent
/ "samples"
/ "documents"
/ "originals"
/ "0000002.pdf",
MULTI_PAGE_DIGITAL_PDF,
sample2_archive,
)
sample3 = self.dirs.scratch_dir / "sample3.pdf"
shutil.copy(
Path(__file__).parent
/ "samples"
/ "documents"
/ "originals"
/ "0000003.pdf",
WITH_FORM_PDF,
sample3,
)
self.doc1 = Document.objects.create(
@@ -780,11 +763,7 @@ class TestPDFActions(DirectoriesMixin, TestCase):
)
img_doc_archive = self.dirs.archive_dir / "sample_image.pdf"
shutil.copy(
Path(__file__).parent
/ "samples"
/ "documents"
/ "originals"
/ "0000001.pdf",
SIMPLE_DIGITAL_PDF,
img_doc_archive,
)
self.img_doc = Document.objects.create(
+9 -28
View File
@@ -39,6 +39,9 @@ from paperless_testing.factories import TagFactory
from paperless_testing.factories import UserFactory
from paperless_testing.fakes.progress import FakeProgressManager
from paperless_testing.permissions import grant_object
from paperless_testing.samples import MULTI_PAGE_DIGITAL_PDF
from paperless_testing.samples import MULTI_PAGE_IMAGES_PDF
from paperless_testing.samples import SIMPLE_DIGITAL_PDF
class _BaseNewStyleParser:
@@ -115,9 +118,7 @@ class _BaseNewStyleParser:
class DummyParser(_BaseNewStyleParser):
_ARCHIVE_SRC = (
Path(__file__).parent / "samples" / "documents" / "archive" / "0000001.pdf"
)
_ARCHIVE_SRC = MULTI_PAGE_IMAGES_PDF
def parse(self, document_path, mime_type, *, produce_archive: bool = True) -> None:
self._text = "The Text"
@@ -203,33 +204,19 @@ class TestConsumer(
self.addCleanup(patcher.stop)
def get_test_file(self):
src = (
Path(__file__).parent
/ "samples"
/ "documents"
/ "originals"
/ "0000001.pdf"
)
src = SIMPLE_DIGITAL_PDF
dst = self.dirs.scratch_dir / "sample.pdf"
shutil.copy(src, dst)
return dst
def get_test_file2(self):
src = (
Path(__file__).parent
/ "samples"
/ "documents"
/ "originals"
/ "0000002.pdf"
)
src = MULTI_PAGE_DIGITAL_PDF
dst = self.dirs.scratch_dir / "sample2.pdf"
shutil.copy(src, dst)
return dst
def get_test_archive_file(self):
src = (
Path(__file__).parent / "samples" / "documents" / "archive" / "0000001.pdf"
)
src = MULTI_PAGE_IMAGES_PDF
dst = self.dirs.scratch_dir / "sample_archive.pdf"
shutil.copy(src, dst)
return dst
@@ -1124,7 +1111,7 @@ class TestConsumer(
@mock.patch("documents.consumer.get_parser_registry")
def test_similar_filenames(self, m) -> None:
shutil.copy(
Path(__file__).parent / "samples" / "simple.pdf",
SIMPLE_DIGITAL_PDF,
settings.CONSUMPTION_DIR / "simple.pdf",
)
shutil.copy(
@@ -1665,13 +1652,7 @@ class TestConsumerRemoteOCR(
self.addCleanup(patcher.stop)
def _consume(self, *, overrides: DocumentMetadataOverrides | None = None) -> bool:
src = (
Path(__file__).parent
/ "samples"
/ "documents"
/ "originals"
/ "0000001.pdf"
)
src = SIMPLE_DIGITAL_PDF
dst = self.dirs.scratch_dir / "sample.pdf"
shutil.copy(src, dst)
+5 -2
View File
@@ -37,12 +37,15 @@ class TestDoubleSided(
self.double_sided_dir.mkdir()
self.staging_file = self.dirs.scratch_dir / STAGING_FILE_NAME
def _sample(self, name: str) -> Path:
return self.SIMPLE_PDF if name == "simple.pdf" else self.SAMPLE_DIR / name
def consume_file(self, srcname, dstname: str | Path = "foo.pdf"):
"""
Starts the consume process and also ensures the
destination file does not exist afterwards
"""
src = self.SAMPLE_DIR / srcname
src = self._sample(srcname)
dst = self.double_sided_dir / dstname
dst.parent.mkdir(parents=True, exist_ok=True)
shutil.copy(src, dst)
@@ -57,7 +60,7 @@ class TestDoubleSided(
return msg
def create_staging_file(self, src="double-sided-odd.pdf", datetime=None) -> None:
shutil.copy(self.SAMPLE_DIR / src, self.staging_file)
shutil.copy(self._sample(src), self.staging_file)
if datetime is None:
datetime = dt.datetime.now()
os.utime(str(self.staging_file), (datetime.timestamp(),) * 2)
+2 -1
View File
@@ -23,8 +23,9 @@ 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
from paperless_testing.samples import SIMPLE_DIGITAL_PDF
sample_file: Path = Path(__file__).parent / "samples" / "simple.pdf"
sample_file: Path = SIMPLE_DIGITAL_PDF
@pytest.mark.management
+21 -80
View File
@@ -59,6 +59,7 @@ from paperless_testing.dirs import paperless_environment
from paperless_testing.factories import DocumentBarcodeFactory
from paperless_testing.factories import DocumentFactory
from paperless_testing.permissions import grant_object
from paperless_testing.samples import install_document_samples
@pytest.mark.management
@@ -204,10 +205,7 @@ class TestExportImport(
def test_exporter(self, *, use_filename_format=False) -> None:
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
num_permission_objects = Permission.objects.count()
@@ -311,10 +309,7 @@ class TestExportImport(
def test_exporter_with_filename_format(self) -> None:
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
with override_settings(
FILENAME_FORMAT="{created_year}/{correspondent}/{title}",
@@ -323,10 +318,7 @@ class TestExportImport(
def test_exporter_includes_share_links_and_bundles(self) -> None:
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
share_link = ShareLink.objects.create(
slug="share-link-slug",
@@ -425,10 +417,7 @@ class TestExportImport(
def test_update_export_changed_time(self) -> None:
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
self._do_export()
self.assertIsFile(self.target / "manifest.json")
@@ -464,10 +453,7 @@ class TestExportImport(
def test_update_export_changed_checksum(self) -> None:
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
self._do_export()
@@ -494,10 +480,7 @@ class TestExportImport(
def test_update_export_deleted_document(self) -> None:
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
manifest = self._do_export()
@@ -529,10 +512,7 @@ class TestExportImport(
@override_settings(FILENAME_FORMAT="{title}/{correspondent}")
def test_update_export_changed_location(self) -> None:
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
self._do_export(use_filename_format=True)
self.assertIsFile(self.target / "wow1" / "c.pdf")
@@ -574,10 +554,7 @@ class TestExportImport(
- Zipfile contains exported files
"""
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
args = ["document_exporter", self.target, "--zip"]
@@ -606,10 +583,7 @@ class TestExportImport(
- Zipfile contains exported files
"""
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
args = ["document_exporter", self.target, "--zip", "--use-filename-format"]
@@ -645,10 +619,7 @@ class TestExportImport(
- The existing file and directory in target are removed
"""
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
# Create stuff in target directory
existing_file = self.target / "test.txt"
@@ -744,10 +715,7 @@ class TestExportImport(
- Documents can be imported again
"""
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
manifest = self._do_export()
has_archive = False
@@ -790,10 +758,7 @@ class TestExportImport(
- Documents can be imported again
"""
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
manifest = self._do_export()
has_thumbnail = False
@@ -838,10 +803,7 @@ class TestExportImport(
- Documents can be imported again
"""
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
manifest = self._do_export(split_manifest=True)
has_document = False
@@ -866,10 +828,7 @@ class TestExportImport(
def _export_import_barcodes(self, *, split_manifest: bool) -> None:
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
DocumentBarcodeFactory(document=self.d1, value="https://example.com")
DocumentBarcodeFactory(document=self.d2, page=2, value="DE8937")
@@ -905,10 +864,7 @@ class TestExportImport(
- Documents can be imported again
"""
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
self._do_export(use_folder_prefix=True)
@@ -935,10 +891,7 @@ class TestExportImport(
- Documents can be imported again
"""
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
self._do_export(use_folder_prefix=True, split_manifest=True)
@@ -965,10 +918,7 @@ class TestExportImport(
"""
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
num_content_type_objects = ContentType.objects.count()
num_permission_objects = Permission.objects.count()
@@ -1005,10 +955,7 @@ class TestExportImport(
def test_exporter_with_auditlog_disabled(self) -> None:
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
with override_settings(
AUDIT_LOG_ENABLED=False,
@@ -1028,10 +975,7 @@ class TestExportImport(
survive the round-trip with deleted_at preserved
"""
shutil.rmtree(Path(self.dirs.media_dir) / "documents")
shutil.copytree(
Path(__file__).parent / "samples" / "documents",
Path(self.dirs.media_dir) / "documents",
)
install_document_samples(Path(self.dirs.media_dir) / "documents")
# d1 has self.note and self.cfi1 attached via setUp
self.d1.delete()
@@ -1075,10 +1019,7 @@ class TestExportImport(
"""
shutil.rmtree(self.dirs.media_dir / "documents")
shutil.copytree(
self.SAMPLE_DIR / "documents",
self.dirs.media_dir / "documents",
)
install_document_samples(self.dirs.media_dir / "documents")
_ = self._do_export(data_only=True)
@@ -11,6 +11,7 @@ from documents.models import Document
from documents.parsers import get_default_thumbnail
from paperless_testing.assertions import FileSystemAssertsMixin
from paperless_testing.dirs import DirectoriesMixin
from paperless_testing.samples import SIMPLE_DIGITAL_PDF
@pytest.mark.management
@@ -24,7 +25,7 @@ class TestMakeThumbnails(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
filename="test.pdf",
)
shutil.copy(
Path(__file__).parent / "samples" / "simple.pdf",
SIMPLE_DIGITAL_PDF,
self.d1.source_path,
)
@@ -36,7 +37,7 @@ class TestMakeThumbnails(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
filename="test2.pdf",
)
shutil.copy(
Path(__file__).parent / "samples" / "simple.pdf",
SIMPLE_DIGITAL_PDF,
self.d2.source_path,
)
+5 -23
View File
@@ -21,6 +21,7 @@ from documents.tests.helpers import dummy_preprocess
from paperless_testing.assertions import FileSystemAssertsMixin
from paperless_testing.dirs import DirectoriesMixin
from paperless_testing.factories import DocumentFactory
from paperless_testing.samples import SIMPLE_DIGITAL_PDF
@pytest.mark.django_db
@@ -229,20 +230,12 @@ class TestUpdateContent(DirectoriesMixin, TestCase):
"""
sample1 = self.dirs.scratch_dir / "sample.pdf"
shutil.copy(
Path(__file__).parent
/ "samples"
/ "documents"
/ "originals"
/ "0000001.pdf",
SIMPLE_DIGITAL_PDF,
sample1,
)
sample1_archive = self.dirs.archive_dir / "sample_archive.pdf"
shutil.copy(
Path(__file__).parent
/ "samples"
/ "documents"
/ "originals"
/ "0000001.pdf",
SIMPLE_DIGITAL_PDF,
sample1_archive,
)
doc = Document.objects.create(
@@ -270,11 +263,7 @@ class TestUpdateContent(DirectoriesMixin, TestCase):
"""
sample1 = self.dirs.scratch_dir / "sample.pdf"
shutil.copy(
Path(__file__).parent
/ "samples"
/ "documents"
/ "originals"
/ "0000001.pdf",
SIMPLE_DIGITAL_PDF,
sample1,
)
doc = Document.objects.create(
@@ -290,14 +279,7 @@ class TestUpdateContent(DirectoriesMixin, TestCase):
def _create_root_with_version(self) -> tuple[Document, Document]:
sample1 = self.dirs.scratch_dir / "sample.pdf"
shutil.copy(
Path(__file__).parent
/ "samples"
/ "documents"
/ "originals"
/ "0000001.pdf",
sample1,
)
shutil.copy(SIMPLE_DIGITAL_PDF, sample1)
root = DocumentFactory(content="root content", mime_type="application/pdf")
version = DocumentFactory(
content="my document",
+27 -27
View File
@@ -178,7 +178,7 @@ class TestWorkflows(
self.assertEqual(action.__str__(), "WorkflowAction 1")
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
@@ -290,7 +290,7 @@ class TestWorkflows(
w.save()
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
@@ -409,7 +409,7 @@ class TestWorkflows(
w2.save()
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
@@ -478,7 +478,7 @@ class TestWorkflows(
w.save()
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
@@ -531,7 +531,7 @@ class TestWorkflows(
w.save()
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
@@ -608,7 +608,7 @@ class TestWorkflows(
w.save()
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
@@ -687,7 +687,7 @@ class TestWorkflows(
w.save()
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
@@ -765,7 +765,7 @@ class TestWorkflows(
w.save()
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
@@ -876,7 +876,7 @@ class TestWorkflows(
w.save()
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
@@ -928,7 +928,7 @@ class TestWorkflows(
generated = generate_unique_filename(doc)
destination = (settings.ORIGINALS_DIR / generated).resolve()
create_source_path_directory(destination)
shutil.copy(self.SAMPLE_DIR / "simple.pdf", destination)
shutil.copy(self.SIMPLE_PDF, destination)
Document.objects.filter(pk=doc.pk).update(filename=generated.as_posix())
doc.refresh_from_db()
@@ -2023,7 +2023,7 @@ class TestWorkflows(
superuser = UserFactory(username="superuser", superuser=True)
self.client.force_authenticate(user=superuser)
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
tasks.consume_file(
@@ -3009,7 +3009,7 @@ class TestWorkflows(
generated = generate_unique_filename(doc)
destination = (settings.ORIGINALS_DIR / generated).resolve()
create_source_path_directory(destination)
shutil.copy(self.SAMPLE_DIR / "simple.pdf", destination)
shutil.copy(self.SIMPLE_PDF, destination)
Document.objects.filter(pk=doc.pk).update(filename=generated.as_posix())
doc.refresh_from_db()
doc.tags.set([self.t1, self.t2])
@@ -3073,7 +3073,7 @@ class TestWorkflows(
generated = generate_unique_filename(doc)
destination = (settings.ORIGINALS_DIR / generated).resolve()
create_source_path_directory(destination)
shutil.copy(self.SAMPLE_DIR / "simple.pdf", destination)
shutil.copy(self.SIMPLE_PDF, destination)
Document.objects.filter(pk=doc.pk).update(filename=generated.as_posix())
doc.refresh_from_db()
doc.tags.set([self.t1])
@@ -3222,7 +3222,7 @@ class TestWorkflows(
w.save()
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
@@ -3346,7 +3346,7 @@ class TestWorkflows(
w.save()
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
@@ -3496,7 +3496,7 @@ class TestWorkflows(
workflow.actions.set([assignment_action, email_action])
temp_working_copy = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "working-copy.pdf",
)
@@ -3596,7 +3596,7 @@ class TestWorkflows(
# move the file
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
@@ -3704,7 +3704,7 @@ class TestWorkflows(
generated = generate_unique_filename(doc)
destination = (settings.ORIGINALS_DIR / generated).resolve()
create_source_path_directory(destination)
shutil.copy(self.SAMPLE_DIR / "simple.pdf", destination)
shutil.copy(self.SIMPLE_PDF, destination)
Document.objects.filter(pk=doc.pk).update(filename=generated.as_posix())
run_workflows(WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED, doc)
@@ -3915,7 +3915,7 @@ class TestWorkflows(
w.save()
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
@@ -4036,7 +4036,7 @@ class TestWorkflows(
w.save()
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
@@ -4387,7 +4387,7 @@ class TestWorkflows(
w.save()
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
@@ -4835,7 +4835,7 @@ class TestWorkflows(
w.save()
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
@@ -5027,7 +5027,7 @@ class TestWorkflows(
# Create a test file to be consumed
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
test_file_path = Path(test_file)
@@ -5091,7 +5091,7 @@ class TestWorkflows(
# Create a test file to be consumed
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple2.pdf",
)
test_file_path = Path(test_file)
@@ -5529,7 +5529,7 @@ class TestDateWorkflowLocalization(
)
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
tmp_path / "simple.pdf",
)
@@ -5596,7 +5596,7 @@ class TestRemoteOCRWorkflowAction(DirectoriesMixin, SampleDirMixin, APITestCase)
self._make_workflow(WorkflowTrigger.WorkflowTriggerType.CONSUMPTION)
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
overrides = DocumentMetadataOverrides()
@@ -5814,7 +5814,7 @@ class TestApplyAISuggestionsWorkflowAction(
)
test_file = shutil.copy(
self.SAMPLE_DIR / "simple.pdf",
self.SIMPLE_PDF,
self.dirs.scratch_dir / "simple.pdf",
)
+3
View File
@@ -11,6 +11,7 @@ from documents.data_models import ConsumableDocument
from documents.data_models import DocumentMetadataOverrides
from documents.data_models import DocumentSource
from paperless_testing.fakes.progress import FakeProgressManager
from paperless_testing.samples import SIMPLE_DIGITAL_PDF
class ConsumeTaskMixin:
@@ -53,6 +54,8 @@ class SampleDirMixin:
BARCODE_SAMPLE_DIR = SAMPLE_DIR / "barcodes"
SIMPLE_PDF = SIMPLE_DIGITAL_PDF
class GetConsumerMixin:
@contextmanager
+2 -8
View File
@@ -1304,19 +1304,13 @@ class DocumentViewSet(
from documents.search import get_backend
get_backend().add_or_update(refreshed_doc)
document_updated.send(
sender=self.__class__,
document=refreshed_doc,
)
# Index the final workflow state, including deletion.
backend = get_backend()
final_doc = Document.objects.filter(pk=root_doc.pk).first()
if final_doc is None:
backend.remove(root_doc.pk)
else:
backend.add_or_update(final_doc)
return response
def list(self, request, *args, **kwargs):
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\n"
"Last-Translator: \n"
"Language-Team: Afrikaans\n"
"Language: af_ZA\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr "Ongeldige kleur."
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr "Lêertipe %(type)s word nie ondersteun nie"
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2390
#: documents/serialisers.py:2420
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2412
#: documents/serialisers.py:2442
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr "Ongeldige veranderlike bespeur."
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1916,40 +1916,40 @@ msgstr ""
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4909
#: documents/views.py:4945
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr ""
@@ -2241,151 +2241,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr "Engels (VS)"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr "Arabies"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr "Belorussies"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr "Katalaans"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr "Tsjeggies"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr "Deens"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr "Duits"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr ""
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr "Engels (GB)"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr "Spaans"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr "Fins"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr "Frans"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr "Italiaans"
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr "Luxemburgs"
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr ""
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr "Nederlands"
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr "Pools"
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr "Portugees (Brasilië)"
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr "Portugees"
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr "Roemeens"
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr "Russies"
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr ""
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr "Sloweens"
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr "Serwies"
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr "Sweeds"
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr "Turks"
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr ""
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr "Vereenvoudigde Sjinees"
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr ""
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\n"
"Last-Translator: \n"
"Language-Team: Amharic\n"
"Language: am_ET\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2390
#: documents/serialisers.py:2420
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2412
#: documents/serialisers.py:2442
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr ""
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1916,40 +1916,40 @@ msgstr ""
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4909
#: documents/views.py:4945
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr ""
@@ -2241,151 +2241,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr ""
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr ""
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr ""
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr ""
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr ""
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr ""
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr ""
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr ""
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr ""
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr ""
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr ""
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr ""
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr ""
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr ""
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr ""
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr ""
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr ""
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr ""
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr ""
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr ""
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr ""
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr ""
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr ""
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr ""
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr ""
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr ""
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr ""
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\n"
"Last-Translator: \n"
"Language-Team: Arabic\n"
"Language: ar_SA\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr "لون خاطئ."
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr "نوع الملف %(type)s غير مدعوم"
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2390
#: documents/serialisers.py:2420
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2412
#: documents/serialisers.py:2442
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr "اكتشاف متغير خاطئ."
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1917,40 +1917,40 @@ msgstr "كخطوة أخيرة، يرجى ملء النموذج التالي:"
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4909
#: documents/views.py:4945
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr ""
@@ -2242,151 +2242,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "إعدادات التطبيق paperless"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr "الإنجليزية (الولايات المتحدة)"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr "العربية"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr "اللغة الأفريقانية"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr "البيلاروسية"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr "البلغارية"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr "اللغة الكتالونية"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr "التشيكية"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr "الدانماركية"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr "الألمانية"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr "اليونانية"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr "الإنجليزية (المملكة المتحدة)"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr "الإسبانية"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr "الفنلندية"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr "الفرنسية"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr "المجرية"
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr "الإيطالية"
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr "اليابانية"
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr "اللوكسمبرجية"
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr "النرويجية"
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr "الهولندية"
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr "البولندية"
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr "البرتغالية (البرازيل)"
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr "البرتغالية"
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr "الرومانية"
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr "الروسية"
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr "السلوفاكية"
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr "السلوفانية"
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr "الصربية"
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr "السويدية"
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr "التركية"
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr "الأوكرانية"
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr "الصينية المبسطة"
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr ""
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\n"
"Last-Translator: \n"
"Language-Team: Belarusian\n"
"Language: be_BY\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr "Няправільны колер."
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr "Тып файла %(type)s не падтрымліваецца"
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2390
#: documents/serialisers.py:2420
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2412
#: documents/serialisers.py:2442
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr "Выяўлена няправільная зменная."
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1916,40 +1916,40 @@ msgstr ""
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4909
#: documents/views.py:4945
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr ""
@@ -2241,151 +2241,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr "Англійская (ЗША)"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr ""
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr "Беларуская"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr ""
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr "Чэшская"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr "Дацкая"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr "Нямецкая"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr ""
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr "Англійская (Вялікабрытанія)"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr "Іспанская"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr "Французская"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr "Італьянская"
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr "Люксембургская"
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr ""
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr "Нідэрландская"
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr "Польская"
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr "Партугальская (Бразілія)"
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr "Партугальская"
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr "Румынская"
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr "Руская"
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr ""
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr "Славенская"
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr "Сербская"
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr "Шведская"
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr "Турэцкая"
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr ""
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr "Кітайская спрошчаная"
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr ""
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\n"
"Last-Translator: \n"
"Language-Team: Bulgarian\n"
"Language: bg_BG\n"
@@ -1635,48 +1635,48 @@ msgstr "стартиране на работния процес"
msgid "workflow runs"
msgstr "стартиране на работните процеси"
#: documents/serialisers.py:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr "Невалиден цвят."
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr "Файловия тип %(type)s не се поддържа"
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2390
#: documents/serialisers.py:2420
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2412
#: documents/serialisers.py:2442
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr "Засечена е невалидна променлива."
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1917,40 +1917,40 @@ msgstr "Като последна стъпка, моля, попълнете с
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4909
#: documents/views.py:4945
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr ""
@@ -2242,151 +2242,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "настройки на софтуера"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr "Английски (САЩ)"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr "Арабски"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr "Африканс"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr "Беларуски"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr "Български"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr "Каталунски"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr "Чешки"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr "Датски"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr "Немски"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr "Гръцки"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr "Английски (Великобритания)"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr "Испански"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr "Финландски"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr "Френски"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr "Унгарски"
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr "Италиански"
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr "Японски"
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr "Корейски"
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr "Люксембургски"
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr "Норвежки"
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr "Холандски"
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr "Полски"
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr "Португалски (Бразилия)"
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr "Португалски"
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr "Румънски"
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr "Руски"
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr "Словашки"
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr "Словенски"
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr "Сръбски"
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr "Шведски"
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr "Турски"
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr "Украински"
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr "Китайски опростен"
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr "Китайски традиционен"
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\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:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Permisos insuficients."
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr "Color Invàlid."
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tipus arxiu %(type)s no suportat"
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, 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:2390
#: documents/serialisers.py:2420
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Camp personalitzat amb ID %(id)s no existeix"
#: documents/serialisers.py:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
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:2412
#: documents/serialisers.py:2442
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:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr "Variable detectada invàlida."
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr "Duplicat d'identificadors de documents no permès."
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Documents no trobats: %(ids)s"
@@ -1917,40 +1917,40 @@ msgstr "Com a pas final, completa el següent formulari:"
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
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:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr "Invalid more_like_id"
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr "Configuració AI invàlida."
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Permisos insuficients per compartir document %(id)s."
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr "Paquet ja s'està processant."
#: documents/views.py:4909
#: documents/views.py:4945
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:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr "El paquet d'enllaç no està disponible."
@@ -2242,151 +2242,151 @@ msgstr "Estableix temps d'espera en segons"
msgid "paperless application settings"
msgstr "configuració de l'aplicació paperless"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr "Anglès (US)"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr "Àrab"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr "Africà"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr "Bielorús"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr "Búlgar"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr "Català"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr "Txec"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr "Danès"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr "Alemany"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr "Grec"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr "Anglès (GB)"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr "Espanyol"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr "Persa"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr "Finès"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr "Francès"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr "Hongarès"
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr "Indonesi"
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr "Italià"
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr "Japonès"
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr "Coreà"
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr "Luxemburguès"
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr "Noruec"
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr "Holandès"
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr "Polonès"
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr "Portuguès (Brasil)"
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr "Portuguès"
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr "Romanès"
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr "Rus"
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr "Eslovac"
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr "Eslovè"
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr "Serbi"
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr "Suec"
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr "Turc"
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr "Ucranià"
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr "Vietnamita"
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr "Xinès Simplificat"
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr "Xinès tradicional"
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\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:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Nedostatečná oprávnění."
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr "Neplatná barva."
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr "Typ souboru %(type)s není podporován"
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, 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:2390
#: documents/serialisers.py:2420
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Vlastní pole s ID %(id)s neexistuje"
#: documents/serialisers.py:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
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:2412
#: documents/serialisers.py:2442
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:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr "Zjištěna neplatná proměnná."
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1917,40 +1917,40 @@ msgstr "Jako poslední krok vyplňte následující formulář:"
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, 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:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4909
#: documents/views.py:4945
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr ""
@@ -2242,151 +2242,151 @@ msgstr "Nastaví časový limit LLM v sekundách"
msgid "paperless application settings"
msgstr "nastavení aplikace paperless"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr "Angličtina (US)"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr "Arabština"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr "Afrikánština"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr "Běloruština"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr "Bulharština"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr "Katalánština"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr "Čeština"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr "Dánština"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr "Němčina"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr "Řečtina"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr "Angličtina (GB)"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr "Španělština"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr "Perština"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr "Finština"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr "Francouzština"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr "Maďarština"
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr "Indonéština"
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr "Italština"
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr "Japonština"
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr "Korejština"
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr "Lucemburština"
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr "Norština"
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr "Holandština"
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr "Polština"
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr "Portugalština (Brazílie)"
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr "Portugalština"
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr "Rumunština"
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr "Ruština"
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr "Slovenština"
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr "Slovinština"
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr "Srbština"
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr "Švédština"
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr "Turečtina"
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr "Ukrajinština"
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr "Vietnamština"
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr "Čínština (zjednodušená)"
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr "Čínština (tradiční)"
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\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:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr "Ugyldig farve."
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr "Filtype %(type)s understøttes ikke"
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2390
#: documents/serialisers.py:2420
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2412
#: documents/serialisers.py:2442
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr "Ugyldig variabel fundet."
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1917,40 +1917,40 @@ msgstr "Som sidste trin, udfyld venligst flg. formular:"
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4909
#: documents/views.py:4945
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr ""
@@ -2242,151 +2242,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "paperless-applikationsindstillinger"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr "Engelsk (USA)"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr ""
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr "Afrikaans"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr "Hviderussisk"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr "Bulgarsk"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr "Katalansk"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr "Tjekkisk"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr "Dansk"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr "Tysk"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr "Græsk"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr "Engelsk (GB)"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr "Spansk"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr "Finsk"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr "Fransk"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr "Ungarsk"
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr "Italiensk"
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr "Japansk"
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr "Koreansk"
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr "Luxemburgsk"
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr "Norsk"
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr "Hollandsk"
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr "Polsk"
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr "Portugisisk (Brasilien)"
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr "Portugisisk"
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr "Romansk"
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr "Russisk"
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr "Slovakisk"
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr "Slovensk"
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr "Serbisk"
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr "Svensk"
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr "Tyrkisk"
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr "Ukrainsk"
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr "Kinesisk, forenklet"
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr "Kinesisk, traditionelt"
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\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:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Unzureichende Berechtigungen."
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr "Ungültige Farbe."
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr "Dateityp %(type)s nicht unterstützt"
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, 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:2390
#: documents/serialisers.py:2420
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Benutzerdefiniertes Feld mit ID %(id)s existiert nicht"
#: documents/serialisers.py:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
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:2412
#: documents/serialisers.py:2442
msgid "Some custom fields don't exist or were specified twice."
msgstr "Einige benutzerdefinierte Felder existieren nicht oder wurden zweimal angegeben."
#: documents/serialisers.py:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr "Ungültige Variable erkannt."
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr "Doppelte Dokumentbezeichner sind nicht erlaubt."
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumente nicht gefunden: %(ids)s"
@@ -1917,40 +1917,40 @@ msgstr "Bitte füllen Sie zum Abschluss folgendes Formular aus:"
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
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:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr "Ungültige more_like_id"
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr "Ungültige KI-Konfiguration."
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Unzureichende Berechtigungen, um Dokument %(id)s zu teilen."
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr "Paket wird bereits verarbeitet."
#: documents/views.py:4909
#: documents/views.py:4945
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:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr "Das Freigabelink-Paket ist nicht verfügbar."
@@ -2242,151 +2242,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "Paperless-ngx-Anwendungseinstellungen"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr "Englisch (US)"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr "Arabisch"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr "Afrikanisch"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr "Belarussisch"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr "Bulgarisch"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr "Katalanisch"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr "Tschechisch"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr "Dänisch"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr "Deutsch"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr "Griechisch"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr "Englisch (UK)"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr "Spanisch"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr "Persisch"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr "Finnisch"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr "Französisch"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr "Ungarisch"
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr "Indonesisch"
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr "Italienisch"
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr "Japanisch"
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr "Koreanisch"
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr "Luxemburgisch"
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr "Norwegisch"
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr "Niederländisch"
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr "Polnisch"
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr "Portugiesisch (Brasilien)"
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr "Portugiesisch"
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr "Rumänisch"
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr "Russisch"
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr "Slowakisch"
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr "Slowenisch"
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr "Serbisch"
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr "Schwedisch"
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr "Türkisch"
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr "Ukrainisch"
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr "Vietnamesisch"
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr "Chinesisch (vereinfacht)"
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr "Chinesisch (traditionell)"
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\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:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Unzureichende Berechtigungen."
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr "Ungültige Farbe."
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr "Dateityp %(type)s nicht unterstützt"
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "Zusatzfeld-ID muss eine Ganzzahl sein: %(id)s"
#: documents/serialisers.py:2390
#: documents/serialisers.py:2420
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Zusatzfeld mit ID %(id)s existiert nicht"
#: documents/serialisers.py:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
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:2412
#: documents/serialisers.py:2442
msgid "Some custom fields don't exist or were specified twice."
msgstr "Einige Zusatzfelder existieren nicht oder wurden zweimal angegeben."
#: documents/serialisers.py:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr "Ungültige Variable erkannt."
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr "Doppelte Dokumentbezeichner sind nicht erlaubt."
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumente nicht gefunden: %(ids)s"
@@ -1917,40 +1917,40 @@ msgstr "Bitte füllen Sie zum Abschluss folgendes Formular aus:"
msgid ", "
msgstr ", "
#: documents/views.py:315
#: documents/views.py:318
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:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr "Ungültige more_like_id"
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr "Ungültige KI-Konfiguration."
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr "Zeitüberschreitung bei der KI-Backendanfrage."
#: documents/views.py:1688
#: documents/views.py:1726
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:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Unzureichende Berechtigungen, um Dokument %(id)s zu teilen."
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr "Paket wird bereits verarbeitet."
#: documents/views.py:4909
#: documents/views.py:4945
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:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr "Das Freigabelink-Paket ist nicht verfügbar."
@@ -2242,151 +2242,151 @@ msgstr "Legt das LLM-Zeitlimit in Sekunden fest"
msgid "paperless application settings"
msgstr "Paperless-ngx-Anwendungseinstellungen"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr "Englisch (US)"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr "Arabisch"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr "Afrikanisch"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr "Belarussisch"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr "Bulgarisch"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr "Katalanisch"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr "Tschechisch"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr "Dänisch"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr "Deutsch"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr "Griechisch"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr "Englisch (UK)"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr "Spanisch"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr "Persisch"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr "Finnisch"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr "Französisch"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr "Ungarisch"
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr "Indonesisch"
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr "Italienisch"
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr "Japanisch"
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr "Koreanisch"
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr "Luxemburgisch"
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr "Norwegisch"
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr "Niederländisch"
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr "Polnisch"
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr "Portugiesisch (Brasilien)"
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr "Portugiesisch"
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr "Rumänisch"
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr "Russisch"
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr "Slowakisch"
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr "Slowenisch"
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr "Serbisch"
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr "Schwedisch"
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr "Türkisch"
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr "Ukrainisch"
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr "Vietnamesisch"
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr "Chinesisch (vereinfacht)"
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr "Chinesisch (traditionell)"
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Language: el_GR\n"
@@ -1635,48 +1635,48 @@ msgstr "εκτέλεση ροής εργασίας"
msgid "workflow runs"
msgstr "εκτελέσεις ροής εργασίας"
#: documents/serialisers.py:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr "Άκυρο χρώμα."
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr "Ο τύπος αρχείου %(type)s δεν υποστηρίζεται"
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2390
#: documents/serialisers.py:2420
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2412
#: documents/serialisers.py:2442
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr "Εντοπίστηκε μη έγκυρη μεταβλητή."
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1917,40 +1917,40 @@ msgstr "Ως τελικό βήμα, παρακαλούμε να συμπληρώ
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4909
#: documents/views.py:4945
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr ""
@@ -2242,151 +2242,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "ρυθμίσεις εφαρμογής paperless"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr "Αγγλικά (ΗΠΑ)"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr "Αραβικά"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr "Αφρικανικά"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr "Λευκορωσικά"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr "Βουλγαρικά"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr "Καταλανικά"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr "Τσέχικα"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr "Δανέζικα"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr "Γερμανικά"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr "Ελληνικά"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr "Αγγλικά (Ηνωμένο Βασίλειο)"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr "Ισπανικά"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr "Φινλανδικά"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr "Γαλλικά"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr "Ουγγρικά"
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr "Ιταλικά"
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr "Ιαπωνικά"
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr "Κορεάτικα"
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr "Λουξεμβουργικά"
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr "Νορβηγικά"
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr "Ολλανδικά"
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr "Πολωνικά"
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr "Πορτογαλικά (Βραζιλίας)"
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr "Πορτογαλικά"
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr "Ρουμάνικα"
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr "Ρωσικά"
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr "Σλοβακικά"
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr "Σλοβενικά"
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr "Σερβικά"
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr "Σουηδικά"
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr "Τούρκικα"
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr "Ουκρανικά"
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr "Κινέζικα Απλοποιημένα"
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr "Κινεζικά Παραδοσιακά"
+11 -11
View File
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"POT-Creation-Date: 2026-10-24 21:11+0000\n"
"PO-Revision-Date: 2022-02-17 04:17\n"
"Last-Translator: \n"
"Language-Team: English\n"
@@ -1653,7 +1653,7 @@ msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2724
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
@@ -1694,7 +1694,7 @@ msgstr ""
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2958 documents/views.py:4774
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1949,36 +1949,36 @@ msgstr ""
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:353 documents/views.py:2727
#: documents/views.py:353 documents/views.py:2721
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1665
#: documents/views.py:1659
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1670
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1682
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4790
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4843
#: documents/views.py:4837
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4909
#: documents/views.py:4903
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4923
#: documents/views.py:4917
msgid "The share link bundle is unavailable."
msgstr ""
+67 -67
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@@ -346,11 +346,11 @@ msgstr ""
#: documents/models.py:590
msgid "Credit card"
msgstr "Tarjeta de crédito"
msgstr ""
#: documents/models.py:591
msgid "Download"
msgstr "Descarga"
msgstr ""
#: documents/models.py:592
msgid "Envelope"
@@ -362,7 +362,7 @@ msgstr ""
#: documents/models.py:594
msgid "File"
msgstr "Archivo"
msgstr ""
#: documents/models.py:595
msgid "Checked file"
@@ -374,7 +374,7 @@ msgstr ""
#: documents/models.py:597
msgid "Medical file"
msgstr "Ficha médica"
msgstr ""
#: documents/models.py:598
msgid "Person file"
@@ -382,7 +382,7 @@ msgstr ""
#: documents/models.py:601
msgid "Spreadsheet"
msgstr "Hoja de cálculo"
msgstr ""
#: documents/models.py:603
msgid "Text file"
@@ -422,7 +422,7 @@ msgstr ""
#: documents/models.py:612
msgid "Inbox"
msgstr "Bandeja de entrada"
msgstr ""
#: documents/models.py:613
msgid "Journals"
@@ -462,11 +462,11 @@ msgstr ""
#: documents/models.py:622
msgid "Search"
msgstr "Búsqueda"
msgstr ""
#: documents/models.py:623
msgid "Send"
msgstr "Enviar"
msgstr ""
#: documents/models.py:624
msgid "Shop"
@@ -1635,48 +1635,48 @@ msgstr "ejecución del flujo de trabajo"
msgid "workflow runs"
msgstr "ejecuciones de flujo de trabajo"
#: documents/serialisers.py:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Permisos insuficientes."
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr "Color inválido."
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tipo de fichero %(type)s no suportado"
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, 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:2390
#: documents/serialisers.py:2420
#, 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:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
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:2412
#: documents/serialisers.py:2442
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:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr "Variable inválida."
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr "No se permiten identificadores de documento duplicados."
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Documentos no encontrados: %(ids)s"
@@ -1917,40 +1917,40 @@ msgstr "Como último paso, por favor complete el siguiente formulario:"
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
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:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr "Configuración de IA inválida."
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Permisos insuficientes para compartir el documento %(id)s."
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr "El paquete ya está siendo procesado."
#: documents/views.py:4909
#: documents/views.py:4945
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:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr "El paquete de enlace compartido no está disponible."
@@ -2242,151 +2242,151 @@ msgstr "Establece el tiempo de espera de LLM en segundos"
msgid "paperless application settings"
msgstr "Ajustes de la aplicación paperless"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr "Inglés (US)"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr "Árabe"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr "Africano"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr "Bielorruso"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr "Búlgaro"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr "Catalán"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr "Checo"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr "Danés"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr "Alemán"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr "Griego"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr "Inglés (Gran Bretaña)"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr "Español"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr "Persa"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr "Finlandés"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr "Francés"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr "Húngaro"
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr "Indonesio"
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr "Italiano"
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr "Japonés"
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr "Coreano"
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr "Luxemburgués"
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr "Noruego"
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr "Alemán"
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr "Polaco"
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr "Portugués (Brasil)"
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr "Portugués"
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr "Rumano"
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr "Ruso"
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr "Eslovaco"
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr "Esloveno"
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr "Serbio"
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr "Sueco"
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr "Turco"
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr "Ucraniano"
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr "Vietnamita"
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr "Chino simplificado"
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr "Chino tradicional"
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\n"
"Last-Translator: \n"
"Language-Team: Estonian\n"
"Language: et_EE\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2390
#: documents/serialisers.py:2420
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2412
#: documents/serialisers.py:2442
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr ""
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1916,40 +1916,40 @@ msgstr ""
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4909
#: documents/views.py:4945
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr ""
@@ -2241,151 +2241,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr ""
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr ""
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr ""
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr ""
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr ""
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr ""
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr ""
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr ""
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr ""
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr ""
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr ""
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr ""
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr ""
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr ""
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr ""
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr ""
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr ""
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr ""
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr ""
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr ""
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr ""
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr ""
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr ""
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr ""
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr ""
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr ""
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr ""
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\n"
"Last-Translator: \n"
"Language-Team: Persian\n"
"Language: fa_IR\n"
@@ -1635,48 +1635,48 @@ msgstr "گردش کار"
msgid "workflow runs"
msgstr "گردش کار اجرا می شود"
#: documents/serialisers.py:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr "رنگ نامعتبر"
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2390
#: documents/serialisers.py:2420
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2412
#: documents/serialisers.py:2442
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr "متغیر نامعتبر شناسایی شده است."
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1916,40 +1916,40 @@ msgstr "به عنوان مرحله آخر ، لطفاً فرم زیر را تک
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4909
#: documents/views.py:4945
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr ""
@@ -2241,151 +2241,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "تنظیمات برنامه بدون کاغذ"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr "انگلیسی (ایالات متحده)"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr "عربی"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr "افریکان"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr "وابسته به بلروس"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr "وابسته به بلغاری"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr "کاتالان"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr "وابسته به چک"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr "وابسته به دانمارکی"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr "آلمانی"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr "یونانی"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr "انگلیسی (GB)"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr "اسپانیایی"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr "فارسی"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr "فنلاندی"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr "فرانسوی"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr "مجارستانی"
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr "ایتالیایی"
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr "وابسته به ژاپنی"
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr "کره ای"
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr "وابسته به لوکس"
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr "نروژی"
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr "هلندی"
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr "صیقل دادن"
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr "پرتغالی (برزیل)"
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr "وابسته به پرتغالی"
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr "وابسته به رومانی"
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr "روسی"
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr "لگن"
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr "وابسته به اسلوونی"
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr "صرب"
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr "سوئدی"
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr "ترکی"
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr "وابسته به اوکراینی"
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr "چینی ساده شد"
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr "چینی سنتی"
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\n"
"Last-Translator: \n"
"Language-Team: Finnish\n"
"Language: fi_FI\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr "Virheellinen väri."
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tiedostotyyppiä %(type)s ei tueta"
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2390
#: documents/serialisers.py:2420
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2412
#: documents/serialisers.py:2442
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr "Virheellinen muuttuja havaittu."
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1917,40 +1917,40 @@ msgstr ""
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4909
#: documents/views.py:4945
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr ""
@@ -2242,151 +2242,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr "Englanti (US)"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr "Arabialainen"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr "valkovenäjä"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr "Katalaani"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr "Tšekki"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr "Tanska"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr "Saksa"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr "Kreikka"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr "Englanti (US)"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr "Espanja"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr "Suomi"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr "Ranska"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr "Italia"
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr "Luxemburg"
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr "Norja"
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr "Hollanti"
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr "puola"
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr "portugali (Brasilia)"
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr "portugali"
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr "romania"
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr "venäjä"
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr "Slovakia"
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr "Slovenia"
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr "Serbia"
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr "ruotsi"
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr "Turkki"
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr "Ukraina"
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr "Kiina (yksinkertaistettu)"
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr ""
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\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:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "Droits insuffisants."
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr "Couleur incorrecte."
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr "Type de fichier %(type)s non pris en charge"
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, 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:2390
#: documents/serialisers.py:2420
#, 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:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
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:2412
#: documents/serialisers.py:2442
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:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr "Variable invalide détectée."
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr "Les identificateurs de document en double ne sont pas autorisés."
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Documents introuvables : %(ids)s"
@@ -1916,40 +1916,40 @@ msgstr "Pour finir, veuillez remplir le formulaire suivant :"
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
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:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr "More_like_id invalide"
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr "Configuration IA invalide."
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr "La requête d'arrière-plan IA a expiré."
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Droits d'accès insuffisant pour partager %(id)s document."
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr "Le paquet est déjà en cours de traitement."
#: documents/views.py:4909
#: documents/views.py:4945
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:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr "Le lot de liens de partage n'est pas disponible."
@@ -2241,151 +2241,151 @@ msgstr "Définit le délai d'attente du LLM en secondes"
msgid "paperless application settings"
msgstr "paramètres de l'application paperless"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr "Anglais (US)"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr "Arabe"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr "Afrikaans"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr "Biélorusse"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr "Bulgare"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr "Catalan"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr "Tchèque"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr "Danois"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr "Allemand"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr "Grec"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr "Anglais (GB)"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr "Espagnol"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr "Persan"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr "Finnois"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr "Français"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr "Hongrois"
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr "Indonésien"
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr "Italien"
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr "Japonais"
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr "Coréen"
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr "Luxembourgeois"
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr "Norvégien"
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr "Néerlandais"
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr "Polonais"
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr "Portugais (Brésil)"
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr "Portugais"
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr "Roumain"
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr "Russe"
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr "Solvaque"
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr "Slovène"
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr "Serbe"
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr "Suédois"
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr "Turc"
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr "Ukrainien"
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr "Vietnamien"
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr "Chinois simplifié"
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr "Chinois traditionnel"
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Language: he_IL\n"
@@ -1636,48 +1636,48 @@ msgstr "הרצת זרימת עבודה"
msgid "workflow runs"
msgstr "הרצות זרימת עבודה"
#: documents/serialisers.py:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr "הרשאות אינן מספיקות."
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr "צבע לא חוקי."
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr "סוג קובץ %(type)s לא נתמך"
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "שדה מותאם אישית id חייב להיות מספרי: %(id)s"
#: documents/serialisers.py:2390
#: documents/serialisers.py:2420
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "שדה מותאם אישית עם מזהה %(id)s איננו קיים"
#: documents/serialisers.py:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "שדות מותאמים אישית חייבים להיות רשימה של מספרים שלמים או אובייקט הממפה מזהים לערכים."
#: documents/serialisers.py:2412
#: documents/serialisers.py:2442
msgid "Some custom fields don't exist or were specified twice."
msgstr "חלק מהשדות המותאמים אישית אינם קיימים או שהוגדרו פעמיים."
#: documents/serialisers.py:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr "משתנה לא חוקי זוהה."
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr "מזהי מסמכים כפולים אינם מורשים."
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "מסמכים לא נמצאו: %(ids)s"
@@ -1918,40 +1918,40 @@ msgstr ": כצעד אחרון, אנא מלא את הטופס הבא:"
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "יש לציין רק אחד מהבאים: text‏, title_search‏, query או more_like_id."
#: documents/views.py:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr "מזהה more_like_id אינו תקין"
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr "הגדרות בינה מלאכותית שגויות."
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "הרשאות לא מספיקות לשיתוף מסמך %(id)s."
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr "החבילה (Bundle) כבר נמצאת בתהליך עיבוד."
#: documents/views.py:4909
#: documents/views.py:4945
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "חבילת קישור השיתוף עדיין בהכנה. נא לנסות שוב מאוחר יותר."
#: documents/views.py:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr "חבילת קישור השיתוף אינה זמינה."
@@ -2243,151 +2243,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "הגדרות יישום paperless"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr "אנגלית (ארה״ב)"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr "ערבית"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr "אפריקאנס"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr "בלרוסית"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr "בולגרית"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr "קטלאנית"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr "צ'כית"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr "דנית"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr "גרמנית"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr "יוונית"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr "אנגלית (בריטניה)"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr "ספרדית"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr "פרסית"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr "פינית"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr "צרפתית"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr "הונגרית"
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr "אינדונזית"
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr "איטלקית"
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr "יפנית"
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr "קוריאנית"
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr "לוקסמבורגית"
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr "נורווגית"
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr "הולנדית"
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr "פולנית"
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr "פורטוגלית ברזילאית"
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr "פורטוגלית"
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr "רומנית"
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr "רוסית"
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr "סלובקית"
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr "סלובנית"
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr "סרבית"
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr "שוודית"
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr "טורקית"
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr "אוקראינית"
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr "ווייטנאמית"
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr "סינית מפושטת"
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr "סינית מסורתית"
+59 -59
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-28 02:55+0000\n"
"PO-Revision-Date: 2026-10-28 02:56\n"
"POT-Creation-Date: 2026-10-19 15:40+0000\n"
"PO-Revision-Date: 2026-10-19 15:42\n"
"Last-Translator: \n"
"Language-Team: Hindi\n"
"Language: hi_IN\n"
@@ -1635,48 +1635,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:483 documents/serialisers.py:840
#: documents/serialisers.py:2872 documents/views.py:360 documents/views.py:2730
#: documents/serialisers.py:515 documents/serialisers.py:872
#: documents/serialisers.py:2902 documents/views.py:363 documents/views.py:2768
#: paperless_mail/serialisers.py:156
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:676
#: documents/serialisers.py:708
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2339
#: documents/serialisers.py:2369
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2383
#: documents/serialisers.py:2413
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2390
#: documents/serialisers.py:2420
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2407 documents/serialisers.py:2417
#: documents/serialisers.py:2437 documents/serialisers.py:2447
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2412
#: documents/serialisers.py:2442
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2559
#: documents/serialisers.py:2589
msgid "Invalid variable detected."
msgstr ""
#: documents/serialisers.py:2928
#: documents/serialisers.py:2958
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2958 documents/views.py:4780
#: documents/serialisers.py:2988 documents/views.py:4816
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1916,40 +1916,40 @@ msgstr ""
msgid ", "
msgstr ""
#: documents/views.py:315
#: documents/views.py:318
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:353 documents/views.py:2727
#: documents/views.py:356 documents/views.py:2765
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1665
#: documents/views.py:1703
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1676
#: documents/views.py:1714
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:1688
#: documents/views.py:1726
msgid "AI backend rejected the request. Check logs for details."
msgstr ""
#: documents/views.py:4796
#: documents/views.py:4832
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4843
#: documents/views.py:4879
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4909
#: documents/views.py:4945
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4923
#: documents/views.py:4959
msgid "The share link bundle is unavailable."
msgstr ""
@@ -2241,151 +2241,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:562
msgid "English (US)"
msgstr ""
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:563
msgid "Arabic"
msgstr ""
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:564
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:565
msgid "Belarusian"
msgstr ""
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:566
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:567
msgid "Catalan"
msgstr ""
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:568
msgid "Czech"
msgstr ""
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:569
msgid "Danish"
msgstr ""
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:570
msgid "German"
msgstr ""
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:571
msgid "Greek"
msgstr ""
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:572
msgid "English (GB)"
msgstr ""
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:573
msgid "Spanish"
msgstr ""
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:574
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:575
msgid "Finnish"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:576
msgid "French"
msgstr ""
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:577
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:582
#: paperless/settings/__init__.py:578
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:583
#: paperless/settings/__init__.py:579
msgid "Italian"
msgstr ""
#: paperless/settings/__init__.py:584
#: paperless/settings/__init__.py:580
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:585
#: paperless/settings/__init__.py:581
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:586
#: paperless/settings/__init__.py:582
msgid "Luxembourgish"
msgstr ""
#: paperless/settings/__init__.py:587
#: paperless/settings/__init__.py:583
msgid "Norwegian"
msgstr ""
#: paperless/settings/__init__.py:588
#: paperless/settings/__init__.py:584
msgid "Dutch"
msgstr ""
#: paperless/settings/__init__.py:589
#: paperless/settings/__init__.py:585
msgid "Polish"
msgstr ""
#: paperless/settings/__init__.py:590
#: paperless/settings/__init__.py:586
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings/__init__.py:591
#: paperless/settings/__init__.py:587
msgid "Portuguese"
msgstr ""
#: paperless/settings/__init__.py:592
#: paperless/settings/__init__.py:588
msgid "Romanian"
msgstr ""
#: paperless/settings/__init__.py:593
#: paperless/settings/__init__.py:589
msgid "Russian"
msgstr ""
#: paperless/settings/__init__.py:594
#: paperless/settings/__init__.py:590
msgid "Slovak"
msgstr ""
#: paperless/settings/__init__.py:595
#: paperless/settings/__init__.py:591
msgid "Slovenian"
msgstr ""
#: paperless/settings/__init__.py:596
#: paperless/settings/__init__.py:592
msgid "Serbian"
msgstr ""
#: paperless/settings/__init__.py:597
#: paperless/settings/__init__.py:593
msgid "Swedish"
msgstr ""
#: paperless/settings/__init__.py:598
#: paperless/settings/__init__.py:594
msgid "Turkish"
msgstr ""
#: paperless/settings/__init__.py:599
#: paperless/settings/__init__.py:595
msgid "Ukrainian"
msgstr ""
#: paperless/settings/__init__.py:600
#: paperless/settings/__init__.py:596
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:601
#: paperless/settings/__init__.py:597
msgid "Chinese Simplified"
msgstr ""
#: paperless/settings/__init__.py:602
#: paperless/settings/__init__.py:598
msgid "Chinese Traditional"
msgstr ""
Loaded 100 of 143 files, more files were not shown because too many files have changed in this diff. Show more