Compare commits

..
136 changed files with 40808 additions and 40673 deletions
+16 -5
View File
@@ -948,11 +948,10 @@ for display in the web interface.
!!! note
The **remote OCR parser** (Azure AI) also honors this setting: when
no archive is requested (`never`, or `auto` with a born-digital PDF),
the remote engine is skipped entirely and locally-extracted text is
used instead, avoiding an unnecessary API call and a duplicate text
layer.
The **remote OCR parser** (Azure AI) always produces a searchable
PDF and stores it as the archive copy, regardless of this setting.
`ARCHIVE_FILE_GENERATION=never` has no effect when the remote
parser handles a document.
#### [`PAPERLESS_OCR_CLEAN=<mode>`](#PAPERLESS_OCR_CLEAN) {#PAPERLESS_OCR_CLEAN}
@@ -2048,6 +2047,18 @@ password. All of these options come from their similarly-named [Django settings]
Defaults to None.
#### [`PAPERLESS_REMOTE_OCR_MODE=<str>`](#PAPERLESS_REMOTE_OCR_MODE) {#PAPERLESS_REMOTE_OCR_MODE}
: Which documents are sent to the remote OCR engine.
- `always`: every document of a supported file type is sent to the remote
engine, bypassing the local OCR engine.
- `workflow_only`: documents are processed locally unless a workflow
explicitly enables remote OCR for them, letting you use the remote engine
selectively.
Defaults to "always".
## AI {#ai}
#### [`PAPERLESS_AI_ENABLED=<bool>`](#PAPERLESS_AI_ENABLED) {#PAPERLESS_AI_ENABLED}
+14
View File
@@ -456,6 +456,20 @@ def score(
return 10
```
**Remote services**
If your parser sends document content to a remote service, declare it:
```python
class MyCustomParser:
uses_remote_service = True
```
Paperless-ngx excludes such parsers when the document being consumed has not
been marked for remote processing, so users can keep remote OCR off by default
and enable it selectively with a workflow. Parsers that do not declare the
attribute are treated as fully local and are always considered.
**Archive and rendition flags**
```python
+4 -5
View File
@@ -187,11 +187,10 @@ PAPERLESS_ARCHIVE_FILE_GENERATION=auto
### Remote OCR parser
If you use the **remote OCR parser** (Azure AI), `ARCHIVE_FILE_GENERATION` is
honored the same way as for the local engine: when no archive is requested
(`never`, or `auto` with a born-digital PDF), the remote engine is skipped
entirely and locally-extracted text is used instead, avoiding an unnecessary
API call and a duplicate text layer.
If you use the **remote OCR parser** (Azure AI), note that it always produces a
searchable PDF and stores it as the archive copy. `ARCHIVE_FILE_GENERATION=never`
has no effect for documents handled by the remote parser - the archive is produced
unconditionally by the remote engine.
## Search Index (Whoosh -> Tantivy)
+7 -4
View File
@@ -576,9 +576,7 @@ The following workflow action types are available:
- Tags, correspondent, document type and storage path
- Document owner
- View and / or edit permissions to users or groups
- Custom fields, optionally with a value. If no value is set, the field is only added to the
document and any value it may already have is left untouched. If a value is set, it will
overwrite an existing value of that field on the document.
- Custom fields. Note that no value for the field will be set
##### Removal {#workflow-action-removal}
@@ -1086,11 +1084,16 @@ Paperless-ngx supports performing OCR on documents using remote services. At the
[Microsoft's Azure "Document Intelligence" service](https://azure.microsoft.com/en-us/products/ai-services/ai-document-intelligence).
This is of course a paid service (with a free tier) which requires an Azure account and subscription. Azure AI is not affiliated with
Paperless-ngx in any way. When enabled, Paperless-ngx will automatically send appropriate documents to Azure for OCR processing, bypassing
the local OCR engine. See the [configuration](configuration.md#PAPERLESS_REMOTE_OCR_ENGINE) options for more details.
the local OCR engine. See the [configuration](configuration.md#PAPERLESS_REMOTE_OCR_ENGINE) options for more details. These
settings can be supplied as environment variables or via **Application Configuration**.
Additionally, when using a commercial service with this feature, consider both potential costs as well as any associated file size
or page limitations (e.g. with a free tier).
By default, every document of a supported file type is sent to the remote engine. To use it more selectively, set the
[remote OCR mode](configuration.md#PAPERLESS_REMOTE_OCR_MODE) to `workflow_only`. Documents are then processed locally
unless a workflow explicitly enables remote OCR for them, so you can limit the remote engine to particular documents.
## Architecture
Paperless-ngx consists of the following components:
+8 -8
View File
@@ -599,7 +599,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/saved-views/saved-views.component.html</context>
<context context-type="linenumber">85,86</context>
<context context-type="linenumber">84,85</context>
</context-group>
</trans-unit>
<trans-unit id="3768927257183755959" datatype="html">
@@ -670,7 +670,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/saved-views/saved-views.component.html</context>
<context context-type="linenumber">86,87</context>
<context context-type="linenumber">85,86</context>
</context-group>
</trans-unit>
<trans-unit id="5079885666748292382" datatype="html">
@@ -9907,7 +9907,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/saved-views/saved-views.component.ts</context>
<context context-type="linenumber">314</context>
<context context-type="linenumber">296</context>
</context-group>
</trans-unit>
<trans-unit id="2620006875434695386" datatype="html">
@@ -10234,7 +10234,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/saved-views/saved-views.component.ts</context>
<context context-type="linenumber">308</context>
<context context-type="linenumber">290</context>
</context-group>
</trans-unit>
<trans-unit id="3501895737484542570" datatype="html">
@@ -10346,28 +10346,28 @@
<source>Saved view &quot;<x id="PH" equiv-text="savedView.name"/>&quot; deleted.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/saved-views/saved-views.component.ts</context>
<context context-type="linenumber">178</context>
<context context-type="linenumber">160</context>
</context-group>
</trans-unit>
<trans-unit id="1660419335376265526" datatype="html">
<source>Views saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/saved-views/saved-views.component.ts</context>
<context context-type="linenumber">255</context>
<context context-type="linenumber">237</context>
</context-group>
</trans-unit>
<trans-unit id="1699877326523238632" datatype="html">
<source>Error while saving views.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/saved-views/saved-views.component.ts</context>
<context context-type="linenumber">260</context>
<context context-type="linenumber">242</context>
</context-group>
</trans-unit>
<trans-unit id="4919025779187821586" datatype="html">
<source>Note: Sharing saved views does not share the underlying documents.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/saved-views/saved-views.component.ts</context>
<context context-type="linenumber">296</context>
<context context-type="linenumber">278</context>
</context-group>
</trans-unit>
<trans-unit id="1229748338333965418" datatype="html">
@@ -14,43 +14,48 @@
<a ngbNavLink>{{category}}</a>
<ng-template ngbNavContent>
<div class="p-3">
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-2">
@for (option of getCategoryOptions(category); track option.key) {
<div class="col">
<div class="card bg-light">
<div class="card-body">
<div class="card-title d-flex align-items-center">
<h6 class="mb-0">
{{option.title}}
</h6>
<a class="btn btn-sm btn-link" title="Read the documentation about this setting" i18n-title [href]="getDocsUrl(option.config_key)" target="_blank" referrerpolicy="no-referrer">
<i-bs name="info-circle"></i-bs>
</a>
@if (isSet(option.key)) {
<button type="button" class="btn btn-sm btn-link text-danger ms-auto pe-0" title="Reset" i18n-title (click)="resetOption(option.key)">
<i-bs class="me-1" name="x"></i-bs><ng-container i18n>Reset</ng-container>
</button>
@for (section of getCategorySections(category); track section) {
@if (section) {
<h5 class="mt-4 mb-3">{{section}}</h5>
}
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-2">
@for (option of getCategoryOptions(category, section); track option.key) {
<div class="col">
<div class="card bg-light">
<div class="card-body">
<div class="card-title d-flex align-items-center">
<h6 class="mb-0">
{{option.title}}
</h6>
<a class="btn btn-sm btn-link" title="Read the documentation about this setting" i18n-title [href]="getDocsUrl(option.config_key)" target="_blank" referrerpolicy="no-referrer">
<i-bs name="info-circle"></i-bs>
</a>
@if (isSet(option.key)) {
<button type="button" class="btn btn-sm btn-link text-danger ms-auto pe-0" title="Reset" i18n-title (click)="resetOption(option.key)">
<i-bs class="me-1" name="x"></i-bs><ng-container i18n>Reset</ng-container>
</button>
}
</div>
<div class="mb-n3">
@switch (option.type) {
@case (ConfigOptionType.Select) { <pngx-input-select [formControlName]="option.key" [error]="errors[option.key]" [items]="option.choices" [allowNull]="true"></pngx-input-select> }
@case (ConfigOptionType.Number) { <pngx-input-number [formControlName]="option.key" [error]="errors[option.key]" [showAdd]="false"></pngx-input-number> }
@case (ConfigOptionType.Boolean) { <pngx-input-switch [formControlName]="option.key" [error]="errors[option.key]" [showUnsetNote]="true" [horizontal]="true" title="Enable" i18n-title></pngx-input-switch> }
@case (ConfigOptionType.String) { <pngx-input-text [formControlName]="option.key" [error]="errors[option.key]"></pngx-input-text> }
@case (ConfigOptionType.JSON) { <pngx-input-text [formControlName]="option.key" [error]="errors[option.key]"></pngx-input-text> }
@case (ConfigOptionType.File) { <pngx-input-file [formControlName]="option.key" (upload)="uploadFile($event, option.key)" [error]="errors[option.key]"></pngx-input-file> }
@case (ConfigOptionType.Password) { <pngx-input-password [formControlName]="option.key" [error]="errors[option.key]"></pngx-input-password> }
}
</div>
@if (option.note) {
<div class="form-text fst-italic">{{option.note}}</div>
}
</div>
<div class="mb-n3">
@switch (option.type) {
@case (ConfigOptionType.Select) { <pngx-input-select [formControlName]="option.key" [error]="errors[option.key]" [items]="option.choices" [allowNull]="true"></pngx-input-select> }
@case (ConfigOptionType.Number) { <pngx-input-number [formControlName]="option.key" [error]="errors[option.key]" [showAdd]="false"></pngx-input-number> }
@case (ConfigOptionType.Boolean) { <pngx-input-switch [formControlName]="option.key" [error]="errors[option.key]" [showUnsetNote]="true" [horizontal]="true" title="Enable" i18n-title></pngx-input-switch> }
@case (ConfigOptionType.String) { <pngx-input-text [formControlName]="option.key" [error]="errors[option.key]"></pngx-input-text> }
@case (ConfigOptionType.JSON) { <pngx-input-text [formControlName]="option.key" [error]="errors[option.key]"></pngx-input-text> }
@case (ConfigOptionType.File) { <pngx-input-file [formControlName]="option.key" (upload)="uploadFile($event, option.key)" [error]="errors[option.key]"></pngx-input-file> }
@case (ConfigOptionType.Password) { <pngx-input-password [formControlName]="option.key" [error]="errors[option.key]"></pngx-input-password> }
}
</div>
@if (option.note) {
<div class="form-text fst-italic">{{option.note}}</div>
}
</div>
</div>
</div>
}
</div>
}
</div>
}
</div>
</ng-template>
</li>
@@ -8,7 +8,11 @@ import { NgbModule } from '@ng-bootstrap/ng-bootstrap'
import { NgSelectModule } from '@ng-select/ng-select'
import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons'
import { of, throwError } from 'rxjs'
import { OutputTypeConfig } from 'src/app/data/paperless-config'
import {
ConfigCategory,
ConfigSection,
OutputTypeConfig,
} from 'src/app/data/paperless-config'
import { ConfigService } from 'src/app/services/config.service'
import { SettingsService } from 'src/app/services/settings.service'
import { ToastService } from 'src/app/services/toast.service'
@@ -158,4 +162,24 @@ describe('ConfigComponent', () => {
component.resetOption('barcodes_enabled')
expect(component.configForm.get('barcodes_enabled').value).toBeNull()
})
it('should group options into sections within a category, or not', () => {
const sections = component.getCategorySections(ConfigCategory.OCR)
expect(sections).toEqual([null, ConfigSection.RemoteOCR])
expect(
component
.getCategoryOptions(ConfigCategory.OCR)
.map((option) => option.key)
).toContain('output_type')
expect(
component
.getCategoryOptions(ConfigCategory.OCR, ConfigSection.RemoteOCR)
.map((option) => option.key)
).toEqual([
'remote_ocr_engine',
'remote_ocr_api_key',
'remote_ocr_endpoint',
'remote_ocr_mode',
])
})
})
@@ -74,8 +74,20 @@ export class ConfigComponent
return Object.values(ConfigCategory)
}
getCategoryOptions(category: string): ConfigOption[] {
return PaperlessConfigOptions.filter((o) => o.category === category)
getCategorySections(category: string): string[] {
return [
...new Set(
PaperlessConfigOptions.filter((o) => o.category === category).map(
(o) => o.section ?? null // null means no section
)
),
]
}
getCategoryOptions(category: string, section: string = null): ConfigOption[] {
return PaperlessConfigOptions.filter(
(o) => o.category === category && (o.section ?? null) === section
)
}
initialConfig: PaperlessConfig
@@ -52,10 +52,10 @@ describe('CustomFieldsValuesComponent', () => {
})
it('should set selectedFields and map values correctly', () => {
component.value = { 1: 'value1', 3: 0, 4: false }
component.selectedFields = [1, 2, 3, 4]
expect(component.selectedFields).toEqual([1, 2, 3, 4])
expect(component.value).toEqual({ 1: 'value1', 2: null, 3: 0, 4: false })
component.value = { 1: 'value1' }
component.selectedFields = [1, 2]
expect(component.selectedFields).toEqual([1, 2])
expect(component.value).toEqual({ 1: 'value1', 2: null })
})
it('should return the correct custom field by id', () => {
@@ -77,7 +77,7 @@ export class CustomFieldsValuesComponent extends AbstractInputComponent<Object>
this._selectedFields = newFields
// map the selected fields to an object with field_id as key and value as value
this.value = newFields.reduce((acc, fieldId) => {
acc[fieldId] = this.value?.[fieldId] ?? null
acc[fieldId] = this.value?.[fieldId] || null
return acc
}, {})
this.onChange(this.value)
@@ -7,7 +7,7 @@
</pngx-page-header>
<form [formGroup]="savedViewsForm" (ngSubmit)="save()">
<ul class="list-group mb-3" formGroupName="savedViews">
@for (view of pagedSavedViews(); track view) {
@for (view of savedViews(); track view) {
<li class="list-group-item py-3">
<div [formGroupName]="view.id">
<div class="row">
@@ -81,11 +81,6 @@
}
</ul>
<div class="d-flex align-items-center mb-3">
<button type="button" (click)="reset()" class="btn btn-outline-secondary mb-2" [disabled]="(isDirty$ | async) === false" i18n>Cancel</button>
<button type="submit" class="btn btn-primary ms-2 mb-2" [disabled]="(isDirty$ | async) === false" i18n>Save</button>
@if (savedViews()?.length > pageSize) {
<ngb-pagination class="ms-auto" [pageSize]="pageSize" [collectionSize]="savedViews().length" [page]="page()" [maxSize]="5" (pageChange)="page.set($event)" size="sm" aria-label="Pagination"></ngb-pagination>
}
</div>
<button type="button" (click)="reset()" class="btn btn-outline-secondary mb-2" [disabled]="(isDirty$ | async) === false" i18n>Cancel</button>
<button type="submit" class="btn btn-primary ms-2 mb-2" [disabled]="(isDirty$ | async) === false" i18n>Save</button>
</form>
@@ -4,7 +4,6 @@ import { provideHttpClientTesting } from '@angular/common/http/testing'
import { signal } from '@angular/core'
import { ComponentFixture, TestBed } from '@angular/core/testing'
import { FormsModule, ReactiveFormsModule } from '@angular/forms'
import { By } from '@angular/platform-browser'
import { NgbModal, NgbModule } from '@ng-bootstrap/ng-bootstrap'
import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons'
import { Subject, of, throwError } from 'rxjs'
@@ -223,44 +222,6 @@ describe('SavedViewsComponent', () => {
).toEqual(view.show_on_dashboard)
})
it('should page saved views, clamp the page if views are removed', () => {
const manyViews = Array.from({ length: 30 }, (_, i) => ({
id: i + 1,
name: `view${i + 1}`,
})) as SavedView[]
const listSpy = jest.spyOn(savedViewService, 'list').mockReturnValue(
of({
all: manyViews.map((v) => v.id),
count: manyViews.length,
results: manyViews.concat([]),
})
)
component.ngOnInit()
fixture.detectChanges()
expect(listSpy).toHaveBeenCalledWith(1, 100000, null, false, {
full_perms: true,
})
expect(component.pagedSavedViews()).toHaveLength(25)
expect(fixture.debugElement.query(By.css('ngb-pagination'))).not.toBeNull()
// all views have controls, not just the current page
expect(
Object.keys(component.savedViewsForm.get('savedViews').value)
).toHaveLength(30)
component.page.set(2)
expect(component.pagedSavedViews()).toHaveLength(5)
listSpy.mockReturnValue(
of({
all: manyViews.slice(0, 25).map((v) => v.id),
count: 25,
results: manyViews.slice(0, 25),
})
)
component.ngOnInit()
expect(component.page()).toEqual(1)
})
it('should support editing permissions', () => {
const confirmClicked = new Subject<any>()
const modalRef = {
@@ -1,19 +1,12 @@
import { AsyncPipe } from '@angular/common'
import {
Component,
OnDestroy,
OnInit,
computed,
inject,
signal,
} from '@angular/core'
import { Component, OnDestroy, OnInit, inject, signal } from '@angular/core'
import {
FormControl,
FormGroup,
FormsModule,
ReactiveFormsModule,
} from '@angular/forms'
import { NgbModal, NgbPaginationModule } from '@ng-bootstrap/ng-bootstrap'
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
import { dirtyCheck } from '@ngneat/dirty-check-forms'
import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons'
import { BehaviorSubject, Observable, of, switchMap, takeUntil } from 'rxjs'
@@ -49,7 +42,6 @@ import { LoadingComponentWithPermissions } from '../../loading-component/loading
FormsModule,
ReactiveFormsModule,
AsyncPipe,
NgbPaginationModule,
NgxBootstrapIconsModule,
],
})
@@ -66,14 +58,6 @@ export class SavedViewsComponent
DisplayMode = DisplayMode
readonly savedViews = signal<SavedView[]>(undefined)
readonly page = signal(1)
public readonly pageSize = 25
// All views are loaded at init, so paging is only for display
readonly pagedSavedViews = computed(() => {
const start = (this.page() - 1) * this.pageSize
return this.savedViews()?.slice(start, start + this.pageSize)
})
private savedViewsGroup = new FormGroup({})
public savedViewsForm: FormGroup = new FormGroup({
savedViews: this.savedViewsGroup,
@@ -100,11 +84,9 @@ export class SavedViewsComponent
private reloadViews(): void {
this.loading.set(true)
this.savedViewService
.list(1, 100000, null, false, { full_perms: true })
.list(null, null, null, false, { full_perms: true })
.subscribe((r) => {
this.savedViews.set(r.results)
const pageCount = Math.ceil(r.results.length / this.pageSize)
this.page.update((page) => Math.min(page, Math.max(1, pageCount)))
this.initialize()
})
}
+55
View File
@@ -54,6 +54,10 @@ export const ConfigCategory = {
AI: $localize`AI Settings`,
}
export const ConfigSection = {
RemoteOCR: $localize`Remote OCR`,
}
export const LLMEmbeddingBackendConfig = {
OPENAI_LIKE: 'openai-like',
HUGGINGFACE: 'huggingface',
@@ -65,6 +69,15 @@ export const LLMBackendConfig = {
OLLAMA: 'ollama',
}
export const RemoteOCREngineConfig = {
AZURE_AI: 'azureai',
}
export const RemoteOCRModeConfig = {
ALWAYS: 'always',
WORKFLOW_ONLY: 'workflow_only',
}
export interface ConfigOption {
key: string
title: string
@@ -72,6 +85,7 @@ export interface ConfigOption {
choices?: Array<{ id: string; name: string }>
config_key?: string
category: string
section?: string
note?: string
}
@@ -181,6 +195,43 @@ export const PaperlessConfigOptions: ConfigOption[] = [
config_key: 'PAPERLESS_OCR_USER_ARGS',
category: ConfigCategory.OCR,
},
{
key: 'remote_ocr_engine',
title: $localize`Remote OCR Engine`,
type: ConfigOptionType.Select,
choices: mapToItems(RemoteOCREngineConfig),
config_key: 'PAPERLESS_REMOTE_OCR_ENGINE',
category: ConfigCategory.OCR,
section: ConfigSection.RemoteOCR,
note: $localize`Enabling remote OCR sends documents to a third-party service for processing. Consider the privacy implications as well as potential costs before enabling.`,
},
{
key: 'remote_ocr_api_key',
title: $localize`Remote OCR API Key`,
type: ConfigOptionType.Password,
config_key: 'PAPERLESS_REMOTE_OCR_API_KEY',
category: ConfigCategory.OCR,
section: ConfigSection.RemoteOCR,
},
{
key: 'remote_ocr_endpoint',
title: $localize`Remote OCR Endpoint`,
type: ConfigOptionType.String,
config_key: 'PAPERLESS_REMOTE_OCR_ENDPOINT',
category: ConfigCategory.OCR,
section: ConfigSection.RemoteOCR,
note: $localize`Required when using the Azure AI engine.`,
},
{
key: 'remote_ocr_mode',
title: $localize`Remote OCR Mode`,
type: ConfigOptionType.Select,
choices: mapToItems(RemoteOCRModeConfig),
config_key: 'PAPERLESS_REMOTE_OCR_MODE',
category: ConfigCategory.OCR,
section: ConfigSection.RemoteOCR,
note: $localize`Which documents are sent to the remote engine. Use 'workflow_only' to keep remote OCR off unless a workflow enables it for a document.`,
},
{
key: 'app_logo',
title: $localize`Application Logo`,
@@ -398,6 +449,10 @@ export interface PaperlessConfig extends ObjectWithId {
barcode_enable_tag: boolean
barcode_tag_mapping: object
barcode_tag_split: boolean
remote_ocr_engine: string
remote_ocr_api_key: string
remote_ocr_endpoint: string
remote_ocr_mode: string
ai_enabled: boolean
llm_embedding_backend: string
llm_embedding_model: string
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
+8
View File
@@ -53,6 +53,7 @@ from documents.utils import copy_basic_file_stats
from documents.utils import copy_file_with_basic_stats
from documents.utils import run_subprocess
from paperless.config import OcrConfig
from paperless.config import RemoteOCRConfig
from paperless.models import ArchiveFileGenerationChoices
from paperless.parsers import ParserContext
from paperless.parsers import ParserProtocol
@@ -451,12 +452,19 @@ class ConsumerPlugin(
except Exception as e:
self.log.error(f"Error attempting to clean PDF: {e}")
# Workflows have already run at this point, so the metadata knows
# whether this document was singled out for remote OCR
allow_remote = (
self.metadata.remote_ocr or RemoteOCRConfig().remote_ocr_by_default
)
# Based on the mime type, get the parser for that type
parser_class: type[ParserProtocol] | None = (
get_parser_registry().get_parser_for_file(
mime_type,
self.filename,
self.working_copy,
allow_remote=allow_remote,
)
)
if not parser_class:
+3
View File
@@ -34,6 +34,7 @@ class DocumentMetadataOverrides:
skip_asn_if_exists: bool = False
version_label: str | None = None
actor_id: int | None = None
remote_ocr: bool = False
def update(self, other: "DocumentMetadataOverrides") -> "DocumentMetadataOverrides":
"""
@@ -57,6 +58,8 @@ class DocumentMetadataOverrides:
self.actor_id = other.actor_id
if other.skip_asn_if_exists:
self.skip_asn_if_exists = True
if other.remote_ocr:
self.remote_ocr = True
if other.version_label is not None:
self.version_label = other.version_label
-7
View File
@@ -3213,13 +3213,6 @@ class WorkflowActionSerializer(serializers.ModelSerializer[WorkflowAction]):
{"assign_title": f'Invalid f-string detected: "{e.args[0]}"'},
)
if attrs.get("assign_custom_fields_values"):
# Empty strings treated as None to avoid unexpected behavior
attrs["assign_custom_fields_values"] = {
field_id: (None if value == "" else value)
for field_id, value in attrs["assign_custom_fields_values"].items()
}
if (
"type" in attrs
and attrs["type"] == WorkflowAction.WorkflowActionType.EMAIL
+10 -1
View File
@@ -66,6 +66,7 @@ from documents.utils import compute_checksum
from documents.utils import identity
from documents.workflows.utils import get_workflows_for_trigger
from paperless.config import AIConfig
from paperless.config import RemoteOCRConfig
from paperless.logging import consume_task_id
from paperless.parsers import ParserContext
from paperless.parsers.registry import get_parser_registry
@@ -337,10 +338,17 @@ def bulk_update_documents(document_ids) -> None:
@shared_task
def update_document_content_maybe_archive_file(document_id) -> None:
def update_document_content_maybe_archive_file(
document_id,
*,
remote_ocr: bool = False,
) -> None:
"""
Re-creates OCR content and thumbnail for a document, and archive file if
it exists.
Remote OCR is used only when the engine is configured to handle everything
or if explicitly asked for via ``remote_ocr``.
"""
document = Document.objects.get(id=document_id)
@@ -350,6 +358,7 @@ def update_document_content_maybe_archive_file(document_id) -> None:
mime_type,
document.original_filename or "",
document.source_path,
allow_remote=remote_ocr or RemoteOCRConfig().remote_ocr_by_default,
)
if not parser_class:
@@ -72,6 +72,10 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase):
"barcode_enable_tag": None,
"barcode_tag_mapping": None,
"barcode_tag_split": None,
"remote_ocr_engine": None,
"remote_ocr_api_key": None,
"remote_ocr_endpoint": None,
"remote_ocr_mode": None,
"ai_enabled": False,
"llm_embedding_backend": None,
"llm_embedding_model": None,
@@ -870,6 +874,49 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase):
config.refresh_from_db()
self.assertEqual(config.llm_api_key, None)
def test_update_remote_ocr_api_key(self) -> None:
"""
GIVEN:
- Existing config with remote_ocr_api_key specified
WHEN:
- API to update remote_ocr_api_key is called with all *s
- API to update remote_ocr_api_key is called with empty string
THEN:
- remote_ocr_api_key is unchanged
- remote_ocr_api_key is set to None
"""
config = ApplicationConfiguration.objects.first()
assert config is not None
config.remote_ocr_api_key = "1234567890"
config.save()
# Test with all *
response = self.client.patch(
f"{self.ENDPOINT}1/",
json.dumps(
{
"remote_ocr_api_key": "*" * 32,
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
config.refresh_from_db()
self.assertEqual(config.remote_ocr_api_key, "1234567890")
# Test with empty string
response = self.client.patch(
f"{self.ENDPOINT}1/",
json.dumps(
{
"remote_ocr_api_key": "",
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
config.refresh_from_db()
self.assertEqual(config.remote_ocr_api_key, None)
def test_enable_ai_index_triggers_update(self) -> None:
"""
GIVEN:
@@ -422,11 +422,6 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase):
json.dumps(
{
"assign_title": "",
"assign_custom_fields": [self.cf1.id, self.cf2.id],
"assign_custom_fields_values": {
str(self.cf1.id): "",
str(self.cf2.id): 0,
},
},
),
content_type="application/json",
@@ -434,10 +429,6 @@ class TestApiWorkflows(DirectoriesMixin, APITestCase):
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
action = WorkflowAction.objects.get(id=response.data["id"])
self.assertIsNone(action.assign_title)
self.assertEqual(
action.assign_custom_fields_values,
{str(self.cf1.id): None, str(self.cf2.id): 0},
)
response = self.client.post(
self.ENDPOINT_TRIGGERS,
+80
View File
@@ -1559,6 +1559,72 @@ class PostConsumeTestCase(DirectoriesMixin, GetConsumerMixin, TestCase):
consumer.run_post_consume_script(doc)
class TestConsumerRemoteOCR(
DirectoriesMixin,
FileSystemAssertsMixin,
GetConsumerMixin,
TestCase,
):
"""
The consumer resolves the remote OCR mode and the per-document request from
workflows into the allow_remote flag it hands to the parser registry.
"""
def setUp(self) -> None:
super().setUp()
patcher = mock.patch("documents.consumer.get_parser_registry")
self.mock_registry = patcher.start()
self.mock_registry.return_value.get_parser_for_file.return_value = DummyParser
self.addCleanup(patcher.stop)
def _consume(self, *, overrides: DocumentMetadataOverrides | None = None) -> bool:
src = (
Path(__file__).parent
/ "samples"
/ "documents"
/ "originals"
/ "0000001.pdf"
)
dst = self.dirs.scratch_dir / "sample.pdf"
shutil.copy(src, dst)
with self.get_consumer(dst, overrides=overrides) as consumer:
consumer.run()
_, kwargs = self.mock_registry.return_value.get_parser_for_file.call_args
return kwargs["allow_remote"]
@override_settings(REMOTE_OCR_MODE="always")
def test_always_mode_allows_remote(self) -> None:
"""
GIVEN: Remote OCR mode is 'always'.
WHEN: A document is consumed without any workflow asking for it.
THEN: The registry is allowed to pick the remote parser.
"""
self.assertTrue(self._consume())
@override_settings(REMOTE_OCR_MODE="workflow_only")
def test_workflow_only_mode_denies_remote_by_default(self) -> None:
"""
GIVEN: Remote OCR mode is 'workflow_only'.
WHEN: A document is consumed and nothing asked for remote OCR.
THEN: The remote parser is excluded.
"""
self.assertFalse(self._consume())
@override_settings(REMOTE_OCR_MODE="workflow_only")
def test_workflow_only_mode_allows_remote_when_requested(self) -> None:
"""
GIVEN: Remote OCR mode is 'workflow_only'.
WHEN: A workflow set remote_ocr on the metadata overrides.
THEN: The registry is allowed to pick the remote parser.
"""
self.assertTrue(
self._consume(overrides=DocumentMetadataOverrides(remote_ocr=True)),
)
class TestMetadataOverrides(TestCase):
def test_update_skip_asn_if_exists(self) -> None:
base = DocumentMetadataOverrides()
@@ -1566,6 +1632,20 @@ class TestMetadataOverrides(TestCase):
base.update(incoming)
self.assertTrue(base.skip_asn_if_exists)
def test_update_remote_ocr(self) -> None:
base = DocumentMetadataOverrides()
base.update(DocumentMetadataOverrides(remote_ocr=True))
self.assertTrue(base.remote_ocr)
def test_update_remote_ocr_is_not_unset(self) -> None:
"""
A later workflow that says nothing must not undo an earlier one that
asked for remote OCR.
"""
base = DocumentMetadataOverrides(remote_ocr=True)
base.update(DocumentMetadataOverrides())
self.assertTrue(base.remote_ocr)
def test_update_actor_and_version_label(self) -> None:
base = DocumentMetadataOverrides(
actor_id=1,
+39
View File
@@ -287,6 +287,45 @@ class TestUpdateContent(DirectoriesMixin, TestCase):
self.assertNotEqual(Document.objects.get(pk=doc.pk).content, "test")
class TestUpdateContentRemoteOCR(DirectoriesMixin, TestCase):
"""
Consumption workflows do not run on reprocess, so the remote parser is
used only in 'always' mode or when the caller explicitly asks for it.
"""
def setUp(self) -> None:
super().setUp()
patcher = mock.patch("documents.tasks.get_parser_registry")
self.mock_registry = patcher.start()
self.mock_registry.return_value.get_parser_for_file.return_value = None
self.addCleanup(patcher.stop)
self.doc = Document.objects.create(
title="test",
content="my document",
checksum="wow",
mime_type="application/pdf",
)
def _allow_remote(self, **kwargs) -> bool:
tasks.update_document_content_maybe_archive_file(self.doc.pk, **kwargs)
_, call_kwargs = self.mock_registry.return_value.get_parser_for_file.call_args
return call_kwargs["allow_remote"]
@override_settings(REMOTE_OCR_MODE="always")
def test_always_mode_allows_remote(self) -> None:
self.assertTrue(self._allow_remote())
@override_settings(REMOTE_OCR_MODE="workflow_only")
def test_workflow_only_mode_denies_remote_by_default(self) -> None:
self.assertFalse(self._allow_remote())
@override_settings(REMOTE_OCR_MODE="workflow_only")
def test_workflow_only_mode_allows_remote_when_requested(self) -> None:
self.assertTrue(self._allow_remote(remote_ocr=True))
class TestAIIndex(DirectoriesMixin, TestCase):
@override_settings(
AI_ENABLED=True,
-49
View File
@@ -2000,55 +2000,6 @@ class TestWorkflows(
r"Doc added in \w{3,}",
) # Match any 3-letter month name
def test_document_updated_workflow_existing_custom_field_empty_value(self) -> None:
"""
GIVEN:
- Existing workflow with UPDATED trigger and action that assigns a custom field
with an empty value
WHEN:
- Document is updated that already contains the field with a value
THEN:
- The existing value is left untouched, see GH #13627
"""
trigger = WorkflowTrigger.objects.create(
type=WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED,
filter_has_document_type=self.dt,
)
action = WorkflowAction.objects.create()
action.assign_custom_fields.add(self.cf1)
action.assign_custom_fields_values = {self.cf1.pk: ""}
action.save()
w = Workflow.objects.create(
name="Workflow 1",
order=0,
)
w.triggers.add(trigger)
w.actions.add(action)
w.save()
doc = Document.objects.create(
title="sample test",
correspondent=self.c,
original_filename="sample.pdf",
)
CustomFieldInstance.objects.create(
document=doc,
field=self.cf1,
value_text="existing value",
)
superuser = User.objects.create_superuser("superuser")
self.client.force_authenticate(user=superuser)
self.client.patch(
f"/api/documents/{doc.id}/",
{"document_type": self.dt.id},
format="json",
)
doc.refresh_from_db()
self.assertEqual(doc.custom_fields.get(field=self.cf1).value, "existing value")
def test_document_updated_workflow_existing_custom_field(self) -> None:
"""
GIVEN:
+1 -1
View File
@@ -2267,7 +2267,7 @@ class ChatStreamingView(GenericAPIView[Any]):
if not has_perms_owner_aware(request.user, "view_document", document):
return HttpResponseForbidden("Insufficient permissions")
documents = Document.objects.filter(pk=document.pk)
documents = [document]
else:
documents = Document.objects.filter(
id__in=permitted_document_ids(request.user),
+1 -2
View File
@@ -105,8 +105,7 @@ def apply_assignment_to_document(
field=field,
document=document,
).first()
# empty string is indistinguishable from no value in the UI
if instance and args[value_field_name] not in (None, ""):
if instance and args[value_field_name] is not None:
setattr(instance, value_field_name, args[value_field_name])
instance.save()
elif not instance:
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Afrikaans\n"
"Language: af_ZA\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Dokumente"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "Waarde moet geldige JSON wees."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Ongeldige gepasmaakte veldnavraaguitdrukking"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "Ongeldige uitdrukking lys. Moet nie leeg wees nie."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "Ongeldige logiese uitdrukking {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr ""
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr ""
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr ""
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr ""
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr ""
@@ -1338,48 +1338,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Ongeldige kleur."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "Lêertipe %(type)s word nie ondersteun nie"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Ongeldige veranderlike bespeur."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1634,36 +1634,36 @@ msgstr ""
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Amharic\n"
"Language: am_ET\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "መዝገባት"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "የሚሰራው እሴት \"JSON\" መሆን አለበት"
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "ልክ ያልሆነ የተወሰነ የቦታ መጠይቅ አገላለጽ"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "ልክ ያልሆነ የመግለጫ ዝርዝር። ባዶ መሆን የለበትም።"
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "ልክ ያልሆነ የሎጂክ ኦፕሬተር {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "ከፍተኛው የጥያቄ ሁኔታዎች/መጠን ብዛት አልፏል።"
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} ይሄ ታዐማኒነት ያለው ልማድ አይደለም።"
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "ጥያቄን አይደግፍም expr {expr!r}."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "ከፍተኛው የጥገኝነት ጥልቀት አልፏል።"
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "ይህ ልማድ አልተገኘም"
@@ -1338,48 +1338,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr ""
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1634,36 +1634,36 @@ msgstr ""
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Arabic\n"
"Language: ar_SA\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "المستندات"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "يجب أن تكون القيمة JSON."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "تعبير استعلام غير صالح للحقول المخصصة"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "قائمة عبارة خاطئة."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr ""
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "تجاوز الحد الأقصى لعدد شروط الاستعلام."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} حقل مخصص غير صالح."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} لا يدعم تعبير الاستعلام {expr!r}."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr ""
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "لم يتم العثور على حقل مخصص"
@@ -1338,48 +1338,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "لون خاطئ."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "نوع الملف %(type)s غير مدعوم"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "اكتشاف متغير خاطئ."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1635,36 +1635,36 @@ msgstr ""
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Belarusian\n"
"Language: be_BY\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Дакументы"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr ""
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr ""
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr ""
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr ""
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr ""
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr ""
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr ""
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr ""
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr ""
@@ -1338,48 +1338,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Няправільны колер."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "Тып файла %(type)s не падтрымліваецца"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Выяўлена няправільная зменная."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1634,36 +1634,36 @@ msgstr ""
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Bulgarian\n"
"Language: bg_BG\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Документи"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "Стойността трябва да е валидна JSON."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Невалидна заявка на персонализираното полето"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "Списък с невалиден израз. Не може да е празно."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "Невалиден логически оператор {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "Надвишен е максимален брой за заявки."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} не е валидно персонализирано поле."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} не поддържа заявка expr {expr!r}."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "Надвишена е максималната дълбочина на вмъкване."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "Персонализирано поле не е намерено"
@@ -1338,48 +1338,48 @@ msgstr "стартиране на работния процес"
msgid "workflow runs"
msgstr "стартиране на работните процеси"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Невалиден цвят."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "Файловия тип %(type)s не се поддържа"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Засечена е невалидна променлива."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1635,36 +1635,36 @@ msgstr ""
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Catalan\n"
"Language: ca_ES\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Documents "
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "Valor ha de ser un JSON valid."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Expressió de camp de consulta invàlid"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "Expressió de llista invàlida. No ha d'estar buida."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "Invàlid operand lògic {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "Condicions de consulta excedits."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} no és un camp personalitzat vàlid."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} no suporta expressió de consulta {expr!r}."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "Màxima profunditat anidada excedida."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "Camp personalitzat no trobat"
@@ -1338,48 +1338,48 @@ msgstr "data del flux"
msgid "workflow runs"
msgstr "flux corrents"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr "Permisos insuficients."
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Color Invàlid."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tipus arxiu %(type)s no suportat"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, 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:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Camp personalitzat amb ID %(id)s no existeix"
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
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:2317
#: documents/serialisers.py:2321
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:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Variable detectada invàlida."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr "Duplicat d'identificadors de documents no permès."
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Documents no trobats: %(ids)s"
@@ -1635,36 +1635,36 @@ msgstr "L'esquema d'URI '{parts.scheme}' no està permès. Esquemes permesos: {'
msgid "Unable to parse URI {value}"
msgstr "No s'ha pogut analitzar l'URI {value}"
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr "Invalid more_like_id"
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr "Configuració AI invàlida."
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
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:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Permisos insuficients per compartir document %(id)s."
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr "Paquet ja s'està processant."
#: documents/views.py:4629
#: documents/views.py:4636
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:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr "El paquet d'enllaç no està disponible."
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Language: cs_CZ\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Dokumenty"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "Hodnota musí být platný JSON."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Neplatný výraz dotazu na vlastní pole"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "Neplatný seznam výrazů. Nesmí být prázdný."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "Neplatný logický operátor {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "Překročen maximální počet podmínek dotazu."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} není platné vlastní pole."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} nepodporuje výraz dotazu {expr!r}."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "Překročena maximální hloubka větvení."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "Vlastní pole nebylo nalezeno"
@@ -1338,48 +1338,48 @@ msgstr "spuštění pracovního postupu"
msgid "workflow runs"
msgstr "spuštění pracovních postupů"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr "Nedostatečná oprávnění."
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Neplatná barva."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "Typ souboru %(type)s není podporován"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, 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:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Vlastní pole s ID %(id)s neexistuje"
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
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:2317
#: documents/serialisers.py:2321
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:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Zjištěna neplatná proměnná."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1636,36 +1636,36 @@ msgstr "URI schéma '{parts.scheme}' není povoleno. Povolená schémata: {',\n"
msgid "Unable to parse URI {value}"
msgstr "Nelze zpracovat URI {value}"
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, 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:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Danish\n"
"Language: da_DK\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Dokumenter"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "Værdien skal være gyldig JSON."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Ugyldigt tilpasset feltforespørgselsudtryk"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "Ugyldig udtryksliste. Må ikke være tom."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "Ugyldig logisk operatør {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "Maksimalt antal forespørgselsbetingelser overskredet."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} er ikke et gyldigt tilpasset felt."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} understøtter ikke forespørgsel expr {expr!r}."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "Maksimal indlejringsdybde overskredet."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "Tilpasset felt ikke fundet"
@@ -1338,48 +1338,48 @@ msgstr "workflow-kørsel"
msgid "workflow runs"
msgstr "workflow-kørsler"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Ugyldig farve."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "Filtype %(type)s understøttes ikke"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Ugyldig variabel fundet."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1635,36 +1635,36 @@ msgstr ""
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:28\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: German, Switzerland\n"
"Language: de_CH\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Dokumente"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "Wert muss gültiges JSON sein."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Ungültiger benutzerdefinierter Feldabfrageausdruck"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "Ungültige Ausdrucksliste. Darf nicht leer sein."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "Ungültiger logischer Operator {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "Maximale Anzahl an Abfragebedingungen überschritten."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} ist kein gültiges Zusatzfeld."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} unterstützt den Abfrageausdruck {expr!r} nicht."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "Maximale Verschachtelungstiefe überschritten."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "Benutzerdefiniertes Feld nicht gefunden"
@@ -1338,48 +1338,48 @@ msgstr "Arbeitsablauf-Ausführung"
msgid "workflow runs"
msgstr "Arbeitsablauf wird ausgeführt"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr "Unzureichende Berechtigungen."
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Ungültige Farbe."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "Dateityp %(type)s nicht unterstützt"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, 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:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Benutzerdefiniertes Feld mit ID %(id)s existiert nicht"
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
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:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr "Einige benutzerdefinierte Felder existieren nicht oder wurden zweimal angegeben."
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Ungültige Variable erkannt."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr "Doppelte Dokumentbezeichner sind nicht erlaubt."
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumente nicht gefunden: %(ids)s"
@@ -1635,36 +1635,36 @@ msgstr "URI-Schema „{parts.scheme}“ ist nicht erlaubt. Erlaubte Schemata: {'
msgid "Unable to parse URI {value}"
msgstr "URI {value} kann nicht gelesen werden"
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr "Ungültige more_like_id"
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr "Ungültige KI-Konfiguration."
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
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:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Unzureichende Berechtigungen, um Dokument %(id)s zu teilen."
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr "Paket wird bereits verarbeitet."
#: documents/views.py:4629
#: documents/views.py:4636
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:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr "Das Freigabelink-Paket ist nicht verfügbar."
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Dokumente"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "Wert muss gültiges JSON sein."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Ungültiger Zusatzfeld-Abfrageausdruck"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "Ungültige Ausdrucksliste. Darf nicht leer sein."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "Ungültiger logischer Operator {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "Maximale Anzahl an Abfragebedingungen überschritten."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} ist kein gültiges Zusatzfeld."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} unterstützt den Abfrageausdruck {expr!r} nicht."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "Maximale Verschachtelungstiefe überschritten."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "Zusatzfeld nicht gefunden"
@@ -1338,48 +1338,48 @@ msgstr "Arbeitsablauf-Ausführung"
msgid "workflow runs"
msgstr "Arbeitsablauf wird ausgeführt"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr "Unzureichende Berechtigungen."
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Ungültige Farbe."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "Dateityp %(type)s nicht unterstützt"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "Zusatzfeld-ID muss eine Ganzzahl sein: %(id)s"
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Zusatzfeld mit ID %(id)s existiert nicht"
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
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:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr "Einige Zusatzfelder existieren nicht oder wurden zweimal angegeben."
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Ungültige Variable erkannt."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr "Doppelte Dokumentbezeichner sind nicht erlaubt."
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumente nicht gefunden: %(ids)s"
@@ -1635,36 +1635,36 @@ msgstr "URI-Schema „{parts.scheme}“ ist nicht erlaubt. Erlaubte Schemata: {'
msgid "Unable to parse URI {value}"
msgstr "URI {value} kann nicht gelesen werden"
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr "Ungültige more_like_id"
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr "Ungültige KI-Konfiguration."
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr "Zeitüberschreitung bei der KI-Backendanfrage."
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
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:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Unzureichende Berechtigungen, um Dokument %(id)s zu teilen."
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr "Paket wird bereits verarbeitet."
#: documents/views.py:4629
#: documents/views.py:4636
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:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr "Das Freigabelink-Paket ist nicht verfügbar."
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Language: el_GR\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Έγγραφα"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "Η τιμή πρέπει να είναι σε έγκυρη μορφή JSON."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Μη έγκυρη έκφραση προσαρμοσμένου ερωτήματος πεδίου"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "Μη έγκυρη λίστα έκφρασης. Πρέπει να είναι μη κενή."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "Μη έγκυρος λογικός τελεστής {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "Υπέρβαση μέγιστου αριθμού συνθηκών ερωτήματος."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "Το προσαρμοσμένο πεδίο {name!r} δεν είναι ένα έγκυρο."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "Το {data_type} δεν υποστηρίζει το ερώτημα expr {expr!r}s."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "Υπέρβαση μέγιστου βάθους εμφώλευσης."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "Το προσαρμοσμένο πεδίο δε βρέθηκε"
@@ -1338,48 +1338,48 @@ msgstr "εκτέλεση ροής εργασίας"
msgid "workflow runs"
msgstr "εκτελέσεις ροής εργασίας"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Άκυρο χρώμα."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "Ο τύπος αρχείου %(type)s δεν υποστηρίζεται"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Εντοπίστηκε μη έγκυρη μεταβλητή."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1635,36 +1635,36 @@ msgstr ""
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Documentos"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "El valor debe ser un JSON válido."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Expresión de consulta de campo personalizado no válida"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "Lista de expresiones no válida. No debe estar vacía."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "Operador lógico inválido {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "Se ha superado el número máximo de condiciones de consulta."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{nombre!r} no es un campo personalizado válido."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} no admite la consulta expr {expr!r}."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "Profundidad máxima de nidificación superada."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "Campo personalizado no encontrado"
@@ -1338,48 +1338,48 @@ msgstr "ejecución del flujo de trabajo"
msgid "workflow runs"
msgstr "ejecuciones de flujo de trabajo"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr "Permisos insuficientes."
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Color inválido."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tipo de fichero %(type)s no suportado"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, 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:2295
#: documents/serialisers.py:2299
#, 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:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
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:2317
#: documents/serialisers.py:2321
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:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Variable inválida."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr "No se permiten identificadores de documento duplicados."
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Documentos no encontrados: %(ids)s"
@@ -1635,36 +1635,36 @@ msgstr "El esquema URI '{parts.scheme}' no está permitido. Esquemas permitidos:
msgid "Unable to parse URI {value}"
msgstr "No se puede analizar la URI {value}"
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr "Configuración de IA inválida."
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
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:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Permisos insuficientes para compartir el documento %(id)s."
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr "El paquete ya está siendo procesado."
#: documents/views.py:4629
#: documents/views.py:4636
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:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr "El paquete de enlace compartido no está disponible."
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Estonian\n"
"Language: et_EE\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Dokumendid"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "Väärtus peab olema lubatav JSON."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Vigane kohandatud välja päringu avaldis"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "Vigane avaldiste loend. Peab olema mittetühi."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "Vigane loogikaoperaator {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "Päringutingimuste suurim hulk on ületatud."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} ei ole lubatud kohandatud väli."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} ei toeta päringu avaldist {expr!r}."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "Suurim pesastamis sügavus ületatud."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "Kohandatud välja ei leitud"
@@ -1338,48 +1338,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr ""
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1634,36 +1634,36 @@ msgstr ""
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Persian\n"
"Language: fa_IR\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "اسناد و مدارک"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "مقدار باید JSON معتبر باشد."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Invalid custom field query expression"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "لیست عبارت‌ها نامعتبر است. نباید خالی باشد."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr ""
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "حداکثر تعداد شرایط پرس و جو از آن فراتر رفته است."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{نام! R} یک زمینه سفارشی معتبر نیست."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr ""
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "حداکثر عمق تودرتویی بیش از حد مجاز است."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "زمینه سفارشی یافت نشد"
@@ -1338,48 +1338,48 @@ msgstr "گردش کار"
msgid "workflow runs"
msgstr "گردش کار اجرا می شود"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "رنگ نامعتبر"
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "متغیر نامعتبر شناسایی شده است."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1634,36 +1634,36 @@ msgstr ""
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Finnish\n"
"Language: fi_FI\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Asiakirjat"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "Arvon on oltava kelvollista JSON:ia."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr ""
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr ""
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr ""
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr ""
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr ""
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr ""
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr ""
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr ""
@@ -1338,48 +1338,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Virheellinen väri."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tiedostotyyppiä %(type)s ei tueta"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Virheellinen muuttuja havaittu."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1635,36 +1635,36 @@ msgstr ""
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Documents"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "La valeur doit être un JSON valide."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Requête de champ personnalisé invalide"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "Liste d'expressions invalide. Doit être non vide."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "Opérateur logique {op!r} invalide"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "Nombre maximum de conditions dans la requête dépassé."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} n'est pas un champ personnalisé valide."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} ne supporte pas l'expression {expr!r}."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "Profondeur de récursion maximale dépassée."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "Champ personnalisé non trouvé"
@@ -1338,48 +1338,48 @@ msgstr "exécution du workflow"
msgid "workflow runs"
msgstr "le flux de travail s'exécute"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr "Droits insuffisants."
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Couleur incorrecte."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "Type de fichier %(type)s non pris en charge"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, 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:2295
#: documents/serialisers.py:2299
#, 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:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
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:2317
#: documents/serialisers.py:2321
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:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Variable invalide détectée."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr "Les identificateurs de document en double ne sont pas autorisés."
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Documents introuvables : %(ids)s"
@@ -1634,36 +1634,36 @@ msgstr "Le schéma d'URI « {parts.scheme} » n'est pas autorisé. Schémas aut
msgid "Unable to parse URI {value}"
msgstr "Impossible d'analyser l'URI {value}"
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr "More_like_id invalide"
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr "Configuration IA invalide."
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr "La requête d'arrière-plan IA a expiré."
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
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:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Droits d'accès insuffisant pour partager %(id)s document."
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr "Le paquet est déjà en cours de traitement."
#: documents/views.py:4629
#: documents/views.py:4636
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:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr "Le lot de liens de partage n'est pas disponible."
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Language: he_IL\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "מסמכים"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "ערך חייב להיות JSON תקין."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "ביטוי שאילתה לא חוקי של שדה מותאם אישית"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "רשימת ביטויים לא חוקית. חייב לכלול ערך."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "סימן פעולה לוגית לא חוקי {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "חריגה ממספר תנאי השאילתה המרבי."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} הוא לא שדה מותאם אישית חוקי."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} לא תומך בביטוי שאילתה {expr!r}."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "חריגה מעומק הקינון המרבי."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "שדה מותאם אישית לא נמצא"
@@ -1339,48 +1339,48 @@ msgstr "הרצת זרימת עבודה"
msgid "workflow runs"
msgstr "הרצות זרימת עבודה"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr "הרשאות אינן מספיקות."
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "צבע לא חוקי."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "סוג קובץ %(type)s לא נתמך"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "שדה מותאם אישית id חייב להיות מספרי: %(id)s"
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "שדה מותאם אישית עם מזהה %(id)s איננו קיים"
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "שדות מותאמים אישית חייבים להיות רשימה של מספרים שלמים או אובייקט הממפה מזהים לערכים."
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr "חלק מהשדות המותאמים אישית אינם קיימים או שהוגדרו פעמיים."
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "משתנה לא חוקי זוהה."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr "מזהי מסמכים כפולים אינם מורשים."
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "מסמכים לא נמצאו: %(ids)s"
@@ -1636,36 +1636,36 @@ msgstr "פרוטוקול ה-URI '{parts.scheme}' אינו מורשה. הפר
msgid "Unable to parse URI {value}"
msgstr "לא ניתן לפענח את ה URI {value}"
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr "מזהה more_like_id אינו תקין"
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr "הגדרות בינה מלאכותית שגויות."
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "יש לציין רק אחד מהבאים: text, title_search, query או more_like_id."
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "הרשאות לא מספיקות לשיתוף מסמך %(id)s."
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr "החבילה (Bundle) כבר נמצאת בתהליך עיבוד."
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "חבילת קישור השיתוף עדיין בהכנה. נא לנסות שוב מאוחר יותר."
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr "חבילת קישור השיתוף אינה זמינה."
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Hindi\n"
"Language: hi_IN\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "दस्तावेज़"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "मान वैध JSON होना चाहिए."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "अमान्य कस्टम फ़ील्ड क्वेरी एक्सप्रेशन"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "अमान्य एक्सप्रेशन सूची। खाली नहीं होनी चाहिए।"
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "अमान्य लॉजिकल ऑपरेटर {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "क्वेरी शर्तों की अधिकतम संख्या पार हो गई है।"
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} यह एक वैध कस्टम फ़ील्ड नहीं है।"
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} क्वेरी एक्सप्रेशन {expr!r} का समर्थन नहीं करता है।"
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "अधिकतम नेस्टिंग डेप्थ पार हो गई है।"
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "कस्टम फ़ील्ड नहीं मिला"
@@ -1338,48 +1338,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr ""
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1634,36 +1634,36 @@ msgstr ""
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Croatian\n"
"Language: hr_HR\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Dokumenti"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "Vrijednost mora biti važeći JSON."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Nevažeći izraz upita prilagođenog polja"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "Nevažeći popis izraza. Ne smije biti prazno."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "Nevažeći logički operator {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "Premašen je maksimalan broj uvjeta upita."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} nije važeće prilagođeno polje."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} ne podržava upit izraz {expr!r}."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "Premašena je najveća razina ugniježđivanja."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "Prilagođeno polje nije pronađeno"
@@ -1338,48 +1338,48 @@ msgstr "pokretanje tijeka rada"
msgid "workflow runs"
msgstr "tijek rada pokrenut"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr "Nedovoljne ovlasti."
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Nevažeća boja."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "Vrsta datoteke %(type)s nije podržana"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "ID prilagođenog polja mora biti cijeli broj: %(id)s"
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Prilagođeno polje s ID-om %(id)s ne postoji"
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Prilagođena polja moraju biti popis cijelih brojeva ili ID-ova objekata koji preslikavaju vrijednosti."
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr "Neka prilagođena polja ne postoje ili su navedena dvaput."
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Otkrivena je nevaljana vrsta datoteke."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr "Duplicirani identifikatori dokumenata nisu dopušteni."
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumenti nisu pronađeni: %(ids)s"
@@ -1635,36 +1635,36 @@ msgstr "URI shema '{parts.scheme}' nije dopuštena. Dopuštene sheme: {', '.join
msgid "Unable to parse URI {value}"
msgstr "Nije moguće raščlaniti URI {value}"
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr "Nevažeći more_like_id"
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr "Nevažeća AI konfiguracija."
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Navedite samo jedno od: text, title_search, query ili more_like_id."
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Nedovoljne ovlasti za dijeljenje dokumenta %(id)s."
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr "Paket se već obrađuje."
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Paket linka za dijeljenje se još priprema. Pokušajte ponovo kasnije."
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr "Paket linka za dijeljenje nije dostupan."
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:28\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Language: hu_HU\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Dokumentumok"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "Érvényes JSON érték szükséges."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Érvénytelen egyéni mező lekérdezési kifejezés"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "Érvénytelen kifejezéslista. Nem lehet üres."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "Érvénytelen logikai operátor {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "Maximum lekérdezési feltételszám átlépve."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} nem érvényes egyéni mező."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "A(z) {data_type} nem támogatja a {expr!r} kifejezés lekérdezést."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "Maximum beágyazási mélység túllépve."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "Az egyéni mező nem található"
@@ -1338,48 +1338,48 @@ msgstr "munkafolyamat futtatás"
msgid "workflow runs"
msgstr "munkafolyamat futtatások"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr "Nincs jogosúltsága."
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Érvénytelen szín."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "%(type)s fájltípus nem támogatott"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "Az egyéni mező azonosítójának egész számnak kell lennie: %(id)s"
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "A(z) %(id)s azonosítójú egyéni mező nem létezik"
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Az egyéni mezőknek egész számok listájának vagy azonosítókat értékekhez rendelő objektumnak kell lenniük."
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr "Néhány egyéni mező nem létezik, vagy kétszer lett megadva."
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Érvénytelen változó észlelve."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr "A dokumentumazonosítók duplikálása nem megengedett."
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumentumok nem találhatók: %(ids)s"
@@ -1635,36 +1635,36 @@ msgstr "A '{parts.scheme}' séma nem engedélyezett. Engedélyezett sémák: {',
msgid "Unable to parse URI {value}"
msgstr "A {value} URI értelmezése sikertelen"
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr "Érvénytelen more_like_id"
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr "Érvénytelen MI konfiguráció."
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "A text, title_search, query, vagy more_like_id közül csak egyet adjon meg."
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Nincs megfelelő jogosultság a %(id)s dokumentum megosztásához."
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr "A csomag feldolgozása már folyamatban van."
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "A megosztási linkcsomag készítése folyamatban. Kérjük, próbálja meg később."
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr "A megosztási linkcsomag nem elérhető."
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Language: id_ID\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Dokumen"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "Nilai harus berupa JSON yang valid."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Ekspresi pencarian bidang khusus tidak valid"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "Daftar ekspresi tidak valid. Tidak boleh kosong."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "Operator logika {op!r} tidak valid"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "Jumlah maksimal kondisi pencarian terlampaui."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} bukan bidang khusus yang valid."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} tidak mendukung ekspresi pencarian expr {expr!r}."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "Kedalaman susunan maksimal terlampaui."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "Bidang khusus tidak ditemukan"
@@ -1338,48 +1338,48 @@ msgstr "jalankan alur kerja"
msgid "workflow runs"
msgstr "daftar jalankan alur kerja"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr "Izin tidak mencukupi"
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Warna tidak sesuai."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "Jenis berkas %(type)s tidak didukung"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "Id kolom kustom harus berupa bilangan bulat: %(id)s"
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Kolom kustom dengan id %(id)s tidak ada"
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "Kolom kustom harus berupa daftar bilangan bulat atau objek yang memetakan id ke nilai."
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr "Beberapa kolom kustom tidak ada atau ditentukan dua kali."
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Variabel ilegal terdeteksi."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr "Penggunaan pengenal dokumen ganda tidak diperbolehkan."
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Dokumen tidak ditemukan: %(ids)s"
@@ -1635,36 +1635,36 @@ msgstr "Skema URI '{parts.scheme}' tidak diizinkan. Skema yang diizinkan: {', '.
msgid "Unable to parse URI {value}"
msgstr "Gagal membaca URI {value}"
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Izin tidak mencukupi untuk berbagi dokumen %(id)s"
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr "Paket sedang diproses."
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Bundel tautan berbagi masih dalam proses persiapan. Silakan coba lagi nanti."
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr "Bundel tautan berbagi tidak tersedia."
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-11 14:12\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Documenti"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "Il valore deve essere un JSON valido."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Campo personalizzato della query non valido"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "Elenco delle espressioni non valido. Deve essere non vuoto."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "Operatore logico non valido {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "Numero massimo di condizioni di query superato."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} non è un campo personalizzato valido."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} Non supporta la jQuery Expo {Expo!r}."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "Profondità massima di nidificazione superata."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "Campo personalizzato non trovato"
@@ -1338,48 +1338,48 @@ msgstr "esecuzione del flusso di lavoro"
msgid "workflow runs"
msgstr "esecuzioni del flusso di lavoro"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr "Autorizzazioni insufficienti."
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Colore non valido."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "Il tipo di file %(type)s non è supportato"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "L'ID del campo personalizzato deve essere un numero intero: %(id)s"
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "Il campo personalizzato con ID %(id)s non esiste"
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "I campi personalizzati devono essere un elenco di numeri interi o un oggetto che mappa gli ID ai valori."
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr "Alcuni campi personalizzati non esistono o sono stati specificati due volte."
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Variabile non valida rilevata."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr "Non sono consentiti identificatori di documenti duplicati."
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr "Documenti non trovati: %(ids)s"
@@ -1635,36 +1635,36 @@ msgstr "Lo schema URI '{parts.scheme}' non è consentito. Schemi consentiti: {',
msgid "Unable to parse URI {value}"
msgstr "Impossibile analizzare l'URI {value}"
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr "more_like_id non valido"
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr "Configurazione AI non valida."
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr "Richiesta di backend AI scaduta."
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr "Specificare solo uno tra text, title_search, query o more_like_id."
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Autorizzazioni insufficienti per condividere il documento %(id)s."
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr "Il pacchetto è già in fase di elaborazione."
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Il pacchetto di link di condivisione è ancora in fase di preparazione. Riprova più tardi."
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr "Il pacchetto di link di condivisione non è disponibile."
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Language: ja_JP\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "ドキュメント"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "値は有効なJSONである必要があります。"
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "無効なカスタムフィールドクエリ式"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "無効な式リストです。空であってはなりません。"
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "無効な論理演算子 {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "クエリ条件の最大数を超えました。"
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} は有効なカスタムフィールドではありません。"
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} はクエリ expr {expr!r} をサポートしていません。"
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "最大ネストの深さを超えました。"
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "カスタムフィールドが見つかりません"
@@ -1338,48 +1338,48 @@ msgstr "ワークフローの実行"
msgid "workflow runs"
msgstr "ワークフローの実行"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "無効な色"
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "ファイルタイプ %(type)s はサポートされていません"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "無効な変数を検出しました"
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1635,36 +1635,36 @@ msgstr ""
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Language: ko_KR\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "문서"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "값은 유효한 JSON이어야 합니다."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "잘못된 사용자 정의 필드 쿼리 표현식"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "잘못된 표현식 목록입니다. 비어 있지 않아야 합니다."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "잘못된 논리 연산자 {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "쿼리 조건의 최대 개수를 초과했습니다."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} 은 잘못된 사용자 정의 필드입니다."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type}은 쿼리 표현식 {expr!r}을(를) 지원하지 않습니다."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "최대 중첩 깊이를 초과했습니다."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "사용자 지정 필드를 찾을 수 없음"
@@ -1338,48 +1338,48 @@ msgstr "워크플로 실행"
msgid "workflow runs"
msgstr "워크플로우 실행"
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr "사용자 정의 ID 필드는 반드시 정수여야 합니다: %(id)s"
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr "%(id)s를 ID로 가지는 사용자 정의 필드가 존재하지 않습니다."
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr "사용자 정의 필드는 정수 리스트이거나, ID를 값에 매핑하는 객체여야 합니다."
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr "존재하지 않거나 중복된 사용자 정의 필드가 있습니다."
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "잘못된 변수가 감지되었습니다."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1635,36 +1635,36 @@ msgstr "URI 스킴 '{parts.scheme}'는 허용되지 않습니다. 허용된 스
msgid "Unable to parse URI {value}"
msgstr "{value} URI를 파싱할 수 없음"
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Luxembourgish\n"
"Language: lb_LU\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Dokumenter"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr ""
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr ""
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr ""
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr ""
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr ""
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr ""
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr ""
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr ""
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr ""
@@ -1338,48 +1338,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr "Ongëlteg Faarf."
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr "Fichierstyp %(type)s net ënnerstëtzt"
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr "Ongëlteg Zeechen detektéiert."
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1634,36 +1634,36 @@ msgstr ""
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:27\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Lithuanian\n"
"Language: lt_LT\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Dokumentai"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr "Reikšmė turi būti galiojantis JSON."
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr "Neteisinga pasirinktinio lauko užklausos išraiška"
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr "Neteisingas išraiškos sąrašas. Jis turi būti netuščias."
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr "Neteisingas loginis operatorius {op!r}"
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr "Viršytas maksimalus užklausos sąlygų skaičius."
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr "{name!r} nėra galiojantis pasirinktas laukas."
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr "{data_type} nepalaiko užklausos išraiškos {expr!r}."
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr "Viršytas maksimalus įdėjimo gylis."
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr "Pasirinktinis laukas nerastas"
@@ -1338,48 +1338,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr ""
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1634,36 +1634,36 @@ msgstr "URI schema '{parts.scheme}' nėra leistina. Galimos schemos: {', '.join(
msgid "Unable to parse URI {value}"
msgstr "Nepavyko apdoroti URI {value}"
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr "Nepakanka leidimų bendrinti dokumentą %(id)s."
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr "Rinkinys jau apdorojamas."
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr "Bendrinimo nuorodų rinkinys vis dar ruošiamas. Bandykite dar kartą vėliau."
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr "Dalinimos nuorodų rinkinys yra nepasiekiamas."
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:28\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Latvian\n"
"Language: lv_LV\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr "Dokuments"
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr ""
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr ""
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr ""
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr ""
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr ""
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr ""
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr ""
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr ""
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr ""
@@ -1338,48 +1338,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr ""
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1634,36 +1634,36 @@ msgstr ""
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""
+30 -30
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-08-10 02:25+0000\n"
"PO-Revision-Date: 2026-08-10 02:28\n"
"POT-Creation-Date: 2026-07-31 16:14+0000\n"
"PO-Revision-Date: 2026-07-31 16:15\n"
"Last-Translator: \n"
"Language-Team: Macedonian\n"
"Language: mk_MK\n"
@@ -21,39 +21,39 @@ msgstr ""
msgid "Documents"
msgstr ""
#: documents/filters.py:471
#: documents/filters.py:472
msgid "Value must be valid JSON."
msgstr ""
#: documents/filters.py:490
#: documents/filters.py:491
msgid "Invalid custom field query expression"
msgstr ""
#: documents/filters.py:500
#: documents/filters.py:501
msgid "Invalid expression list. Must be nonempty."
msgstr ""
#: documents/filters.py:521
#: documents/filters.py:522
msgid "Invalid logical operator {op!r}"
msgstr ""
#: documents/filters.py:535
#: documents/filters.py:536
msgid "Maximum number of query conditions exceeded."
msgstr ""
#: documents/filters.py:599
#: documents/filters.py:600
msgid "{name!r} is not a valid custom field."
msgstr ""
#: documents/filters.py:636
#: documents/filters.py:637
msgid "{data_type} does not support query expr {expr!r}."
msgstr ""
#: documents/filters.py:755 documents/models.py:136
#: documents/filters.py:752 documents/models.py:136
msgid "Maximum nesting depth exceeded."
msgstr ""
#: documents/filters.py:1079
#: documents/filters.py:1094
msgid "Custom field not found"
msgstr ""
@@ -1338,48 +1338,48 @@ msgstr ""
msgid "workflow runs"
msgstr ""
#: documents/serialisers.py:521 documents/serialisers.py:873
#: documents/serialisers.py:2767 documents/views.py:299 documents/views.py:2555
#: documents/serialisers.py:522 documents/serialisers.py:874
#: documents/serialisers.py:2776 documents/views.py:299 documents/views.py:2558
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
#: documents/serialisers.py:709
#: documents/serialisers.py:710
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:2244
#: documents/serialisers.py:2248
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:2288
#: documents/serialisers.py:2292
#, python-format
msgid "Custom field id must be an integer: %(id)s"
msgstr ""
#: documents/serialisers.py:2295
#: documents/serialisers.py:2299
#, python-format
msgid "Custom field with id %(id)s does not exist"
msgstr ""
#: documents/serialisers.py:2312 documents/serialisers.py:2322
#: documents/serialisers.py:2316 documents/serialisers.py:2326
msgid "Custom fields must be a list of integers or an object mapping ids to values."
msgstr ""
#: documents/serialisers.py:2317
#: documents/serialisers.py:2321
msgid "Some custom fields don't exist or were specified twice."
msgstr ""
#: documents/serialisers.py:2464
#: documents/serialisers.py:2468
msgid "Invalid variable detected."
msgstr ""
#: documents/serialisers.py:2823
#: documents/serialisers.py:2832
msgid "Duplicate document identifiers are not allowed."
msgstr ""
#: documents/serialisers.py:2853 documents/views.py:4509
#: documents/serialisers.py:2862 documents/views.py:4517
#, python-format
msgid "Documents not found: %(ids)s"
msgstr ""
@@ -1634,36 +1634,36 @@ msgstr ""
msgid "Unable to parse URI {value}"
msgstr ""
#: documents/views.py:292 documents/views.py:2552
#: documents/views.py:292 documents/views.py:2555
msgid "Invalid more_like_id"
msgstr ""
#: documents/views.py:1566
#: documents/views.py:1567
msgid "Invalid AI configuration."
msgstr ""
#: documents/views.py:1575
#: documents/views.py:1576
msgid "AI backend request timed out."
msgstr ""
#: documents/views.py:2377 documents/views.py:2698
#: documents/views.py:2380 documents/views.py:2701
msgid "Specify only one of text, title_search, query, or more_like_id."
msgstr ""
#: documents/views.py:4522
#: documents/views.py:4529
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
#: documents/views.py:4568
#: documents/views.py:4575
msgid "Bundle is already being processed."
msgstr ""
#: documents/views.py:4629
#: documents/views.py:4636
msgid "The share link bundle is still being prepared. Please try again later."
msgstr ""
#: documents/views.py:4639
#: documents/views.py:4646
msgid "The share link bundle is unavailable."
msgstr ""

Some files were not shown because too many files have changed in this diff Show More