Compare commits

...
Author SHA1 Message Date
Trenton HolmesandClaude Sonnet 5 af7a1fcdba Simplify: dedupe row-copy/migration-test helpers, type fixture params
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-26 21:25:25 -07:00
Trenton HolmesandClaude Sonnet 5 3e6579a4ec Perf: point-delete vector store chunks by id instead of a document_id scan
vec0 only gets an efficient lookup on a metadata column inside a KNN
query; a plain document_id-filtered DELETE is a full table scan
regardless of index size. Add a document_chunks side table (plain
SQLite, real index) to look up chunk ids for a document, then delete
each by its id primary key instead. Includes a v1 -> v2 migration to
backfill document_chunks for indexes created before this existed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-26 20:31:15 -07:00
GitHub Actions f4e7a2e9e4 Auto translate strings 2026-07-26 22:38:16 +00:00
shamoonandGitHub 317e534aa0 Fix: ensure preview reload on live changes (#13321) 2026-07-26 22:36:03 +00:00
Trenton HandGitHub 3ba6d0325a Fix: clamp out-of-range MailRule.order and ApplicationConfiguration DPI/page fields before smallint migration (#13316) 2026-07-26 22:11:27 +00:00
Trenton HandGitHub 318520a0f1 Fix: add docstring to DocumentClassifierSchema for cleaner LLM tool description (#13315) 2026-07-26 22:00:06 +00:00
Trenton HandGitHub ea1f3653a9 Fix: guard build_document_node against stale FK on deleted correspondent/doc type (#13318) 2026-07-26 21:45:59 +00:00
shamoonandGitHub 423d4b9f2d Fix: prevent search filter loss when closing document with Escape key (#13317) 2026-07-26 14:17:26 -07:00
shamoonandGitHub 8bc4e5ee94 Fix: fix frontend permissions display for stats/system perms (#13305) 2026-07-26 02:56:06 -07:00
aa90f79c21 New Crowdin translations by GitHub Action (#13297)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-07-25 16:31:40 -07:00
e704bf88dc New Crowdin translations by GitHub Action (#13239)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-07-25 16:30:17 -07:00
Trenton HandGitHub 1646756c6c Docs: warn bare-metal users about stale files when upgrading (#13296) 2026-07-25 14:06:31 -07:00
shamoon 48d6ff13f2 Tweak: use css grid for navbar 2026-07-25 09:13:34 -07:00
GitHub Actions bfe2d92619 Auto translate strings 2026-07-25 07:13:46 +00:00
shamoonandGitHub 4f0845b094 Fixhancement: PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT (#13281) 2026-07-25 00:12:12 -07:00
shamoonandGitHub dee568e2a6 Tweak: adjust top navbar wrapping when AI chat button visible (#13280) 2026-07-24 23:50:10 -07:00
shamoon f60a2af841 Merge branch 'main' into dev 2026-07-24 19:08:23 -07:00
Trenton HandGitHub 33cd48a17f Fix: preserve document fields during Gotenberg conversion (#13271)
Gotenberg's LibreOffice route enables updateIndexes by default, which refreshes dynamic fields (e.g. auto-dates) to the current date. Disable it so field values are preserved as authored.
2026-07-24 13:59:51 -07:00
github-actions[bot]GitHubgithub-actions <41898282+github-actions[bot]@users.noreply.github.com>
ed714b8a5a Changelog v3.0.2 - GHA (#13244)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-23 18:56:06 -07:00
shamoon e0ab6a2e75 Merge branch 'dev' 2026-07-23 18:13:49 -07:00
github-actions[bot]GitHubgithub-actions <41898282+github-actions[bot]@users.noreply.github.com>
90ea4f27c4 Changelog v3.0.1 - GHA (#13240)
Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-23 17:59:34 -07:00
82 changed files with 2993 additions and 2377 deletions
+17
View File
@@ -151,6 +151,23 @@ the background.
### Bare Metal Route {#bare-metal-updating}
!!! warning
Extracting a new release archive on top of an existing installation
(e.g. `tar -xf paperless-ngx-vX.Y.Z.tar.xz -C /opt/paperless`) only adds
and overwrites files -- it does not remove files that were deleted in
the new release. Leftover files from an old version, such as
superseded database migrations, can remain on disk and cause errors
like `NodeNotFoundError` during `manage.py migrate`.
Before unpacking a new release over an existing bare-metal
installation, remove the previous source tree first (everything
except your `media`, `data`, and `consume` directories and your
`paperless.conf`/`.env`), or unpack into a fresh directory and move
your persistent data and configuration over. Installations updated via
`git pull` on a clean checkout are not affected, since Git removes
files that no longer exist upstream.
After grabbing the new release and unpacking the contents, do the
following:
+59
View File
@@ -1,5 +1,64 @@
# Changelog
## paperless-ngx 3.0.2
### Bug Fixes
- Fix: fix broken migration in 3.0.1 [@shamoon](https://github.com/shamoon) ([#13242](https://github.com/paperless-ngx/paperless-ngx/pull/13242))
### All App Changes
- Fix: fix broken migration in 3.0.1 [@shamoon](https://github.com/shamoon) ([#13242](https://github.com/paperless-ngx/paperless-ngx/pull/13242))
## paperless-ngx 3.0.1
### Bug Fixes
- Fix: selection\_data re-derives the filtered document set 5 times over [@stumpylog](https://github.com/stumpylog) ([#13229](https://github.com/paperless-ngx/paperless-ngx/pull/13229))
- Fix: exclude source document from its own RAG similarity results [@stumpylog](https://github.com/stumpylog) ([#13233](https://github.com/paperless-ngx/paperless-ngx/pull/13233))
- Fix: split mailrule maximum\_age clamp into its own migration [@stumpylog](https://github.com/stumpylog) ([#13231](https://github.com/paperless-ngx/paperless-ngx/pull/13231))
- Chore: mark yes in confirm button for translation [@shamoon](https://github.com/shamoon) ([#13225](https://github.com/paperless-ngx/paperless-ngx/pull/13225))
- Fix: correct URL for W001 check [@shamoon](https://github.com/shamoon) ([#13220](https://github.com/paperless-ngx/paperless-ngx/pull/13220))
- Fix: ensure create dialog uses correct attribute type [@shamoon](https://github.com/shamoon) ([#13221](https://github.com/paperless-ngx/paperless-ngx/pull/13221))
- Fix: correct database engine from postgres to postgresql [@OberstVonGatow](https://github.com/OberstVonGatow) ([#13213](https://github.com/paperless-ngx/paperless-ngx/pull/13213))
- Fix: remove unnecessary .distinct() dominating document list queries [@stumpylog](https://github.com/stumpylog) ([#13205](https://github.com/paperless-ngx/paperless-ngx/pull/13205))
- Fix: also wrap non-breaking words in chat messages, handle whitespace [@shamoon](https://github.com/shamoon) ([#13211](https://github.com/paperless-ngx/paperless-ngx/pull/13211))
- Fix: tag/custom-field document\_count scales badly with tag count [@stumpylog](https://github.com/stumpylog) ([#13203](https://github.com/paperless-ngx/paperless-ngx/pull/13203))
- Fix: batch document user\_can\_change checks to avoid per-row N+1 [@stumpylog](https://github.com/stumpylog) ([#13204](https://github.com/paperless-ngx/paperless-ngx/pull/13204))
- Fix: fix app title restoration [@shamoon](https://github.com/shamoon) ([#13208](https://github.com/paperless-ngx/paperless-ngx/pull/13208))
- Fix: handle long wrapping titles in AI chat document list [@shamoon](https://github.com/shamoon) ([#13206](https://github.com/paperless-ngx/paperless-ngx/pull/13206))
### Dependencies
- Chore(deps-dev): Bump postcss from 8.5.6 to 8.5.22 in /src/paperless\_mail/templates in the npm\_and\_yarn group across 1 directory @[dependabot[bot]](https://github.com/apps/dependabot) ([#13236](https://github.com/paperless-ngx/paperless-ngx/pull/13236))
- Chore(deps): Bump pyasn1 from 0.6.3 to 0.6.4 in the uv group across 1 directory @[dependabot[bot]](https://github.com/apps/dependabot) ([#13237](https://github.com/paperless-ngx/paperless-ngx/pull/13237))
- Chore(deps): Bump the uv group across 1 directory with 8 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#13189](https://github.com/paperless-ngx/paperless-ngx/pull/13189))
### All App Changes
<details>
<summary>17 changes</summary>
- Chore(deps-dev): Bump postcss from 8.5.6 to 8.5.22 in /src/paperless\_mail/templates in the npm\_and\_yarn group across 1 directory @[dependabot[bot]](https://github.com/apps/dependabot) ([#13236](https://github.com/paperless-ngx/paperless-ngx/pull/13236))
- Fix: selection\_data re-derives the filtered document set 5 times over [@stumpylog](https://github.com/stumpylog) ([#13229](https://github.com/paperless-ngx/paperless-ngx/pull/13229))
- Chore: reword "Settings > Default permissions" description for clarity [@NotaInutilis](https://github.com/NotaInutilis) ([#13232](https://github.com/paperless-ngx/paperless-ngx/pull/13232))
- Chore(deps): Bump pyasn1 from 0.6.3 to 0.6.4 in the uv group across 1 directory @[dependabot[bot]](https://github.com/apps/dependabot) ([#13237](https://github.com/paperless-ngx/paperless-ngx/pull/13237))
- Chore(deps): Bump the uv group across 1 directory with 8 updates @[dependabot[bot]](https://github.com/apps/dependabot) ([#13189](https://github.com/paperless-ngx/paperless-ngx/pull/13189))
- Fix: exclude source document from its own RAG similarity results [@stumpylog](https://github.com/stumpylog) ([#13233](https://github.com/paperless-ngx/paperless-ngx/pull/13233))
- Fix: split mailrule maximum\_age clamp into its own migration [@stumpylog](https://github.com/stumpylog) ([#13231](https://github.com/paperless-ngx/paperless-ngx/pull/13231))
- Chore: mark yes in confirm button for translation [@shamoon](https://github.com/shamoon) ([#13225](https://github.com/paperless-ngx/paperless-ngx/pull/13225))
- Fix: correct URL for W001 check [@shamoon](https://github.com/shamoon) ([#13220](https://github.com/paperless-ngx/paperless-ngx/pull/13220))
- Fix: ensure create dialog uses correct attribute type [@shamoon](https://github.com/shamoon) ([#13221](https://github.com/paperless-ngx/paperless-ngx/pull/13221))
- Fix: correct database engine from postgres to postgresql [@OberstVonGatow](https://github.com/OberstVonGatow) ([#13213](https://github.com/paperless-ngx/paperless-ngx/pull/13213))
- Fix: remove unnecessary .distinct() dominating document list queries [@stumpylog](https://github.com/stumpylog) ([#13205](https://github.com/paperless-ngx/paperless-ngx/pull/13205))
- Fix: also wrap non-breaking words in chat messages, handle whitespace [@shamoon](https://github.com/shamoon) ([#13211](https://github.com/paperless-ngx/paperless-ngx/pull/13211))
- Fix: tag/custom-field document\_count scales badly with tag count [@stumpylog](https://github.com/stumpylog) ([#13203](https://github.com/paperless-ngx/paperless-ngx/pull/13203))
- Fix: batch document user\_can\_change checks to avoid per-row N+1 [@stumpylog](https://github.com/stumpylog) ([#13204](https://github.com/paperless-ngx/paperless-ngx/pull/13204))
- Fix: fix app title restoration [@shamoon](https://github.com/shamoon) ([#13208](https://github.com/paperless-ngx/paperless-ngx/pull/13208))
- Fix: handle long wrapping titles in AI chat document list [@shamoon](https://github.com/shamoon) ([#13206](https://github.com/paperless-ngx/paperless-ngx/pull/13206))
</details>
## paperless-ngx 3.0.0
### Breaking Changes
+21 -7
View File
@@ -522,22 +522,36 @@ do CORS calls. Set this to your public domain name.
fail2ban with log entries for failed authorization attempts. Value should be
IP address(es).
This setting also controls allauth's
[`ALLAUTH_TRUSTED_PROXY_COUNT`](https://docs.allauth.org/en/latest/account/configuration.html),
which is set to the number of proxies listed here. Without this,
allauth cannot determine the client IP address for rate limiting when
running behind a reverse proxy, resulting in a `403 Forbidden` on login.
By default, this setting also controls allauth's trusted proxy count,
which is set to the number of proxies listed here. Override that default
with [`PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT`](#PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT)
when the list length does not match the number of proxy hops.
Defaults to empty string.
#### [`PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT=<integer>`](#PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT) {#PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT}
: Sets allauth's
[`ALLAUTH_TRUSTED_PROXY_COUNT`](https://docs.allauth.org/en/latest/common/rate_limits.html#configuration).
This is the number of trusted proxy **hops** represented in each
`X-Forwarded-For` header, not the number of IP addresses through which those
proxies may be reached. For example, a single dual-stack proxy is one hop even
when its IPv4 and IPv6 addresses are both listed in
[`PAPERLESS_TRUSTED_PROXIES`](#PAPERLESS_TRUSTED_PROXIES).
Only trust `X-Forwarded-For` when untrusted clients cannot connect directly
to Paperless-ngx.
Defaults to the number of entries in `PAPERLESS_TRUSTED_PROXIES`.
#### [`PAPERLESS_ALLAUTH_TRUSTED_CLIENT_IP_HEADER=<header-name>`](#PAPERLESS_ALLAUTH_TRUSTED_CLIENT_IP_HEADER) {#PAPERLESS_ALLAUTH_TRUSTED_CLIENT_IP_HEADER}
: Sets allauth's
[`ALLAUTH_TRUSTED_CLIENT_IP_HEADER`](https://docs.allauth.org/en/latest/account/configuration.html).
[`ALLAUTH_TRUSTED_CLIENT_IP_HEADER`](https://docs.allauth.org/en/latest/common/rate_limits.html#configuration).
Use this when your reverse proxy sets a dedicated header for the real
client IP instead of `X-Forwarded-For`, for example `X-Real-IP` (nginx)
or `CF-Connecting-IP` (Cloudflare). When set, this takes precedence over
[`PAPERLESS_TRUSTED_PROXIES`](#PAPERLESS_TRUSTED_PROXIES).
`PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT`.
Defaults to none.
+4 -1
View File
@@ -324,8 +324,11 @@ option since v1.8.0.
Allauth changed how it determines the client IP address for login rate limiting. Users running
behind a reverse proxy may need to set
[`PAPERLESS_TRUSTED_PROXIES`](configuration.md#PAPERLESS_TRUSTED_PROXIES),
[`PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT`](configuration.md#PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT),
[`PAPERLESS_ALLAUTH_TRUSTED_CLIENT_IP_HEADER`](configuration.md#PAPERLESS_ALLAUTH_TRUSTED_CLIENT_IP_HEADER),
or both, to avoid `403 Forbidden` errors on login.
or a combination of these settings to avoid `403 Forbidden` errors on login.
The proxy count is the number of proxy hops in `X-Forwarded-For`, which may
differ from the number of configured proxy IP addresses.
## Minimum CPU Requirements (NumPy Baseline)
+8
View File
@@ -262,6 +262,14 @@ to a positive number to enable polling and disable native filesystem notificatio
and copy the contents to the home directory of the user you created
earlier (`/opt/paperless`).
!!! note
If you are updating an existing bare-metal installation rather than
installing for the first time, see the
[bare metal update instructions](administration.md#bare-metal-updating)
instead -- extracting a new release on top of an old one can leave
behind stale files from the previous version.
Optional: If you cloned the Git repository, you will need to
compile the frontend yourself. See [here](development.md#front-end-development)
and use the `build` step, not `serve`.
@@ -1,4 +1,4 @@
import { expect, test } from '@playwright/test'
import { expect, test, type WebSocketRoute } from '@playwright/test'
import path from 'node:path'
const REQUESTS_HAR = path.join(__dirname, 'requests/api-document-detail.har')
@@ -95,3 +95,60 @@ test('should support quick filters', async ({ page }) => {
.click()
await expect(page).toHaveURL(/tags__id__all=4&sort=created&reverse=1&page=1/)
})
test('should finish reloading the preview after a remote document update', async ({
page,
}) => {
let resolveStatusSocket: (socket: WebSocketRoute) => void
const statusSocketReady = new Promise<WebSocketRoute>((resolve) => {
resolveStatusSocket = resolve
})
await page.routeWebSocket(/\/ws\/status\/$/, (socket) => {
resolveStatusSocket(socket)
})
await page.routeFromHAR(REQUESTS_HAR, { notFound: 'fallback' })
let previewRequestCount = 0
page.on('request', (request) => {
if (request.url().includes('/api/documents/175/preview/')) {
previewRequestCount++
}
})
await page.goto('/documents/175/details')
await page.locator('pngx-document-detail').waitFor()
await expect(page.getByTitle('Storage path', { exact: true })).toHaveText(
/\w+/
)
const previewWasLoaded = await page.evaluate(() => {
const detail = document.querySelector('pngx-document-detail')
const component = (window as any).ng.getComponent(detail)
component.pdfPreviewLoaded({ numPages: 1 })
return component.previewLoaded()
})
expect(previewWasLoaded).toBe(true)
const previewRequestsBeforeReload = previewRequestCount
const statusSocket = await statusSocketReady
const documentReloaded = page.waitForResponse(
(response) =>
response.url().includes('/api/documents/175/?full_perms=true') &&
response.request().method() === 'GET'
)
statusSocket.send(
JSON.stringify({
type: 'document_updated',
data: {
document_id: 175,
modified: '2026-07-26T20:00:00Z',
},
})
)
await documentReloaded
await expect(
page.getByText('Document reloaded with latest changes.').first()
).toBeVisible()
await expect
.poll(() => previewRequestCount)
.toBeGreaterThan(previewRequestsBeforeReload + 1)
})
+49 -49
View File
@@ -1277,7 +1277,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1787</context>
<context context-type="linenumber">1791</context>
</context-group>
</trans-unit>
<trans-unit id="1577733187050997705" datatype="html">
@@ -2184,7 +2184,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">653</context>
<context context-type="linenumber">657</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.html</context>
@@ -3087,11 +3087,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1405</context>
<context context-type="linenumber">1409</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1788</context>
<context context-type="linenumber">1792</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context>
@@ -3688,7 +3688,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1358</context>
<context context-type="linenumber">1362</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context>
@@ -3800,7 +3800,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1841</context>
<context context-type="linenumber">1845</context>
</context-group>
</trans-unit>
<trans-unit id="6661109599266152398" datatype="html">
@@ -3811,7 +3811,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1842</context>
<context context-type="linenumber">1846</context>
</context-group>
</trans-unit>
<trans-unit id="5162686434580248853" datatype="html">
@@ -3822,7 +3822,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1843</context>
<context context-type="linenumber">1847</context>
</context-group>
</trans-unit>
<trans-unit id="8157388568390631653" datatype="html">
@@ -5724,7 +5724,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1362</context>
<context context-type="linenumber">1366</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context>
@@ -7966,88 +7966,88 @@
<source>Enter Password</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
<context context-type="linenumber">512</context>
<context context-type="linenumber">513</context>
</context-group>
</trans-unit>
<trans-unit id="5758784066858623886" datatype="html">
<source>Error retrieving metadata</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">423</context>
<context context-type="linenumber">424</context>
</context-group>
</trans-unit>
<trans-unit id="2218903673684131427" datatype="html">
<source>An error occurred loading content: <x id="PH" equiv-text="err.message ?? err.toString()"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">525,527</context>
<context context-type="linenumber">526,528</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">982,984</context>
<context context-type="linenumber">986,988</context>
</context-group>
</trans-unit>
<trans-unit id="6357361810318120957" datatype="html">
<source>Document was updated</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">648</context>
<context context-type="linenumber">652</context>
</context-group>
</trans-unit>
<trans-unit id="5154064822428631306" datatype="html">
<source>Document was updated at <x id="PH" equiv-text="formattedModified"/>.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">649</context>
<context context-type="linenumber">653</context>
</context-group>
</trans-unit>
<trans-unit id="8462497568316256794" datatype="html">
<source>Reload to discard your local unsaved edits and load the latest remote version.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">650</context>
<context context-type="linenumber">654</context>
</context-group>
</trans-unit>
<trans-unit id="7967484035994732534" datatype="html">
<source>Reload</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">652</context>
<context context-type="linenumber">656</context>
</context-group>
</trans-unit>
<trans-unit id="2907037627372942104" datatype="html">
<source>Document reloaded with latest changes.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">708</context>
<context context-type="linenumber">712</context>
</context-group>
</trans-unit>
<trans-unit id="6435639868943916539" datatype="html">
<source>Document reloaded.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">719</context>
<context context-type="linenumber">723</context>
</context-group>
</trans-unit>
<trans-unit id="6142395741265832184" datatype="html">
<source>Next document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">821</context>
<context context-type="linenumber">825</context>
</context-group>
</trans-unit>
<trans-unit id="651985345816518480" datatype="html">
<source>Previous document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">831</context>
<context context-type="linenumber">835</context>
</context-group>
</trans-unit>
<trans-unit id="2885986061416655600" datatype="html">
<source>Close document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">839</context>
<context context-type="linenumber">843</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/services/open-documents.service.ts</context>
@@ -8058,67 +8058,67 @@
<source>Save document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">846</context>
<context context-type="linenumber">850</context>
</context-group>
</trans-unit>
<trans-unit id="1784543155727940353" datatype="html">
<source>Save and close / next</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">855</context>
<context context-type="linenumber">859</context>
</context-group>
</trans-unit>
<trans-unit id="7427704425579737895" datatype="html">
<source>Error retrieving version content</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">965</context>
<context context-type="linenumber">969</context>
</context-group>
</trans-unit>
<trans-unit id="3456881259945295697" datatype="html">
<source>Error retrieving suggestions.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1026</context>
<context context-type="linenumber">1030</context>
</context-group>
</trans-unit>
<trans-unit id="2194092841814123758" datatype="html">
<source>Document &quot;<x id="PH" equiv-text="newValues.title"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1238</context>
<context context-type="linenumber">1242</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1265</context>
<context context-type="linenumber">1269</context>
</context-group>
</trans-unit>
<trans-unit id="6626387786259219838" datatype="html">
<source>Error saving document &quot;<x id="PH" equiv-text="this.document().title"/>&quot;</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1271</context>
<context context-type="linenumber">1275</context>
</context-group>
</trans-unit>
<trans-unit id="448882439049417053" datatype="html">
<source>Error saving document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1326</context>
<context context-type="linenumber">1330</context>
</context-group>
</trans-unit>
<trans-unit id="8410796510716511826" datatype="html">
<source>Do you really want to move the document &quot;<x id="PH" equiv-text="this.document().title"/>&quot; to the trash?</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1359</context>
<context context-type="linenumber">1363</context>
</context-group>
</trans-unit>
<trans-unit id="282586936710748252" datatype="html">
<source>Documents can be restored prior to permanent deletion.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1360</context>
<context context-type="linenumber">1364</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context>
@@ -8129,14 +8129,14 @@
<source>Error deleting document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1381</context>
<context context-type="linenumber">1385</context>
</context-group>
</trans-unit>
<trans-unit id="619486176823357521" datatype="html">
<source>Reprocess confirm</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1401</context>
<context context-type="linenumber">1405</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context>
@@ -8147,102 +8147,102 @@
<source>This operation will permanently recreate the archive file for this document.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1402</context>
<context context-type="linenumber">1406</context>
</context-group>
</trans-unit>
<trans-unit id="302054111564709516" datatype="html">
<source>The archive file will be re-generated with the current settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1403</context>
<context context-type="linenumber">1407</context>
</context-group>
</trans-unit>
<trans-unit id="4700389117298802932" datatype="html">
<source>Reprocess operation for &quot;<x id="PH" equiv-text="this.document().title"/>&quot; will begin in the background.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1413</context>
<context context-type="linenumber">1417</context>
</context-group>
</trans-unit>
<trans-unit id="4409560272830824468" datatype="html">
<source>Error executing operation</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1424</context>
<context context-type="linenumber">1428</context>
</context-group>
</trans-unit>
<trans-unit id="6030453331794586802" datatype="html">
<source>Error downloading document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1487</context>
<context context-type="linenumber">1491</context>
</context-group>
</trans-unit>
<trans-unit id="4458954481601077369" datatype="html">
<source>Page Fit</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1565</context>
<context context-type="linenumber">1569</context>
</context-group>
</trans-unit>
<trans-unit id="4663705961777238777" datatype="html">
<source>PDF edit operation for &quot;<x id="PH" equiv-text="this.document().title"/>&quot; will begin in the background.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1808</context>
<context context-type="linenumber">1812</context>
</context-group>
</trans-unit>
<trans-unit id="9043972994040261999" datatype="html">
<source>Error executing PDF edit operation</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1820</context>
<context context-type="linenumber">1824</context>
</context-group>
</trans-unit>
<trans-unit id="6172690334763056188" datatype="html">
<source>Please enter the current password before attempting to remove it.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1831</context>
<context context-type="linenumber">1835</context>
</context-group>
</trans-unit>
<trans-unit id="968660764814228922" datatype="html">
<source>Password removal operation for &quot;<x id="PH" equiv-text="this.document().title"/>&quot; will begin in the background.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1865</context>
<context context-type="linenumber">1869</context>
</context-group>
</trans-unit>
<trans-unit id="2282118435712883014" datatype="html">
<source>Error executing password removal operation</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1879</context>
<context context-type="linenumber">1883</context>
</context-group>
</trans-unit>
<trans-unit id="3740891324955700797" datatype="html">
<source>Print failed.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1925</context>
<context context-type="linenumber">1929</context>
</context-group>
</trans-unit>
<trans-unit id="6457245677384603573" datatype="html">
<source>Error loading document for printing.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1938</context>
<context context-type="linenumber">1942</context>
</context-group>
</trans-unit>
<trans-unit id="6085793215710522488" datatype="html">
<source>An error occurred loading tiff: <x id="PH" equiv-text="err.toString()"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">2008</context>
<context context-type="linenumber">2012</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">2014</context>
<context context-type="linenumber">2018</context>
</context-group>
</trans-unit>
<trans-unit id="4958946940233632319" datatype="html">
@@ -280,10 +280,52 @@ main {
}
}
@media screen and (min-width: 376px) and (max-width: 768px) {
@media screen and (max-width: 575.98px) {
.navbar {
display: grid;
grid-template-columns: 1fr auto 1fr;
grid-template-areas:
"toggler brand actions"
"search search search";
}
.navbar-toggler {
// compensate for 2 buttons on the right
margin-right: 45px;
grid-area: toggler;
text-align: left;
}
.navbar-brand {
grid-area: brand;
min-width: 0;
max-width: 100%;
justify-self: center;
overflow: hidden;
> div,
.custom-title {
min-width: 0;
max-width: 100%;
overflow: hidden;
}
.title,
.byline {
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.search-container {
grid-area: search;
width: 100%;
}
.navbar > ul {
grid-area: actions;
justify-self: end;
flex-wrap: nowrap;
}
}
@@ -293,13 +335,6 @@ main {
}
}
@media screen and (max-width: 345px) {
.custom-title {
max-width: 110px;
overflow: hidden;
}
}
:host ::ng-deep .dropdown.show .dropdown-toggle,
:host ::ng-deep .dropdown-toggle:hover {
opacity: 0.7;
@@ -283,6 +283,22 @@ describe('PngxPdfViewerComponent', () => {
expect(mockViewer.currentPageNumber).toBe(1)
})
it('reloads when the source revision changes', () => {
const resetSpy = jest.spyOn(component as any, 'resetViewerState')
const loadSpy = jest
.spyOn(component as any, 'loadDocument')
.mockImplementation(() => {})
component.src = 'test.pdf'
component.sourceRevision = 1
component.ngOnChanges({
sourceRevision: new SimpleChange(0, 1, false),
})
expect(resetSpy).toHaveBeenCalled()
expect(loadSpy).toHaveBeenCalled()
})
it('applies viewer state after view init when already loaded', () => {
const applySpy = jest.spyOn(component as any, 'applyViewerState')
;(component as any).hasLoaded = true
@@ -43,6 +43,7 @@ export class PngxPdfViewerComponent
private readonly document = inject<Document>(DOCUMENT)
@Input() src!: string
@Input() sourceRevision = 0
@Input() password?: string
@Input() page?: number
@Output() pageChange = new EventEmitter<number>()
@@ -93,7 +94,7 @@ export class PngxPdfViewerComponent
}
ngOnChanges(changes: SimpleChanges): void {
if (changes['src'] || changes['password']) {
if (changes['src'] || changes['sourceRevision'] || changes['password']) {
this.resetViewerState()
if (this.src) {
this.loadDocument()
@@ -472,6 +472,7 @@
<div class="preview-sticky pdf-viewer-container">
<pngx-pdf-viewer
[src]="pdfSource()"
[sourceRevision]="previewRevision()"
[password]="pdfPassword()"
[renderMode]="PdfRenderMode.All"
[page]="previewCurrentPage()" (pageChange)="previewCurrentPage.set($event)"
@@ -1602,6 +1602,7 @@ describe('DocumentDetailComponent', () => {
expect(openDoc.__changedFields).toEqual([])
expect(setDirtySpy).toHaveBeenCalledWith(openDoc, false)
expect(saveSpy).toHaveBeenCalled()
expect(component.previewRevision()).toBe(1)
})
it('should ignore incoming update for a different document id', () => {
@@ -249,6 +249,7 @@ export class DocumentDetailComponent
titleSubject: Subject<string> = new Subject()
readonly previewUrl = signal<string>(undefined)
readonly pdfSource = signal<string>(undefined)
readonly previewRevision = signal(0)
readonly pdfPassword = signal<string>(undefined)
readonly thumbUrl = signal<string>(undefined)
readonly previewText = signal<string>(undefined)
@@ -609,6 +610,9 @@ export class DocumentDetailComponent
.subscribe()
}
this.updateComponent(useDoc)
if (forceRemote) {
this.previewRevision.update((revision) => revision + 1)
}
this.titleSubject
.pipe(
debounceTime(1000),
@@ -25,7 +25,7 @@
<input #textFilterInput class="form-control form-control-sm" type="text"
[disabled]="textFilterModifierIsNull"
[(ngModel)]="textFilter"
(keyup)="textFilterKeyup($event)"
(keydown)="textFilterKeydown($event)"
[ngbTypeahead]="searchAutoComplete"
(selectItem)="itemSelected($event)"
[readonly]="textFilterTarget === 'fulltext-morelike'">
@@ -2180,17 +2180,17 @@ describe('FilterEditorComponent', () => {
it('should support Enter / Esc key on text field', () => {
component.textFilterInput.nativeElement.value = 'foo'
component.textFilterInput.nativeElement.dispatchEvent(
new KeyboardEvent('keyup', { key: 'Enter' })
new KeyboardEvent('keydown', { key: 'Enter' })
)
expect(component.textFilter).toEqual('foo')
component.textFilterInput.nativeElement.value = 'foo bar'
component.textFilterInput.nativeElement.dispatchEvent(
new KeyboardEvent('keyup', { key: 'Escape' })
new KeyboardEvent('keydown', { key: 'Escape' })
)
expect(component.textFilter).toEqual('')
const blurSpy = jest.spyOn(component.textFilterInput.nativeElement, 'blur')
component.textFilterInput.nativeElement.dispatchEvent(
new KeyboardEvent('keyup', { key: 'Escape' })
new KeyboardEvent('keydown', { key: 'Escape' })
)
expect(blurSpy).toHaveBeenCalled()
})
@@ -1312,7 +1312,7 @@ export class FilterEditorComponent
}
}
textFilterKeyup(event: KeyboardEvent) {
textFilterKeydown(event: KeyboardEvent) {
if (event.key == 'Enter') {
const filterString = (
this.textFilterInput.nativeElement as HTMLInputElement
@@ -108,6 +108,18 @@ describe('PermissionsService', () => {
actionKey: 'View', // PermissionAction.View
typeKey: 'Document', // PermissionType.Document
})
expect(
permissionsService.getPermissionKeys('view_global_statistics')
).toEqual({
actionKey: 'View', // PermissionAction.View
typeKey: 'GlobalStatistics', // PermissionType.GlobalStatistics
})
expect(
permissionsService.getPermissionKeys('view_system_monitoring')
).toEqual({
actionKey: 'View', // PermissionAction.View
typeKey: 'SystemMonitoring', // PermissionType.SystemMonitoring
})
})
it('correctly checks explicit global permissions', () => {
+7 -10
View File
@@ -110,19 +110,16 @@ export class PermissionsService {
actionKey: string
typeKey: string
} {
const matches = permissionStr.match(/(.+)_/)
let typeKey
let actionKey
if (matches?.length > 0) {
const action = matches[1]
const actionIndex = Object.values(PermissionAction).indexOf(
action as PermissionAction
)
if (actionIndex > -1) {
actionKey = Object.keys(PermissionAction)[actionIndex]
}
const actionIndex = Object.values(PermissionAction).findIndex((action) =>
permissionStr.startsWith(`${action}_`)
)
if (actionIndex > -1) {
const action = Object.values(PermissionAction)[actionIndex]
actionKey = Object.keys(PermissionAction)[actionIndex]
const typeIndex = Object.values(PermissionType).indexOf(
permissionStr.replace(action, '%s') as PermissionType
permissionStr.replace(`${action}_`, '%s_') as PermissionType
)
if (typeIndex > -1) {
typeKey = Object.keys(PermissionType)[typeIndex]
+4 -4
View File
@@ -1996,7 +1996,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.html</context>
<context context-type="linenumber">15</context>
</context-group>
<target state="needs-translation">Dismiss all</target>
<target state="translated">Descarta-ho tot</target>
</trans-unit>
<trans-unit id="1616102757855967475" datatype="html">
<source>All</source>
@@ -2076,7 +2076,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.html</context>
<context context-type="linenumber">96</context>
</context-group>
<target state="needs-translation">Search tasks</target>
<target state="translated">Cerca tasques</target>
</trans-unit>
<trans-unit id="6849725902312323996" datatype="html">
<source>Reset filters</source>
@@ -2696,7 +2696,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">348</context>
</context-group>
<target state="needs-translation">Confirm Dismiss All</target>
<target state="translated">Confirma Descarta Tot</target>
</trans-unit>
<trans-unit id="4157200209636243740" datatype="html">
<source>Dismiss all <x id="PH" equiv-text="this.totalTasks()"/> tasks?</source>
@@ -2704,7 +2704,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">349</context>
</context-group>
<target state="needs-translation">Dismiss all <x id="PH" equiv-text="this.totalTasks()"/> tasks?</target>
<target state="translated"/>
</trans-unit>
<trans-unit id="8149502458056418229" datatype="html">
<source>Success. New document id <x id="PH" equiv-text="documentId"/> created</source>
+87 -87
View File
@@ -828,7 +828,7 @@
<context context-type="sourcefile">src/app/components/admin/logs/logs.component.html</context>
<context context-type="linenumber">18</context>
</context-group>
<target state="translated">řádky</target>
<target state="translated">řádků</target>
</trans-unit>
<trans-unit id="8838884664569764142" datatype="html">
<source>Auto refresh</source>
@@ -1352,7 +1352,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">248</context>
</context-group>
<target state="needs-translation">Built-in fields to show:</target>
<target state="translated">Vestavěná pole k zobrazení:</target>
</trans-unit>
<trans-unit id="3467966318201103991" datatype="html">
<source>Uncheck fields to hide them on the document details page.</source>
@@ -1360,7 +1360,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">260</context>
</context-group>
<target state="needs-translation">Uncheck fields to hide them on the document details page.</target>
<target state="translated">Zrušte zaškrtnutí polí pro jejich skrytí na stránce s podrobnostmi o dokumentu.</target>
</trans-unit>
<trans-unit id="8508424367627989968" datatype="html" approved="yes">
<source>Bulk editing</source>
@@ -1400,7 +1400,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1787</context>
</context-group>
<target state="translated">PDF editor</target>
<target state="translated">Editor PDF</target>
</trans-unit>
<trans-unit id="1577733187050997705" datatype="html">
<source>Default editing mode</source>
@@ -1964,7 +1964,7 @@
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">298</context>
</context-group>
<target state="needs-translation">Tasks</target>
<target state="translated">Úlohy</target>
</trans-unit>
<trans-unit id="8492095365580052820" datatype="html">
<source>Tasks shows detailed information about document consumption and system tasks.</source>
@@ -1972,7 +1972,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<target state="needs-translation">Tasks shows detailed information about document consumption and system tasks.</target>
<target state="translated">Úlohy zobrazují podrobné informace o zpracování dokumentů a systémových úlohách.</target>
</trans-unit>
<trans-unit id="103921551219467537" datatype="html">
<source>Clear selection</source>
@@ -1996,7 +1996,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.html</context>
<context context-type="linenumber">15</context>
</context-group>
<target state="needs-translation">Dismiss all</target>
<target state="translated">Zahodit vše</target>
</trans-unit>
<trans-unit id="1616102757855967475" datatype="html" approved="yes">
<source>All</source>
@@ -2056,7 +2056,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">215</context>
</context-group>
<target state="needs-translation">All types</target>
<target state="translated">Všechny typy</target>
</trans-unit>
<trans-unit id="131016739441837046" datatype="html">
<source>All sources</source>
@@ -2068,7 +2068,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">227</context>
</context-group>
<target state="needs-translation">All sources</target>
<target state="translated">Všechny zdroje</target>
</trans-unit>
<trans-unit id="3570013039254960445" datatype="html">
<source>Search tasks</source>
@@ -2100,7 +2100,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.html</context>
<context context-type="linenumber">126</context>
</context-group>
<target state="needs-translation">{VAR_PLURAL, plural, =1 {1 task} other {<x id="INTERPOLATION"/> tasks}}</target>
<target state="translated">{VAR_PLURAL, plural, few {<x id="INTERPOLATION"/> úlohy} many {<x id="INTERPOLATION"/> úloh}=1 {1 úloha} other {<x id="INTERPOLATION"/> úloh}}</target>
</trans-unit>
<trans-unit id="8953033926734869941" datatype="html" approved="yes">
<source>Name</source>
@@ -2444,7 +2444,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.html</context>
<context context-type="linenumber">289</context>
</context-group>
<target state="needs-translation">No tasks match the current filters.</target>
<target state="translated">Zvoleným filtrům neodpovídají žádné úlohy.</target>
</trans-unit>
<trans-unit id="2525230676386818985" datatype="html">
<source>Result</source>
@@ -2460,7 +2460,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">55</context>
</context-group>
<target state="needs-translation">Needs attention</target>
<target state="translated">Vyžaduje pozornost</target>
</trans-unit>
<trans-unit id="3307214558906712688" datatype="html">
<source>In progress</source>
@@ -2468,7 +2468,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">56</context>
</context-group>
<target state="needs-translation">In progress</target>
<target state="translated">Probíhá</target>
</trans-unit>
<trans-unit id="1371178633976505412" datatype="html">
<source>Recently completed</source>
@@ -2476,7 +2476,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">57</context>
</context-group>
<target state="needs-translation">Recently completed</target>
<target state="translated">Nedávno dokončené</target>
</trans-unit>
<trans-unit id="2936452645673957909" datatype="html">
<source>Consume File</source>
@@ -2484,7 +2484,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">66</context>
</context-group>
<target state="needs-translation">Consume File</target>
<target state="translated">Zpracování souboru</target>
</trans-unit>
<trans-unit id="5622386857946132209" datatype="html">
<source>Train Classifier</source>
@@ -2492,7 +2492,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">70</context>
</context-group>
<target state="needs-translation">Train Classifier</target>
<target state="translated">Trénování klasifikátoru</target>
</trans-unit>
<trans-unit id="776309955507105337" datatype="html">
<source>Sanity Check</source>
@@ -2500,7 +2500,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">74</context>
</context-group>
<target state="needs-translation">Sanity Check</target>
<target state="translated">Kontrola zdraví</target>
</trans-unit>
<trans-unit id="7502272564743467653" datatype="html">
<source>Mail Fetch</source>
@@ -2520,7 +2520,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">77</context>
</context-group>
<target state="needs-translation">LLM Index</target>
<target state="translated">Index LLM</target>
</trans-unit>
<trans-unit id="6402092370576716734" datatype="html">
<source>Empty Trash</source>
@@ -2528,7 +2528,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">80</context>
</context-group>
<target state="needs-translation">Empty Trash</target>
<target state="translated">Vyprázdnění koše</target>
</trans-unit>
<trans-unit id="4173754487295857311" datatype="html">
<source>Check Workflows</source>
@@ -2536,7 +2536,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">84</context>
</context-group>
<target state="needs-translation">Check Workflows</target>
<target state="translated">Kontrola postupů</target>
</trans-unit>
<trans-unit id="2065831805515896240" datatype="html">
<source>Bulk Update</source>
@@ -2544,7 +2544,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">88</context>
</context-group>
<target state="needs-translation">Bulk Update</target>
<target state="translated">Hromadná aktualizace</target>
</trans-unit>
<trans-unit id="5062348912423871240" datatype="html">
<source>Reprocess Document</source>
@@ -2552,7 +2552,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">92</context>
</context-group>
<target state="needs-translation">Reprocess Document</target>
<target state="translated">Opětovné zpracování dokumentu</target>
</trans-unit>
<trans-unit id="6903696804811148799" datatype="html">
<source>Build Share Link</source>
@@ -2560,7 +2560,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">96</context>
</context-group>
<target state="needs-translation">Build Share Link</target>
<target state="translated">Sestavení odkazu ke sdílení</target>
</trans-unit>
<trans-unit id="6581973658756561124" datatype="html">
<source>Bulk Delete</source>
@@ -2568,7 +2568,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">100</context>
</context-group>
<target state="needs-translation">Bulk Delete</target>
<target state="translated">Hromadné smazání</target>
</trans-unit>
<trans-unit id="9172233176401579786" datatype="html">
<source>Scheduled</source>
@@ -2612,7 +2612,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">119</context>
</context-group>
<target state="needs-translation">Folder Consume</target>
<target state="translated">Zpracování složky</target>
</trans-unit>
<trans-unit id="1456901843819961615" datatype="html">
<source>Email Consume</source>
@@ -2620,7 +2620,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">123</context>
</context-group>
<target state="needs-translation">Email Consume</target>
<target state="translated">Zpracování e-mailu</target>
</trans-unit>
<trans-unit id="29832309535656200" datatype="html">
<source>System</source>
@@ -2628,7 +2628,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">125</context>
</context-group>
<target state="needs-translation">System</target>
<target state="translated">Systém</target>
</trans-unit>
<trans-unit id="2233560223291461480" datatype="html">
<source>Manual</source>
@@ -2636,7 +2636,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">126</context>
</context-group>
<target state="needs-translation">Manual</target>
<target state="translated">Ruční</target>
</trans-unit>
<trans-unit id="5404910960991552159" datatype="html">
<source>Dismiss selected</source>
@@ -2652,7 +2652,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">240</context>
</context-group>
<target state="needs-translation">Dismiss visible</target>
<target state="translated">Zahodit viditelné</target>
</trans-unit>
<trans-unit id="3169751690815214293" datatype="html">
<source>Confirm Dismiss</source>
@@ -2696,7 +2696,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">348</context>
</context-group>
<target state="needs-translation">Confirm Dismiss All</target>
<target state="translated">Potvrdit zahození všech</target>
</trans-unit>
<trans-unit id="4157200209636243740" datatype="html">
<source>Dismiss all <x id="PH" equiv-text="this.totalTasks()"/> tasks?</source>
@@ -2704,7 +2704,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">349</context>
</context-group>
<target state="needs-translation">Dismiss all <x id="PH" equiv-text="this.totalTasks()"/> tasks?</target>
<target state="translated">Zahodit všech <x id="PH" equiv-text="this.totalTasks()"/> úloh?</target>
</trans-unit>
<trans-unit id="8149502458056418229" datatype="html">
<source>Success. New document id <x id="PH" equiv-text="documentId"/> created</source>
@@ -2712,7 +2712,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">Success. New document id <x id="PH" equiv-text="documentId"/> created</target>
<target state="translated">Úspěch. Vytvořen nový dokument s ID <x id="PH" equiv-text="documentId"/></target>
</trans-unit>
<trans-unit id="8760066891202884337" datatype="html">
<source>Duplicate of document #<x id="PH" equiv-text="duplicateOf"/></source>
@@ -3540,7 +3540,7 @@
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
<context context-type="linenumber">183</context>
</context-group>
<target state="needs-translation">Attributes</target>
<target state="translated">Atributy</target>
</trans-unit>
<trans-unit id="7437910965833684826" datatype="html" approved="yes">
<source>Correspondents</source>
@@ -3572,7 +3572,7 @@
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.ts</context>
<context context-type="linenumber">105</context>
</context-group>
<target state="needs-translation">Document types</target>
<target state="translated">Typy dokumentů</target>
</trans-unit>
<trans-unit id="8835528846812581148" datatype="html">
<source>Storage paths</source>
@@ -3584,7 +3584,7 @@
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.ts</context>
<context context-type="linenumber">115</context>
</context-group>
<target state="needs-translation">Storage paths</target>
<target state="translated">Cesty úložiště</target>
</trans-unit>
<trans-unit id="9149498548977462220" datatype="html">
<source>Custom fields</source>
@@ -5540,7 +5540,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html</context>
<context context-type="linenumber">26</context>
</context-group>
<target state="needs-translation">Access system status, logs, Django backend</target>
<target state="translated">Přístup ke stavu systému, protokolům, backendu Django</target>
</trans-unit>
<trans-unit id="1808271538028523977" datatype="html">
<source>Superuser</source>
@@ -5556,7 +5556,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.html</context>
<context context-type="linenumber">30</context>
</context-group>
<target state="needs-translation">Grants all permissions and can view all objects</target>
<target state="translated">Uděluje všechna oprávnění a může zobrazovat všechny objekty</target>
</trans-unit>
<trans-unit id="8900662509426586619" datatype="html">
<source>Two-factor Authentication</source>
@@ -6344,7 +6344,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts</context>
<context context-type="linenumber">271</context>
</context-group>
<target state="needs-translation">Has any of these document types</target>
<target state="translated">Má kterýkoli z následujících typů dokumentů</target>
</trans-unit>
<trans-unit id="1507843981661822403" datatype="html">
<source>Does not have document types</source>
@@ -7546,7 +7546,7 @@
<context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.html</context>
<context context-type="linenumber">116</context>
</context-group>
<target state="needs-translation">Manage share link bundles</target>
<target state="translated">Spravovat balíčky sdílení odkazů</target>
</trans-unit>
<trans-unit id="1070687661569746428" datatype="html">
<source>Create share link bundle</source>
@@ -7554,7 +7554,7 @@
<context context-type="sourcefile">src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.ts</context>
<context context-type="linenumber">61</context>
</context-group>
<target state="needs-translation">Create share link bundle</target>
<target state="translated">Vytvořit balíček sdílení odkazů</target>
</trans-unit>
<trans-unit id="2362798555008696742" datatype="html">
<source>Create link</source>
@@ -7590,7 +7590,7 @@
<context context-type="sourcefile">src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html</context>
<context context-type="linenumber">21</context>
</context-group>
<target state="needs-translation">Status updates every few seconds while bundles are being prepared.</target>
<target state="translated">Aktualizace stavu každých pár sekund během přípravy balíčků.</target>
</trans-unit>
<trans-unit id="5194711788228004418" datatype="html">
<source>No share link bundles currently exist.</source>
@@ -7598,7 +7598,7 @@
<context context-type="sourcefile">src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.html</context>
<context context-type="linenumber">25</context>
</context-group>
<target state="needs-translation">No share link bundles currently exist.</target>
<target state="translated">V současné době neexistují žádné balíčky.</target>
</trans-unit>
<trans-unit id="2841249062294860035" datatype="html">
<source>Built:</source>
@@ -7650,7 +7650,7 @@
<context context-type="sourcefile">src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.ts</context>
<context context-type="linenumber">42</context>
</context-group>
<target state="needs-translation">Share link bundles</target>
<target state="translated">Balíčky sdílení odkazů</target>
</trans-unit>
<trans-unit id="1541995860059283227" datatype="html">
<source>Failed to load share link bundles.</source>
@@ -7658,7 +7658,7 @@
<context context-type="sourcefile">src/app/components/common/share-link-bundle-manage-dialog/share-link-bundle-manage-dialog.component.ts</context>
<context context-type="linenumber">65</context>
</context-group>
<target state="needs-translation">Failed to load share link bundles.</target>
<target state="translated">Nepodařilo se načíst balíčky sdílení odkazů.</target>
</trans-unit>
<trans-unit id="5417797597565486403" datatype="html">
<source>Error retrieving share link bundles.</source>
@@ -7942,7 +7942,7 @@
<context context-type="sourcefile">src/app/components/common/system-status-dialog/system-status-dialog.component.html</context>
<context context-type="linenumber">147</context>
</context-group>
<target state="needs-translation">Recent Task Activity <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;small text-muted fw-light&quot;&gt;"/>(<x id="INTERPOLATION" equiv-text="{{status().tasks.summary.days}}"/> days)<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/></target>
<target state="translated">Nedávná aktivita úloh <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;small text-muted fw-light&quot;&gt;"/>(<x id="INTERPOLATION" equiv-text="{{status().tasks.summary.days}}"/> days)<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/></target>
</trans-unit>
<trans-unit id="3448462145758383019" datatype="html">
<source>Total</source>
@@ -7950,7 +7950,7 @@
<context context-type="sourcefile">src/app/components/common/system-status-dialog/system-status-dialog.component.html</context>
<context context-type="linenumber">152</context>
</context-group>
<target state="needs-translation">Total</target>
<target state="translated">Celkem</target>
</trans-unit>
<trans-unit id="3521084103654700903" datatype="html">
<source>Successful</source>
@@ -7958,7 +7958,7 @@
<context context-type="sourcefile">src/app/components/common/system-status-dialog/system-status-dialog.component.html</context>
<context context-type="linenumber">156</context>
</context-group>
<target state="needs-translation">Successful</target>
<target state="translated">Úspěšných</target>
</trans-unit>
<trans-unit id="7256395947475975935" datatype="html">
<source>Failed</source>
@@ -7970,7 +7970,7 @@
<context context-type="sourcefile">src/app/data/share-link-bundle.ts</context>
<context context-type="linenumber">44</context>
</context-group>
<target state="needs-translation">Failed</target>
<target state="translated">Selhané</target>
</trans-unit>
<trans-unit id="4416413576346763682" datatype="html">
<source>Pending</source>
@@ -7982,7 +7982,7 @@
<context context-type="sourcefile">src/app/data/share-link-bundle.ts</context>
<context context-type="linenumber">41</context>
</context-group>
<target state="needs-translation">Pending</target>
<target state="translated">Čekající</target>
</trans-unit>
<trans-unit id="2000433102211963975" datatype="html">
<source>No recent tasks</source>
@@ -7990,7 +7990,7 @@
<context context-type="sourcefile">src/app/components/common/system-status-dialog/system-status-dialog.component.html</context>
<context context-type="linenumber">169</context>
</context-group>
<target state="needs-translation">No recent tasks</target>
<target state="translated">Žádné nedávné úlohy</target>
</trans-unit>
<trans-unit id="2041675390931385838" datatype="html">
<source>Health</source>
@@ -8090,7 +8090,7 @@
<context context-type="sourcefile">src/app/components/common/system-status-dialog/system-status-dialog.component.html</context>
<context context-type="linenumber">283</context>
</context-group>
<target state="needs-translation">AI Index</target>
<target state="translated">Index AI</target>
</trans-unit>
<trans-unit id="6732151329960766506" datatype="html">
<source>Copy Raw Error</source>
@@ -8660,7 +8660,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
<context context-type="linenumber">318</context>
</context-group>
<target state="needs-translation">Original SHA256 checksum</target>
<target state="translated">Původní kontrolní součet SHA256</target>
</trans-unit>
<trans-unit id="5888243105821763422" datatype="html" approved="yes">
<source>Original file size</source>
@@ -8684,7 +8684,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="needs-translation">Archive SHA256 checksum</target>
<target state="translated">Archivní kontrolní součet SHA256</target>
</trans-unit>
<trans-unit id="6033581412811562084" datatype="html" approved="yes">
<source>Archive file size</source>
@@ -8716,7 +8716,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
<context context-type="linenumber">368,371</context>
</context-group>
<target state="needs-translation">Notes <x id="START_BLOCK_IF" equiv-text="@if (document()?.notes.length) {"/><x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;badge text-bg-secondary ms-1&quot;&gt;"/><x id="INTERPOLATION" equiv-text="length}}"/><x id="CLOSE_TAG_SPAN" ctype="x-span"/><x id="CLOSE_BLOCK_IF" equiv-text="}"/></target>
<target state="translated">Poznámky <x id="START_BLOCK_IF" equiv-text="@if (document()?.notes.length) {"/><x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;badge text-bg-secondary ms-1&quot;&gt;"/><x id="INTERPOLATION" equiv-text="length}}"/><x id="CLOSE_TAG_SPAN" ctype="x-span"/><x id="CLOSE_BLOCK_IF" equiv-text="}"/></target>
</trans-unit>
<trans-unit id="186236568870281953" datatype="html">
<source>History</source>
@@ -9116,7 +9116,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.html</context>
<context context-type="linenumber">4</context>
</context-group>
<target state="needs-translation">Versions</target>
<target state="translated">Verze</target>
</trans-unit>
<trans-unit id="4077520913910941990" datatype="html">
<source>Label</source>
@@ -9124,7 +9124,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.html</context>
<context context-type="linenumber">10</context>
</context-group>
<target state="needs-translation">Label</target>
<target state="translated">Označení</target>
</trans-unit>
<trans-unit id="3915966149686975421" datatype="html">
<source>Optional</source>
@@ -9132,7 +9132,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.html</context>
<context context-type="linenumber">17</context>
</context-group>
<target state="needs-translation">Optional</target>
<target state="translated">Volitelné</target>
</trans-unit>
<trans-unit id="787787001194154763" datatype="html">
<source>Add new version</source>
@@ -9140,7 +9140,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.html</context>
<context context-type="linenumber">32</context>
</context-group>
<target state="needs-translation">Add new version</target>
<target state="translated">Přidat novou verzi</target>
</trans-unit>
<trans-unit id="3119565892291077820" datatype="html">
<source>Uploading version...</source>
@@ -9164,7 +9164,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.html</context>
<context context-type="linenumber">50</context>
</context-group>
<target state="needs-translation">Version upload failed.</target>
<target state="translated">Nepodařilo se nahrát verzi.</target>
</trans-unit>
<trans-unit id="6328986243040954523" datatype="html">
<source>Version label</source>
@@ -9176,7 +9176,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.html</context>
<context context-type="linenumber">85</context>
</context-group>
<target state="needs-translation">Version label</target>
<target state="translated">Označení verze</target>
</trans-unit>
<trans-unit id="2724055831234181057" datatype="html">
<source>Version</source>
@@ -9184,7 +9184,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.html</context>
<context context-type="linenumber">96</context>
</context-group>
<target state="needs-translation">Version</target>
<target state="translated">Verze</target>
</trans-unit>
<trans-unit id="2491751767883178298" datatype="html">
<source>Delete this version?</source>
@@ -9216,7 +9216,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.ts</context>
<context context-type="linenumber">189</context>
</context-group>
<target state="needs-translation">Error updating version label</target>
<target state="translated">Chyba při aktualizaci označení verze</target>
</trans-unit>
<trans-unit id="3567158019134759286" datatype="html">
<source>Uploading new version. Processing will happen in the background.</source>
@@ -9244,7 +9244,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.ts</context>
<context context-type="linenumber">271</context>
</context-group>
<target state="needs-translation">Upload failed.</target>
<target state="translated">Nahrání selhalo.</target>
</trans-unit>
<trans-unit id="8350861980330256599" datatype="html">
<source>Error uploading new version</source>
@@ -9348,7 +9348,7 @@
<context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.html</context>
<context context-type="linenumber">113</context>
</context-group>
<target state="needs-translation">Create a share link bundle</target>
<target state="translated">Vytvořit balíček sdílení odkazů</target>
</trans-unit>
<trans-unit id="1015374532025907183" datatype="html">
<source>Include:</source>
@@ -9755,7 +9755,7 @@
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">95,96</context>
</context-group>
<target state="needs-translation">Created: <x id="INTERPOLATION" equiv-text="{{ document().created | customDate }}"/></target>
<target state="translated">Vytvořeno: <x id="INTERPOLATION" equiv-text="{{ document().created | customDate }}"/></target>
</trans-unit>
<trans-unit id="2030261243264601523" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document().added | customDate }}"/></source>
@@ -9771,7 +9771,7 @@
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">96,97</context>
</context-group>
<target state="needs-translation">Added: <x id="INTERPOLATION" equiv-text="{{ document().added | customDate }}"/></target>
<target state="translated">Přidáno: <x id="INTERPOLATION" equiv-text="{{ document().added | customDate }}"/></target>
</trans-unit>
<trans-unit id="4235671847487610290" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document().modified | customDate }}"/></source>
@@ -10247,7 +10247,7 @@
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
<target state="translated">Pohled „<x id="PH" equiv-text="savedView.name"/>“ úspěšně vytvořen, nepodařilo se ale aktualizovat nastavení viditelnosti.</target>
</trans-unit>
<trans-unit id="739880801667335279" datatype="html">
<source>Dates</source>
@@ -11367,7 +11367,7 @@
<context context-type="sourcefile">src/app/components/manage/saved-views/saved-views.component.html</context>
<context context-type="linenumber">35</context>
</context-group>
<target state="needs-translation"><x id="START_TAG_I_BS" ctype="x-i_bs" equiv-text="bs class=&quot;me-1&quot; name=&quot;person-fill-lock&quot;&gt;"/><x id="CLOSE_TAG_I_BS" ctype="x-i_bs" equiv-text="Permissions&lt;"/>Permissions</target>
<target state="translated"><x id="START_TAG_I_BS" ctype="x-i_bs" equiv-text="bs class=&quot;me-1&quot; name=&quot;person-fill-lock&quot;&gt;"/><x id="CLOSE_TAG_I_BS" ctype="x-i_bs" equiv-text="Oprávnění&lt;"/>Oprávnění</target>
</trans-unit>
<trans-unit id="6338800642797811873" datatype="html">
<source>Documents page size</source>
@@ -11415,7 +11415,7 @@
<context context-type="sourcefile">src/app/components/manage/saved-views/saved-views.component.html</context>
<context context-type="linenumber">62</context>
</context-group>
<target state="needs-translation">Note: ordering is not preserved</target>
<target state="translated">Upozornění: pořadí nebude zachováno</target>
</trans-unit>
<trans-unit id="7877440816920439876" datatype="html" approved="yes">
<source>No saved views defined.</source>
@@ -11864,7 +11864,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">54</context>
</context-group>
<target state="needs-translation">AI Settings</target>
<target state="translated">Nastavení AI</target>
</trans-unit>
<trans-unit id="1313137480169642057" datatype="html">
<source>Output Type</source>
@@ -11896,7 +11896,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">120</context>
</context-group>
<target state="needs-translation">Archive File Generation</target>
<target state="translated">Generování archivních souborů</target>
</trans-unit>
<trans-unit id="1115402553541327390" datatype="html">
<source>Image DPI</source>
@@ -12072,7 +12072,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">277</context>
</context-group>
<target state="needs-translation">Split on Tag Barcodes</target>
<target state="translated">Rozdělení podle čárových kódů štítků</target>
</trans-unit>
<trans-unit id="7011909364081812031" datatype="html">
<source>AI Enabled</source>
@@ -12080,7 +12080,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">284</context>
</context-group>
<target state="needs-translation">AI Enabled</target>
<target state="translated">AI povoleno</target>
</trans-unit>
<trans-unit id="8028880048909383956" datatype="html">
<source>Consider privacy implications when enabling AI features, especially if using a remote model.</source>
@@ -12088,7 +12088,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">288</context>
</context-group>
<target state="needs-translation">Consider privacy implications when enabling AI features, especially if using a remote model.</target>
<target state="translated">Při aktivaci funkcí umělé inteligence zvažte dopady na ochranu osobních údajů, zejména pokud používáte vzdálený model.</target>
</trans-unit>
<trans-unit id="8131374115579345652" datatype="html">
<source>LLM Embedding Backend</source>
@@ -12096,7 +12096,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">292</context>
</context-group>
<target state="needs-translation">LLM Embedding Backend</target>
<target state="translated">Backend pro vkládání LLM</target>
</trans-unit>
<trans-unit id="6647708571891295756" datatype="html">
<source>LLM Embedding Model</source>
@@ -12104,7 +12104,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">300</context>
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
<target state="translated">Model vkládání LLM</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
@@ -12112,7 +12112,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">307</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
<target state="translated">Koncový bod vkládání LLM</target>
</trans-unit>
<trans-unit id="1044242175651289991" datatype="html">
<source>LLM Embedding Chunk Size</source>
@@ -12120,7 +12120,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">314</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
<target state="translated">Velikost bloku vkládání LLM</target>
</trans-unit>
<trans-unit id="7218245223139363113" datatype="html">
<source>LLM Context Size</source>
@@ -12128,7 +12128,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">321</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
<target state="translated">Velikost kontextu LLM</target>
</trans-unit>
<trans-unit id="4234495692726214397" datatype="html">
<source>LLM Backend</source>
@@ -12136,7 +12136,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">328</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
<target state="translated">Backend LLM</target>
</trans-unit>
<trans-unit id="7935234833834000002" datatype="html">
<source>LLM Model</source>
@@ -12144,7 +12144,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">336</context>
</context-group>
<target state="needs-translation">LLM Model</target>
<target state="translated">Model LLM</target>
</trans-unit>
<trans-unit id="1980550530387803165" datatype="html">
<source>LLM API Key</source>
@@ -12152,7 +12152,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">343</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
<target state="translated">Klíč API LLM</target>
</trans-unit>
<trans-unit id="6126617860376156501" datatype="html">
<source>LLM Endpoint</source>
@@ -12160,7 +12160,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">350</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
<target state="translated">Koncový bod LLM</target>
</trans-unit>
<trans-unit id="6572826277249350975" datatype="html">
<source>LLM Output Language</source>
@@ -12168,7 +12168,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
<target state="translated">Výstupní jazyk LLM</target>
</trans-unit>
<trans-unit id="3284403507172415792" datatype="html">
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
@@ -12176,7 +12176,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">361</context>
</context-group>
<target state="needs-translation">Language to use for generated AI suggestions. When unset, AI suggestions use the user's display language if explicitly set.</target>
<target state="translated">Jazyk, který se má použít pro návrhy generované AI. Pokud není nastaveno, návrhy AI použijí jazyk zobrazení uživatele, je-li explicitně nastaven.</target>
</trans-unit>
<trans-unit id="4493921125434706859" datatype="html">
<source>LLM Request Timeout</source>
@@ -12184,7 +12184,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
<target state="translated">Čawsový limit žádosti LLM</target>
</trans-unit>
<trans-unit id="483994032066441287" datatype="html">
<source>Timeout in seconds for LLM requests.</source>
@@ -12192,7 +12192,7 @@
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">369</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
<target state="translated">Časový limit v sekundách pro žádosti LLM.</target>
</trans-unit>
<trans-unit id="9155387182259025015" datatype="html">
<source>Processing</source>
+1 -1
View File
@@ -1528,7 +1528,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">306,308</context>
</context-group>
<target state="needs-translation"> Settings apply to this user account for objects (Tags, Mail Rules, etc.) created via the web UI. These settings do not apply to documents. </target>
<target state="translated"> Die Einstellungen gelten für dieses Benutzerkonto in Bezug auf Objekte (Tags, E-Mail-Regeln usw.), die über die Weboberfläche erstellt wurden. Diese Einstellungen gelten nicht für Dokumente. </target>
</trans-unit>
<trans-unit id="4292903881380648974" datatype="html" approved="yes">
<source>Default Owner</source>
+10 -10
View File
@@ -1528,7 +1528,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">306,308</context>
</context-group>
<target state="needs-translation"> Settings apply to this user account for objects (Tags, Mail Rules, etc.) created via the web UI. These settings do not apply to documents. </target>
<target state="translated"> Innstillinger gjelder denne brukerkontoen for objekter (Etiketter, postregler, etc.) som er opprettet via web-grensesnittet. Disse innstillingene gjelder ikke for dokumenter. </target>
</trans-unit>
<trans-unit id="4292903881380648974" datatype="html">
<source>Default Owner</source>
@@ -2076,7 +2076,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.html</context>
<context context-type="linenumber">96</context>
</context-group>
<target state="needs-translation">Search tasks</target>
<target state="translated">Søk oppgaver</target>
</trans-unit>
<trans-unit id="6849725902312323996" datatype="html">
<source>Reset filters</source>
@@ -2620,7 +2620,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">123</context>
</context-group>
<target state="translated">E-postforbruk</target>
<target state="translated">E-post-import</target>
</trans-unit>
<trans-unit id="29832309535656200" datatype="html">
<source>System</source>
@@ -4924,7 +4924,7 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
<context context-type="linenumber">32</context>
</context-group>
<target state="translated">Paperløst vil bare behandle e-poster som passer til <x id="START_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;em&gt;"/>hele<x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> av kriteriene som er angitt nedenfor.</target>
<target state="translated">Paperless vil bare behandle e-poster som passer til <x id="START_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;em&gt;"/>hele<x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> av kriteriene som er angitt nedenfor.</target>
</trans-unit>
<trans-unit id="7046259383943324039" datatype="html">
<source>Folder</source>
@@ -6810,7 +6810,7 @@
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
<context context-type="linenumber">56</context>
</context-group>
<target state="translated">Filtrer dokumenter med disse Etikettene</target>
<target state="translated">Filtrer dokumenter med disse etikettene</target>
</trans-unit>
<trans-unit id="1400555558847223243" datatype="html">
<source>Suggestion:</source>
@@ -7478,7 +7478,7 @@
<context context-type="sourcefile">src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html</context>
<context context-type="linenumber">68</context>
</context-group>
<target state="needs-translation">Share link</target>
<target state="translated">Del kobling</target>
</trans-unit>
<trans-unit id="2618101617221155143" datatype="html">
<source>Copy link</source>
@@ -8416,7 +8416,7 @@
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="needs-translation">Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn()}}"/></target>
<target state="translated">Søker etter dokument med asn<x id="INTERPOLATION" equiv-text="{{asn()}}"/></target>
</trans-unit>
<trans-unit id="1407560924967345762" datatype="html">
<source>Page</source>
@@ -9720,7 +9720,7 @@
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">8</context>
</context-group>
<target state="needs-translation"><x id="INTERPOLATION" equiv-text="document().title | documentTitle }}"/> thumbnail</target>
<target state="translated"><x id="INTERPOLATION" equiv-text="document().title | documentTitle }}"/> miniatyr</target>
</trans-unit>
<trans-unit id="2784168796433474565" datatype="html">
<source>Filter by tag</source>
@@ -10008,7 +10008,7 @@
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
<context context-type="linenumber">135</context>
</context-group>
<target state="translated">{VAR_PLURAL, plural, one {}=1 {1 dokument} other {E-post <x id="INTERPOLATION"/> dokumenter}}</target>
<target state="translated">{VAR_PLURAL, plural, one {}=1 {1 dokument} other {<x id="INTERPOLATION"/> dokumenter}}</target>
</trans-unit>
<trans-unit id="2243770355958919528" datatype="html">
<source>(filtered)</source>
@@ -11328,7 +11328,7 @@
<context context-type="sourcefile">src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html</context>
<context context-type="linenumber">29</context>
</context-group>
<target state="needs-translation">Select all processed email messages</target>
<target state="translated">Velg alle behandlede e-postmeldinger</target>
</trans-unit>
<trans-unit id="8691920320483720007" datatype="html">
<source>Received</source>
+23 -23
View File
@@ -1528,7 +1528,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">306,308</context>
</context-group>
<target state="needs-translation"> Settings apply to this user account for objects (Tags, Mail Rules, etc.) created via the web UI. These settings do not apply to documents. </target>
<target state="translated"> Nastavitve veljajo za ta uporabniški račun za objekte (oznake, pravila za pošto itd.), ustvarjene prek spletnega uporabniškega vmesnika. Te nastavitve ne veljajo za dokumente. </target>
</trans-unit>
<trans-unit id="4292903881380648974" datatype="html">
<source>Default Owner</source>
@@ -2076,7 +2076,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.html</context>
<context context-type="linenumber">96</context>
</context-group>
<target state="needs-translation">Search tasks</target>
<target state="translated">Iskanje nalog</target>
</trans-unit>
<trans-unit id="6849725902312323996" datatype="html">
<source>Reset filters</source>
@@ -2704,7 +2704,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">349</context>
</context-group>
<target state="needs-translation">Dismiss all <x id="PH" equiv-text="this.totalTasks()"/> tasks?</target>
<target state="translated">Opustim vse naloge <x id="PH" equiv-text="this.totalTasks()"/>?</target>
</trans-unit>
<trans-unit id="8149502458056418229" datatype="html">
<source>Success. New document id <x id="PH" equiv-text="documentId"/> created</source>
@@ -7378,7 +7378,7 @@
<context context-type="sourcefile">src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html</context>
<context context-type="linenumber">22</context>
</context-group>
<target state="needs-translation">+ <x id="INTERPOLATION" equiv-text="{{ selectionCount() - documentPreview().length }}"/> more…</target>
<target state="translated">+ <x id="INTERPOLATION" equiv-text="{{ selectionCount() - documentPreview().length }}"/> več…</target>
</trans-unit>
<trans-unit id="8037476586059399916" datatype="html">
<source>Expires</source>
@@ -7478,7 +7478,7 @@
<context context-type="sourcefile">src/app/components/common/share-link-bundle-dialog/share-link-bundle-dialog.component.html</context>
<context context-type="linenumber">68</context>
</context-group>
<target state="needs-translation">Share link</target>
<target state="translated">Deli povezavo</target>
</trans-unit>
<trans-unit id="2618101617221155143" datatype="html">
<source>Copy link</source>
@@ -7942,7 +7942,7 @@
<context context-type="sourcefile">src/app/components/common/system-status-dialog/system-status-dialog.component.html</context>
<context context-type="linenumber">147</context>
</context-group>
<target state="needs-translation">Recent Task Activity <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;small text-muted fw-light&quot;&gt;"/>(<x id="INTERPOLATION" equiv-text="{{status().tasks.summary.days}}"/> days)<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/></target>
<target state="translated">Nedavna aktivnost opravila <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;small text-muted fw-light&quot;&gt;"/>(<x id="INTERPOLATION" equiv-text="{{status().tasks.summary.days}}"/> dni)<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/></target>
</trans-unit>
<trans-unit id="3448462145758383019" datatype="html">
<source>Total</source>
@@ -8416,7 +8416,7 @@
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
<context context-type="linenumber">1</context>
</context-group>
<target state="needs-translation">Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn()}}"/></target>
<target state="translated">Iskanje dokumenta z asn <x id="INTERPOLATION" equiv-text="{{asn()}}"/></target>
</trans-unit>
<trans-unit id="1407560924967345762" datatype="html">
<source>Page</source>
@@ -8440,7 +8440,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
<context context-type="linenumber">7,8</context>
</context-group>
<target state="needs-translation">of <x id="INTERPOLATION" equiv-text="{{previewNumPages()}}"/></target>
<target state="translated">od <x id="INTERPOLATION" equiv-text="{{previewNumPages()}}"/></target>
</trans-unit>
<trans-unit id="8590109102084543521" datatype="html">
<source>-</source>
@@ -8660,7 +8660,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
<context context-type="linenumber">318</context>
</context-group>
<target state="needs-translation">Original SHA256 checksum</target>
<target state="translated">Izvirna kontrolna vsota SHA256</target>
</trans-unit>
<trans-unit id="5888243105821763422" datatype="html">
<source>Original file size</source>
@@ -8684,7 +8684,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
<context context-type="linenumber">331</context>
</context-group>
<target state="needs-translation">Archive SHA256 checksum</target>
<target state="translated">Arhivska kontrolna vsota SHA256</target>
</trans-unit>
<trans-unit id="6033581412811562084" datatype="html">
<source>Archive file size</source>
@@ -8716,7 +8716,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
<context context-type="linenumber">368,371</context>
</context-group>
<target state="needs-translation">Notes <x id="START_BLOCK_IF" equiv-text="@if (document()?.notes.length) {"/><x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;badge text-bg-secondary ms-1&quot;&gt;"/><x id="INTERPOLATION" equiv-text="length}}"/><x id="CLOSE_TAG_SPAN" ctype="x-span"/><x id="CLOSE_BLOCK_IF" equiv-text="}"/></target>
<target state="translated">Opombe <x id="START_BLOCK_IF" equiv-text="@if (document()?.notes.length) {"/><x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;badge text-bg-secondary ms-1&quot;&gt;"/><x id="INTERPOLATION" equiv-text="length}}"/><x id="CLOSE_TAG_SPAN" ctype="x-span"/><x id="CLOSE_BLOCK_IF" equiv-text="}"/></target>
</trans-unit>
<trans-unit id="186236568870281953" datatype="html">
<source>History</source>
@@ -8732,7 +8732,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
<context context-type="linenumber">401,405</context>
</context-group>
<target state="needs-translation"> Duplicates <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;badge text-bg-secondary ms-1&quot;&gt;"/><x id="INTERPOLATION" equiv-text="cate_documents.length }}"/><x id="CLOSE_TAG_SPAN" ctype="x-span"/></target>
<target state="translated"> Dvojniki <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;badge text-bg-secondary ms-1&quot;&gt;"/><x id="INTERPOLATION" equiv-text="cate_documents.length }}"/><x id="CLOSE_TAG_SPAN" ctype="x-span"/></target>
</trans-unit>
<trans-unit id="6449374629822973702" datatype="html">
<source>Duplicate documents detected:</source>
@@ -8936,7 +8936,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1271</context>
</context-group>
<target state="needs-translation">Error saving document "<x id="PH" equiv-text="this.document().title"/>"</target>
<target state="translated">Napaka pri shranjevanju dokumenta "<x id="PH" equiv-text="this.document().title"/>"</target>
</trans-unit>
<trans-unit id="448882439049417053" datatype="html">
<source>Error saving document</source>
@@ -8952,7 +8952,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1359</context>
</context-group>
<target state="needs-translation">Do you really want to move the document "<x id="PH" equiv-text="this.document().title"/>" to the trash?</target>
<target state="translated">Ali res želite premakniti dokument "<x id="PH" equiv-text="this.document().title"/>" v koš?</target>
</trans-unit>
<trans-unit id="282586936710748252" datatype="html">
<source>Documents can be restored prior to permanent deletion.</source>
@@ -9008,7 +9008,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1413</context>
</context-group>
<target state="needs-translation">Reprocess operation for "<x id="PH" equiv-text="this.document().title"/>" will begin in the background.</target>
<target state="translated">V ozadju se bo začel postopek ponovne obdelave za "<x id="PH" equiv-text="this.document().title"/>".</target>
</trans-unit>
<trans-unit id="4409560272830824468" datatype="html">
<source>Error executing operation</source>
@@ -9040,7 +9040,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1808</context>
</context-group>
<target state="needs-translation">PDF edit operation for "<x id="PH" equiv-text="this.document().title"/>" will begin in the background.</target>
<target state="translated">Urejanje PDF-ja za "<x id="PH" equiv-text="this.document().title"/>" se bo začelo v ozadju.</target>
</trans-unit>
<trans-unit id="9043972994040261999" datatype="html">
<source>Error executing PDF edit operation</source>
@@ -9064,7 +9064,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1865</context>
</context-group>
<target state="needs-translation">Password removal operation for "<x id="PH" equiv-text="this.document().title"/>" will begin in the background.</target>
<target state="translated">Operacija odstranitve gesla za "<x id="PH" equiv-text="this.document().title"/>" se bo začela v ozadju.</target>
</trans-unit>
<trans-unit id="2282118435712883014" datatype="html">
<source>Error executing password removal operation</source>
@@ -9720,7 +9720,7 @@
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">8</context>
</context-group>
<target state="needs-translation"><x id="INTERPOLATION" equiv-text="document().title | documentTitle }}"/> thumbnail</target>
<target state="translated"><x id="INTERPOLATION" equiv-text="document().title | documentTitle }}"/> sličica</target>
</trans-unit>
<trans-unit id="2784168796433474565" datatype="html">
<source>Filter by tag</source>
@@ -9756,7 +9756,7 @@
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">95,96</context>
</context-group>
<target state="needs-translation">Created: <x id="INTERPOLATION" equiv-text="{{ document().created | customDate }}"/></target>
<target state="translated">Ustvarjeno: <x id="INTERPOLATION" equiv-text="{{ document().created | customDate }}"/></target>
</trans-unit>
<trans-unit id="2030261243264601523" datatype="html">
<source>Added: <x id="INTERPOLATION" equiv-text="{{ document().added | customDate }}"/></source>
@@ -9772,7 +9772,7 @@
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">96,97</context>
</context-group>
<target state="needs-translation">Added: <x id="INTERPOLATION" equiv-text="{{ document().added | customDate }}"/></target>
<target state="translated">Dodano: <x id="INTERPOLATION" equiv-text="{{ document().added | customDate }}"/></target>
</trans-unit>
<trans-unit id="4235671847487610290" datatype="html">
<source>Modified: <x id="INTERPOLATION" equiv-text="{{ document().modified | customDate }}"/></source>
@@ -9788,7 +9788,7 @@
<context context-type="sourcefile">src/app/components/document-list/document-card-small/document-card-small.component.html</context>
<context context-type="linenumber">97,98</context>
</context-group>
<target state="needs-translation">Modified: <x id="INTERPOLATION" equiv-text="{{ document().modified | customDate }}"/></target>
<target state="translated">Spremenjeno: <x id="INTERPOLATION" equiv-text="{{ document().modified | customDate }}"/></target>
</trans-unit>
<trans-unit id="197162226430950645" datatype="html">
<source>{VAR_PLURAL, plural, =1 {1 page} other {<x id="INTERPOLATION"/> pages}}</source>
@@ -11312,7 +11312,7 @@
<context context-type="sourcefile">src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html</context>
<context context-type="linenumber">2</context>
</context-group>
<target state="needs-translation">Processed Mail for <x id="START_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;em&gt;"/><x id="INTERPOLATION" equiv-text="{{ rule().name }}"/><x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/></target>
<target state="translated">Obdelana pošta za <x id="START_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;em&gt;"/><x id="INTERPOLATION" equiv-text="{{ rule().name }}"/><x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/></target>
</trans-unit>
<trans-unit id="1991019495862291373" datatype="html">
<source>No processed email messages found.</source>
@@ -11328,7 +11328,7 @@
<context context-type="sourcefile">src/app/components/manage/mail/processed-mail-dialog/processed-mail-dialog.component.html</context>
<context context-type="linenumber">29</context>
</context-group>
<target state="needs-translation">Select all processed email messages</target>
<target state="translated">Izberi vsa obdelana e-poštna sporočila</target>
</trans-unit>
<trans-unit id="8691920320483720007" datatype="html">
<source>Received</source>
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Afrikaans\n"
"Language: af_ZA\n"
@@ -1919,151 +1919,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Engels (VS)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arabies"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Belorussies"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Katalaans"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Tsjeggies"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Deens"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Duits"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr ""
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Engels (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Spaans"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Fins"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Frans"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italiaans"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxemburgs"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr ""
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Nederlands"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Pools"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugees (Brasilië)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugees"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Roemeens"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Russies"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr ""
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Sloweens"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Serwies"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Sweeds"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turks"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Vereenvoudigde Sjinees"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Amharic\n"
"Language: am_ET\n"
@@ -1919,151 +1919,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr ""
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr ""
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr ""
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr ""
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr ""
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr ""
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr ""
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr ""
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr ""
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr ""
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr ""
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr ""
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr ""
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr ""
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr ""
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr ""
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr ""
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr ""
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr ""
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr ""
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr ""
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr ""
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr ""
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr ""
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr ""
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr ""
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Arabic\n"
"Language: ar_SA\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "إعدادات التطبيق paperless"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "الإنجليزية (الولايات المتحدة)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "العربية"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "اللغة الأفريقانية"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "البيلاروسية"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "البلغارية"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "اللغة الكتالونية"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "التشيكية"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "الدانماركية"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "الألمانية"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "اليونانية"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "الإنجليزية (المملكة المتحدة)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "الإسبانية"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "الفنلندية"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "الفرنسية"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "المجرية"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "الإيطالية"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "اليابانية"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "اللوكسمبرجية"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "النرويجية"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "الهولندية"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "البولندية"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "البرتغالية (البرازيل)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "البرتغالية"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "الرومانية"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "الروسية"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "السلوفاكية"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "السلوفانية"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "الصربية"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "السويدية"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "التركية"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "الأوكرانية"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "الصينية المبسطة"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Belarusian\n"
"Language: be_BY\n"
@@ -1919,151 +1919,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Англійская (ЗША)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr ""
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Беларуская"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr ""
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Чэшская"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Дацкая"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Нямецкая"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr ""
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Англійская (Вялікабрытанія)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Іспанская"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr ""
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Французская"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Італьянская"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Люксембургская"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr ""
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Нідэрландская"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Польская"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Партугальская (Бразілія)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Партугальская"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Румынская"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Руская"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr ""
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Славенская"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Сербская"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Шведская"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Турэцкая"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Кітайская спрошчаная"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Bulgarian\n"
"Language: bg_BG\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "настройки на софтуера"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Английски (САЩ)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Арабски"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Африканс"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Беларуски"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Български"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Каталунски"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Чешки"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Датски"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Немски"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Гръцки"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Английски (Великобритания)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Испански"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Финландски"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Френски"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Унгарски"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Италиански"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Японски"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Корейски"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Люксембургски"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Норвежки"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Холандски"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Полски"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Португалски (Бразилия)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Португалски"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Румънски"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Руски"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Словашки"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Словенски"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Сръбски"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Шведски"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Турски"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Украински"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Китайски опростен"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Китайски традиционен"
+41 -41
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Catalan\n"
"Language: ca_ES\n"
@@ -1914,157 +1914,157 @@ msgstr "Estableix l'idioma de sortida de LLM"
#: paperless/models.py:370
msgid "Sets the LLM timeout in seconds"
msgstr ""
msgstr "Estableix temps d'espera en segons"
#: paperless/models.py:376
msgid "paperless application settings"
msgstr "configuració de l'aplicació paperless"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Anglès (US)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Àrab"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Africà"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Bielorús"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Búlgar"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Català"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Txec"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Danès"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Alemany"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Grec"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Anglès (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Espanyol"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Persa"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finès"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Francès"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Hongarès"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indonesi"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italià"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japonès"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Coreà"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxemburguès"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Noruec"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Holandès"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polonès"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portuguès (Brasil)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portuguès"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Romanès"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Rus"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Eslovac"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Eslovè"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Serbi"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Suec"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turc"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ucranià"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnamita"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Xinès Simplificat"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Xinès tradicional"
@@ -2386,7 +2386,7 @@ msgstr "uid"
#: paperless_mail/models.py:342
msgid "uid validity"
msgstr ""
msgstr "validació uid"
#: paperless_mail/models.py:350
msgid "subject"
+74 -74
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Language: cs_CZ\n"
@@ -261,11 +261,11 @@ msgstr ""
#: documents/models.py:331
msgid "version label"
msgstr ""
msgstr "označení verze"
#: documents/models.py:335
msgid "Optional short label for a document version."
msgstr ""
msgstr "Volitelné krátké označení verze dokumentu."
#: documents/models.py:340 documents/models.py:851 documents/models.py:905
#: documents/models.py:1892
@@ -582,7 +582,7 @@ msgstr "filtrovací pravidla"
#: documents/models.py:679 documents/models.py:934
msgid "Pending"
msgstr ""
msgstr "Čekající"
#: documents/models.py:680 documents/models.py:757
msgid "Started"
@@ -602,7 +602,7 @@ msgstr ""
#: documents/models.py:686
msgid "Consume File"
msgstr "Soubor zpracování"
msgstr "Zpracování souboru"
#: documents/models.py:687
msgid "Train Classifier"
@@ -610,7 +610,7 @@ msgstr "Trénovací klasifikátor"
#: documents/models.py:688
msgid "Sanity Check"
msgstr ""
msgstr "Kontrola zdraví"
#: documents/models.py:689
msgid "Index Optimize"
@@ -622,31 +622,31 @@ msgstr "Načíst poštu"
#: documents/models.py:691
msgid "LLM Index"
msgstr ""
msgstr "Index LLM"
#: documents/models.py:692
msgid "Empty Trash"
msgstr ""
msgstr "Vyprázdnění koše"
#: documents/models.py:693
msgid "Check Workflows"
msgstr ""
msgstr "Kontrola postupů"
#: documents/models.py:694
msgid "Bulk Update"
msgstr ""
msgstr "Hromadná aktualizace"
#: documents/models.py:695
msgid "Reprocess Document"
msgstr ""
msgstr "Opětovné zpracování dokumentu"
#: documents/models.py:696
msgid "Build Share Link"
msgstr ""
msgstr "Sestavení odkazu ke sdílení"
#: documents/models.py:697
msgid "Bulk Delete"
msgstr ""
msgstr "Hromadné smazání"
#: documents/models.py:706 documents/models.py:1277
msgid "Scheduled"
@@ -662,19 +662,19 @@ msgstr ""
#: documents/models.py:709
msgid "Folder Consume"
msgstr ""
msgstr "Zpracování složky"
#: documents/models.py:710
msgid "Email Consume"
msgstr ""
msgstr "Zpracování e-mailu"
#: documents/models.py:711
msgid "System"
msgstr ""
msgstr "Systém"
#: documents/models.py:712
msgid "Manual"
msgstr ""
msgstr "Ruční"
#: documents/models.py:718
msgid "Task ID"
@@ -750,7 +750,7 @@ msgstr ""
#: documents/models.py:806
msgid "Tasks"
msgstr ""
msgstr "Úlohy"
#: documents/models.py:836
msgid "Note for the document"
@@ -802,7 +802,7 @@ msgstr ""
#: documents/models.py:937
msgid "Failed"
msgstr ""
msgstr "Selhané"
#: documents/models.py:984
msgid "size (bytes)"
@@ -826,7 +826,7 @@ msgstr ""
#: documents/models.py:1017
msgid "share link bundles"
msgstr ""
msgstr "balíčky sdílení odkazů"
#: documents/models.py:1020
#, python-format
@@ -971,7 +971,7 @@ msgstr "má tento typ dokumentu"
#: documents/models.py:1377
msgid "has one of these document types"
msgstr ""
msgstr "má jeden z následujících typů dokumentů"
#: documents/models.py:1384
msgid "does not have these document type(s)"
@@ -1342,7 +1342,7 @@ msgstr "spuštění pracovních postupů"
#: documents/serialisers.py:2763 documents/views.py:298 documents/views.py:2541
#: paperless_mail/serialisers.py:155
msgid "Insufficient permissions."
msgstr ""
msgstr "Nedostatečná oprávnění."
#: documents/serialisers.py:710
msgid "Invalid color."
@@ -1655,7 +1655,7 @@ msgstr ""
#: documents/views.py:4512
#, python-format
msgid "Insufficient permissions to share document %(id)s."
msgstr ""
msgstr "Nedostatečná oprávnění ke sdílení dokumentu %(id)s."
#: documents/views.py:4558
msgid "Bundle is already being processed."
@@ -1779,7 +1779,7 @@ msgstr "Nastaví režim OCR"
#: paperless/models.py:131
msgid "Controls archive file generation"
msgstr ""
msgstr "Ovládá generování archivních souborů"
#: paperless/models.py:139
msgid "Sets image DPI fallback value"
@@ -1867,7 +1867,7 @@ msgstr "Nastaví mapování čárových kódů na štítky"
#: paperless/models.py:285
msgid "Enables splitting on tag barcodes"
msgstr ""
msgstr "Umožňuje rozdělení podle čárových kódů štítků"
#: paperless/models.py:294
msgid "Enables AI features"
@@ -1875,197 +1875,197 @@ msgstr ""
#: paperless/models.py:300
msgid "Sets the LLM embedding backend"
msgstr ""
msgstr "Nastaví backend pro vkládání LLM"
#: paperless/models.py:308
msgid "Sets the LLM embedding model"
msgstr ""
msgstr "Nastaví model vkládání LLM"
#: paperless/models.py:315
msgid "Sets the LLM embedding endpoint, optional"
msgstr ""
msgstr "Nastaví koncový bod vkládání LLM, volitelné"
#: paperless/models.py:322
msgid "Sets the LLM embedding chunk size"
msgstr ""
msgstr "Nastaví velikost bloků vkládání LLM"
#: paperless/models.py:328
msgid "Sets the LLM context size"
msgstr ""
msgstr "Nastaví velikost kontextu LLM"
#: paperless/models.py:334
msgid "Sets the LLM backend"
msgstr ""
msgstr "Nastaví backend LLM"
#: paperless/models.py:342
msgid "Sets the LLM model"
msgstr ""
msgstr "Nastaví model LLM"
#: paperless/models.py:349
msgid "Sets the LLM API key"
msgstr ""
msgstr "Nastaví klíč API LLM"
#: paperless/models.py:356
msgid "Sets the LLM endpoint, optional"
msgstr ""
msgstr "Nastaví koncový bod LLM, volitelné"
#: paperless/models.py:363
msgid "Sets the LLM output language"
msgstr ""
msgstr "Nastaví výstupní jazyk LLM"
#: paperless/models.py:370
msgid "Sets the LLM timeout in seconds"
msgstr ""
msgstr "Nastaví časový limit LLM v sekundách"
#: paperless/models.py:376
msgid "paperless application settings"
msgstr "nastavení aplikace paperless"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Angličtina (US)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arabština"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Afrikánština"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Běloruština"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bulharština"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Katalánština"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Čeština"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Dánština"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Němčina"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Řečtina"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Angličtina (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Španělština"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Perština"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finština"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Francouzština"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Maďarština"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indonéština"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italština"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japonština"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Korejština"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Lucemburština"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norština"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Holandština"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polština"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugalština (Brazílie)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugalština"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Rumunština"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Ruština"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slovenština"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slovinština"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Srbština"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Švédština"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turečtina"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukrajinština"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnamština"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Čínština (zjednodušená)"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Čínština (tradiční)"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Danish\n"
"Language: da_DK\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "paperless-applikationsindstillinger"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Engelsk (USA)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr ""
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Afrikaans"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Hviderussisk"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bulgarsk"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Katalansk"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Tjekkisk"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Dansk"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Tysk"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Græsk"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Engelsk (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Spansk"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finsk"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Fransk"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Ungarsk"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italiensk"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japansk"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Koreansk"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxemburgsk"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norsk"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Hollandsk"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polsk"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugisisk (Brasilien)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugisisk"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Romansk"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Russisk"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slovakisk"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slovensk"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Serbisk"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Svensk"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Tyrkisk"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukrainsk"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Kinesisk, forenklet"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Kinesisk, traditionelt"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: German, Switzerland\n"
"Language: de_CH\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "Paperless-ngx-Anwendungseinstellungen"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Englisch (US)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arabisch"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Afrikanisch"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Belarussisch"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bulgarisch"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Katalanisch"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Tschechisch"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Dänisch"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Deutsch"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Griechisch"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Englisch (UK)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Spanisch"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Persisch"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finnisch"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Französisch"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Ungarisch"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indonesisch"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italienisch"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japanisch"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Koreanisch"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxemburgisch"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norwegisch"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Niederländisch"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polnisch"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugiesisch (Brasilien)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugiesisch"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Rumänisch"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Russisch"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slowakisch"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slowenisch"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Serbisch"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Schwedisch"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Türkisch"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukrainisch"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnamesisch"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Chinesisch (vereinfacht)"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Chinesisch (traditionell)"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -1920,151 +1920,151 @@ msgstr "Legt das LLM-Zeitlimit in Sekunden fest"
msgid "paperless application settings"
msgstr "Paperless-ngx-Anwendungseinstellungen"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Englisch (US)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arabisch"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Afrikanisch"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Belarussisch"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bulgarisch"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Katalanisch"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Tschechisch"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Dänisch"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Deutsch"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Griechisch"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Englisch (UK)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Spanisch"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Persisch"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finnisch"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Französisch"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Ungarisch"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indonesisch"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italienisch"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japanisch"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Koreanisch"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxemburgisch"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norwegisch"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Niederländisch"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polnisch"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugiesisch (Brasilien)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugiesisch"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Rumänisch"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Russisch"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slowakisch"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slowenisch"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Serbisch"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Schwedisch"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Türkisch"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukrainisch"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnamesisch"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Chinesisch (vereinfacht)"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Chinesisch (traditionell)"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Language: el_GR\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "ρυθμίσεις εφαρμογής paperless"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Αγγλικά (ΗΠΑ)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Αραβικά"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Αφρικανικά"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Λευκορωσικά"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Βουλγαρικά"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Καταλανικά"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Τσέχικα"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Δανέζικα"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Γερμανικά"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Ελληνικά"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Αγγλικά (Ηνωμένο Βασίλειο)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Ισπανικά"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Φινλανδικά"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Γαλλικά"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Ουγγρικά"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Ιταλικά"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Ιαπωνικά"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Κορεάτικα"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Λουξεμβουργικά"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Νορβηγικά"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Ολλανδικά"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Πολωνικά"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Πορτογαλικά (Βραζιλίας)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Πορτογαλικά"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Ρουμάνικα"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Ρωσικά"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Σλοβακικά"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Σλοβενικά"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Σερβικά"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Σουηδικά"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Τούρκικα"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ουκρανικά"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Κινέζικα Απλοποιημένα"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Κινεζικά Παραδοσιακά"
+38 -38
View File
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2022-02-17 04:17\n"
"Last-Translator: \n"
"Language-Team: English\n"
@@ -1946,151 +1946,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr ""
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr ""
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr ""
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr ""
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr ""
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr ""
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr ""
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr ""
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr ""
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr ""
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr ""
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr ""
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr ""
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr ""
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr ""
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr ""
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr ""
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr ""
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr ""
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr ""
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr ""
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr ""
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr ""
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr ""
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr ""
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr ""
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@@ -1920,151 +1920,151 @@ msgstr "Establece el tiempo de espera de LLM en segundos"
msgid "paperless application settings"
msgstr "Ajustes de la aplicación paperless"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Inglés (US)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Árabe"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Africano"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Bielorruso"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Búlgaro"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Catalán"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Checo"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Danés"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Alemán"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Griego"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Inglés (Gran Bretaña)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Español"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Persa"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finlandés"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Francés"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Húngaro"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indonesio"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italiano"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japonés"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Coreano"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxemburgués"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Noruego"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Alemán"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polaco"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugués (Brasil)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugués"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Rumano"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Ruso"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Eslovaco"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Esloveno"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Serbio"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Sueco"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turco"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ucraniano"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnamita"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Chino simplificado"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Chino tradicional"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Estonian\n"
"Language: et_EE\n"
@@ -1919,151 +1919,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr ""
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr ""
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr ""
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr ""
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr ""
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr ""
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr ""
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr ""
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr ""
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr ""
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr ""
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr ""
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr ""
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr ""
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr ""
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr ""
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr ""
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr ""
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr ""
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr ""
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr ""
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr ""
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr ""
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr ""
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr ""
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr ""
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Persian\n"
"Language: fa_IR\n"
@@ -1919,151 +1919,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "تنظیمات برنامه بدون کاغذ"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "انگلیسی (ایالات متحده)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "عربی"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "افریکان"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "وابسته به بلروس"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "وابسته به بلغاری"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "کاتالان"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "وابسته به چک"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "وابسته به دانمارکی"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "آلمانی"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "یونانی"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "انگلیسی (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "اسپانیایی"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "فارسی"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "فنلاندی"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "فرانسوی"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "مجارستانی"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "ایتالیایی"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "وابسته به ژاپنی"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "کره ای"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "وابسته به لوکس"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "نروژی"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "هلندی"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "صیقل دادن"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "پرتغالی (برزیل)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "وابسته به پرتغالی"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "وابسته به رومانی"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "روسی"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "لگن"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "وابسته به اسلوونی"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "صرب"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "سوئدی"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "ترکی"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "وابسته به اوکراینی"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "چینی ساده شد"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "چینی سنتی"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Finnish\n"
"Language: fi_FI\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Englanti (US)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arabialainen"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "valkovenäjä"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Katalaani"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Tšekki"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Tanska"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Saksa"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Kreikka"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Englanti (US)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Espanja"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Suomi"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Ranska"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italia"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxemburg"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norja"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Hollanti"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "puola"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "portugali (Brasilia)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "portugali"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "romania"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "venäjä"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slovakia"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slovenia"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Serbia"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "ruotsi"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turkki"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukraina"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Kiina (yksinkertaistettu)"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -1919,151 +1919,151 @@ msgstr "Définit le délai d'attente du LLM en secondes"
msgid "paperless application settings"
msgstr "paramètres de l'application paperless"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Anglais (US)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arabe"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Afrikaans"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Biélorusse"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bulgare"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Catalan"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Tchèque"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Danois"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Allemand"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Grec"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Anglais (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Espagnol"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Persan"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finnois"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Français"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Hongrois"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indonésien"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italien"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japonais"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Coréen"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxembourgeois"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norvégien"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Néerlandais"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polonais"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugais (Brésil)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugais"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Roumain"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Russe"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Solvaque"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slovène"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Serbe"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Suédois"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turc"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukrainien"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnamien"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Chinois simplifié"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Chinois traditionnel"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Language: he_IL\n"
@@ -1921,151 +1921,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "הגדרות יישום paperless"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "אנגלית (ארה״ב)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "ערבית"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "אפריקאנס"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "בלרוסית"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "בולגרית"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "קטלאנית"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "צ'כית"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "דנית"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "גרמנית"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "יוונית"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "אנגלית (בריטניה)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "ספרדית"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "פרסית"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "פינית"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "צרפתית"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "הונגרית"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "אינדונזית"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "איטלקית"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "יפנית"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "קוריאנית"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "לוקסמבורגית"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "נורווגית"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "הולנדית"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "פולנית"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "פורטוגלית ברזילאית"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "פורטוגלית"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "רומנית"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "רוסית"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "סלובקית"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "סלובנית"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "סרבית"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "שוודית"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "טורקית"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "אוקראינית"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "ווייטנאמית"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "סינית מפושטת"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "סינית מסורתית"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Hindi\n"
"Language: hi_IN\n"
@@ -1919,151 +1919,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr ""
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr ""
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr ""
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr ""
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr ""
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr ""
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr ""
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr ""
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr ""
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr ""
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr ""
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr ""
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr ""
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr ""
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr ""
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr ""
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr ""
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr ""
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr ""
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr ""
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr ""
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr ""
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr ""
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr ""
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr ""
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr ""
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Croatian\n"
"Language: hr_HR\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "postavke paperless aplikacije"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Engleski (US)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arapski"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "afrički"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Bjeloruski"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "bugarski"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "katalonski"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Češki"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Danski"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Njemački"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "grčki"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Engleski (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Španjolski"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "perzijski"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "finski"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Francuski"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "mađarski"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Iidonezijski"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Talijanski"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "japanski"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "koreanski"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luksemburški"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "norveški"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Nizozemski"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Poljski"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugalski (Brazil)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugalski"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Rumunjski"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Ruski"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "slovački"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slovenski"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Srpski"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Švedski"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turski"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "ukrajinski"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "vijetnamski"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Pojednostavljeni kineski"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Kineski tradicionalni"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Language: hu_HU\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "paperless alkalmazás beállítások"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Angol (US)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arab"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Afrikai"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Fehérorosz"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bolgár"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Katalán"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Cseh"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Dán"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Német"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Görög"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Angol (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Spanyol"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Perzsa"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finn"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Francia"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Magyar"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indonéz"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Olasz"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japán"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Koreai"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxemburgi"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norvég"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Holland"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Lengyel"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugál (Brazília)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugál"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Román"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Orosz"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Szlovák"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Szlovén"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Szerb"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Svéd"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Török"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukrán"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnámi"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Kínai egyszerűsített"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Tradicionális kínai"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Language: id_ID\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "pengaturan aplikasi paperless"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Inggris (AS)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arab"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Bahasa Afrika"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Belarusia"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bahasa Bulgaria"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Katalan"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Bahasa Ceko"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Denmark"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Jerman"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Yunani"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Inggris (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Spanyol"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Persia"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finlandia"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Prancis"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Hungaria"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indonesia"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italia"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Bahasa Jepang"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Bahasa Korea"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luksemburg"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norwegia"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Belanda"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polandia"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugis (Brasil)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugis"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Rumania"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Rusia"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slovakia"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slovenia"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Serbia"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Swedia"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turki"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukraina"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnam"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Mandarin Sederhana"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Tionghoa Tradisional"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -1920,151 +1920,151 @@ msgstr "Impostare il timeout dellLLM in secondi"
msgid "paperless application settings"
msgstr "impostazioni dell'applicazione paperless"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Inglese (US)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arabo"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Afrikaans"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Bielorusso"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bulgaro"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Catalano"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Ceco"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Danese"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Tedesco"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Greco"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Inglese (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Spagnolo"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Persiano"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finlandese"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Francese"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Ungherese"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indonesiano"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italiano"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Giapponese"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Coreano"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Lussemburghese"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norvegese"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Olandese"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polacco"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portoghese (Brasile)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portoghese"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Rumeno"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Russo"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slovacco"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Sloveno"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Serbo"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Svedese"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turco"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ucraino"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnamita"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Cinese semplificato"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Cinese tradizionale"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Japanese\n"
"Language: ja_JP\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "Paperless アプリケーションの設定"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "英語 (米国)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "アラビア語"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "アフリカーンス語"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "ベラルーシ語"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "ブルガリア語"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "カタロニア語"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "チェコ語"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "デンマーク語"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "ドイツ語"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "ギリシャ語"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "英語 (英国)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "スペイン語"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "フィンランド語"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "フランス語"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "ハンガリー語"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "イタリア語"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "日本語"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "韓国語"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "ルクセンブルク語"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "ノルウェー語"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "オランダ語"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "ポーランド語"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "ポルトガル語 (ブラジル)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "ポルトガル語"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "ルーマニア語"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "ロシア語"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "スロバキア語"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "スロベニア語"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "セルビア語"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "スウェーデン語"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "トルコ語"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "ウクライナ語"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "中国語 (簡体字)"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "中国語 (繁体)"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Language: ko_KR\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "페이퍼리스 애플리케이션 설정"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "영어 (미국)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "아랍어"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "아프리칸스어"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "벨라루스어"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "불가리어"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "카탈로니아어"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "체코어"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "덴마크어"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "독일어"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "그리스어"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "영어 (영국)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "스페인어"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "페르시아어"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "핀란드어"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "프랑스어"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "헝가리어"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "이탈리아어"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "일본어"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "한국어"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "룩셈부르크어"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "노르웨이어"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "네덜란드어"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "폴란드어"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "포르투갈어 (브라질)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "포르투갈어"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "루마니아어"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "러시아어"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "슬로바키아어"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "슬로베니아어"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "세르비아어"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "스웨덴어"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "튀르키예어"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "우크라이나어"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "베트남어"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "중국어 간체"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "중국어 번체"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Luxembourgish\n"
"Language: lb_LU\n"
@@ -1919,151 +1919,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Englesch (USA)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr ""
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Belarusesch"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr ""
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Tschechesch"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Dänesch"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Däitsch"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr ""
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Englesch (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Spuenesch"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr ""
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Franséisch"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italienesch"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Lëtzebuergesch"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr ""
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Hollännesch"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polnesch"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugisesch (Brasilien)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugisesch"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Rumänesch"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Russesch"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr ""
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slowenesch"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Serbesch"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Schwedesch"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Tierkesch"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Chinesesch (Vereinfacht)"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Lithuanian\n"
"Language: lt_LT\n"
@@ -1919,151 +1919,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr ""
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr ""
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr ""
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr ""
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr ""
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Daniškai"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Vokiškai"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Graikų"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Anglų (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Ispanų"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Persų"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Suomių"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Prancūzų"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Vengrų"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indoneziečių"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italų"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japonų"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Korėjiečių"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Liuksemburgiečių"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norvegų"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Olandų"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Lenkų"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugalų (Brazilija)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugalų"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Rumunų"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Rusų"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slovakų"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slovėnų"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Serbų"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Švedų"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turkų"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukrainiečių"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnamiečių"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Kinų supaprastinta"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Kinų tradicinė"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Latvian\n"
"Language: lv_LV\n"
@@ -1919,151 +1919,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Angļu (ASV)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arābu"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Āfrikāņu"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Baltkrievu"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bulgāru"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Kataloniešu"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Čehu"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Dāņu"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Vācu"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Grieķu"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Angļu (ASV)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Spāņu"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Somu"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Franču"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Ungāru"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Itāļu"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japāņu"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luksemburgiešu"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norvēģu"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Holandiešu"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Poļu"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugāļu (Brazīlija)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugāļu"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Rumāņu"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Krievu"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slovāku"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slovēņu"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Sērbu"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Zviedru"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turku"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukraiņu"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Ķīniešu (vienkāršota)"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Macedonian\n"
"Language: mk_MK\n"
@@ -1919,151 +1919,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr ""
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr ""
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr ""
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr ""
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr ""
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr ""
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr ""
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr ""
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr ""
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr ""
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr ""
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr ""
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr ""
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr ""
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr ""
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr ""
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr ""
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr ""
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr ""
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr ""
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr ""
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr ""
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr ""
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr ""
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr ""
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr ""
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Malay\n"
"Language: ms_MY\n"
@@ -1919,151 +1919,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr ""
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr ""
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr ""
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr ""
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr ""
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr ""
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr ""
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr ""
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr ""
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr ""
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr ""
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr ""
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr ""
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr ""
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr ""
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr ""
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr ""
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr ""
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr ""
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr ""
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr ""
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr ""
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr ""
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr ""
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr ""
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr ""
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+68 -68
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@@ -558,11 +558,11 @@ msgstr "mimetype is"
#: documents/models.py:632
msgid "simple title search"
msgstr ""
msgstr "eenvoudige titel zoeken"
#: documents/models.py:633
msgid "simple text search"
msgstr ""
msgstr "eenvoudige tekst zoeken"
#: documents/models.py:643
msgid "rule type"
@@ -586,19 +586,19 @@ msgstr "In behandeling"
#: documents/models.py:680 documents/models.py:757
msgid "Started"
msgstr ""
msgstr "Gestart"
#: documents/models.py:681
msgid "Success"
msgstr ""
msgstr "Geslaagd"
#: documents/models.py:682
msgid "Failure"
msgstr ""
msgstr "Mislukt"
#: documents/models.py:683
msgid "Revoked"
msgstr ""
msgstr "Ingetrokken"
#: documents/models.py:686
msgid "Consume File"
@@ -606,15 +606,15 @@ msgstr "Gebruik bestand"
#: documents/models.py:687
msgid "Train Classifier"
msgstr ""
msgstr "Train Classifier"
#: documents/models.py:688
msgid "Sanity Check"
msgstr ""
msgstr "Gezondheidscheck"
#: documents/models.py:689
msgid "Index Optimize"
msgstr ""
msgstr "Index Optimaliseren"
#: documents/models.py:690 documents/models.py:1282
msgid "Mail Fetch"
@@ -622,23 +622,23 @@ msgstr "E-mails ophalen"
#: documents/models.py:691
msgid "LLM Index"
msgstr ""
msgstr "LLM Index"
#: documents/models.py:692
msgid "Empty Trash"
msgstr ""
msgstr "Prullenbak legen"
#: documents/models.py:693
msgid "Check Workflows"
msgstr ""
msgstr "Controleer Workflows"
#: documents/models.py:694
msgid "Bulk Update"
msgstr ""
msgstr "Bulk bijwerken"
#: documents/models.py:695
msgid "Reprocess Document"
msgstr ""
msgstr "Document opnieuw verwerken"
#: documents/models.py:696
msgid "Build Share Link"
@@ -646,7 +646,7 @@ msgstr "Bouw Deel Link"
#: documents/models.py:697
msgid "Bulk Delete"
msgstr ""
msgstr "Bulk verwijderen"
#: documents/models.py:706 documents/models.py:1277
msgid "Scheduled"
@@ -658,23 +658,23 @@ msgstr "Web interface"
#: documents/models.py:708
msgid "API Upload"
msgstr ""
msgstr "API Upload"
#: documents/models.py:709
msgid "Folder Consume"
msgstr ""
msgstr "Map inlezen"
#: documents/models.py:710
msgid "Email Consume"
msgstr ""
msgstr "Email Inlezen"
#: documents/models.py:711
msgid "System"
msgstr ""
msgstr "Systeem"
#: documents/models.py:712
msgid "Manual"
msgstr ""
msgstr "Handmatig"
#: documents/models.py:718
msgid "Task ID"
@@ -682,7 +682,7 @@ msgstr "Taak ID"
#: documents/models.py:719
msgid "Celery task ID"
msgstr ""
msgstr "Celery taak ID"
#: documents/models.py:725
msgid "Task Type"
@@ -690,35 +690,35 @@ msgstr "Taak type"
#: documents/models.py:726
msgid "The kind of work being performed"
msgstr ""
msgstr "Het soort werk dat wordt uitgevoerd"
#: documents/models.py:733
msgid "Trigger Source"
msgstr ""
msgstr "Trigger bron"
#: documents/models.py:734
msgid "What initiated this task"
msgstr ""
msgstr "Wat begon deze taak"
#: documents/models.py:743
msgid "Status"
msgstr ""
msgstr "Status"
#: documents/models.py:763
msgid "Completed"
msgstr ""
msgstr "Voltooid"
#: documents/models.py:771
msgid "Duration (seconds)"
msgstr ""
msgstr "Duur (seconden)"
#: documents/models.py:772
msgid "Elapsed time from start to completion"
msgstr ""
msgstr "Verstreken tijd van begin tot voltooiing"
#: documents/models.py:778
msgid "Wait Time (seconds)"
msgstr ""
msgstr "Wachttijd (seconden)"
#: documents/models.py:779
msgid "Time from task creation to worker pickup"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "paperless applicatie instellingen"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Engels (US)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arabisch"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Afrikaans"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Wit-Russisch"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bulgaars"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Catalaans"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Tsjechisch"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Deens"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Duits"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Grieks"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Engels (Brits)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Spaans"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Perzisch"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Fins"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Frans"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Hongaars"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italiaans"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japans"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Koreaans"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxemburgs"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Noors"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Nederlands"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Pools"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugees (Brazilië)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugees"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Roemeens"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Russisch"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slowaaks"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Sloveens"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Servisch"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Zweeds"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turks"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Oekraïens"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnamees"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Chinees (vereenvoudigd)"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+40 -40
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 23:30\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Language: no_NO\n"
@@ -1920,151 +1920,151 @@ msgstr "Setter tidsavbrudd for LLM i sekunder"
msgid "paperless application settings"
msgstr "paperless application settings (NO)"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Engelsk (US)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arabisk"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Afrikansk"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Hviterussisk"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bulgarian (NO)"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Katalansk"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Tsjekkisk"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Dansk"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Tysk"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Gresk"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Engelsk (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Spansk"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Persian (NO)"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finsk"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Fransk"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Hungarian (NO)"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indonesian (NO)"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italiensk"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japanese (NO)"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Korean (NO)"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxembourgsk"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norsk"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Nederlandsk"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polsk"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugisisk (Brasil)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugisisk"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Rumensk"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Russisk"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slovakisk"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slovenian (NO)"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Serbisk"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Svensk"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Tyrkisk"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukrainsk"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnamese (NO)"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Kinesisk forenklet"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Chinese Traditional (NO)"
@@ -2386,7 +2386,7 @@ msgstr "uid (NO)"
#: paperless_mail/models.py:342
msgid "uid validity"
msgstr ""
msgstr "uid gyldighet"
#: paperless_mail/models.py:350
msgid "subject"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "paperless ustawienia aplikacji"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Angielski (USA)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "arabski"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Afrykanerski"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Białoruski"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bułgarski"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Kataloński"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Czeski"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Duński"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Niemiecki"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Grecki"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Angielski (Wielka Brytania)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Hiszpański"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "perski"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Fiński"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Francuski"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Węgierski"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indonezyjski"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Włoski"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japoński"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Koreański"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luksemburski"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norweski"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Holenderski"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polski"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugalski (Brazylia)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugalski"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Rumuński"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Rosyjski"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Słowacki"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Słoweński"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Serbski"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Szwedzki"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turecki"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukraiński"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Wietnamski"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Chiński uproszczony"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "chiński tradycyjny"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt_BR\n"
@@ -1922,151 +1922,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "configurações do aplicativo paperless"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Inglês (EUA)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Árabe"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Africanês"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Bielorrusso"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Búlgaro"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Catalão"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Tcheco"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Dinamarquês"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Alemão"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Grego"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Inglês (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Espanhol"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Persa"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finlandês"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Francês"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Húngaro"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indonésio"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italiano"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japonês"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Coreano"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxemburguês"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norueguês"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Holandês"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polonês"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Português (Brasil)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Português"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Romeno"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Russo"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Eslovaco"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Esloveno"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Sérvio"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Sueco"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turco"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ucraniano"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "vietnamita"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Chinês Simplificado"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Chinês Tradicional"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Portuguese\n"
"Language: pt_PT\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "configurações do paperless"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Inglês (EUA)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Árabe"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Africano"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Bielorrusso"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Búlgaro"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Catalão"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Checo"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Dinamarquês"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Deutsch"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Grego"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Inglês (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Espanhol"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Persa"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finlandês"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Français"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Húngaro"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italiano"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japonês"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Coreano"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxemburguês"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norueguês"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Nederlandse"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polaco"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Português (Brasil)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Português"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Romeno"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Russo"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Eslovaco"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Esloveno"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Sérvio"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Sueco"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turco"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ucraniano"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnamita"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Chinês Simplificado"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Romanian\n"
"Language: ro_RO\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "setări ale aplicației paperless"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Engleză (Americană)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arabă"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Africană"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Bielorusă"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bulgară"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Catalană"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Cehă"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Daneză"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Germană"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Greacă"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Engleză (Britanică)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Spaniolă"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Persană"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finlandeză"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Franceză"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Maghiară"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indoneziană"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italiană"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japoneză"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Coreeană"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxemburgheză"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norvegiană"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Olandeză"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Poloneză"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugheză (Brazilia)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugheză"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Română"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Rusă"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slovacă"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slovenă"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Sârbă"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Suedeză"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turcă"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ucrainiană"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnameză"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Chineză simplificată"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Chineză Tradițională"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "настройки приложения paperless"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Английский (США)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Арабский"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Африкаанс"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Белорусский"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Болгарский"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Каталонский"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Чешский"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Датский"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Немецкий"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Греческий"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Английский (Великобритании)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Испанский"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Персидский"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Финский"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Французский"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Венгерский"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Итальянский"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Японский"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Корейский"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Люксембургский"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Норвежский"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Датский"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Польский"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Португальский (Бразилия)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Португальский"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Румынский"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Русский"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Словацкий"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Словенский"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Сербский"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Шведский"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Турецкий"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Украинский"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Вьетнамский"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Китайский упрощенный"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Китайский (традиционный)"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Slovak\n"
"Language: sk_SK\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Angličtina (US)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arabčina"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr ""
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Bieloruština"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Catalan"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Čeština"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Dánčina"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Nemčina"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr ""
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Angličtina (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Španielčina"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finnish"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Francúzština"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Taliančina"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxemburčina"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr ""
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Holandčina"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polština"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugalčina (Brazília)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugalčina"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Rumunčina"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Ruština"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slovenčina"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slovinčina"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Srbčina"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Švédčina"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turečtina"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr ""
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Čínština (zjednodušená)"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+40 -40
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Slovenian\n"
"Language: sl_SI\n"
@@ -1920,151 +1920,151 @@ msgstr "Nastavi časovno omejitev LLM v sekundah"
msgid "paperless application settings"
msgstr "aplikacijske nastavitve paperless"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Angleščina (ZDA)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arabščina"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Afrikanščina"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Beloruščina"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bolgarščina"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Katalonščina"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Češčina"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Danščina"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Nemščina"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Grščina"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Angleščina (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Španščina"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Perzijščina"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finščina"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Francoščina"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Madžarščina"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indonezijščina"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italijanščina"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "japonščina"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Korejščina"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luksemburški"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norveščina"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Nizozemščina"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Poljščina"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugalščina (Brazilija)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugalščina"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Romunščina"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Ruščina"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slovaščina"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slovenščina"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Srbščina"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Švedščina"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turščina"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukrajinščina"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnamščina"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Poenostavljena kitajščina"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Tradicionalna kitajščina"
@@ -2386,7 +2386,7 @@ msgstr "uid"
#: paperless_mail/models.py:342
msgid "uid validity"
msgstr ""
msgstr "veljavnost uid-a"
#: paperless_mail/models.py:350
msgid "subject"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Albanian\n"
"Language: sq_AL\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "[SQ] paperless application settings"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "[SQ] English (US)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "[SQ] Arabic"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "[SQ] Afrikaans"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "[SQ] Belarusian"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "[SQ] Bulgarian"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "[SQ] Catalan"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "[SQ] Czech"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "[SQ] Danish"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "[SQ] German"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "[SQ] Greek"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "[SQ] English (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "[SQ] Spanish"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "[SQ] Persian"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "[SQ] Finnish"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "[SQ] French"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "[SQ] Hungarian"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "[SQ] Indonesian"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "[SQ] Italian"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "[SQ] Japanese"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "[SQ] Korean"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "[SQ] Luxembourgish"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "[SQ] Norwegian"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "[SQ] Dutch"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "[SQ] Polish"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "[SQ] Portuguese (Brazil)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "[SQ] Portuguese"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "[SQ] Romanian"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "[SQ] Russian"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "[SQ] Slovak"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "[SQ] Slovenian"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "[SQ] Serbian"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "[SQ] Swedish"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "[SQ] Turkish"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "[SQ] Ukrainian"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "[SQ] Vietnamese"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "[SQ] Chinese Simplified"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "[SQ] Chinese Traditional"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Serbian (Latin)\n"
"Language: sr_CS\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "podešavanje paperless aplikacije"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Engleski (US)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arapski"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Afrički"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Beloruski"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bugarski"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Katalonski"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Češki"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Danski"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Nemački"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Grčki"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Engleski (UK)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Španski"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Persijski"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finski"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Francuski"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Mađarski"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indonežanski"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italijanski"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japanski"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Korejski"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luksemburški"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norveški"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Holandski"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Poljski"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugalski (Brazil)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugalski"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Rumunski"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Ruski"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slovački"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slovenački"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Srpski"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Švedski"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turski"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukrajinski"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vijetnamski"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Kineski pojednostavljen"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Tradicionalni kineski"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Engelska (USA)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arabiska"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Afrikaans"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Belarusiska"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bulgariska"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Kataloniska"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Tjeckiska"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Danska"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Tyska"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Grekiska"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Engelska (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Spanska"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Persiska"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Finska"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Franska"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Ungerska"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Indonesiska"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Italienska"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japanska"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Koreanska"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxemburgiska"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norska"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Holländska"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polska"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portugisiska (Brasilien)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portugisiska"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Rumänska"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Ryska"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slovakiska"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slovenska"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Serbiska"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Svenska"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Turkiska"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukrainiska"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnamesiska"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Kinesiska (förenklad)"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Kinesiska traditionell"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Thai\n"
"Language: th_TH\n"
@@ -1919,151 +1919,151 @@ msgstr ""
msgid "paperless application settings"
msgstr ""
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "ภาษาอังกฤษ (สหรัฐฯ)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "ภาษาอาหรับ"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "ภาษาอาฟรีกานส์"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "ภาษาเบลารุส"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr ""
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "ภาษาคาตาลัน"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "ภาษาเช็ก"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "ภาษาเดนมาร์ก"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "ภาษาเยอรมัน"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "ภาษากรีก"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "ภาษาอังกฤษ (สหราชอาณาจักร)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "ภาษาสเปน"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "ภาษาฟินแลนด์"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "ภาษาฝรั่งเศส"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr ""
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "ภาษาอิตาลี"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr ""
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr ""
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "ภาษาลักเซมเบิร์ก"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "ภาษานอร์เวย์"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "ภาษาดัตช์"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "ภาษาโปแลนด์"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "ภาษาโปรตุเกส (บราซิล)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "ภาษาโปรตุเกส"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "ภาษาโรมาเนีย"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "ภาษารัสเซีย"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "ภาษาสโลวาเกีย"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "ภาษาสโลเวเนีย"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "ภาษาเซอร์เบีย"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "ภาษาสวีเดน"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "ภาษาตุรกี"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "ภาษายูเครน"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "ภาษาจีน (ตัวย่อ)"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Language: tr_TR\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "paperless uygulama ayarları"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "İngilizce (Birleşik Devletler)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Arapça"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Afrika dili"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Belarusça"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Bulgarca"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Katalanca"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Çekçe"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Danca"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Almanca"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Yunanca"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "İngilizce (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "İspanyolca"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Farsça"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Fince"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Fransızca"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Macarca"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "İtalyanca"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Japonca"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Korece"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Lüksemburgca"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norveçce"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Hollandaca"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Polonyaca"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Portekizce (Brezilya)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Portekizce"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Romence"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Rusça"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Slovakça"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Slovakça"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Sırpça"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "İsveççe"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Türkçe"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukraynaca"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Vietnamca"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Basitleştirilmiş Çince"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Geleneksel Çince"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Ukrainian\n"
"Language: uk_UA\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "налаштування програми документообігу"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Англійська (США)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Арабська"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Африкаанс"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Білоруська"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Болгарська"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Каталонська"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Чеська"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Данська"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Німецька"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Грецька"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Англійська (Велика Британія)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Іспанська"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr ""
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Фінська"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Французька"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Угорська"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Італійська"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Японська"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Корейська"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Люксембурзька"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Норвезька"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Нідерландська"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Польська"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Португальська (Бразилія)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Португальська"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Румунська"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Російська"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Словацька"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Словенська"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Сербська"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Шведська"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Турецька"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Українська"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr ""
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Китайська спрощена"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr ""
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"Language: vi_VN\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "thiết đặt ứng dụng không cần giấy tờ"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "Tiếng Anh (Hoa Kỳ)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "Tiếng Ả Rập"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Tiếng Afrikaans"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "Tiếng Belarus"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "Tiếng Bulgaria"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Tiếng Catalan"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "Séc"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "Đan Mạch"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "Tiếng Đức"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Tiếng Hy Lạp"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "Tiếng Anh (GB)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "Tiếng Tây Ban Nha"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "Tiếng Ba Tư"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "Tiếng Phần Lan"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "Tiếng Pháp"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "Tiếng Hungary"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "Tiếng Indonesia"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "Tiếng Ý"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "Tiếng Nhật"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "Tiếng Hàn"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "Luxembourgish"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Tiếng Na Uy"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "Tiếng Hà Lan"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "Tiếng Ba Lan"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "Tiếng Bồ Đào Nha (Brazil)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "Tiếng Bồ Đào Nha"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "Tiếng Romania"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "Tiếng Nga"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "Tiếng Slovakia"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "Tiếng Slovenia"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "Tiếng Serbia"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "Tiếng Thụy Điển"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "Thổ Nhĩ Kỳ"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "Ukraine"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "Tiếng Việt"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "Tiếng Trung Giản thể"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "Tiếng Trung (Phồn thể)"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -1920,151 +1920,151 @@ msgstr "设置 LLM 超时时间(秒)"
msgid "paperless application settings"
msgstr "paperless 应用设置"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "英语(美国)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "阿拉伯语"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "Afrikaans 荷兰语"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "白俄罗斯语"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "保加利亚语"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "Catalan 加泰罗尼亚语"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "捷克语"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "丹麦语"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "德语"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "Greek 希腊语"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "英语(英国)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "西班牙语"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "波斯文"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "已完成"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "法语"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "匈牙利语"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr "印度尼西亚语"
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "意大利语"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "日语"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "韩语"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "卢森堡语"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "Norwegian 挪威语"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "荷兰语"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "波兰语"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "葡萄牙语 (巴西)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "葡萄牙语"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "罗马尼亚语"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "俄语"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "斯洛伐克语"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "斯洛语尼亚语"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "塞尔维亚语"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "瑞典语"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "土耳其语"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "乌克兰语"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "越南语"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "简体中文"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "繁体中文"
+39 -39
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-23 19:21+0000\n"
"PO-Revision-Date: 2026-07-23 19:23\n"
"POT-Creation-Date: 2026-07-25 07:12+0000\n"
"PO-Revision-Date: 2026-07-25 07:14\n"
"Last-Translator: \n"
"Language-Team: Chinese Traditional\n"
"Language: zh_TW\n"
@@ -1920,151 +1920,151 @@ msgstr ""
msgid "paperless application settings"
msgstr "Paperless 應用程式設定"
#: paperless/settings/__init__.py:545
#: paperless/settings/__init__.py:556
msgid "English (US)"
msgstr "英文(美國)"
#: paperless/settings/__init__.py:546
#: paperless/settings/__init__.py:557
msgid "Arabic"
msgstr "阿拉伯文"
#: paperless/settings/__init__.py:547
#: paperless/settings/__init__.py:558
msgid "Afrikaans"
msgstr "南非荷蘭文"
#: paperless/settings/__init__.py:548
#: paperless/settings/__init__.py:559
msgid "Belarusian"
msgstr "白俄羅斯文"
#: paperless/settings/__init__.py:549
#: paperless/settings/__init__.py:560
msgid "Bulgarian"
msgstr "保加利亞文"
#: paperless/settings/__init__.py:550
#: paperless/settings/__init__.py:561
msgid "Catalan"
msgstr "加泰羅尼亞文"
#: paperless/settings/__init__.py:551
#: paperless/settings/__init__.py:562
msgid "Czech"
msgstr "捷克文"
#: paperless/settings/__init__.py:552
#: paperless/settings/__init__.py:563
msgid "Danish"
msgstr "丹麥文"
#: paperless/settings/__init__.py:553
#: paperless/settings/__init__.py:564
msgid "German"
msgstr "德文"
#: paperless/settings/__init__.py:554
#: paperless/settings/__init__.py:565
msgid "Greek"
msgstr "希臘文"
#: paperless/settings/__init__.py:555
#: paperless/settings/__init__.py:566
msgid "English (GB)"
msgstr "英文(英國)"
#: paperless/settings/__init__.py:556
#: paperless/settings/__init__.py:567
msgid "Spanish"
msgstr "西班牙文"
#: paperless/settings/__init__.py:557
#: paperless/settings/__init__.py:568
msgid "Persian"
msgstr "波斯文"
#: paperless/settings/__init__.py:558
#: paperless/settings/__init__.py:569
msgid "Finnish"
msgstr "芬蘭文"
#: paperless/settings/__init__.py:559
#: paperless/settings/__init__.py:570
msgid "French"
msgstr "法文"
#: paperless/settings/__init__.py:560
#: paperless/settings/__init__.py:571
msgid "Hungarian"
msgstr "匈牙利文"
#: paperless/settings/__init__.py:561
#: paperless/settings/__init__.py:572
msgid "Indonesian"
msgstr ""
#: paperless/settings/__init__.py:562
#: paperless/settings/__init__.py:573
msgid "Italian"
msgstr "義大利文"
#: paperless/settings/__init__.py:563
#: paperless/settings/__init__.py:574
msgid "Japanese"
msgstr "日文"
#: paperless/settings/__init__.py:564
#: paperless/settings/__init__.py:575
msgid "Korean"
msgstr "韓文"
#: paperless/settings/__init__.py:565
#: paperless/settings/__init__.py:576
msgid "Luxembourgish"
msgstr "盧森堡文"
#: paperless/settings/__init__.py:566
#: paperless/settings/__init__.py:577
msgid "Norwegian"
msgstr "挪威文"
#: paperless/settings/__init__.py:567
#: paperless/settings/__init__.py:578
msgid "Dutch"
msgstr "荷蘭文"
#: paperless/settings/__init__.py:568
#: paperless/settings/__init__.py:579
msgid "Polish"
msgstr "波蘭文"
#: paperless/settings/__init__.py:569
#: paperless/settings/__init__.py:580
msgid "Portuguese (Brazil)"
msgstr "葡萄牙文(巴西)"
#: paperless/settings/__init__.py:570
#: paperless/settings/__init__.py:581
msgid "Portuguese"
msgstr "葡萄牙文"
#: paperless/settings/__init__.py:571
#: paperless/settings/__init__.py:582
msgid "Romanian"
msgstr "羅馬尼亞文"
#: paperless/settings/__init__.py:572
#: paperless/settings/__init__.py:583
msgid "Russian"
msgstr "俄文"
#: paperless/settings/__init__.py:573
#: paperless/settings/__init__.py:584
msgid "Slovak"
msgstr "斯洛伐克文"
#: paperless/settings/__init__.py:574
#: paperless/settings/__init__.py:585
msgid "Slovenian"
msgstr "斯洛維尼亞文"
#: paperless/settings/__init__.py:575
#: paperless/settings/__init__.py:586
msgid "Serbian"
msgstr "塞爾維亞文"
#: paperless/settings/__init__.py:576
#: paperless/settings/__init__.py:587
msgid "Swedish"
msgstr "瑞典文"
#: paperless/settings/__init__.py:577
#: paperless/settings/__init__.py:588
msgid "Turkish"
msgstr "土耳其文"
#: paperless/settings/__init__.py:578
#: paperless/settings/__init__.py:589
msgid "Ukrainian"
msgstr "烏克蘭文"
#: paperless/settings/__init__.py:579
#: paperless/settings/__init__.py:590
msgid "Vietnamese"
msgstr "越南文"
#: paperless/settings/__init__.py:580
#: paperless/settings/__init__.py:591
msgid "Chinese Simplified"
msgstr "簡體中文"
#: paperless/settings/__init__.py:581
#: paperless/settings/__init__.py:592
msgid "Chinese Traditional"
msgstr "繁體中文"
@@ -5,12 +5,30 @@ from django.db import migrations
from django.db import models
def clamp_applicationconfiguration_integer_fields(apps, schema_editor):
# Clamp barcode_dpi, barcode_max_pages, image_dpi and pages because of
# PositiveIntegerField --> PositiveSmallIntegerField
ApplicationConfiguration = apps.get_model("paperless", "ApplicationConfiguration")
ApplicationConfiguration.objects.filter(barcode_dpi__gt=32767).update(
barcode_dpi=32767,
)
ApplicationConfiguration.objects.filter(barcode_max_pages__gt=32767).update(
barcode_max_pages=32767,
)
ApplicationConfiguration.objects.filter(image_dpi__gt=32767).update(image_dpi=32767)
ApplicationConfiguration.objects.filter(pages__gt=32767).update(pages=32767)
class Migration(migrations.Migration):
dependencies = [
("paperless", "0006_applicationconfiguration_barcode_tag_split"),
]
operations = [
migrations.RunPython(
clamp_applicationconfiguration_integer_fields,
migrations.RunPython.noop,
),
migrations.AlterField(
model_name="applicationconfiguration",
name="barcode_dpi",
+5
View File
@@ -421,6 +421,11 @@ class TikaDocumentParser:
logger.info("Converting %s to PDF as %s", document_path, pdf_path)
with self._gotenberg_client.libre_office.to_pdf() as route:
# Preserve document fields as authored. updateIndexes (Gotenberg's
# default) triggers a refresh() that rewrites dynamic fields like
# auto-dates to the current date.
route.update_indexes(update_indexes=False)
# Set the output format of the resulting PDF.
# OutputTypeConfig reads the database-stored ApplicationConfiguration
# first, then falls back to the PAPERLESS_OCR_OUTPUT_TYPE env var.
+14 -3
View File
@@ -460,11 +460,22 @@ def _parse_paperless_url():
PAPERLESS_URL = _parse_paperless_url()
def _get_allauth_trusted_proxy_count(trusted_proxies: list[str]) -> int:
count = get_int_from_env(
"PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT",
len(trusted_proxies),
)
if count < 0:
raise ImproperlyConfigured(
"PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT must be zero or greater",
)
return count
# For use with trusted proxies
TRUSTED_PROXIES = get_list_from_env("PAPERLESS_TRUSTED_PROXIES")
# Derive allauth's proxy count from the same list so X-Forwarded-For is trusted
# correctly when users have configured PAPERLESS_TRUSTED_PROXIES.
ALLAUTH_TRUSTED_PROXY_COUNT = len(TRUSTED_PROXIES)
ALLAUTH_TRUSTED_PROXY_COUNT = _get_allauth_trusted_proxy_count(TRUSTED_PROXIES)
ALLAUTH_TRUSTED_CLIENT_IP_HEADER = os.getenv(
"PAPERLESS_ALLAUTH_TRUSTED_CLIENT_IP_HEADER",
)
@@ -223,4 +223,11 @@ class TestTikaParser:
assert form_field_found
# Field updates must be disabled so LibreOffice preserves document
# fields (e.g. auto-date fields) as authored rather than refreshing
# them to the current date.
assert any(
b'name="updateIndexes"' in part and b"false" in part for part in parts
)
httpx_mock.reset()
@@ -3,7 +3,9 @@ from unittest import TestCase
from unittest import mock
import pytest
from django.core.exceptions import ImproperlyConfigured
from paperless.settings import _get_allauth_trusted_proxy_count
from paperless.settings import _get_search_language_setting
from paperless.settings import _parse_paperless_url
from paperless.settings import default_threads_per_worker
@@ -35,6 +37,31 @@ class TestThreadCalculation(TestCase):
self.assertLessEqual(default_workers * default_threads, i)
def test_allauth_trusted_proxy_count_defaults_to_trusted_proxies(
monkeypatch: pytest.MonkeyPatch,
) -> None:
monkeypatch.delenv("PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT", raising=False)
assert _get_allauth_trusted_proxy_count(["proxy-v4", "proxy-v6"]) == 2
def test_allauth_trusted_proxy_count_can_be_overridden(
monkeypatch: pytest.MonkeyPatch,
) -> None:
monkeypatch.setenv("PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT", "1")
assert _get_allauth_trusted_proxy_count(["proxy-v4", "proxy-v6"]) == 1
def test_allauth_trusted_proxy_count_rejects_negative_values(
monkeypatch: pytest.MonkeyPatch,
) -> None:
monkeypatch.setenv("PAPERLESS_ALLAUTH_TRUSTED_PROXY_COUNT", "-1")
with pytest.raises(ImproperlyConfigured, match="must be zero or greater"):
_get_allauth_trusted_proxy_count([])
@pytest.mark.parametrize(
("env_value", "expected"),
[
+2
View File
@@ -2,6 +2,8 @@ from pydantic import BaseModel
class DocumentClassifierSchema(BaseModel):
"""Schema for document classification suggestions."""
title: str
tags: list[str]
correspondents: list[str]
+17 -7
View File
@@ -5,6 +5,7 @@ from datetime import timedelta
from typing import TYPE_CHECKING
from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist
from django.utils import timezone
from filelock import FileLock
from filelock import ReadWriteLock
@@ -167,6 +168,19 @@ def write_store(embed_model_name: str | None = None):
yield store
def _safe_related_name(document: Document, field: str) -> str | None:
"""
Returns the ``name`` of a related object (correspondent, document_type,
storage_path), or None if the FK is unset or points at a row that has
since been deleted (e.g. concurrently with this call).
"""
try:
related = getattr(document, field)
except ObjectDoesNotExist:
return None
return related.name if related else None
def build_document_node(
document: Document,
*,
@@ -180,14 +194,10 @@ def build_document_node(
"document_id": str(document.id),
"title": document.title,
"tags": [t.name for t in document.tags.all()],
"correspondent": document.correspondent.name
if document.correspondent
else None,
"document_type": document.document_type.name
if document.document_type
else None,
"correspondent": _safe_related_name(document, "correspondent"),
"document_type": _safe_related_name(document, "document_type"),
"filename": document.filename,
"storage_path": document.storage_path.name if document.storage_path else None,
"storage_path": _safe_related_name(document, "storage_path"),
"archive_serial_number": document.archive_serial_number,
"created": document.created.isoformat() if document.created else None,
"added": document.added.isoformat() if document.added else None,
@@ -8,7 +8,9 @@ from django.test import override_settings
from django.utils import timezone
from llama_index.core.schema import MetadataMode
from documents.models import Correspondent
from documents.models import Document
from documents.models import DocumentType
from documents.models import PaperlessTask
from documents.signals import document_consumption_finished
from documents.signals import document_updated
@@ -95,6 +97,38 @@ def test_build_document_node_structured_fields_in_metadata(
assert "modified" in node.metadata
@pytest.mark.django_db
def test_build_document_node_survives_concurrently_deleted_correspondent(
real_document: Document,
) -> None:
"""Regression test for #13314.
If a document's correspondent (or document type) is deleted after the
in-memory Document instance was loaded but before build_document_node
resolves the relation, accessing the FK must not raise -- it should
behave like an unset FK and produce None in the metadata instead of
aborting the whole indexing pass.
"""
correspondent = Correspondent.objects.create(name="Stale Correspondent")
document_type = DocumentType.objects.create(name="Stale Type")
real_document.correspondent = correspondent
real_document.document_type = document_type
real_document.save()
# Re-fetch to get an instance whose correspondent/document_type relations
# are unresolved (not yet cached), mirroring a task that loaded the
# document before the concurrent deletion below.
stale_document = Document.objects.get(pk=real_document.pk)
correspondent.delete()
document_type.delete()
nodes = indexing.build_document_node(stale_document)
assert len(nodes) > 0
assert nodes[0].metadata["correspondent"] is None
assert nodes[0].metadata["document_type"] is None
@pytest.mark.django_db
def test_build_document_node_excludes_document_id_from_llm_context(
real_document: Document,
+325 -178
View File
@@ -1,5 +1,7 @@
import sqlite3
from collections.abc import Generator
from collections.abc import Iterator
from contextlib import contextmanager
from pathlib import Path
import pytest
@@ -9,6 +11,7 @@ from llama_index.core.vector_stores.types import MetadataFilter
from llama_index.core.vector_stores.types import MetadataFilters
from llama_index.core.vector_stores.types import VectorStoreQuery
from paperless_ai import vector_store as vs_mod
from paperless_ai.vector_store import DB_FILENAME
from paperless_ai.vector_store import DEFAULT_TABLE_NAME
from paperless_ai.vector_store import MIGRATIONS
@@ -89,8 +92,87 @@ def _ne_filter(document_id: str):
)
def _chunk_index_rows(
store: PaperlessSqliteVecVectorStore,
document_id: str | None = None,
) -> list[tuple[str, str]]:
"""The document_chunks side table, as (chunk_id, document_id) pairs."""
sql = "SELECT chunk_id, document_id FROM document_chunks"
params: list[str] = []
if document_id is not None:
sql += " WHERE document_id = ?"
params.append(document_id)
rows = store.client.execute(sql + " ORDER BY chunk_id", params).fetchall()
return [(r["chunk_id"], r["document_id"]) for r in rows]
@contextmanager
def _pending_migrations(*migrations: Migration, schema_version: int) -> Iterator[None]:
"""Register ``migrations`` and raise the module's SCHEMA_VERSION for the
duration of the block, so check_and_run_migrations() sees them as pending.
"""
original = vs_mod.SCHEMA_VERSION
MIGRATIONS.extend(migrations)
vs_mod.SCHEMA_VERSION = schema_version
try:
yield
finally:
for migration in migrations:
MIGRATIONS.remove(migration)
vs_mod.SCHEMA_VERSION = original
def _copying_apply(src: sqlite3.Connection, dst: sqlite3.Connection, dim: int) -> None:
"""A structural migration apply() that just copies every row across.
Deliberately spells its SQL out rather than reusing the production
helpers, so these tests exercise the migration machinery against a
realistic third-party apply() instead of co-drifting with it.
"""
dst.execute( # nosemgrep
f"CREATE VIRTUAL TABLE {DEFAULT_TABLE_NAME} USING vec0("
"id TEXT PRIMARY KEY, document_id TEXT, modified TEXT,"
f" +node_content TEXT, embedding float[{dim}] distance_metric=cosine"
")",
)
dst.execute(
"INSERT INTO index_meta (key, value) VALUES ('dim', ?) "
"ON CONFLICT(key) DO UPDATE SET value = excluded.value",
(str(dim),),
)
rows = src.execute(
"SELECT id, document_id, modified, node_content, embedding "
f"FROM {DEFAULT_TABLE_NAME}",
).fetchall()
dst.execute("BEGIN IMMEDIATE")
dst.executemany(
f"INSERT INTO {DEFAULT_TABLE_NAME} "
"(id, document_id, modified, node_content, embedding) "
"VALUES (?, ?, ?, ?, ?)",
[
(
r["id"],
r["document_id"],
r["modified"],
r["node_content"],
bytes(r["embedding"]),
)
for r in rows
],
)
dst.execute(
"INSERT INTO index_meta (key, value) VALUES ('total_inserts', ?) "
"ON CONFLICT(key) DO UPDATE SET value = excluded.value",
(str(len(rows)),),
)
dst.execute("COMMIT")
class TestCrud:
def test_add_then_query_returns_node(self, store) -> None:
def test_add_then_query_returns_node(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
node = make_node("n1", "1")
assert store.add([node]) == ["n1"]
result = _query(store, node.embedding, top_k=1)
@@ -99,21 +181,30 @@ class TestCrud:
# cosine distance of the identical vector is 0 -> similarity 1
assert result.similarities[0] == pytest.approx(1.0)
def test_query_empty_store_returns_empty_no_raise(self, store) -> None:
def test_query_empty_store_returns_empty_no_raise(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
result = _query(store, [0.0] * DIM)
assert result.ids == [] and result.nodes == [] and result.similarities == []
def test_add_empty_list_is_noop(self, store) -> None:
def test_add_empty_list_is_noop(self, store: PaperlessSqliteVecVectorStore) -> None:
assert store.add([]) == []
assert not store.table_exists()
def test_delete_removes_all_chunks_of_document(self, store) -> None:
def test_delete_removes_all_chunks_of_document(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add([make_node("a1", "1"), make_node("a2", "1"), make_node("b1", "2")])
store.delete("1")
result = _query(store, [0.0] * DIM, top_k=10)
assert result.ids == ["b1"]
def test_query_with_in_filter_scopes_results(self, store) -> None:
def test_query_with_in_filter_scopes_results(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add(
[
make_node("a1", "1", seed=0.0),
@@ -124,7 +215,10 @@ class TestCrud:
result = _query(store, [0.0] * DIM, top_k=10, filters=_in_filter(["2", "3"]))
assert sorted(result.ids) == ["b1", "c1"]
def test_query_respects_top_k_with_filter(self, store) -> None:
def test_query_respects_top_k_with_filter(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
# k semantics: global top-k even with IN filters (document_id is a
# metadata column, not a partition key -- see design doc).
store.add(
@@ -139,7 +233,10 @@ class TestCrud:
assert len(result.ids) == 3
assert result.similarities == sorted(result.similarities, reverse=True)
def test_get_nodes_filter_and_empty_paths(self, store) -> None:
def test_get_nodes_filter_and_empty_paths(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
assert store.get_nodes(filters=_in_filter(["1"])) == [] # no table yet
store.add([make_node("a1", "1"), make_node("b1", "2")])
nodes = store.get_nodes(filters=_in_filter(["1"]))
@@ -147,7 +244,10 @@ class TestCrud:
assert nodes[0].embedding is not None
assert store.get_nodes(filters=_in_filter(["999"])) == []
def test_query_with_eq_filter_scopes_results(self, store) -> None:
def test_query_with_eq_filter_scopes_results(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add(
[
make_node("a1", "1", seed=0.0),
@@ -163,18 +263,25 @@ class TestCrud:
)
assert result.ids == ["b1"]
def test_get_nodes_node_ids_not_implemented(self, store) -> None:
def test_get_nodes_node_ids_not_implemented(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
with pytest.raises(NotImplementedError):
store.get_nodes(node_ids=["x"])
def test_fresh_instance_sees_existing_table(self, store, tmp_path: Path) -> None:
def test_fresh_instance_sees_existing_table(
self,
store: PaperlessSqliteVecVectorStore,
tmp_path: Path,
) -> None:
store.add([make_node("a1", "1")])
with PaperlessSqliteVecVectorStore(uri=str(tmp_path)) as reopened:
assert reopened.table_exists()
assert reopened.vector_dim() == DIM
assert _query(reopened, [0.0] * DIM, top_k=1).ids == ["a1"]
def test_table_exists_and_drop(self, store) -> None:
def test_table_exists_and_drop(self, store: PaperlessSqliteVecVectorStore) -> None:
assert not store.table_exists()
store.add([make_node("a1", "1")])
assert store.table_exists()
@@ -189,7 +296,10 @@ class TestBuildWhere:
assert where == "(document_id != ?)"
assert params == ["1"]
def test_query_with_ne_filter_excludes_matching_document(self, store) -> None:
def test_query_with_ne_filter_excludes_matching_document(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add([make_node("a1", "1"), make_node("b1", "2")])
assert sorted(
_query(store, [0.0] * DIM, top_k=5, filters=_ne_filter("1")).ids,
@@ -214,7 +324,10 @@ class TestBuildWhere:
assert where == "1 = 0"
assert params == []
def test_query_with_untranslatable_filter_returns_no_rows(self, store) -> None:
def test_query_with_untranslatable_filter_returns_no_rows(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add([make_node("a1", "1"), make_node("b1", "2")])
nested = MetadataFilters(
filters=[
@@ -232,7 +345,10 @@ class TestBuildWhere:
class TestUpsert:
def test_upsert_replaces_and_prunes_stale_chunks(self, store) -> None:
def test_upsert_replaces_and_prunes_stale_chunks(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add(
[make_node("d1c1", "1"), make_node("d1c2", "1"), make_node("d2c1", "2")],
)
@@ -240,18 +356,24 @@ class TestUpsert:
result = _query(store, [0.0] * DIM, top_k=10)
assert sorted(result.ids) == ["d1new", "d2c1"]
def test_upsert_creates_table_when_missing(self, store) -> None:
def test_upsert_creates_table_when_missing(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.upsert_document("1", [make_node("a1", "1")])
assert _query(store, [0.0] * DIM, top_k=1).ids == ["a1"]
def test_upsert_empty_nodes_removes_document(self, store) -> None:
def test_upsert_empty_nodes_removes_document(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add([make_node("a1", "1"), make_node("b1", "2")])
store.upsert_document("1", [])
assert _query(store, [0.0] * DIM, top_k=10).ids == ["b1"]
def test_upsert_is_atomic_for_concurrent_readers(
self,
store,
store: PaperlessSqliteVecVectorStore,
tmp_path: Path,
) -> None:
"""A second connection must never observe document 1 half-replaced."""
@@ -262,8 +384,52 @@ class TestUpsert:
assert ids == ["a3"]
class TestDocumentChunksIndex:
"""document_chunks lets delete()/upsert_document() find a document's chunk
ids without a vec0 full table scan on document_id -- see
PaperlessSqliteVecVectorStore._delete_chunks_by_document_id."""
def test_add_populates_document_chunks(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add([make_node("a1", "1"), make_node("a2", "1"), make_node("b1", "2")])
assert _chunk_index_rows(store) == [
("a1", "1"),
("a2", "1"),
("b1", "2"),
]
def test_delete_clears_document_chunks(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add([make_node("a1", "1"), make_node("a2", "1"), make_node("b1", "2")])
store.delete("1")
assert _chunk_index_rows(store) == [("b1", "2")]
def test_upsert_replaces_document_chunks(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add([make_node("a1", "1"), make_node("b1", "2")])
store.upsert_document("1", [make_node("a2", "1")])
assert _chunk_index_rows(store) == [("a2", "1"), ("b1", "2")]
def test_drop_table_clears_document_chunks(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add([make_node("a1", "1")])
store.drop_table()
assert _chunk_index_rows(store) == []
class TestMetadataCoercion:
def test_none_metadata_values_become_empty_strings(self, store) -> None:
def test_none_metadata_values_become_empty_strings(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
node = make_node("a1", "1")
node.metadata["modified"] = None
store.add([node]) # must not raise (vec0 rejects NULL metadata)
@@ -308,10 +474,16 @@ class TestModelNameTracking:
class TestGetModifiedTimes:
def test_empty_store_returns_empty_dict(self, store) -> None:
def test_empty_store_returns_empty_dict(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
assert store.get_modified_times() == {}
def test_returns_one_entry_per_document(self, store) -> None:
def test_returns_one_entry_per_document(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add(
[
make_node("a1", "1", modified="2026-01-01T00:00:00"),
@@ -326,7 +498,7 @@ class TestGetModifiedTimes:
class TestCompact:
def _bloat_ratio(self, store) -> float:
def _bloat_ratio(self, store: PaperlessSqliteVecVectorStore) -> float:
live = store.client.execute(
"SELECT count(*) FROM documents",
).fetchone()[0]
@@ -338,19 +510,25 @@ class TestCompact:
total = int(row["value"]) if row else live
return total / max(live, 1)
def _churn(self, store, cycles: int) -> None:
def _churn(self, store: PaperlessSqliteVecVectorStore, cycles: int) -> None:
for i in range(cycles):
store.upsert_document(
"1",
[make_node(f"gen{i}-{j}", "1", seed=float(j)) for j in range(20)],
)
def test_compact_noop_below_threshold(self, store) -> None:
def test_compact_noop_below_threshold(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add([make_node("a1", "1")])
store.compact()
assert _query(store, [0.0] * DIM, top_k=1).ids == ["a1"]
def test_force_compact_preserves_rows_and_metadata(self, store) -> None:
def test_force_compact_preserves_rows_and_metadata(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add([make_node("a1", "1"), make_node("b1", "2", seed=3.0)])
self._churn(store, 5)
before = {
@@ -370,22 +548,44 @@ class TestCompact:
store.upsert_document("3", [make_node("c1", "3", seed=100.0)])
assert "c1" in _query(store, [100.0] * DIM, top_k=1).ids
def test_auto_compact_triggers_on_churn(self, store) -> None:
def test_auto_compact_triggers_on_churn(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add([make_node(f"s{j}", "1", seed=float(j)) for j in range(20)])
self._churn(store, 5)
assert self._bloat_ratio(store) > 2
store.compact()
assert self._bloat_ratio(store) == pytest.approx(1.0)
def test_compact_on_missing_table_is_noop(self, store) -> None:
def test_compact_on_missing_table_is_noop(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.compact()
store.compact(force=True)
def test_compact_preserves_document_chunks(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
"""document_chunks must survive the file-swap rebuild, or delete()
would silently stop finding chunk ids for anything indexed before a
compaction ran."""
store.add([make_node("a1", "1"), make_node("b1", "2")])
self._churn(store, 5)
store.compact(force=True)
assert _chunk_index_rows(store, "2") == [("b1", "2")]
store.delete("2")
assert "b1" not in _query(store, [0.0] * DIM, top_k=10).ids
def test_failed_compact_removes_temp_wal_and_shm(
self,
store,
store: PaperlessSqliteVecVectorStore,
tmp_path: Path,
monkeypatch,
monkeypatch: pytest.MonkeyPatch,
) -> None:
"""A compact() that raises mid-rebuild must leave no .compact* files.
@@ -420,8 +620,8 @@ class TestCompact:
def test_force_compact_streams_rows_across_batches(
self,
store,
monkeypatch,
store: PaperlessSqliteVecVectorStore,
monkeypatch: pytest.MonkeyPatch,
) -> None:
"""Rebuild must preserve every row when rows span multiple batches.
@@ -437,11 +637,15 @@ class TestCompact:
class TestDbFile:
def test_single_db_file_in_index_dir(self, store, tmp_path: Path) -> None:
def test_single_db_file_in_index_dir(
self,
store: PaperlessSqliteVecVectorStore,
tmp_path: Path,
) -> None:
store.add([make_node("a1", "1")])
assert (tmp_path / DB_FILENAME).exists()
def test_wal_mode_enabled(self, store) -> None:
def test_wal_mode_enabled(self, store: PaperlessSqliteVecVectorStore) -> None:
assert (
store.client.execute("PRAGMA journal_mode").fetchone()[0].lower() == "wal"
)
@@ -456,193 +660,136 @@ class TestMigrations:
).fetchone()
return int(row[0]) if row else None
def test_new_table_records_schema_version(self, store) -> None:
def test_new_table_records_schema_version(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add([make_node("a1", "1")])
assert self._schema_version(store) == SCHEMA_VERSION
def test_check_migrations_no_table_returns_false(self, store) -> None:
def test_check_migrations_no_table_returns_false(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
assert store.check_and_run_migrations() is False
def test_check_migrations_current_version_returns_false(self, store) -> None:
def test_check_migrations_current_version_returns_false(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add([make_node("a1", "1")])
assert store.check_and_run_migrations() is False
def test_reembed_migration_returns_true(self, store, tmp_path: Path) -> None:
def test_reembed_migration_returns_true(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add([make_node("a1", "1")])
# store was just created at the real (current) SCHEMA_VERSION, so the
# simulated pending migration must target one version past that --
# not a hardcoded 1 -> 2, which would collide with the real
# document_chunks migration already registered in MIGRATIONS.
migration = Migration(
from_version=1,
to_version=2,
from_version=SCHEMA_VERSION,
to_version=SCHEMA_VERSION + 1,
kind="re-embed",
description="test re-embed",
)
MIGRATIONS.append(migration)
try:
from paperless_ai import vector_store as vs_mod
original = vs_mod.SCHEMA_VERSION
vs_mod.SCHEMA_VERSION = 2
result = store.check_and_run_migrations()
finally:
MIGRATIONS.remove(migration)
vs_mod.SCHEMA_VERSION = original
assert result is True
with _pending_migrations(migration, schema_version=SCHEMA_VERSION + 1):
assert store.check_and_run_migrations() is True
def test_structural_migration_copies_rows_and_updates_version(
self,
store,
tmp_path: Path,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add([make_node("a1", "1"), make_node("b1", "2")])
def apply(
src: sqlite3.Connection,
dst: sqlite3.Connection,
dim: int,
) -> None:
dst.execute( # nosemgrep
f"CREATE VIRTUAL TABLE {DEFAULT_TABLE_NAME} USING vec0("
"id TEXT PRIMARY KEY, document_id TEXT, modified TEXT,"
f" +node_content TEXT, embedding float[{dim}] distance_metric=cosine"
")",
)
dst.execute(
"INSERT INTO index_meta (key, value) VALUES ('dim', ?) "
"ON CONFLICT(key) DO UPDATE SET value = excluded.value",
(str(dim),),
)
rows = src.execute(
"SELECT id, document_id, modified, node_content, embedding "
f"FROM {DEFAULT_TABLE_NAME}",
).fetchall()
dst.execute("BEGIN IMMEDIATE")
dst.executemany(
f"INSERT INTO {DEFAULT_TABLE_NAME} "
"(id, document_id, modified, node_content, embedding) "
"VALUES (?, ?, ?, ?, ?)",
[
(
r["id"],
r["document_id"],
r["modified"],
r["node_content"],
bytes(r["embedding"]),
)
for r in rows
],
)
dst.execute(
"INSERT INTO index_meta (key, value) VALUES ('total_inserts', ?) "
"ON CONFLICT(key) DO UPDATE SET value = excluded.value",
(str(len(rows)),),
)
dst.execute("COMMIT")
migration = Migration(
from_version=1,
to_version=2,
from_version=SCHEMA_VERSION,
to_version=SCHEMA_VERSION + 1,
kind="structural",
description="test structural",
apply=apply,
apply=_copying_apply,
)
MIGRATIONS.append(migration)
try:
from paperless_ai import vector_store as vs_mod
with _pending_migrations(migration, schema_version=SCHEMA_VERSION + 1):
assert store.check_and_run_migrations() is False
original = vs_mod.SCHEMA_VERSION
vs_mod.SCHEMA_VERSION = 2
result = store.check_and_run_migrations()
finally:
MIGRATIONS.remove(migration)
vs_mod.SCHEMA_VERSION = original
assert result is False
assert self._schema_version(store) == 2
assert self._schema_version(store) == SCHEMA_VERSION + 1
ids = {n.node_id for n in store.get_nodes()}
assert ids == {"a1", "b1"}
def test_compact_preserves_schema_version(self, store) -> None:
def test_compact_preserves_schema_version(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
store.add([make_node("a1", "1")])
assert self._schema_version(store) == SCHEMA_VERSION
store.compact(force=True)
assert self._schema_version(store) == SCHEMA_VERSION
def test_stop_at_reembed_boundary(self, store) -> None:
# Registry: structural v2, re-embed v3, structural v4.
# Only v2 should apply; the re-embed boundary must stop execution
# before v4 runs, and the stored version must stay at 2.
def test_v1_to_v2_migration_backfills_document_chunks(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
"""The real v1 -> v2 migration (registered in MIGRATIONS) must
backfill document_chunks for rows written before it existed, or
delete()/upsert_document() would find zero chunk ids for them and
leave their vec0 rows orphaned forever."""
store.add([make_node("a1", "1"), make_node("a2", "1"), make_node("b1", "2")])
# Simulate a pre-migration (schema v1) store: rows exist in the vec0
# table, but document_chunks (added by the v1 -> v2 migration) has no
# entries for them, mirroring a real on-disk index created before
# this migration existed.
store.client.execute("DELETE FROM document_chunks")
store.client.execute(
"UPDATE index_meta SET value = '1' WHERE key = 'schema_version'",
)
assert store.check_and_run_migrations() is False # structural, not re-embed
assert self._schema_version(store) == SCHEMA_VERSION
assert _chunk_index_rows(store) == [
("a1", "1"),
("a2", "1"),
("b1", "2"),
]
# And delete() now actually removes rows for a document that
# predates the migration, instead of silently no-op'ing.
store.delete("1")
assert sorted(_query(store, [0.0] * DIM, top_k=10).ids) == ["b1"]
def test_stop_at_reembed_boundary(
self,
store: PaperlessSqliteVecVectorStore,
) -> None:
# Registry, relative to the store's current (real) SCHEMA_VERSION N:
# structural N+1, re-embed N+2, structural N+3. Only N+1 should apply;
# the re-embed boundary must stop execution before N+3 runs, and the
# stored version must stay at N+1.
store.add([make_node("a1", "1"), make_node("b1", "2")])
def copy_apply(
src: sqlite3.Connection,
dst: sqlite3.Connection,
dim: int,
) -> None:
dst.execute( # nosemgrep
f"CREATE VIRTUAL TABLE {DEFAULT_TABLE_NAME} USING vec0("
"id TEXT PRIMARY KEY, document_id TEXT, modified TEXT,"
f" +node_content TEXT, embedding float[{dim}] distance_metric=cosine"
")",
)
dst.execute(
"INSERT INTO index_meta (key, value) VALUES ('dim', ?) "
"ON CONFLICT(key) DO UPDATE SET value = excluded.value",
(str(dim),),
)
rows = src.execute(
"SELECT id, document_id, modified, node_content, embedding "
f"FROM {DEFAULT_TABLE_NAME}",
).fetchall()
dst.execute("BEGIN IMMEDIATE")
dst.executemany(
f"INSERT INTO {DEFAULT_TABLE_NAME} "
"(id, document_id, modified, node_content, embedding) "
"VALUES (?, ?, ?, ?, ?)",
[
(
r["id"],
r["document_id"],
r["modified"],
r["node_content"],
bytes(r["embedding"]),
)
for r in rows
],
)
dst.execute("COMMIT")
migrations = [
Migration(
from_version=1,
to_version=2,
from_version=SCHEMA_VERSION,
to_version=SCHEMA_VERSION + 1,
kind="structural",
description="v2 structural",
apply=copy_apply,
description="structural",
apply=_copying_apply,
),
Migration(
from_version=2,
to_version=3,
from_version=SCHEMA_VERSION + 1,
to_version=SCHEMA_VERSION + 2,
kind="re-embed",
description="v3 re-embed boundary",
description="re-embed boundary",
),
Migration(
from_version=3,
to_version=4,
from_version=SCHEMA_VERSION + 2,
to_version=SCHEMA_VERSION + 3,
kind="structural",
description="v4 structural - must not run",
apply=copy_apply,
description="structural - must not run",
apply=_copying_apply,
),
]
MIGRATIONS.extend(migrations)
try:
from paperless_ai import vector_store as vs_mod
with _pending_migrations(*migrations, schema_version=SCHEMA_VERSION + 3):
assert store.check_and_run_migrations() is True
original = vs_mod.SCHEMA_VERSION
vs_mod.SCHEMA_VERSION = 4
result = store.check_and_run_migrations()
finally:
for m in migrations:
MIGRATIONS.remove(m)
vs_mod.SCHEMA_VERSION = original
assert result is True
assert self._schema_version(store) == 2
assert self._schema_version(store) == SCHEMA_VERSION + 1
+149 -41
View File
@@ -31,10 +31,20 @@ logger = logging.getLogger("paperless_ai.vector_store")
DB_FILENAME = "llmindex.db"
DEFAULT_TABLE_NAME = "documents"
_INSERT = (
"INSERT INTO "
+ DEFAULT_TABLE_NAME
+ " (id, document_id, modified, node_content, embedding) VALUES (?, ?, ?, ?, ?)"
)
_INSERT_CHUNK_INDEX = (
"INSERT INTO document_chunks (chunk_id, document_id) VALUES (?, ?)"
)
# Current schema version. Written to index_meta at table creation and bumped
# whenever a Migration is added to MIGRATIONS. check_and_run_migrations() uses
# this to decide which migrations to run on an existing store.
SCHEMA_VERSION = 1
SCHEMA_VERSION = 2
# compact(): rebuild when the cumulative rowid count exceeds this multiple of
# the live row count. DELETEs on vec0 tables never reclaim space (upstream
@@ -80,8 +90,10 @@ class Migration:
)
# Registry of all schema migrations in order. Empty at v1 -- this is the
# baseline. Add entries here (and bump SCHEMA_VERSION) when the schema changes.
# Registry of all schema migrations in order. Populated after the class body
# below, since v1 -> v2's apply() needs PaperlessSqliteVecVectorStore's own
# static methods. Add entries here (and bump SCHEMA_VERSION) when the schema
# changes.
MIGRATIONS: list[Migration] = []
@@ -93,6 +105,42 @@ def _unpack(blob: bytes) -> list[float]:
return list(struct.unpack(f"{len(blob) // 4}f", blob))
def _copy_rows(src_conn: sqlite3.Connection, dst_conn: sqlite3.Connection) -> int:
"""Copy every live vec0 row from ``src_conn`` into ``dst_conn``, recording
each one in ``dst_conn``'s document_chunks side table. Returns the number
of rows copied. The caller owns ``dst_conn``'s transaction.
Rows are streamed from the source cursor in batches instead of being
materialized all at once, so a large index does not cause an OOM during a
routine compaction or migration.
"""
src_cursor = src_conn.execute(
"SELECT id, document_id, modified, node_content, embedding FROM "
+ DEFAULT_TABLE_NAME,
)
copied = 0
while batch := src_cursor.fetchmany(COMPACT_BATCH_SIZE):
dst_conn.executemany(
_INSERT,
[
(
r["id"],
r["document_id"],
r["modified"],
r["node_content"],
bytes(r["embedding"]),
)
for r in batch
],
)
dst_conn.executemany(
_INSERT_CHUNK_INDEX,
[(r["id"], r["document_id"]) for r in batch],
)
copied += len(batch)
return copied
def _build_where(filters: MetadataFilters | None) -> tuple[str, list[str]]:
"""Translate the EQ / IN / NE filters we use into a parameterized SQL clause
on vec0 metadata columns. Returns ("", []) when there is nothing to filter.
@@ -189,6 +237,18 @@ class PaperlessSqliteVecVectorStore(BasePydanticVectorStore):
conn.execute(
"CREATE TABLE IF NOT EXISTS index_meta (key TEXT PRIMARY KEY, value TEXT)",
)
# vec0 metadata columns only get an efficient lookup path inside a KNN
# (MATCH) query; a plain `WHERE document_id = ?` is a full table scan
# regardless of index size. This plain, indexed table is how delete()/
# upsert_document() find a document's chunk ids without that scan.
conn.execute(
"CREATE TABLE IF NOT EXISTS document_chunks "
"(chunk_id TEXT PRIMARY KEY, document_id TEXT NOT NULL)",
)
conn.execute(
"CREATE INDEX IF NOT EXISTS idx_document_chunks_document_id "
"ON document_chunks (document_id)",
)
return conn
@property
@@ -223,13 +283,17 @@ class PaperlessSqliteVecVectorStore(BasePydanticVectorStore):
else:
self._conn.execute("COMMIT")
def _meta_get(self, key: str) -> str | None:
row = self._conn.execute(
@staticmethod
def _meta_get_on(conn: sqlite3.Connection, key: str) -> str | None:
row = conn.execute(
"SELECT value FROM index_meta WHERE key = ?",
(key,),
).fetchone()
return row["value"] if row else None
def _meta_get(self, key: str) -> str | None:
return self._meta_get_on(self._conn, key)
@staticmethod
def _meta_set_on(conn: sqlite3.Connection, key: str, value: str) -> None:
conn.execute(
@@ -259,6 +323,7 @@ class PaperlessSqliteVecVectorStore(BasePydanticVectorStore):
def drop_table(self) -> None:
self._conn.execute("DROP TABLE IF EXISTS " + DEFAULT_TABLE_NAME)
self._conn.execute("DELETE FROM index_meta")
self._conn.execute("DELETE FROM document_chunks")
def stored_model_name(self) -> str | None:
"""Return the embedding model name recorded at table creation, or None."""
@@ -325,11 +390,37 @@ class PaperlessSqliteVecVectorStore(BasePydanticVectorStore):
_pack(node.get_embedding()),
)
_INSERT = (
"INSERT INTO "
+ DEFAULT_TABLE_NAME
+ " (id, document_id, modified, node_content, embedding) VALUES (?, ?, ?, ?, ?)"
)
def _index_chunks(self, rows: list[tuple[str, str, str, str, bytes]]) -> None:
"""Record each row's (chunk_id, document_id) in the document_chunks
side table, kept in lockstep with every insert into the vec0 table."""
self._conn.executemany(
_INSERT_CHUNK_INDEX,
[(chunk_id, document_id) for chunk_id, document_id, *_ in rows],
)
def _delete_chunks_by_document_id(self, document_id: str) -> None:
"""Delete all of a document's chunks via point-deletes on `id`.
vec0 has no efficient lookup on the document_id metadata column
outside a KNN query (see _open_connection), so a plain
`DELETE ... WHERE document_id = ?` is a full table scan regardless of
index size. Looking the chunk ids up in document_chunks first (a real
indexed lookup) and deleting each by its `id` primary key instead
turns that scan into a handful of O(1) point deletes.
"""
doc_id = str(document_id)
chunk_rows = self._conn.execute(
"SELECT chunk_id FROM document_chunks WHERE document_id = ?",
(doc_id,),
).fetchall()
self._conn.executemany(
"DELETE FROM " + DEFAULT_TABLE_NAME + " WHERE id = ?",
[(row["chunk_id"],) for row in chunk_rows],
)
self._conn.execute(
"DELETE FROM document_chunks WHERE document_id = ?",
(doc_id,),
)
def _increment_total_inserts(self, count: int) -> None:
"""Increment the cumulative insert counter stored in index_meta.
@@ -348,7 +439,8 @@ class PaperlessSqliteVecVectorStore(BasePydanticVectorStore):
rows = [self._row(node) for node in nodes]
with self._transaction():
self._ensure_table(len(nodes[0].get_embedding()))
self._conn.executemany(self._INSERT, rows)
self._conn.executemany(_INSERT, rows)
self._index_chunks(rows)
self._increment_total_inserts(len(rows))
return [node.node_id for node in nodes]
@@ -365,22 +457,17 @@ class PaperlessSqliteVecVectorStore(BasePydanticVectorStore):
if nodes:
self._ensure_table(len(nodes[0].get_embedding()))
if self.table_exists():
self._conn.execute(
"DELETE FROM " + DEFAULT_TABLE_NAME + " WHERE document_id = ?",
(str(document_id),),
)
self._delete_chunks_by_document_id(document_id)
if rows:
self._conn.executemany(self._INSERT, rows)
self._conn.executemany(_INSERT, rows)
self._index_chunks(rows)
self._increment_total_inserts(len(rows))
return [node.node_id for node in nodes]
def delete(self, ref_doc_id: str, **delete_kwargs: Any) -> None:
if self.table_exists():
with self._transaction():
self._conn.execute(
"DELETE FROM " + DEFAULT_TABLE_NAME + " WHERE document_id = ?",
(str(ref_doc_id),),
)
self._delete_chunks_by_document_id(ref_doc_id)
def _rows_to_nodes(self, rows: list[sqlite3.Row]) -> list[BaseNode]:
nodes: list[BaseNode] = []
@@ -508,28 +595,8 @@ class PaperlessSqliteVecVectorStore(BasePydanticVectorStore):
value = self._meta_get(key)
if value is not None:
self._meta_set_on(new_conn, key, value)
src_cursor = self._conn.execute(
"SELECT id, document_id, modified, node_content, embedding "
"FROM " + DEFAULT_TABLE_NAME,
)
new_conn.execute("BEGIN IMMEDIATE")
# Stream rows from the source cursor in batches instead of
# materializing the whole table in memory, so a large index does
# not cause an OOM during routine maintenance compactions.
while batch := src_cursor.fetchmany(COMPACT_BATCH_SIZE):
new_conn.executemany(
self._INSERT,
[
(
r["id"],
r["document_id"],
r["modified"],
r["node_content"],
bytes(r["embedding"]),
)
for r in batch
],
)
_copy_rows(self._conn, new_conn)
# Reset the cumulative counter: after compact, total_inserts == live.
self._meta_set_on(new_conn, "total_inserts", str(live))
new_conn.execute("COMMIT")
@@ -614,3 +681,44 @@ class PaperlessSqliteVecVectorStore(BasePydanticVectorStore):
raise
new_conn.close()
self._swap_in_compact(compact_path, db_path)
def _migrate_v1_to_v2_add_document_chunks(
src_conn: sqlite3.Connection,
dst_conn: sqlite3.Connection,
dim: int,
) -> None:
"""v1 -> v2: backfill the document_chunks side table.
document_chunks (see PaperlessSqliteVecVectorStore._open_connection) lets
delete()/upsert_document() find a document's chunk ids without a vec0
full table scan on the document_id metadata column. Every row written
before this migration predates that table, so without backfilling,
deleting a pre-migration document would find zero chunk ids and leave its
vec0 rows permanently orphaned. Backfilling is a plain row copy into the
new-schema file (``_copy_rows``, the same helper compact() uses), which
records every copied row in document_chunks as it goes.
"""
PaperlessSqliteVecVectorStore._create_vec_table(dst_conn, dim)
PaperlessSqliteVecVectorStore._meta_set_on(dst_conn, "dim", str(dim))
embed_model = PaperlessSqliteVecVectorStore._meta_get_on(src_conn, "embed_model")
if embed_model is not None:
PaperlessSqliteVecVectorStore._meta_set_on(dst_conn, "embed_model", embed_model)
dst_conn.execute("BEGIN IMMEDIATE")
live = _copy_rows(src_conn, dst_conn)
# This migration only ever copies live rows (like compact()), so the
# cumulative counter resets to match -- the new file has no bloat yet.
PaperlessSqliteVecVectorStore._meta_set_on(dst_conn, "total_inserts", str(live))
dst_conn.execute("COMMIT")
MIGRATIONS.append(
Migration(
from_version=1,
to_version=2,
kind="structural",
description="add document_chunks side table for O(1) per-document deletes",
apply=_migrate_v1_to_v2_add_document_chunks,
),
)
@@ -10,6 +10,24 @@ def clamp_mailrule_maximum_age(apps, schema_editor):
MailRule.objects.filter(maximum_age__gt=32767).update(maximum_age=32767)
def clamp_mailrule_order(apps, schema_editor):
# The order field of MailRule is only used for relative sorting
# (account.rules.order_by("order")), so out-of-range values must be
# renumbered by rank rather than clamped to a single value, which
# would collapse distinct rules to the same order.
MailRule = apps.get_model("paperless_mail", "MailRule")
if (
MailRule.objects.filter(order__gt=32767).exists()
or MailRule.objects.filter(
order__lt=-32768,
).exists()
): # pragma: no cover
for index, rule_id in enumerate(
MailRule.objects.order_by("order", "pk").values_list("pk", flat=True),
):
MailRule.objects.filter(pk=rule_id).update(order=index)
class Migration(migrations.Migration):
# The data update must commit before PostgreSQL rewrites the table, otherwise
# pending foreign-key trigger events can block the subsequent ALTER TABLE.
@@ -135,6 +153,10 @@ class Migration(migrations.Migration):
verbose_name="maximum age",
),
),
migrations.RunPython(
clamp_mailrule_order,
migrations.RunPython.noop,
),
migrations.AlterField(
model_name="mailrule",
name="order",