Compare commits

..
Author SHA1 Message Date
shamoon f5a4026d4f Update advanced-search-query.ts 2026-09-19 21:04:52 -07:00
shamoon 339f9a4d30 Hook up to the filter bar 2026-09-19 21:04:52 -07:00
shamoon 856140c068 Advanced search dialog 2026-09-19 21:04:52 -07:00
shamoonandClaude Opus 5 62cf7c4429 feat(search): read a query back into the advanced search editor
The inverse of the serializer, deliberately narrow: it reads the forms
the serializer writes and nothing else, so a query it cannot show stays
text instead of being converted into something subtly different.

The guarantee is enforced rather than argued: a tree is only returned
when writing it out again reproduces the query character for character.
That turns every near miss into a plain "can't show this one" - a
boost, an implicit AND, a field alias, or AND and OR mixed at one level.
Aliases are refused for the same reason, since reading type: would mean
rewriting the query as it was read.

Per-word field prefixes are put back together into the single condition
they came from, but only when adjacent and on the same field, so the
order of what the user typed is never rearranged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 21:04:51 -07:00
shamoon 9a2c2b9331 Basic advanced search query foundations 2026-09-19 21:04:51 -07:00
247 changed files with 9493 additions and 8661 deletions
-2
View File
@@ -15,8 +15,6 @@
# Test related
**/.pytest_cache
**/tests
src/paperless_testing
src/conftest.py
**/*.spec.ts
**/htmlcov
# Local folders
+2 -2
View File
@@ -50,12 +50,12 @@ repos:
- 'prettier-plugin-organize-imports@4.3.0'
# Python hooks
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.16.7
rev: v0.16.5
hooks:
- id: ruff-check
- id: ruff-format
- repo: https://github.com/tox-dev/pyproject-fmt
rev: "v2.29.4"
rev: "v2.28.1"
hooks:
- id: pyproject-fmt
additional_dependencies: [tomli]
+1 -3
View File
@@ -171,9 +171,7 @@ RUN set -eux \
&& cp /etc/ImageMagick-6/paperless-policy.xml /etc/ImageMagick-6/policy.xml \
&& echo "Cleaning up image layer" \
&& rm --force --verbose *.deb \
&& rm --recursive --force --verbose /var/lib/apt/lists/* \
&& echo "Configuring interactive shells to source the s6 container environment" \
&& echo '. /etc/profile.d/contenv.sh' >> /etc/bash.bashrc
&& rm --recursive --force --verbose /var/lib/apt/lists/*
WORKDIR /usr/src/paperless/src/
-18
View File
@@ -1,18 +0,0 @@
#!/bin/sh
# Source s6 container environment for interactive shells.
# Ensures variables resolved from *_FILE secret injection are visible
# when using 'docker exec bash'. Does not affect s6 services (those
# use with-contenv directly). Has no effect in non-container contexts
# because the directory will not exist.
# Note: sh/dash shells opened via 'docker exec sh' are not covered;
# only bash-based sessions benefit from this file.
_pngx_contenv="/run/s6/container_environment"
if [ -d "${_pngx_contenv}" ]; then
for _pngx_f in "${_pngx_contenv}"/*; do
[ -f "${_pngx_f}" ] || continue
_pngx_name=$(basename "${_pngx_f}")
_pngx_val=$(cat "${_pngx_f}")
export "${_pngx_name}=${_pngx_val}"
done
fi
unset _pngx_contenv _pngx_f _pngx_name _pngx_val
@@ -2,7 +2,6 @@
# shellcheck shell=bash
declare -r log_prefix="[svc-flower]"
declare -r flower_config="${PAPERLESS_SRC_DIR}/paperless/flowerconfig.py"
echo "${log_prefix} Checking if we should start flower..."
@@ -10,20 +9,12 @@ if [[ -n "${PAPERLESS_ENABLE_FLOWER}" ]]; then
# Small delay to allow celery to be up first
echo "${log_prefix} Starting flower in 5s"
sleep 5
cd "${PAPERLESS_SRC_DIR}" || exit 1
# Only pass --conf if the file is actually there. The image does not ship one, and
# flower >= 2.1.0 exits with FileNotFoundError when an explicitly given --conf path
# does not exist (mher/flower#1391). Earlier versions silently ignored it.
declare -a conf_args=()
if [[ -f "${flower_config}" ]]; then
conf_args=(--conf="${flower_config}")
fi
cd ${PAPERLESS_SRC_DIR}
if [[ -n "${USER_IS_NON_ROOT}" ]]; then
exec /usr/local/bin/celery --app paperless flower "${conf_args[@]}"
exec /usr/local/bin/celery --app paperless flower --conf=${PAPERLESS_SRC_DIR}/paperless/flowerconfig.py
else
exec s6-setuidgid paperless /usr/local/bin/celery --app paperless flower "${conf_args[@]}"
exec s6-setuidgid paperless /usr/local/bin/celery --app paperless flower --conf=${PAPERLESS_SRC_DIR}/paperless/flowerconfig.py
fi
else
+2 -5
View File
@@ -153,11 +153,8 @@ in similar existing documents, and the document chat can retrieve relevant conte
Enable it by setting
[`PAPERLESS_AI_LLM_EMBEDDING_BACKEND`](configuration.md#PAPERLESS_AI_LLM_EMBEDDING_BACKEND)
(`huggingface` for fully-local embeddings, or `ollama` / `openai-like`). By default, the main
LLM API key and endpoint are used, but an optional embedding-specific[API key](configuration.md#PAPERLESS_AI_LLM_EMBEDDING_API_KEY)
and [endpoint](configuration.md#PAPERLESS_AI_LLM_EMBEDDING_ENDPOINT) can be configured.
The index is only built when AI is enabled **and** an embedding backend is set.
(`huggingface` for fully-local embeddings, or `ollama` / `openai-like`). The index is only
built when AI is enabled **and** an embedding backend is set.
The index is updated automatically on a schedule controlled by
[`PAPERLESS_LLM_INDEX_TASK_CRON`](configuration.md#PAPERLESS_LLM_INDEX_TASK_CRON) (daily by
-25
View File
@@ -1,30 +1,5 @@
# Changelog
## paperless-ngx 3.2.1
### Bug Fixes
- Fix: only pass --conf to flower when flowerconfig.py exists [@bitfoo1](https://github.com/bitfoo1) ([#14182](https://github.com/paperless-ngx/paperless-ngx/pull/14182))
- Fix: replace stale mail-fetch overlap check with a self-expiring lock [@stumpylog](https://github.com/stumpylog) ([#14189](https://github.com/paperless-ngx/paperless-ngx/pull/14189))
- Fix: bump ocrmypdf to 17.12 to pick up the ligature text-layer fix [@stumpylog](https://github.com/stumpylog) ([#14190](https://github.com/paperless-ngx/paperless-ngx/pull/14190))
- Fix: rebuild the search index automatically when it is missing Tantivy files [@stumpylog](https://github.com/stumpylog) ([#14180](https://github.com/paperless-ngx/paperless-ngx/pull/14180))
### Dependencies
- Chore(deps): Bump anyio from 4.12.1 to 4.14.2 in the uv group across 1 directory @[dependabot[bot]](https://github.com/apps/dependabot) ([#14175](https://github.com/paperless-ngx/paperless-ngx/pull/14175))
### All App Changes
<details>
<summary>4 changes</summary>
- Chore(deps): Bump anyio from 4.12.1 to 4.14.2 in the uv group across 1 directory @[dependabot[bot]](https://github.com/apps/dependabot) ([#14175](https://github.com/paperless-ngx/paperless-ngx/pull/14175))
- Fix: replace stale mail-fetch overlap check with a self-expiring lock [@stumpylog](https://github.com/stumpylog) ([#14189](https://github.com/paperless-ngx/paperless-ngx/pull/14189))
- Fix: bump ocrmypdf to 17.12 to pick up the ligature text-layer fix [@stumpylog](https://github.com/stumpylog) ([#14190](https://github.com/paperless-ngx/paperless-ngx/pull/14190))
- Fix: rebuild the search index automatically when it is missing Tantivy files [@stumpylog](https://github.com/stumpylog) ([#14180](https://github.com/paperless-ngx/paperless-ngx/pull/14180))
</details>
## paperless-ngx 3.2.0
### Features / Enhancements
-20
View File
@@ -2133,13 +2133,6 @@ for language and resource considerations.
Defaults to None.
#### [`PAPERLESS_AI_LLM_EMBEDDING_API_KEY=<str>`](#PAPERLESS_AI_LLM_EMBEDDING_API_KEY) {#PAPERLESS_AI_LLM_EMBEDDING_API_KEY}
: The API key to use for the embedding backend. If not supplied, embeddings use
`PAPERLESS_AI_LLM_API_KEY`.
Defaults to None.
#### [`PAPERLESS_AI_LLM_EMBEDDING_ENDPOINT=<str>`](#PAPERLESS_AI_LLM_EMBEDDING_ENDPOINT) {#PAPERLESS_AI_LLM_EMBEDDING_ENDPOINT}
: The endpoint / url to use for the embedding backend. If not supplied, embeddings use
@@ -2224,19 +2217,6 @@ used with the OpenAI-compatible backend to target a custom provider or local gat
Defaults to true, which allows internal endpoints.
#### [`PAPERLESS_AI_LLM_EXTRA_PARAMS=<json>`](#PAPERLESS_AI_LLM_EXTRA_PARAMS) {#PAPERLESS_AI_LLM_EXTRA_PARAMS}
: A JSON object of extra parameters sent with every LLM request, for providers that require a parameter Paperless does not
set itself. Values here override Paperless' own, and no validation is performed. Whatever you put here is passed to the
backend as-is, so an invalid parameter will simply be rejected by your provider. For example, current OpenAI reasoning
models refuse tool calls on the chat completions API unless reasoning is off:
```
PAPERLESS_AI_LLM_EXTRA_PARAMS={"reasoning_effort": "none"}
```
Defaults to empty, which adds nothing to requests.
#### [`PAPERLESS_LLM_INDEX_TASK_CRON=<cron expression>`](#PAPERLESS_LLM_INDEX_TASK_CRON) {#PAPERLESS_LLM_INDEX_TASK_CRON}
: Configures the schedule to update the AI embeddings of text content and metadata for all documents. Only performed if
-1
View File
@@ -150,7 +150,6 @@ pnpm ng build --configuration production
is loaded as well. However, the tests rely on the default
configuration. This is not ideal. But for now, make sure no settings
except for DEBUG are overridden when testing.
- Tests run in a random order each session, so that one test cannot quietly depend on another having run first. The seed is printed at the top of the run; pass `--randomly-seed=<seed>` to replay that exact order, or `--randomly-seed=last` to repeat the previous run.
!!! note
+6 -17
View File
@@ -1,9 +1,7 @@
[project]
name = "paperless-ngx"
version = "3.2.1"
description = """\
A community-supported supercharged document management system: scan, index and archive all your physical documents\
"""
version = "3.2.0"
description = "A community-supported supercharged document management system: scan, index and archive all your physical documents"
readme = "README.md"
requires-python = ">=3.11"
classifiers = [
@@ -12,7 +10,6 @@ classifiers = [
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3.15",
]
# TODO: Move certain things to groups and then utilize that further
# This will allow testing to not install a webserver, mysql, etc
@@ -120,7 +117,7 @@ testing = [
"pytest-env~=1.7.0",
"pytest-httpx",
"pytest-mock~=3.15.1",
"pytest-randomly~=5.0.0",
# "pytest-randomly~=4.0.1",
"pytest-rerunfailures~=16.4",
"pytest-sugar",
"pytest-xdist~=3.8.0",
@@ -247,10 +244,6 @@ per-file-ignores."docker/wait-for-redis.py" = [
per-file-ignores."src/documents/models.py" = [
"SIM115",
]
per-file-ignores."src/documents/tests/*.py" = [
"TID251",
]
flake8-tidy-imports.banned-api."documents.tests".msg = "Shared test infrastructure lives in src/paperless_testing/."
isort.force-single-line = true
[tool.codespell]
@@ -278,9 +271,9 @@ plugins = [
]
[tool.pyrefly]
baseline = ".pyrefly-baseline.json"
python-platform = "linux"
search-path = [ "src" ]
baseline = ".pyrefly-baseline.json"
[tool.django-stubs]
django_settings_module = "paperless.settings"
@@ -333,8 +326,6 @@ PAPERLESS_CACHE_BACKEND = "django.core.cache.backends.locmem.LocMemCache"
PAPERLESS_CHANNELS_BACKEND = "channels.layers.InMemoryChannelLayer"
# I don't think anything hits this, but just in case, basically infinite
PAPERLESS_TOKEN_THROTTLE_RATE = "1000/min"
# The 0.1s production default trips on a stalled CI runner, the date parsing tests then find no dates
PAPERLESS_MATCH_REGEX_TIMEOUT_SECONDS = "5"
[tool.coverage.run]
source = [
@@ -343,15 +334,13 @@ source = [
omit = [
"*/tests/*",
"manage.py",
"paperless/auth.py",
"paperless/wsgi.py",
"src/conftest.py",
"src/paperless_testing/*",
"paperless/auth.py",
]
[tool.coverage.report]
exclude_also = [
"if AUDIT_LOG_ENABLED:",
"if settings.AUDIT_LOG_ENABLED:",
"if AUDIT_LOG_ENABLED:",
"if TYPE_CHECKING:",
]
+21 -35
View File
@@ -9745,7 +9745,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -9760,7 +9760,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10016,56 +10016,56 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
</trans-unit>
<trans-unit id="4135055128446167640" datatype="html">
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
</trans-unit>
<trans-unit id="3629960544875360046" datatype="html">
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
</trans-unit>
<trans-unit id="3337301694210287595" datatype="html">
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
</trans-unit>
<trans-unit id="2155249406916744630" datatype="html">
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
</trans-unit>
<trans-unit id="4646273665293421938" datatype="html">
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
</trans-unit>
<trans-unit id="6837554170707123455" datatype="html">
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
</trans-unit>
<trans-unit id="6028096992841030074" datatype="html">
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
</trans-unit>
<trans-unit id="739880801667335279" datatype="html">
@@ -12018,95 +12018,81 @@
<context context-type="linenumber">351</context>
</context-group>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
</trans-unit>
<trans-unit id="1044242175651289991" datatype="html">
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
</trans-unit>
<trans-unit id="7218245223139363113" datatype="html">
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
</trans-unit>
<trans-unit id="4234495692726214397" datatype="html">
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
</trans-unit>
<trans-unit id="7935234833834000002" datatype="html">
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
</trans-unit>
<trans-unit id="1980550530387803165" datatype="html">
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
</trans-unit>
<trans-unit id="6126617860376156501" datatype="html">
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
</trans-unit>
<trans-unit id="6572826277249350975" datatype="html">
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
</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>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</context>
</context-group>
</trans-unit>
<trans-unit id="4493921125434706859" datatype="html">
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
</trans-unit>
<trans-unit id="483994032066441287" datatype="html">
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
</trans-unit>
<trans-unit id="1055686627716339120" datatype="html">
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "paperless-ngx-ui",
"version": "3.2.1",
"version": "3.2.0",
"scripts": {
"preinstall": "npx only-allow pnpm",
"ng": "ng",
@@ -0,0 +1,347 @@
<div class="modal-header">
<h4 class="modal-title" id="advanced-search-dialog-title" i18n>
Advanced search
</h4>
<button
type="button"
class="btn-close"
aria-label="Close"
i18n-aria-label
(click)="cancel()"
></button>
</div>
<div class="modal-body">
@if (unreadable) {
<div class="alert alert-warning d-flex flex-wrap gap-2 align-items-center">
<div class="flex-grow-1">
<span i18n
>The current query uses syntax this editor can't show. It still works
as typed.</span
>
</div>
<button
type="button"
class="btn btn-sm btn-outline-secondary"
(click)="startOver()"
i18n
>
Start a new query
</button>
</div>
}
<ng-container
*ngTemplateOutlet="
groupTemplate;
context: { group: root, parent: null, depth: 0 }
"
></ng-container>
<div class="mt-4">
<label
class="form-label small text-muted"
for="advanced-search-preview"
i18n
>Query</label
>
<pre
id="advanced-search-preview"
class="query-preview mb-0 p-2 rounded border"
>@if (generatedQuery) {{{ generatedQuery }}} @else {<span class="text-muted fst-italic" i18n>Nothing to search for yet</span>}</pre>
</div>
</div>
<div class="modal-footer">
<button
type="button"
class="btn btn-outline-secondary"
(click)="cancel()"
i18n
>
Cancel
</button>
<button
type="button"
class="btn btn-primary"
(click)="apply()"
[disabled]="!generatedQuery"
i18n
>
Apply
</button>
</div>
<ng-template
#groupTemplate
let-group="group"
let-parent="parent"
let-depth="depth"
>
<div class="d-flex w-100 gap-2">
<div class="d-flex flex-grow-1 flex-column">
<div class="d-flex align-items-center flex-wrap">
<div
class="btn-group btn-group-xs"
role="group"
aria-label="Match"
i18n-aria-label
>
<input
type="radio"
class="btn-check"
[(ngModel)]="group.operator"
[ngModelOptions]="{ standalone: true }"
[value]="LogicalOperator.Or"
id="advancedSearchAny_{{ idFor(group) }}"
name="advancedSearchAny_{{ idFor(group) }}"
/>
<label
class="btn btn-outline-primary"
for="advancedSearchAny_{{ idFor(group) }}"
i18n
>Any</label
>
<input
type="radio"
class="btn-check"
[(ngModel)]="group.operator"
[ngModelOptions]="{ standalone: true }"
[value]="LogicalOperator.And"
id="advancedSearchAll_{{ idFor(group) }}"
name="advancedSearchAll_{{ idFor(group) }}"
/>
<label
class="btn btn-outline-primary"
for="advancedSearchAll_{{ idFor(group) }}"
i18n
>All</label
>
<input
type="radio"
class="btn-check"
[(ngModel)]="group.operator"
[ngModelOptions]="{ standalone: true }"
[value]="LogicalOperator.Not"
id="advancedSearchNot_{{ idFor(group) }}"
name="advancedSearchNot_{{ idFor(group) }}"
/>
<label
class="btn btn-outline-secondary"
for="advancedSearchNot_{{ idFor(group) }}"
i18n
>Not</label
>
</div>
<span class="small text-muted ms-2">
@switch (group.operator) {
@case (LogicalOperator.And) {
<ng-container i18n>match all of these</ng-container>
}
@case (LogicalOperator.Or) {
<ng-container i18n>match any of these</ng-container>
}
@case (LogicalOperator.Not) {
<ng-container i18n>match none of these</ng-container>
}
}
</span>
</div>
<div class="list-group list-group-flush">
@for (element of group.children; track element) {
<div class="list-group-item px-0 d-flex flex-nowrap">
@if (element.type === ElementType.Group) {
<ng-container
*ngTemplateOutlet="
groupTemplate;
context: { group: element, parent: group, depth: depth + 1 }
"
></ng-container>
} @else {
<ng-container
*ngTemplateOutlet="
atomTemplate;
context: { atom: element, parent: group }
"
></ng-container>
}
</div>
}
</div>
</div>
<div
class="btn-group-vertical align-self-start ms-2 ps-2 border-start"
role="group"
aria-label="Group actions"
i18n-aria-label
>
<button
type="button"
class="btn btn-sm btn-outline-secondary text-primary"
title="Add condition"
i18n-title
(click)="addAtom(group)"
[disabled]="group.children.length >= maxAtoms"
>
<i-bs name="node-plus"></i-bs>
</button>
<button
type="button"
class="btn btn-sm btn-outline-secondary text-primary"
title="Add group"
i18n-title
(click)="addGroup(group)"
[disabled]="depth >= maxDepth"
>
<i-bs name="braces"></i-bs>
</button>
@if (parent) {
<button
type="button"
class="btn btn-sm btn-outline-secondary text-danger"
aria-label="Remove group"
i18n-aria-label
(click)="remove(parent, group)"
>
<i-bs name="x-circle"></i-bs>
</button>
}
</div>
</div>
</ng-template>
<ng-template #atomTemplate let-atom="atom" let-parent="parent">
<div class="d-flex align-items-center gap-1 w-100">
<div class="input-group input-group-sm flex-wrap">
<select
class="form-select flex-grow-0 w-auto"
[(ngModel)]="atom.field"
[ngModelOptions]="{ standalone: true }"
(ngModelChange)="onFieldChange(atom)"
aria-label="Field"
i18n-aria-label
>
@for (fieldGroup of fieldGroups; track fieldGroup.label) {
<optgroup [label]="fieldGroup.label">
@for (field of fieldGroup.fields; track field) {
<option [ngValue]="field">{{ fieldLabels[field] }}</option>
}
</optgroup>
}
</select>
<select
class="form-select flex-grow-0 w-auto"
[(ngModel)]="atom.operator"
[ngModelOptions]="{ standalone: true }"
(ngModelChange)="onOperatorChange(atom)"
aria-label="Condition"
i18n-aria-label
>
@for (operator of operatorsFor(atom); track operator) {
<option [ngValue]="operator">
{{ operatorLabel(atom, operator) }}
</option>
}
</select>
@switch (atom.operator) {
@case (Operator.DateKeyword) {
<select
class="form-select"
[(ngModel)]="atom.value"
[ngModelOptions]="{ standalone: true }"
aria-label="Period"
i18n-aria-label
>
<option [ngValue]="''" disabled i18n>Choose a period</option>
@for (keyword of dateKeywords; track keyword) {
<option [ngValue]="keyword">
{{ dateKeywordLabels[keyword] }}
</option>
}
</select>
}
@case (Operator.WithinLast) {
<input
class="form-control amount"
type="number"
min="1"
[(ngModel)]="atom.value"
[ngModelOptions]="{ standalone: true }"
aria-label="Amount"
i18n-aria-label
/>
<select
class="form-select"
[(ngModel)]="atom.unit"
[ngModelOptions]="{ standalone: true }"
aria-label="Unit"
i18n-aria-label
>
@for (unit of dateUnits; track unit) {
<option [ngValue]="unit">{{ dateUnitLabels[unit] }}</option>
}
</select>
}
@case (Operator.Between) {
<input
class="form-control"
[type]="kindOf(atom) === FieldKind.Date ? 'date' : 'number'"
[(ngModel)]="atom.value"
[ngModelOptions]="{ standalone: true }"
aria-label="From"
i18n-aria-label
/>
<span class="input-group-text" i18n>and</span>
<input
class="form-control"
[type]="kindOf(atom) === FieldKind.Date ? 'date' : 'number'"
[(ngModel)]="atom.valueTo"
[ngModelOptions]="{ standalone: true }"
aria-label="To"
i18n-aria-label
/>
}
@default {
@if (kindOf(atom) === FieldKind.Date) {
<input
class="form-control"
type="date"
[(ngModel)]="atom.value"
[ngModelOptions]="{ standalone: true }"
aria-label="Date"
i18n-aria-label
/>
} @else if (kindOf(atom) === FieldKind.Number) {
<input
class="form-control"
type="number"
min="0"
[(ngModel)]="atom.value"
[ngModelOptions]="{ standalone: true }"
aria-label="Number"
i18n-aria-label
/>
} @else {
<input
class="form-control"
type="text"
[(ngModel)]="atom.value"
[ngModelOptions]="{ standalone: true }"
[placeholder]="placeholderFor(atom)"
aria-label="Value"
i18n-aria-label
/>
}
}
}
</div>
<button
class="btn btn-link btn-sm text-danger px-1"
type="button"
(click)="remove(parent, atom)"
aria-label="Remove condition"
i18n-aria-label
>
<i-bs name="x-circle"></i-bs>
</button>
</div>
</ng-template>
@@ -0,0 +1,11 @@
.query-preview {
font-size: 0.8125rem;
white-space: pre-wrap;
word-break: break-word;
background-color: var(--pngx-bg-darker);
border-color: var(--bs-border-color) !important;
}
.input-group .amount {
flex: 0 1 5rem;
}
@@ -0,0 +1,186 @@
import { ComponentFixture, TestBed } from '@angular/core/testing'
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
import { allIcons, NgxBootstrapIconsModule } from 'ngx-bootstrap-icons'
import {
AdvancedSearchDateUnit,
AdvancedSearchField,
AdvancedSearchLogicalOperator,
AdvancedSearchOperator,
AdvancedSearchQueryAtom,
AdvancedSearchQueryElementType,
AdvancedSearchQueryGroup,
} from 'src/app/data/advanced-search-query'
import { AdvancedSearchDialogComponent } from './advanced-search-dialog.component'
describe('AdvancedSearchDialogComponent', () => {
let component: AdvancedSearchDialogComponent
let fixture: ComponentFixture<AdvancedSearchDialogComponent>
let activeModal: NgbActiveModal
const firstAtom = (): AdvancedSearchQueryAtom =>
component.root.children[0] as AdvancedSearchQueryAtom
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [
AdvancedSearchDialogComponent,
NgxBootstrapIconsModule.pick(allIcons),
],
providers: [NgbActiveModal],
}).compileComponents()
fixture = TestBed.createComponent(AdvancedSearchDialogComponent)
activeModal = TestBed.inject(NgbActiveModal)
component = fixture.componentInstance
fixture.detectChanges()
})
it('should start with one empty condition and nothing to search for', () => {
expect(component.root.children).toHaveLength(1)
expect(component.generatedQuery).toBe('')
expect(component.unreadable).toBeFalsy()
})
it('should show an existing query as conditions', () => {
component.query = 'title:invoice AND NOT tag:paid'
expect(component.unreadable).toBeFalsy()
expect(component.root.children).toHaveLength(2)
expect(component.generatedQuery).toBe('title:invoice AND NOT tag:paid')
})
it('should flag a query it cannot show and start empty', () => {
component.query = 'title:invoice^2'
expect(component.unreadable).toBeTruthy()
expect(component.generatedQuery).toBe('')
})
it('should clear the warning when starting a new query', () => {
component.query = 'title:invoice^2'
component.startOver()
expect(component.unreadable).toBeFalsy()
expect(component.root.children).toHaveLength(1)
})
it('should treat an empty query as a fresh start', () => {
component.query = ' '
expect(component.unreadable).toBeFalsy()
expect(component.root.children).toHaveLength(1)
})
it('should write the query as conditions are filled in', () => {
const atom = firstAtom()
atom.field = AdvancedSearchField.Title
atom.value = 'unpaid invoice'
expect(component.generatedQuery).toBe('title:unpaid AND title:invoice')
})
it('should offer the conditions of the chosen field', () => {
const atom = firstAtom()
atom.field = AdvancedSearchField.Added
component.onFieldChange(atom)
expect(component.operatorsFor(atom)).toContain(
AdvancedSearchOperator.WithinLast
)
expect(component.operatorsFor(atom)).not.toContain(
AdvancedSearchOperator.Phrase
)
})
it('should keep a condition the new field still offers', () => {
const atom = firstAtom()
atom.operator = AdvancedSearchOperator.Phrase
atom.field = AdvancedSearchField.Correspondent
component.onFieldChange(atom)
expect(atom.operator).toBe(AdvancedSearchOperator.Phrase)
})
it('should replace a condition the new field does not offer, and clear the value', () => {
const atom = firstAtom()
atom.operator = AdvancedSearchOperator.Phrase
atom.value = 'invoice'
atom.field = AdvancedSearchField.ASN
component.onFieldChange(atom)
expect(atom.operator).toBe(AdvancedSearchOperator.Equals)
expect(atom.value).toBe('')
})
it('should give a within-the-last condition a unit to start from', () => {
const atom = firstAtom()
atom.field = AdvancedSearchField.Added
atom.operator = AdvancedSearchOperator.WithinLast
component.onOperatorChange(atom)
expect(atom.unit).toBe(AdvancedSearchDateUnit.Day)
atom.value = '3'
expect(component.generatedQuery).toBe('added:[-3 days to now]')
})
it('should label date comparisons as dates', () => {
const atom = firstAtom()
atom.field = AdvancedSearchField.Created
expect(
component.operatorLabel(atom, AdvancedSearchOperator.AtLeast)
).toEqual('is on or after')
atom.field = AdvancedSearchField.ASN
expect(
component.operatorLabel(atom, AdvancedSearchOperator.AtLeast)
).toEqual('is at least')
})
it('should add and remove conditions', () => {
component.addAtom(component.root)
expect(component.root.children).toHaveLength(2)
component.remove(component.root, component.root.children[1])
expect(component.root.children).toHaveLength(1)
})
it('should add a group, which starts as Any', () => {
component.addGroup(component.root)
const group = component.root.children[1] as AdvancedSearchQueryGroup
expect(group.type).toBe(AdvancedSearchQueryElementType.Group)
expect(group.operator).toBe(AdvancedSearchLogicalOperator.Or)
expect(group.children).toHaveLength(1)
})
it('should give every group its own id, once', () => {
component.addGroup(component.root)
const group = component.root.children[1] as AdvancedSearchQueryGroup
expect(component.idFor(component.root)).not.toEqual(component.idFor(group))
expect(component.idFor(group)).toEqual(component.idFor(group))
})
it('should apply the query and close', () => {
const emitSpy = jest.spyOn(component.queryApplied, 'emit')
const closeSpy = jest.spyOn(activeModal, 'close')
const atom = firstAtom()
atom.value = 'invoice'
component.apply()
expect(emitSpy).toHaveBeenCalledWith('content:invoice')
expect(closeSpy).toHaveBeenCalled()
})
it('should close without applying on cancel', () => {
const emitSpy = jest.spyOn(component.queryApplied, 'emit')
const closeSpy = jest.spyOn(activeModal, 'close')
component.cancel()
expect(emitSpy).not.toHaveBeenCalled()
expect(closeSpy).toHaveBeenCalled()
})
it('should show the query it will apply', () => {
component.query = 'content:invoice OR content:receipt'
fixture.detectChanges()
const preview = fixture.nativeElement.querySelector(
'#advanced-search-preview'
)
expect(preview.textContent).toContain('content:invoice OR content:receipt')
})
it('should not offer to apply an empty query', () => {
fixture.detectChanges()
const apply = Array.from(
fixture.nativeElement.querySelectorAll('.modal-footer button')
).pop() as HTMLButtonElement
expect(apply.disabled).toBeTruthy()
})
})
@@ -0,0 +1,197 @@
import { NgTemplateOutlet } from '@angular/common'
import { Component, EventEmitter, inject, Input, Output } from '@angular/core'
import { FormsModule } from '@angular/forms'
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'
import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons'
import {
ADVANCED_SEARCH_DATE_KEYWORD_LABELS,
ADVANCED_SEARCH_DATE_KEYWORDS,
ADVANCED_SEARCH_DATE_OPERATOR_LABELS,
ADVANCED_SEARCH_DATE_UNIT_LABELS,
ADVANCED_SEARCH_FIELD_GROUPS,
ADVANCED_SEARCH_FIELD_KINDS,
ADVANCED_SEARCH_FIELD_LABELS,
ADVANCED_SEARCH_MAX_ATOMS,
ADVANCED_SEARCH_MAX_DEPTH,
ADVANCED_SEARCH_OPERATOR_LABELS,
ADVANCED_SEARCH_OPERATORS_BY_KIND,
AdvancedSearchDateUnit,
AdvancedSearchField,
AdvancedSearchFieldKind,
AdvancedSearchLogicalOperator,
AdvancedSearchOperator,
AdvancedSearchQueryAtom,
AdvancedSearchQueryElement,
AdvancedSearchQueryElementType,
AdvancedSearchQueryGroup,
} from 'src/app/data/advanced-search-query'
import {
parseAdvancedSearchQuery,
serializeAdvancedSearchQuery,
} from 'src/app/utils/advanced-search-query'
import { LoadingComponentWithPermissions } from '../../loading-component/loading.component'
@Component({
selector: 'pngx-advanced-search-dialog',
templateUrl: './advanced-search-dialog.component.html',
styleUrl: './advanced-search-dialog.component.scss',
imports: [FormsModule, NgTemplateOutlet, NgxBootstrapIconsModule],
})
export class AdvancedSearchDialogComponent extends LoadingComponentWithPermissions {
private activeModal = inject(NgbActiveModal)
public readonly ElementType = AdvancedSearchQueryElementType
public readonly LogicalOperator = AdvancedSearchLogicalOperator
public readonly Operator = AdvancedSearchOperator
public readonly FieldKind = AdvancedSearchFieldKind
public readonly fieldGroups = ADVANCED_SEARCH_FIELD_GROUPS
public readonly fieldLabels = ADVANCED_SEARCH_FIELD_LABELS
public readonly dateKeywords = ADVANCED_SEARCH_DATE_KEYWORDS
public readonly dateKeywordLabels = ADVANCED_SEARCH_DATE_KEYWORD_LABELS
public readonly dateUnits = Object.values(AdvancedSearchDateUnit)
public readonly dateUnitLabels = ADVANCED_SEARCH_DATE_UNIT_LABELS
public readonly maxDepth = ADVANCED_SEARCH_MAX_DEPTH
public readonly maxAtoms = ADVANCED_SEARCH_MAX_ATOMS
@Output()
public queryApplied = new EventEmitter<string>()
public root: AdvancedSearchQueryGroup = this.emptyRoot()
// True when the query in the search box uses syntax the editor cannot show
public unreadable: boolean = false
private _query: string = ''
@Input()
set query(query: string) {
this._query = query ?? ''
const parsed = parseAdvancedSearchQuery(this._query)
this.unreadable = !!this._query.trim() && !parsed
this.root = parsed ?? this.emptyRoot()
}
get query(): string {
return this._query
}
constructor() {
super()
this.loading.set(false)
}
// Stable ids for the radio groups, without putting them in the query model
private ids = new WeakMap<object, number>()
private nextId = 0
public idFor(element: AdvancedSearchQueryElement): number {
if (!this.ids.has(element)) {
this.ids.set(element, this.nextId++)
}
return this.ids.get(element)
}
private emptyRoot(): AdvancedSearchQueryGroup {
return {
type: AdvancedSearchQueryElementType.Group,
operator: AdvancedSearchLogicalOperator.And,
children: [this.newAtom()],
}
}
private newAtom(): AdvancedSearchQueryAtom {
return {
type: AdvancedSearchQueryElementType.Atom,
field: AdvancedSearchField.Content,
operator: AdvancedSearchOperator.AllWords,
value: '',
}
}
public get generatedQuery(): string {
return serializeAdvancedSearchQuery(this.root)
}
public kindOf(atom: AdvancedSearchQueryAtom): AdvancedSearchFieldKind {
return ADVANCED_SEARCH_FIELD_KINDS[atom.field]
}
public operatorsFor(atom: AdvancedSearchQueryAtom): AdvancedSearchOperator[] {
return ADVANCED_SEARCH_OPERATORS_BY_KIND[this.kindOf(atom)]
}
public operatorLabel(
atom: AdvancedSearchQueryAtom,
operator: AdvancedSearchOperator
): string {
return this.kindOf(atom) === AdvancedSearchFieldKind.Date
? (ADVANCED_SEARCH_DATE_OPERATOR_LABELS[operator] ??
ADVANCED_SEARCH_OPERATOR_LABELS[operator])
: ADVANCED_SEARCH_OPERATOR_LABELS[operator]
}
public placeholderFor(atom: AdvancedSearchQueryAtom): string {
switch (atom.operator) {
case AdvancedSearchOperator.Phrase:
return $localize`phrase`
case AdvancedSearchOperator.StartsWith:
return $localize`beginning of a word`
default:
return $localize`words`
}
}
public onFieldChange(atom: AdvancedSearchQueryAtom) {
// Keep the condition only if the new field still offers it
if (!this.operatorsFor(atom).includes(atom.operator)) {
atom.operator = this.operatorsFor(atom)[0]
}
this.clearValues(atom)
}
public onOperatorChange(atom: AdvancedSearchQueryAtom) {
this.clearValues(atom)
}
private clearValues(atom: AdvancedSearchQueryAtom) {
atom.value = ''
atom.valueTo = undefined
atom.unit =
atom.operator === AdvancedSearchOperator.WithinLast
? AdvancedSearchDateUnit.Day
: undefined
}
public addAtom(group: AdvancedSearchQueryGroup) {
group.children.push(this.newAtom())
}
public addGroup(group: AdvancedSearchQueryGroup) {
group.children.push({
type: AdvancedSearchQueryElementType.Group,
operator: AdvancedSearchLogicalOperator.Or,
children: [this.newAtom()],
})
}
public remove(
parent: AdvancedSearchQueryGroup,
element: AdvancedSearchQueryElement
) {
parent.children = parent.children.filter((child) => child !== element)
}
public startOver() {
this.unreadable = false
this.root = this.emptyRoot()
}
public apply() {
this.queryApplied.emit(this.generatedQuery)
this.activeModal.close()
}
public cancel() {
this.activeModal.close()
}
}
@@ -146,19 +146,6 @@ describe('DocumentListComponent', () => {
expect(reloadSpy).toHaveBeenCalled()
})
it('should stop reloading on document deleted after destroy', () => {
const reloadSpy = jest.spyOn(documentListService, 'reload')
const documentDeletedSubject = new Subject<boolean>()
jest
.spyOn(websocketStatusService, 'onDocumentDeleted')
.mockReturnValue(documentDeletedSubject)
fixture.detectChanges()
fixture.destroy()
reloadSpy.mockClear()
documentDeletedSubject.next(true)
expect(reloadSpy).not.toHaveBeenCalled()
})
it('should show score sort fields on fulltext queries', () => {
documentListService.setFilterRules([
{
@@ -270,12 +270,9 @@ export class DocumentListComponent
this.list.reload()
})
this.websocketStatusService
.onDocumentDeleted()
.pipe(takeUntil(this.unsubscribeNotifier))
.subscribe(() => {
this.list.reload()
})
this.websocketStatusService.onDocumentDeleted().subscribe(() => {
this.list.reload()
})
this.route.paramMap
.pipe(
@@ -17,6 +17,12 @@
}
</select>
}
@if (advancedSearchEditorAvailable) {
<button class="btn btn-sm btn-outline-primary" type="button" (click)="openAdvancedSearchEditor()"
title="Edit query" i18n-title [disabled]="disabled">
<i-bs name="sliders"></i-bs>
</button>
}
@if (_textFilter) {
<button class="btn btn-link btn-sm px-2 position-absolute top-0 end-0 z-10" (click)="resetTextField()" aria-label="Clear search" i18n-aria-label>
<i-bs width="1em" height="1em" name="x"></i-bs>
@@ -12,6 +12,8 @@ import {
NgbDatepickerModule,
NgbDropdownItem,
NgbDropdownModule,
NgbModal,
NgbModalRef,
NgbTypeaheadModule,
} from '@ng-bootstrap/ng-bootstrap'
import { NgSelectComponent, NgSelectModule } from '@ng-select/ng-select'
@@ -2515,4 +2517,45 @@ describe('FilterEditorComponent', () => {
expect(component.textFilter).toEqual('help ')
})
it('should open the advanced search editor with the current query and apply the result', () => {
const modalService: NgbModal = TestBed.inject(NgbModal)
let modal: NgbModalRef
modalService.activeInstances.subscribe(
(instances) => (modal = instances[0])
)
component.textFilterTarget = 'fulltext-query'
component.updateTextFilter('title:invoice')
fixture.detectChanges()
const editorButton = fixture.debugElement.query(
By.css('button[title="Edit query"]')
)
expect(editorButton).not.toBeNull()
editorButton.triggerEventHandler('click')
fixture.detectChanges()
expect(modal.componentInstance.query).toEqual('title:invoice')
const rulesSpy = jest.spyOn(component.filterRulesChange, 'next')
modal.componentInstance.queryApplied.emit('title:invoice AND NOT tag:paid')
expect(component.textFilter).toEqual('title:invoice AND NOT tag:paid')
expect(documentService.searchQuery).toEqual(
'title:invoice AND NOT tag:paid'
)
expect(rulesSpy).toHaveBeenCalledWith([
{
rule_type: FILTER_FULLTEXT_QUERY,
value: 'title:invoice AND NOT tag:paid',
},
])
})
it('should not offer the advanced search editor for other targets', () => {
component.textFilterTarget = 'title-content'
fixture.detectChanges()
expect(
fixture.debugElement.query(By.css('button[title="Edit query"]'))
).toBeNull()
})
})
@@ -15,12 +15,13 @@ import {
import { FormsModule, ReactiveFormsModule } from '@angular/forms'
import {
NgbDropdownModule,
NgbModal,
NgbTypeahead,
NgbTypeaheadModule,
} from '@ng-bootstrap/ng-bootstrap'
import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons'
import { TourNgBootstrap } from 'ngx-ui-tour-ng-bootstrap'
import { Observable, Subject, from } from 'rxjs'
import { first, Observable, Subject, from } from 'rxjs'
import {
catchError,
debounceTime,
@@ -121,6 +122,7 @@ import {
PermissionsFilterDropdownComponent,
PermissionsSelectionModel,
} from '../../common/permissions-filter-dropdown/permissions-filter-dropdown.component'
import { AdvancedSearchDialogComponent } from '../../common/advanced-search-dialog/advanced-search-dialog.component'
import { LoadingComponentWithPermissions } from '../../loading-component/loading.component'
const TEXT_FILTER_TARGET_TITLE = 'title'
@@ -286,6 +288,7 @@ export class FilterEditorComponent
permissionsService = inject(PermissionsService)
private customFieldService = inject(CustomFieldsService)
private searchService = inject(SearchService)
private modalService = inject(NgbModal)
generateFilterName() {
if (this.filterRules.length == 1) {
@@ -1372,6 +1375,23 @@ export class FilterEditorComponent
}
}
get advancedSearchEditorAvailable(): boolean {
return this.textFilterTarget === TEXT_FILTER_TARGET_FULLTEXT_QUERY
}
openAdvancedSearchEditor() {
const modal = this.modalService.open(AdvancedSearchDialogComponent, {
backdrop: 'static',
size: 'lg',
})
modal.componentInstance.query = this._textFilter ?? ''
modal.componentInstance.queryApplied
.pipe(first())
.subscribe((query: string) => {
this.updateTextFilter(query)
})
}
textFilterKeydown(event: KeyboardEvent) {
if (event.key == 'Enter') {
if (event.defaultPrevented) {
@@ -0,0 +1,262 @@
// Fields and forms documented in docs/usage.md > "Document searches"
export enum AdvancedSearchField {
Any = '',
Title = 'title',
Content = 'content',
OriginalFilename = 'original_filename',
NoteText = 'notes.note',
NoteAuthor = 'notes.user',
CustomFieldName = 'custom_fields.name',
CustomFieldValue = 'custom_fields.value',
Correspondent = 'correspondent',
DocumentType = 'document_type',
StoragePath = 'storage_path',
Tag = 'tag',
ASN = 'asn',
PageCount = 'page_count',
NumNotes = 'num_notes',
Created = 'created',
Added = 'added',
Modified = 'modified',
Checksum = 'checksum',
}
export enum AdvancedSearchFieldKind {
Text = 'text',
Number = 'number',
Date = 'date',
Checksum = 'checksum',
}
export const ADVANCED_SEARCH_FIELD_KINDS: Record<
AdvancedSearchField,
AdvancedSearchFieldKind
> = {
[AdvancedSearchField.Any]: AdvancedSearchFieldKind.Text,
[AdvancedSearchField.Title]: AdvancedSearchFieldKind.Text,
[AdvancedSearchField.Content]: AdvancedSearchFieldKind.Text,
[AdvancedSearchField.OriginalFilename]: AdvancedSearchFieldKind.Text,
[AdvancedSearchField.NoteText]: AdvancedSearchFieldKind.Text,
[AdvancedSearchField.NoteAuthor]: AdvancedSearchFieldKind.Text,
[AdvancedSearchField.CustomFieldName]: AdvancedSearchFieldKind.Text,
[AdvancedSearchField.CustomFieldValue]: AdvancedSearchFieldKind.Text,
[AdvancedSearchField.Correspondent]: AdvancedSearchFieldKind.Text,
[AdvancedSearchField.DocumentType]: AdvancedSearchFieldKind.Text,
[AdvancedSearchField.StoragePath]: AdvancedSearchFieldKind.Text,
[AdvancedSearchField.Tag]: AdvancedSearchFieldKind.Text,
[AdvancedSearchField.ASN]: AdvancedSearchFieldKind.Number,
[AdvancedSearchField.PageCount]: AdvancedSearchFieldKind.Number,
[AdvancedSearchField.NumNotes]: AdvancedSearchFieldKind.Number,
[AdvancedSearchField.Created]: AdvancedSearchFieldKind.Date,
[AdvancedSearchField.Added]: AdvancedSearchFieldKind.Date,
[AdvancedSearchField.Modified]: AdvancedSearchFieldKind.Date,
[AdvancedSearchField.Checksum]: AdvancedSearchFieldKind.Checksum,
}
export enum AdvancedSearchOperator {
AllWords = 'all',
AnyWord = 'any',
Phrase = 'phrase',
StartsWith = 'prefix',
Equals = 'eq',
AtLeast = 'gte',
AtMost = 'lte',
Between = 'between',
DateKeyword = 'keyword',
WithinLast = 'within',
}
export const ADVANCED_SEARCH_OPERATORS_BY_KIND: Record<
AdvancedSearchFieldKind,
AdvancedSearchOperator[]
> = {
[AdvancedSearchFieldKind.Text]: [
AdvancedSearchOperator.AllWords,
AdvancedSearchOperator.AnyWord,
AdvancedSearchOperator.Phrase,
AdvancedSearchOperator.StartsWith,
],
[AdvancedSearchFieldKind.Number]: [
AdvancedSearchOperator.Equals,
AdvancedSearchOperator.AtLeast,
AdvancedSearchOperator.AtMost,
AdvancedSearchOperator.Between,
],
[AdvancedSearchFieldKind.Date]: [
AdvancedSearchOperator.DateKeyword,
AdvancedSearchOperator.WithinLast,
AdvancedSearchOperator.AtLeast,
AdvancedSearchOperator.AtMost,
AdvancedSearchOperator.Between,
],
[AdvancedSearchFieldKind.Checksum]: [AdvancedSearchOperator.StartsWith],
}
export const ADVANCED_SEARCH_DATE_KEYWORDS = [
'today',
'yesterday',
'tomorrow',
'previous week',
'this month',
'previous month',
'previous quarter',
'this year',
'previous year',
] as const
export type AdvancedSearchDateKeyword =
(typeof ADVANCED_SEARCH_DATE_KEYWORDS)[number]
export enum AdvancedSearchDateUnit {
Day = 'day',
Week = 'week',
Month = 'month',
Year = 'year',
}
export enum AdvancedSearchLogicalOperator {
And = 'AND',
Or = 'OR',
Not = 'NOT',
}
export enum AdvancedSearchQueryElementType {
Atom = 'atom',
Group = 'group',
}
export interface AdvancedSearchQueryAtom {
type: AdvancedSearchQueryElementType.Atom
field: AdvancedSearchField
operator: AdvancedSearchOperator
value?: string
valueTo?: string
unit?: AdvancedSearchDateUnit // for WithinLast
}
export interface AdvancedSearchQueryGroup {
type: AdvancedSearchQueryElementType.Group
operator: AdvancedSearchLogicalOperator
children: AdvancedSearchQueryElement[]
}
export type AdvancedSearchQueryElement =
AdvancedSearchQueryAtom | AdvancedSearchQueryGroup
export const ADVANCED_SEARCH_MAX_DEPTH = 2
export const ADVANCED_SEARCH_MAX_ATOMS = 10
export const ADVANCED_SEARCH_FIELD_LABELS: Record<AdvancedSearchField, string> =
{
[AdvancedSearchField.Any]: $localize`Any field`,
[AdvancedSearchField.Title]: $localize`Title`,
[AdvancedSearchField.Content]: $localize`Content`,
[AdvancedSearchField.OriginalFilename]: $localize`File name`,
[AdvancedSearchField.NoteText]: $localize`Note text`,
[AdvancedSearchField.NoteAuthor]: $localize`Note author`,
[AdvancedSearchField.CustomFieldName]: $localize`Custom field name`,
[AdvancedSearchField.CustomFieldValue]: $localize`Custom field value`,
[AdvancedSearchField.Correspondent]: $localize`Correspondent name`,
[AdvancedSearchField.DocumentType]: $localize`Document type name`,
[AdvancedSearchField.StoragePath]: $localize`Storage path name`,
[AdvancedSearchField.Tag]: $localize`Tag name`,
[AdvancedSearchField.ASN]: $localize`ASN`,
[AdvancedSearchField.PageCount]: $localize`Pages`,
[AdvancedSearchField.NumNotes]: $localize`Number of notes`,
[AdvancedSearchField.Created]: $localize`Created`,
[AdvancedSearchField.Added]: $localize`Added`,
[AdvancedSearchField.Modified]: $localize`Modified`,
[AdvancedSearchField.Checksum]: $localize`Checksum`,
}
export const ADVANCED_SEARCH_FIELD_GROUPS: {
label: string
fields: AdvancedSearchField[]
}[] = [
{
label: $localize`Text`,
fields: [
AdvancedSearchField.Any,
AdvancedSearchField.Title,
AdvancedSearchField.Content,
AdvancedSearchField.OriginalFilename,
AdvancedSearchField.NoteText,
AdvancedSearchField.NoteAuthor,
AdvancedSearchField.CustomFieldName,
AdvancedSearchField.CustomFieldValue,
],
},
{
label: $localize`Names`,
fields: [
AdvancedSearchField.Correspondent,
AdvancedSearchField.DocumentType,
AdvancedSearchField.StoragePath,
AdvancedSearchField.Tag,
],
},
{
label: $localize`Numbers`,
fields: [
AdvancedSearchField.ASN,
AdvancedSearchField.PageCount,
AdvancedSearchField.NumNotes,
],
},
{
label: $localize`Dates`,
fields: [
AdvancedSearchField.Created,
AdvancedSearchField.Added,
AdvancedSearchField.Modified,
],
},
{ label: $localize`Other`, fields: [AdvancedSearchField.Checksum] },
]
export const ADVANCED_SEARCH_OPERATOR_LABELS: Record<
AdvancedSearchOperator,
string
> = {
[AdvancedSearchOperator.AllWords]: $localize`contains all words`,
[AdvancedSearchOperator.AnyWord]: $localize`contains any word`,
[AdvancedSearchOperator.Phrase]: $localize`contains the phrase`,
[AdvancedSearchOperator.StartsWith]: $localize`starts with`,
[AdvancedSearchOperator.Equals]: $localize`is`,
[AdvancedSearchOperator.AtLeast]: $localize`is at least`,
[AdvancedSearchOperator.AtMost]: $localize`is at most`,
[AdvancedSearchOperator.Between]: $localize`is between`,
[AdvancedSearchOperator.DateKeyword]: $localize`is`,
[AdvancedSearchOperator.WithinLast]: $localize`is within the last`,
}
// Comparing dates reads differently than comparing counts
export const ADVANCED_SEARCH_DATE_OPERATOR_LABELS: Partial<
Record<AdvancedSearchOperator, string>
> = {
[AdvancedSearchOperator.AtLeast]: $localize`is on or after`,
[AdvancedSearchOperator.AtMost]: $localize`is on or before`,
}
export const ADVANCED_SEARCH_DATE_KEYWORD_LABELS: Record<string, string> = {
today: $localize`today`,
yesterday: $localize`yesterday`,
tomorrow: $localize`tomorrow`,
'previous week': $localize`previous week`,
'this month': $localize`this month`,
'previous month': $localize`previous month`,
'previous quarter': $localize`previous quarter`,
'this year': $localize`this year`,
'previous year': $localize`previous year`,
}
export const ADVANCED_SEARCH_DATE_UNIT_LABELS: Record<
AdvancedSearchDateUnit,
string
> = {
[AdvancedSearchDateUnit.Day]: $localize`days`,
[AdvancedSearchDateUnit.Week]: $localize`weeks`,
[AdvancedSearchDateUnit.Month]: $localize`months`,
[AdvancedSearchDateUnit.Year]: $localize`years`,
}
-9
View File
@@ -353,14 +353,6 @@ export const PaperlessConfigOptions: ConfigOption[] = [
config_key: 'PAPERLESS_AI_LLM_EMBEDDING_MODEL',
category: ConfigCategory.AI,
},
{
key: 'llm_embedding_api_key',
title: $localize`LLM Embedding API Key`,
type: ConfigOptionType.Password,
note: $localize`Used for embeddings when set, otherwise LLM API key is used.`,
config_key: 'PAPERLESS_AI_LLM_EMBEDDING_API_KEY',
category: ConfigCategory.AI,
},
{
key: 'llm_embedding_endpoint',
title: $localize`LLM Embedding Endpoint`,
@@ -465,7 +457,6 @@ export interface PaperlessConfig extends ObjectWithId {
ai_enabled: boolean
llm_embedding_backend: string
llm_embedding_model: string
llm_embedding_api_key: string
llm_embedding_endpoint: string
llm_embedding_chunk_size: number
llm_context_size: number
@@ -0,0 +1,515 @@
import {
AdvancedSearchDateUnit,
AdvancedSearchField,
AdvancedSearchLogicalOperator,
AdvancedSearchOperator,
AdvancedSearchQueryAtom,
AdvancedSearchQueryElement,
AdvancedSearchQueryElementType,
AdvancedSearchQueryGroup,
} from '../data/advanced-search-query'
import {
parseAdvancedSearchQuery,
serializeAdvancedSearchQuery,
} from './advanced-search-query'
const atom = (
field: AdvancedSearchField,
operator: AdvancedSearchOperator,
value?: string,
extra: Partial<AdvancedSearchQueryAtom> = {}
): AdvancedSearchQueryAtom => ({
type: AdvancedSearchQueryElementType.Atom,
field,
operator,
value,
...extra,
})
const group = (
operator: AdvancedSearchLogicalOperator,
...children: AdvancedSearchQueryElement[]
): AdvancedSearchQueryGroup => ({
type: AdvancedSearchQueryElementType.Group,
operator,
children,
})
const { And, Or, Not } = AdvancedSearchLogicalOperator
describe('serializeAdvancedSearchQuery', () => {
describe('text fields', () => {
it.each([
[AdvancedSearchOperator.AllWords, 'invoice', 'title:invoice'],
[
AdvancedSearchOperator.AllWords,
' invoice unpaid ',
'title:invoice AND title:unpaid',
],
[
AdvancedSearchOperator.AnyWord,
'invoice unpaid',
'title:invoice OR title:unpaid',
],
[
AdvancedSearchOperator.Phrase,
'quick brown fox',
'title:"quick brown fox"',
],
[AdvancedSearchOperator.Phrase, 'say "hi"', 'title:"say hi"'],
[AdvancedSearchOperator.StartsWith, 'invoi', 'title:invoi*'],
[AdvancedSearchOperator.StartsWith, 'in*v?oi', 'title:invoi*'],
])('%s %j writes %s', (operator, value, expected) => {
expect(
serializeAdvancedSearchQuery(
atom(AdvancedSearchField.Title, operator, value)
)
).toBe(expected)
})
it('writes bare words for the Any field', () => {
expect(
serializeAdvancedSearchQuery(
atom(AdvancedSearchField.Any, AdvancedSearchOperator.AllWords, 'a b')
)
).toBe('a AND b')
})
it.each([
['A-1312/99', 'custom_fields.value:A-1312/99'],
["O'Brien", "custom_fields.value:O'Brien"],
["'quoted'", `custom_fields.value:"'quoted'"`],
['foo:bar', 'custom_fields.value:"foo:bar"'],
['(x)', 'custom_fields.value:"(x)"'],
['2024*', 'custom_fields.value:"2024*"'],
['a,b', 'custom_fields.value:"a,b"'],
['OR', 'custom_fields.value:"OR"'],
['or', 'custom_fields.value:or'],
])(
'quotes %j only when the grammar would read it as syntax',
(value, expected) => {
expect(
serializeAdvancedSearchQuery(
atom(
AdvancedSearchField.CustomFieldValue,
AdvancedSearchOperator.AllWords,
value
)
)
).toBe(expected)
}
)
it('uses the dotted names for custom fields', () => {
expect(
serializeAdvancedSearchQuery(
group(
And,
atom(
AdvancedSearchField.CustomFieldName,
AdvancedSearchOperator.Phrase,
'status'
),
atom(
AdvancedSearchField.CustomFieldValue,
AdvancedSearchOperator.AllWords,
'paid'
)
)
)
).toBe('custom_fields.name:"status" AND custom_fields.value:paid')
})
it('uses the dotted names for notes', () => {
expect(
serializeAdvancedSearchQuery(
group(
And,
atom(
AdvancedSearchField.NoteText,
AdvancedSearchOperator.AllWords,
'call'
),
atom(
AdvancedSearchField.NoteAuthor,
AdvancedSearchOperator.AllWords,
'alice'
)
)
)
).toBe('notes.note:call AND notes.user:alice')
})
it.each([
[AdvancedSearchOperator.AllWords, ''],
[AdvancedSearchOperator.AllWords, ' '],
[AdvancedSearchOperator.AllWords, '!! --'],
[AdvancedSearchOperator.Phrase, '""'],
[AdvancedSearchOperator.StartsWith, 'two words'],
[AdvancedSearchOperator.StartsWith, '***'],
[AdvancedSearchOperator.StartsWith, undefined],
])('leaves out %s %j', (operator, value) => {
expect(
serializeAdvancedSearchQuery(
atom(AdvancedSearchField.Title, operator, value)
)
).toBe('')
})
})
describe('checksum', () => {
it('lowercases the prefix', () => {
expect(
serializeAdvancedSearchQuery(
atom(
AdvancedSearchField.Checksum,
AdvancedSearchOperator.StartsWith,
'9F86D081'
)
)
).toBe('checksum:9f86d081*')
})
})
describe('number fields', () => {
it.each([
[AdvancedSearchOperator.Equals, '42', undefined, 'asn:42'],
[AdvancedSearchOperator.AtLeast, '50', undefined, 'asn:[50 to]'],
[AdvancedSearchOperator.AtMost, '50', undefined, 'asn:[to 50]'],
[AdvancedSearchOperator.Between, '50', '150', 'asn:[50 to 150]'],
[AdvancedSearchOperator.Equals, '4.2', undefined, ''],
[AdvancedSearchOperator.Equals, '-1', undefined, ''],
[AdvancedSearchOperator.Equals, '2024-01-01', undefined, ''],
[AdvancedSearchOperator.Between, '50', '', ''],
])('%s %j %j writes %j', (operator, value, valueTo, expected) => {
expect(
serializeAdvancedSearchQuery(
atom(AdvancedSearchField.ASN, operator, value, { valueTo })
)
).toBe(expected)
})
})
describe('date fields', () => {
it.each([
['today', 'added:today'],
['previous month', 'added:"previous month"'],
['last tuesday', ''],
['', ''],
])('keyword %j writes %j', (value, expected) => {
expect(
serializeAdvancedSearchQuery(
atom(
AdvancedSearchField.Added,
AdvancedSearchOperator.DateKeyword,
value
)
)
).toBe(expected)
})
it.each([
['1', AdvancedSearchDateUnit.Day, 'added:[-1 day to now]'],
['3', AdvancedSearchDateUnit.Month, 'added:[-3 months to now]'],
['2', AdvancedSearchDateUnit.Week, 'added:[-2 weeks to now]'],
['0', AdvancedSearchDateUnit.Year, ''],
['1.5', AdvancedSearchDateUnit.Year, ''],
['3', undefined, ''],
['3', 'fortnight' as AdvancedSearchDateUnit, ''],
])('within the last %j %j writes %j', (value, unit, expected) => {
expect(
serializeAdvancedSearchQuery(
atom(
AdvancedSearchField.Added,
AdvancedSearchOperator.WithinLast,
value,
{
unit,
}
)
)
).toBe(expected)
})
it.each([
[
AdvancedSearchOperator.AtLeast,
'2024-01-01',
undefined,
'created:[2024-01-01 to]',
],
[
AdvancedSearchOperator.AtMost,
'2024-01-01',
undefined,
'created:[to 2024-01-01]',
],
[
AdvancedSearchOperator.Between,
'2024-01-01',
'2024-03-31',
'created:[2024-01-01 to 2024-03-31]',
],
[AdvancedSearchOperator.AtLeast, '2024', undefined, ''],
[AdvancedSearchOperator.Between, '2024-01-01', 'now', ''],
])('%s %j %j writes %j', (operator, value, valueTo, expected) => {
expect(
serializeAdvancedSearchQuery(
atom(AdvancedSearchField.Created, operator, value, { valueTo })
)
).toBe(expected)
})
})
describe('groups', () => {
const invoice = atom(
AdvancedSearchField.Content,
AdvancedSearchOperator.AllWords,
'invoice'
)
const letter = atom(
AdvancedSearchField.Title,
AdvancedSearchOperator.AllWords,
'letter'
)
const paid = atom(
AdvancedSearchField.Tag,
AdvancedSearchOperator.AllWords,
'paid'
)
const twoWords = atom(
AdvancedSearchField.Title,
AdvancedSearchOperator.AllWords,
'a b'
)
const anyWords = atom(
AdvancedSearchField.Title,
AdvancedSearchOperator.AnyWord,
'a b'
)
const empty = atom(
AdvancedSearchField.Title,
AdvancedSearchOperator.AllWords,
''
)
it.each([
['an empty group', group(And), ''],
['a group of empty atoms', group(Or, empty, group(And, empty)), ''],
[
'a single child without parentheses',
group(Or, invoice),
'content:invoice',
],
['All', group(And, invoice, letter), 'content:invoice AND title:letter'],
['Any', group(Or, invoice, letter), 'content:invoice OR title:letter'],
[
'skipped empty atoms',
group(And, empty, invoice, empty),
'content:invoice',
],
['Not with one child', group(Not, paid), 'NOT tag:paid'],
[
'Not as none of',
group(Not, paid, letter),
'NOT (tag:paid OR title:letter)',
],
[
'Not with a compound child',
group(Not, twoWords),
'NOT (title:a AND title:b)',
],
[
'Not inside All',
group(And, invoice, group(Not, paid)),
'content:invoice AND NOT tag:paid',
],
[
'Not inside Any',
group(Or, invoice, group(Not, paid)),
'content:invoice OR NOT tag:paid',
],
[
'Any inside All',
group(And, invoice, group(Or, letter, paid)),
'content:invoice AND (title:letter OR tag:paid)',
],
[
'All inside Any',
group(Or, invoice, group(And, letter, paid)),
'content:invoice OR (title:letter AND tag:paid)',
],
[
'All inside All flattened',
group(And, invoice, group(And, letter, paid)),
'content:invoice AND title:letter AND tag:paid',
],
[
'an all-words atom inside Any',
group(Or, invoice, twoWords),
'content:invoice OR (title:a AND title:b)',
],
[
'an any-word atom inside All',
group(And, invoice, anyWords),
'content:invoice AND (title:a OR title:b)',
],
[
'an all-words atom inside Not with siblings',
group(Not, paid, twoWords),
'NOT (tag:paid OR (title:a AND title:b))',
],
])('writes %s', (_, tree, expected) => {
expect(serializeAdvancedSearchQuery(tree)).toBe(expected)
})
it('writes the mockup example', () => {
expect(
serializeAdvancedSearchQuery(
group(
And,
invoice,
group(
Or,
atom(
AdvancedSearchField.Correspondent,
AdvancedSearchOperator.Phrase,
'acme corp'
),
atom(
AdvancedSearchField.Content,
AdvancedSearchOperator.Phrase,
'acme corporation'
)
),
atom(
AdvancedSearchField.Added,
AdvancedSearchOperator.WithinLast,
'3',
{
unit: AdvancedSearchDateUnit.Month,
}
),
group(Not, paid)
)
)
).toBe(
'content:invoice AND (correspondent:"acme corp" OR content:"acme corporation") AND added:[-3 months to now] AND NOT tag:paid'
)
})
})
})
describe('parseAdvancedSearchQuery', () => {
const canonical = [
'title:invoice',
'title:invoice AND title:unpaid',
'content:invoice OR content:receipt',
'a AND b',
'title:"quick brown fox"',
'title:invoi*',
"custom_fields.value:O'Brien",
'custom_fields.value:"foo:bar"',
'custom_fields.name:"status" AND custom_fields.value:paid',
'notes.note:call AND notes.user:alice',
'checksum:9f86d081*',
'asn:42',
'asn:[50 to 150]',
'asn:[50 to]',
'asn:[to 50]',
'page_count:[10 to]',
'added:today',
'added:"previous month"',
'added:[-1 day to now]',
'added:[-3 months to now]',
'created:[2024-01-01 to 2024-03-31]',
'created:[2024-01-01 to]',
'created:[to 2024-01-01]',
'NOT tag:paid',
'NOT (tag:paid OR title:letter)',
'NOT (title:a AND title:b)',
'content:invoice OR NOT tag:paid',
'content:invoice AND (title:letter OR tag:paid)',
'content:invoice OR (title:letter AND tag:paid)',
'content:invoice AND (correspondent:"acme corp" OR content:"acme corporation") AND added:[-3 months to now] AND NOT tag:paid',
]
it.each(canonical)('reads back %s unchanged', (query) => {
const tree = parseAdvancedSearchQuery(query)
expect(tree).not.toBeNull()
expect(serializeAdvancedSearchQuery(tree)).toBe(query)
})
it('reads surrounding whitespace', () => {
expect(
serializeAdvancedSearchQuery(
parseAdvancedSearchQuery(' title:invoice ')
)
).toBe('title:invoice')
})
it('puts the words of one condition back together', () => {
expect(parseAdvancedSearchQuery('title:invoice AND title:unpaid')).toEqual(
group(
And,
atom(
AdvancedSearchField.Title,
AdvancedSearchOperator.AllWords,
'invoice unpaid'
)
)
)
})
it('keeps words of different fields apart', () => {
expect(parseAdvancedSearchQuery('title:a OR content:b')).toEqual(
group(
Or,
atom(AdvancedSearchField.Title, AdvancedSearchOperator.AllWords, 'a'),
atom(AdvancedSearchField.Content, AdvancedSearchOperator.AllWords, 'b')
)
)
})
it('reads a range as its condition', () => {
expect(parseAdvancedSearchQuery('added:[-3 months to now]')).toEqual(
group(
And,
atom(
AdvancedSearchField.Added,
AdvancedSearchOperator.WithinLast,
'3',
{
unit: AdvancedSearchDateUnit.Month,
}
)
)
)
})
it.each([
['', 'nothing'],
[' ', 'whitespace'],
['type:invoice', 'a field alias'],
['notes:call', 'a bare notes prefix'],
['unknown:x', 'an unknown field'],
['title:a AND content:b OR title:c', 'AND and OR mixed at one level'],
['title:a b', 'an implicit AND'],
['title:"unterminated', 'an unterminated phrase'],
['asn:[50 to', 'an unterminated range'],
['title:a*b', 'a wildcard in the middle'],
['title:invoice^2', 'a boost'],
['asn:[50 to abc]', 'a non-numeric bound'],
['asn:invoice', 'a word on a number field'],
['created:[2024 to 2025]', 'a year-only date range'],
['added:"last tuesday"', 'a date keyword paperless does not have'],
['title:[a to b]', 'a range on a text field'],
['checksum:9f86d081', 'a checksum without a wildcard'],
['(title:invoice)', 'parentheses the editor would not write'],
['title:invoice AND', 'a trailing operator'],
['title:"a"b', 'a value running into the next'],
['ADDED:today', 'an uppercase field name'],
])('leaves %s alone, having %s', (query) => {
expect(parseAdvancedSearchQuery(query)).toBeNull()
})
})
@@ -0,0 +1,500 @@
import {
ADVANCED_SEARCH_DATE_KEYWORDS,
ADVANCED_SEARCH_FIELD_KINDS,
AdvancedSearchDateUnit,
AdvancedSearchField,
AdvancedSearchFieldKind,
AdvancedSearchLogicalOperator,
AdvancedSearchOperator,
AdvancedSearchQueryAtom,
AdvancedSearchQueryElement,
AdvancedSearchQueryElementType,
AdvancedSearchQueryGroup,
} from '../data/advanced-search-query'
// Anything the query grammar would read as syntax rather than as a word
const SYNTAX_CHARS = /[\s():"[\]*?,{}^~\\]/
const SYNTAX_CHARS_GLOBAL = new RegExp(SYNTAX_CHARS, 'g')
// A word wrapped in single quotes is also syntax, an apostrophe inside one is not
const EDGE_SINGLE_QUOTE = /^'|'$/
const RESERVED_WORDS = /^(AND|OR|NOT|TO)$/
const HAS_WORD_CHAR = /[\p{L}\p{N}]/u
const WHOLE_NUMBER = /^\d+$/
const ISO_DATE = /^\d{4}-\d{2}-\d{2}$/
interface Serialized {
text: string
// The operator joining the top level of `text`, null when it is self-delimiting
join:
AdvancedSearchLogicalOperator.And | AdvancedSearchLogicalOperator.Or | null
}
const prefix = (field: AdvancedSearchField) => (field ? `${field}:` : '')
const quote = (text: string) => `"${text.replace(/"/g, '')}"`
const words = (value: string) =>
value
.trim()
.split(/\s+/)
.filter((word) => HAS_WORD_CHAR.test(word))
const word = (w: string) =>
SYNTAX_CHARS.test(w) || EDGE_SINGLE_QUOTE.test(w) || RESERVED_WORDS.test(w)
? quote(w)
: w
const atomic = (text: string): Serialized => ({ text, join: null })
function serializeWords(
atom: AdvancedSearchQueryAtom,
join: AdvancedSearchLogicalOperator.And | AdvancedSearchLogicalOperator.Or
): Serialized {
// A field applies only to the word right after it, so repeat it per word
const terms = words(atom.value ?? '').map(
(w) => `${prefix(atom.field)}${word(w)}`
)
if (terms.length === 0) return null
if (terms.length === 1) return atomic(terms[0])
return { text: terms.join(` ${join} `), join }
}
function serializeRange(
atom: AdvancedSearchQueryAtom,
isValid: (v: string) => boolean
): Serialized {
const lo = atom.value?.trim() ?? ''
const hi = atom.valueTo?.trim() ?? ''
const field = prefix(atom.field)
switch (atom.operator) {
case AdvancedSearchOperator.Equals:
return isValid(lo) ? atomic(`${field}${lo}`) : null
case AdvancedSearchOperator.AtLeast:
return isValid(lo) ? atomic(`${field}[${lo} to]`) : null
case AdvancedSearchOperator.AtMost:
return isValid(lo) ? atomic(`${field}[to ${lo}]`) : null
case AdvancedSearchOperator.Between:
return isValid(lo) && isValid(hi)
? atomic(`${field}[${lo} to ${hi}]`)
: null
}
return null
}
function serializeAtom(atom: AdvancedSearchQueryAtom): Serialized {
const field = prefix(atom.field)
const value = atom.value?.trim() ?? ''
switch (atom.operator) {
case AdvancedSearchOperator.AllWords:
return serializeWords(atom, AdvancedSearchLogicalOperator.And)
case AdvancedSearchOperator.AnyWord:
return serializeWords(atom, AdvancedSearchLogicalOperator.Or)
case AdvancedSearchOperator.Phrase:
return HAS_WORD_CHAR.test(value)
? atomic(`${field}${quote(value)}`)
: null
case AdvancedSearchOperator.StartsWith: {
if (/\s/.test(value)) return null
let stem = value.replace(SYNTAX_CHARS_GLOBAL, '')
if (!HAS_WORD_CHAR.test(stem)) return null
// checksum is indexed as-is, in lowercase
if (atom.field === AdvancedSearchField.Checksum) {
stem = stem.toLowerCase()
}
return atomic(`${field}${stem}*`)
}
case AdvancedSearchOperator.DateKeyword:
return (ADVANCED_SEARCH_DATE_KEYWORDS as readonly string[]).includes(
value
)
? atomic(`${field}${word(value)}`)
: null
case AdvancedSearchOperator.WithinLast: {
const amount = parseInt(value, 10)
const units = Object.values(AdvancedSearchDateUnit) as string[]
if (!WHOLE_NUMBER.test(value) || amount < 1) return null
if (!units.includes(atom.unit)) return null
const unit = amount === 1 ? atom.unit : `${atom.unit}s`
return atomic(`${field}[-${amount} ${unit} to now]`)
}
case AdvancedSearchOperator.Equals:
case AdvancedSearchOperator.AtLeast:
case AdvancedSearchOperator.AtMost:
case AdvancedSearchOperator.Between:
return serializeRange(
atom,
ADVANCED_SEARCH_FIELD_KINDS[atom.field] === AdvancedSearchFieldKind.Date
? (v) => ISO_DATE.test(v)
: (v) => WHOLE_NUMBER.test(v)
)
}
return null
}
function wrap(
child: Serialized,
parentJoin: AdvancedSearchLogicalOperator
): string {
return child.join === null || child.join === parentJoin
? child.text
: `(${child.text})`
}
function serializeGroup(group: AdvancedSearchQueryGroup): Serialized {
const children = group.children.map(serializeElement).filter(Boolean)
if (children.length === 0) return null
if (group.operator === AdvancedSearchLogicalOperator.Not) {
// A Not group matches documents matching none of its children
if (children.length === 1 && children[0].join === null) {
return atomic(`NOT ${children[0].text}`)
}
const inner =
children.length === 1
? children[0].text
: children
.map((c) => wrap(c, AdvancedSearchLogicalOperator.Or))
.join(' OR ')
return atomic(`NOT (${inner})`)
}
if (children.length === 1) return children[0]
return {
text: children
.map((c) => wrap(c, group.operator))
.join(` ${group.operator} `),
join: group.operator,
}
}
function serializeElement(element: AdvancedSearchQueryElement): Serialized {
return element.type === AdvancedSearchQueryElementType.Group
? serializeGroup(element)
: serializeAtom(element)
}
/**
* Writes an editor tree as a full-text query. Atoms that are not filled in
* (or not valid) are left out, and empty groups with them.
*/
export function serializeAdvancedSearchQuery(
element: AdvancedSearchQueryElement
): string {
return serializeElement(element)?.text ?? ''
}
// --- Reading a query back into the editor --------------------------------
//
// Deliberately narrow: this reads the forms serializeAdvancedSearchQuery
// writes, and nothing else. A query it cannot read is not a failure, it just
// stays text, so there is never a lossy or surprising conversion. The final
// round-trip check below is what holds that promise: a tree is only returned
// when writing it out again reproduces the query exactly.
const RELATIVE_BOUND = /^-(\d+) (day|week|month|year)s?$/
const FIELD_PREFIX = /^([a-z_]+(?:\.[a-z_]+)?):/
const KEYWORD_TOKEN = /^(AND|OR|NOT)(?=[\s(]|$)/
// Either bound may be missing: [50 to 150], [50 to], [to 50]
const RANGE_BOUNDS = /^(?:(.+?) )?to(?: (.+))?$/
const TRAILING_WILDCARD = /^([^*?]+)\*$/
class UnreadableQuery extends Error {}
interface Token {
type: 'term' | 'AND' | 'OR' | 'NOT' | '(' | ')'
field?: string
value?: string
quoted?: boolean
range?: boolean
}
// A parsed element, plus what it takes to merge the per-word terms the
// serializer writes for "contains all words" back into a single condition
interface Parsed {
element: AdvancedSearchQueryElement
word?: { field: AdvancedSearchField; text: string }
}
function tokenize(query: string): Token[] {
const tokens: Token[] = []
let i = 0
while (i < query.length) {
const rest = query.slice(i)
if (/^\s/.test(rest)) {
i++
continue
}
if (rest[0] === '(' || rest[0] === ')') {
tokens.push({ type: rest[0] as '(' | ')' })
i++
continue
}
const keyword = KEYWORD_TOKEN.exec(rest)
if (keyword) {
tokens.push({ type: keyword[1] as 'AND' | 'OR' | 'NOT' })
i += keyword[1].length
continue
}
const fieldMatch = FIELD_PREFIX.exec(rest)
const field = fieldMatch ? fieldMatch[1] : ''
i += fieldMatch ? fieldMatch[0].length : 0
const value = query.slice(i)
if (value.startsWith('"')) {
const end = query.indexOf('"', i + 1)
if (end < 0) throw new UnreadableQuery()
tokens.push({
type: 'term',
field,
value: query.slice(i + 1, end),
quoted: true,
})
i = end + 1
} else if (value.startsWith('[')) {
const end = query.indexOf(']', i + 1)
if (end < 0) throw new UnreadableQuery()
tokens.push({
type: 'term',
field,
value: query.slice(i + 1, end),
range: true,
})
i = end + 1
} else {
const bare = /^[^\s()]+/.exec(value)
if (!bare) throw new UnreadableQuery()
tokens.push({ type: 'term', field, value: bare[0] })
i += bare[0].length
}
// Nothing may run on directly after a value, e.g. title:"a"b
if (i < query.length && !/[\s)]/.test(query[i])) throw new UnreadableQuery()
}
return tokens
}
function resolveField(name: string): AdvancedSearchField {
const fields = Object.values(AdvancedSearchField) as string[]
// Aliases (type:, path:, notes:) are left to the text box on purpose:
// reading one would mean rewriting the user's query as it was read
if (!fields.includes(name)) throw new UnreadableQuery()
return name as AdvancedSearchField
}
function atomFrom(
field: AdvancedSearchField,
operator: AdvancedSearchOperator,
value: string,
extra: Partial<AdvancedSearchQueryAtom> = {}
): AdvancedSearchQueryAtom {
return {
type: AdvancedSearchQueryElementType.Atom,
field,
operator,
value,
...extra,
}
}
function parseRange(
field: AdvancedSearchField,
kind: AdvancedSearchFieldKind,
body: string
): AdvancedSearchQueryAtom {
const bounds = RANGE_BOUNDS.exec(body)
if (!bounds) throw new UnreadableQuery()
const lo = bounds[1] ?? ''
const hi = bounds[2] ?? ''
if (kind === AdvancedSearchFieldKind.Date) {
const relative = RELATIVE_BOUND.exec(lo)
if (relative && hi === 'now') {
return atomFrom(field, AdvancedSearchOperator.WithinLast, relative[1], {
unit: relative[2] as AdvancedSearchDateUnit,
})
}
} else if (kind !== AdvancedSearchFieldKind.Number) {
throw new UnreadableQuery()
}
const isValid =
kind === AdvancedSearchFieldKind.Date
? (v: string) => ISO_DATE.test(v)
: (v: string) => WHOLE_NUMBER.test(v)
if (lo && hi) {
if (!isValid(lo) || !isValid(hi)) throw new UnreadableQuery()
return atomFrom(field, AdvancedSearchOperator.Between, lo, { valueTo: hi })
}
if (lo && isValid(lo))
return atomFrom(field, AdvancedSearchOperator.AtLeast, lo)
if (hi && isValid(hi))
return atomFrom(field, AdvancedSearchOperator.AtMost, hi)
throw new UnreadableQuery()
}
function parseTerm(token: Token): Parsed {
const field = resolveField(token.field)
const kind = ADVANCED_SEARCH_FIELD_KINDS[field]
const value = token.value
const isKeyword = (
ADVANCED_SEARCH_DATE_KEYWORDS as readonly string[]
).includes(value)
if (token.range) {
return { element: parseRange(field, kind, value) }
}
if (kind === AdvancedSearchFieldKind.Date) {
if (!isKeyword) throw new UnreadableQuery()
return {
element: atomFrom(field, AdvancedSearchOperator.DateKeyword, value),
}
}
if (token.quoted) {
if (kind !== AdvancedSearchFieldKind.Text) throw new UnreadableQuery()
return { element: atomFrom(field, AdvancedSearchOperator.Phrase, value) }
}
const wildcard = TRAILING_WILDCARD.exec(value)
if (wildcard) {
if (kind === AdvancedSearchFieldKind.Number) throw new UnreadableQuery()
return {
element: atomFrom(field, AdvancedSearchOperator.StartsWith, wildcard[1]),
}
}
if (kind === AdvancedSearchFieldKind.Number) {
if (!WHOLE_NUMBER.test(value)) throw new UnreadableQuery()
return { element: atomFrom(field, AdvancedSearchOperator.Equals, value) }
}
// A checksum is only ever searched by its first characters
if (kind === AdvancedSearchFieldKind.Checksum) throw new UnreadableQuery()
return {
element: atomFrom(field, AdvancedSearchOperator.AllWords, value),
word: { field, text: value },
}
}
// The serializer repeats the field for every word, because a field applies
// only to the word after it. Put those back together into one condition.
function mergeWords(
parts: Parsed[],
operator: AdvancedSearchLogicalOperator.And | AdvancedSearchLogicalOperator.Or
): AdvancedSearchQueryElement[] {
const merged: AdvancedSearchQueryElement[] = []
for (let i = 0; i < parts.length; i++) {
const run = [parts[i]]
while (
parts[i].word &&
parts[i + 1]?.word &&
parts[i + 1].word.field === parts[i].word.field
) {
run.push(parts[++i])
}
if (run.length === 1) {
merged.push(run[0].element)
continue
}
merged.push(
atomFrom(
run[0].word.field,
operator === AdvancedSearchLogicalOperator.And
? AdvancedSearchOperator.AllWords
: AdvancedSearchOperator.AnyWord,
run.map((part) => part.word.text).join(' ')
)
)
}
return merged
}
interface Cursor {
tokens: Token[]
at: number
}
function parseExpression(cursor: Cursor): Parsed {
const parts: Parsed[] = [parseOperand(cursor)]
let operator:
AdvancedSearchLogicalOperator.And | AdvancedSearchLogicalOperator.Or
while (
cursor.tokens[cursor.at]?.type === 'AND' ||
cursor.tokens[cursor.at]?.type === 'OR'
) {
const next = cursor.tokens[cursor.at++].type as
AdvancedSearchLogicalOperator.And | AdvancedSearchLogicalOperator.Or
// One level mixing AND and OR is never something the editor wrote
if (operator && next !== operator) throw new UnreadableQuery()
operator = next
parts.push(parseOperand(cursor))
}
if (parts.length === 1) return parts[0]
const children = mergeWords(parts, operator)
if (children.length === 1) return { element: children[0] }
return {
element: {
type: AdvancedSearchQueryElementType.Group,
operator,
children,
},
}
}
function parseOperand(cursor: Cursor): Parsed {
const token = cursor.tokens[cursor.at++]
if (!token) throw new UnreadableQuery()
if (token.type === 'NOT') {
const child = parseOperand(cursor)
return {
element: {
type: AdvancedSearchQueryElementType.Group,
operator: AdvancedSearchLogicalOperator.Not,
children: [child.element],
},
}
}
if (token.type === '(') {
const inner = parseExpression(cursor)
if (cursor.tokens[cursor.at++]?.type !== ')') throw new UnreadableQuery()
return { element: inner.element }
}
if (token.type !== 'term') throw new UnreadableQuery()
return parseTerm(token)
}
/**
* Reads a query the editor could have written back into an editor tree, or
* returns null when the editor cannot show it, in which case the query stays
* text. Never returns a tree that would be written back differently.
*/
export function parseAdvancedSearchQuery(
query: string
): AdvancedSearchQueryGroup | null {
const trimmed = query?.trim() ?? ''
if (!trimmed) return null
let parsed: Parsed
try {
const cursor: Cursor = { tokens: tokenize(trimmed), at: 0 }
parsed = parseExpression(cursor)
if (cursor.at !== cursor.tokens.length) throw new UnreadableQuery()
} catch {
return null
}
const root =
parsed.element.type === AdvancedSearchQueryElementType.Group
? parsed.element
: {
type: AdvancedSearchQueryElementType.Group as const,
operator: AdvancedSearchLogicalOperator.And,
children: [parsed.element],
}
return serializeAdvancedSearchQuery(root) === trimmed ? root : null
}
+1 -1
View File
@@ -8,7 +8,7 @@ export const environment = {
apiVersion: '10', // match src/paperless/settings.py
appTitle: DEFAULT_APP_TITLE,
tag: 'prod',
version: '3.2.1',
version: '3.2.0',
webSocketHost: window.location.host,
webSocketProtocol: window.location.protocol == 'https:' ? 'wss:' : 'ws:',
webSocketBaseUrl: base_url.pathname + 'ws/',
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="needs-translation">Reset filters / selection</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">Open first [selected] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="needs-translation">Previous page</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Next page</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">Aansig “<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>” suksesvol bewaar.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">Aansig “<x id="PH" equiv-text="savedView.name"/>” suksesvol geskep.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="needs-translation">Reset filters / selection</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">Open first [selected] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="needs-translation">Previous page</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Next page</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">إعادة تعيين المرشحات / التحديد</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">فتح أول مستند [محدد]</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="needs-translation">Previous page</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Next page</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">عرض "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" حفظ بنجاح.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">فشل في حفظ طريقة العرض "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">عرض "<x id="PH" equiv-text="savedView.name"/>" أنشئ بنجاح.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="needs-translation">Reset filters / selection</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">Open first [selected] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="needs-translation">Previous page</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Next page</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">Прагляд "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" паспяхова захаваны.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">Прагляд "<x id="PH" equiv-text="savedView.name"/>" створаны паспяхова.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Нулиране на филтри/селекция</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Отворете първия [selected] документ</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Предишна страница</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Следваща страница</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">Изглед "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" записан успешно.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Неуспешно запазване на изгледа "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">Изглед "<x id="PH" equiv-text="savedView.name"/>" създаден успешно.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Reseteja filtres / selecció</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Obrer el primer [seleccionat] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Pàgina anterior</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Pàgina següent</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">Vista "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" desada correctament.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Error desant vista "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">Vista "<x id="PH" equiv-text="savedView.name"/>" creada correctament.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="translated">Vista "<x id="PH" equiv-text="savedView.name"/>" creada correctament, però no s'ha pogut actualitzar la configuració de visibilitat.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="translated">Model d'incrustació LLM</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="translated">Punt final d'incrustació de LLM</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="translated">Mida del fragment d'incrustació de LLM</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="translated">Mida del context de LLM</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="translated">Backend de LLM</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="translated">Model LLM</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="translated">Clau API LLM</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="translated">Punt final LLM</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="translated">Idioma de sortida de LLM</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</context>
</context-group>
<target state="translated">Idioma que s'utilitzarà per als suggeriments d'IA generats. Quan no està definit, els suggeriments d'IA utilitzen l'idioma de visualització de l'usuari si està definit explícitament.</target>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10740,7 +10740,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10756,7 +10756,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11040,7 +11040,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Resetovat filtry / výběr</target>
</trans-unit>
@@ -11048,7 +11048,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Otevřít první [vybraný] dokument</target>
</trans-unit>
@@ -11056,7 +11056,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Předchozí stránka</target>
</trans-unit>
@@ -11064,7 +11064,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Další stránka</target>
</trans-unit>
@@ -11072,7 +11072,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="final">Zobrazení "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" bylo úspěšně uloženo.</target>
</trans-unit>
@@ -11080,7 +11080,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Nepodařilo se uložit pohled „<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>“.</target>
</trans-unit>
@@ -11088,7 +11088,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="final">Zobrazení "<x id="PH" equiv-text="savedView.name"/>" bylo úspěšně vytvořeno.</target>
</trans-unit>
@@ -11096,7 +11096,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<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>
@@ -13297,27 +13297,11 @@
</context-group>
<target state="translated">Model vkládání LLM</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="translated">Koncový bod vkládání LLM</target>
</trans-unit>
@@ -13325,7 +13309,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="translated">Velikost bloku vkládání LLM</target>
</trans-unit>
@@ -13333,7 +13317,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="translated">Velikost kontextu LLM</target>
</trans-unit>
@@ -13341,7 +13325,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="translated">Backend LLM</target>
</trans-unit>
@@ -13349,7 +13333,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="translated">Model LLM</target>
</trans-unit>
@@ -13357,7 +13341,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="translated">Klíč API LLM</target>
</trans-unit>
@@ -13365,7 +13349,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="translated">Koncový bod LLM</target>
</trans-unit>
@@ -13373,7 +13357,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="translated">Výstupní jazyk LLM</target>
</trans-unit>
@@ -13381,7 +13365,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</context>
</context-group>
<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>
@@ -13389,7 +13373,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="translated">Čawsový limit žádosti LLM</target>
</trans-unit>
@@ -13397,7 +13381,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="translated">Časový limit v sekundách pro žádosti LLM.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="needs-translation">Reset filters / selection</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">Open first [selected] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="needs-translation">Previous page</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Next page</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="final">Visning "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" er gemt.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="final">Visning "<x id="PH" equiv-text="savedView.name"/>" er oprettet.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10740,7 +10740,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10756,7 +10756,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11040,7 +11040,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Filter / Auswahl zurücksetzen</target>
</trans-unit>
@@ -11048,7 +11048,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Erstes [ausgewähltes] Dokument öffnen</target>
</trans-unit>
@@ -11056,7 +11056,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Vorherige Seite</target>
</trans-unit>
@@ -11064,7 +11064,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Nächste Seite</target>
</trans-unit>
@@ -11072,7 +11072,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">Ansicht „<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>“ erfolgreich gespeichert.</target>
</trans-unit>
@@ -11080,7 +11080,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Fehler beim Speichern der Ansicht „<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>“.</target>
</trans-unit>
@@ -11088,7 +11088,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">Ansicht „<x id="PH" equiv-text="savedView.name"/>“ erfolgreich erstellt.</target>
</trans-unit>
@@ -11096,7 +11096,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="translated">Ansicht „<x id="PH" equiv-text="savedView.name"/>“ wurde erfolgreich erstellt, die Sichtbarkeitseinstellungen konnten jedoch nicht aktualisiert werden.</target>
</trans-unit>
@@ -13297,27 +13297,11 @@
</context-group>
<target state="translated">LLM-Einbettungsmodell</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13325,7 +13309,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13333,7 +13317,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13341,7 +13325,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="translated">LLM-Backend</target>
</trans-unit>
@@ -13349,7 +13333,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="translated">LLM-Modell</target>
</trans-unit>
@@ -13357,7 +13341,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="translated">LLM API-Schlüssel</target>
</trans-unit>
@@ -13365,7 +13349,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="translated">LLM-Endpunkt</target>
</trans-unit>
@@ -13373,7 +13357,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13381,7 +13365,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13389,7 +13373,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13397,7 +13381,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+73 -89
View File
@@ -571,7 +571,7 @@
<context context-type="sourcefile">src/app/components/admin/config/config.component.html</context>
<context context-type="linenumber">35</context>
</context-group>
<target state="translated">Dieser Wert überschreibt <x id="INTERPOLATION" equiv-text="{{option.config_key}}"/>, der außerhalb von Paperless festgelegt wird.</target>
<target state="needs-translation">This value overrides <x id="INTERPOLATION" equiv-text="{{option.config_key}}"/>, which is set outside Paperless.</target>
</trans-unit>
<trans-unit id="7221396516204435584" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{option.config_key}}"/> is set outside Paperless. Enter a value here to override it.</source>
@@ -579,7 +579,7 @@
<context context-type="sourcefile">src/app/components/admin/config/config.component.html</context>
<context context-type="linenumber">37</context>
</context-group>
<target state="translated"><x id="INTERPOLATION" equiv-text="{{option.config_key}}"/> ist außerhalb von Paperless festgelegt. Geben Sie hier einen Wert ein, um ihn zu überschreiben.</target>
<target state="needs-translation"><x id="INTERPOLATION" equiv-text="{{option.config_key}}"/> is set outside Paperless. Enter a value here to override it.</target>
</trans-unit>
<trans-unit id="8318849619178340389" datatype="html">
<source>Use the externally configured value</source>
@@ -587,7 +587,7 @@
<context context-type="sourcefile">src/app/components/admin/config/config.component.html</context>
<context context-type="linenumber">42</context>
</context-group>
<target state="translated">Den extern konfigurierten Wert verwenden</target>
<target state="needs-translation">Use the externally configured value</target>
</trans-unit>
<trans-unit id="6032629623003430385" datatype="html">
<source>Reset to external</source>
@@ -595,7 +595,7 @@
<context context-type="sourcefile">src/app/components/admin/config/config.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target state="translated">Auf extern zurücksetzen</target>
<target state="needs-translation">Reset to external</target>
</trans-unit>
<trans-unit id="7808756054397155068" datatype="html" approved="yes">
<source>Reset</source>
@@ -1135,7 +1135,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">115,116</context>
</context-group>
<target state="translated">Anzuzeigende Elemente in der Seitenleiste:</target>
<target state="needs-translation">Sidebar items to show:</target>
</trans-unit>
<trans-unit id="1356890996281769972" datatype="html" approved="yes">
<source>Dark mode</source>
@@ -1397,13 +1397,13 @@
</context-group>
<target state="final">Posteingangs-Tag(s) beim Speichern automatisch entfernen</target>
</trans-unit>
<trans-unit id="1043449647727456069" datatype="html" approved="yes">
<trans-unit id="1043449647727456069" datatype="html">
<source>Automatically request suggestions for inbox documents</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">258</context>
</context-group>
<target state="final">Automatische Vorschläge für Posteingangsdokumente anfordern</target>
<target state="needs-translation">Automatically request suggestions for inbox documents</target>
</trans-unit>
<trans-unit id="460700039378563125" datatype="html">
<source>If un-checked, suggestions must be requested via the Suggest button.</source>
@@ -1411,7 +1411,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">258</context>
</context-group>
<target state="translated">Wenn diese Option nicht aktiviert ist, müssen Vorschläge über die Schaltfläche Vorschläge angefordert werden.</target>
<target state="needs-translation">If un-checked, suggestions must be requested via the Suggest button.</target>
</trans-unit>
<trans-unit id="8793267604636304297" datatype="html" approved="yes">
<source>Show document thumbnail during loading</source>
@@ -1607,7 +1607,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">329</context>
</context-group>
<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>
<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>
@@ -2855,7 +2855,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">104</context>
</context-group>
<target state="translated">KI-Vorschläge anwenden</target>
<target state="needs-translation">Apply AI Suggestions</target>
</trans-unit>
<trans-unit id="9172233176401579786" datatype="html" approved="yes">
<source>Scheduled</source>
@@ -3907,7 +3907,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-links.component.html</context>
<context context-type="linenumber">2,3</context>
</context-group>
<target state="translated">Share Links</target>
<target state="needs-translation">Share links</target>
</trans-unit>
<trans-unit id="7844706011418789951" datatype="html" approved="yes">
<source>Administration</source>
@@ -4531,7 +4531,7 @@
<context context-type="sourcefile">src/app/components/common/confirm-dialog/rotate-confirm-dialog/rotate-confirm-dialog.component.html</context>
<context context-type="linenumber">19</context>
</context-group>
<target state="translated">Im Uhrzeigersinn rotieren</target>
<target state="translated">Im Uhrzeigersinn Rotieren</target>
</trans-unit>
<trans-unit id="8157388568390631653" datatype="html" approved="yes">
<source>Note that only PDFs will be rotated.</source>
@@ -4799,7 +4799,7 @@
<context context-type="sourcefile">src/app/components/common/dates-dropdown/dates-dropdown.component.html</context>
<context context-type="linenumber">12</context>
</context-group>
<target state="translated">Erstelltes relatives Datum löschen</target>
<target state="needs-translation">Clear created relative date</target>
</trans-unit>
<trans-unit id="6312759212949884929" datatype="html" approved="yes">
<source>Relative dates</source>
@@ -4819,7 +4819,7 @@
<context context-type="sourcefile">src/app/components/common/dates-dropdown/dates-dropdown.component.html</context>
<context context-type="linenumber">37</context>
</context-group>
<target state="translated">Erstelltes von Datum löschen</target>
<target state="needs-translation">Clear created from date</target>
</trans-unit>
<trans-unit id="5203279511751768967" datatype="html" approved="yes">
<source>From</source>
@@ -4839,7 +4839,7 @@
<context context-type="sourcefile">src/app/components/common/dates-dropdown/dates-dropdown.component.html</context>
<context context-type="linenumber">47</context>
</context-group>
<target state="translated">Erstellte von Datumsauswahl öffnen</target>
<target state="needs-translation">Open created from date picker</target>
</trans-unit>
<trans-unit id="5714803496005897828" datatype="html">
<source>Clear created to date</source>
@@ -4847,7 +4847,7 @@
<context context-type="sourcefile">src/app/components/common/dates-dropdown/dates-dropdown.component.html</context>
<context context-type="linenumber">61</context>
</context-group>
<target state="translated">Erstellte bis Datumsauswahl löschen</target>
<target state="needs-translation">Clear created to date</target>
</trans-unit>
<trans-unit id="1640609344969975994" datatype="html" approved="yes">
<source>To</source>
@@ -4867,7 +4867,7 @@
<context context-type="sourcefile">src/app/components/common/dates-dropdown/dates-dropdown.component.html</context>
<context context-type="linenumber">71</context>
</context-group>
<target state="translated">Erstellte bis Datumsauswahl öffnen</target>
<target state="needs-translation">Open created to date picker</target>
</trans-unit>
<trans-unit id="231679111972850796" datatype="html" approved="yes">
<source>Added</source>
@@ -4899,7 +4899,7 @@
<context context-type="sourcefile">src/app/components/common/dates-dropdown/dates-dropdown.component.html</context>
<context context-type="linenumber">89</context>
</context-group>
<target state="translated">Erstelltes relatives Datum löschen</target>
<target state="needs-translation">Clear added relative date</target>
</trans-unit>
<trans-unit id="8527347906195580369" datatype="html">
<source>Clear added from date</source>
@@ -4907,7 +4907,7 @@
<context context-type="sourcefile">src/app/components/common/dates-dropdown/dates-dropdown.component.html</context>
<context context-type="linenumber">114</context>
</context-group>
<target state="translated">Hinzugefügt von Datum löschen</target>
<target state="needs-translation">Clear added from date</target>
</trans-unit>
<trans-unit id="5711531903664147782" datatype="html">
<source>Open added from date picker</source>
@@ -4915,7 +4915,7 @@
<context context-type="sourcefile">src/app/components/common/dates-dropdown/dates-dropdown.component.html</context>
<context context-type="linenumber">124</context>
</context-group>
<target state="translated">Hinzugefügt von Datumsauswahl öffnen</target>
<target state="needs-translation">Open added from date picker</target>
</trans-unit>
<trans-unit id="6559691063013749167" datatype="html">
<source>Clear added to date</source>
@@ -4923,7 +4923,7 @@
<context context-type="sourcefile">src/app/components/common/dates-dropdown/dates-dropdown.component.html</context>
<context context-type="linenumber">138</context>
</context-group>
<target state="translated">Hinzugefügt bis Datum löschen</target>
<target state="needs-translation">Clear added to date</target>
</trans-unit>
<trans-unit id="6072383085349258752" datatype="html">
<source>Open added to date picker</source>
@@ -4931,7 +4931,7 @@
<context context-type="sourcefile">src/app/components/common/dates-dropdown/dates-dropdown.component.html</context>
<context context-type="linenumber">148</context>
</context-group>
<target state="translated">Hinzugefügt bis Datumsauswahl öffnen</target>
<target state="needs-translation">Open added to date picker</target>
</trans-unit>
<trans-unit id="6052766076365105714" datatype="html" approved="yes">
<source>now</source>
@@ -5835,15 +5835,15 @@
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts</context>
<context context-type="linenumber">182</context>
</context-group>
<target state="translated">Fehler beim Abrufen der Korrespondenten</target>
<target state="needs-translation">Error retrieving correspondents</target>
</trans-unit>
<trans-unit id="3407606224361082860" datatype="html" approved="yes">
<trans-unit id="3407606224361082860" datatype="html">
<source>Error retrieving document types</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts</context>
<context context-type="linenumber">195</context>
</context-group>
<target state="final">Fehler beim Abrufen der Dokumenttypen</target>
<target state="needs-translation">Error retrieving document types</target>
</trans-unit>
<trans-unit id="3147349817770432927" datatype="html" approved="yes">
<source>Create new mail rule</source>
@@ -9623,31 +9623,31 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1051</context>
</context-group>
<target state="translated">Sie haben ungespeicherte Änderungen am Inhalt dieser Version.</target>
<target state="needs-translation">You have unsaved changes to the content of this version.</target>
</trans-unit>
<trans-unit id="85184271222513014" datatype="html" approved="yes">
<trans-unit id="85184271222513014" datatype="html">
<source>Switching versions will discard them.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1052</context>
</context-group>
<target state="final">Beim Versionswechsel werden diese verworfen.</target>
<target state="needs-translation">Switching versions will discard them.</target>
</trans-unit>
<trans-unit id="2565707334844767610" datatype="html" approved="yes">
<trans-unit id="2565707334844767610" datatype="html">
<source>Discard and switch</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1054</context>
</context-group>
<target state="final">Verwerfen und wechseln</target>
<target state="needs-translation">Discard and switch</target>
</trans-unit>
<trans-unit id="2109314380040637387" datatype="html" approved="yes">
<trans-unit id="2109314380040637387" datatype="html">
<source>Save and switch</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
<context context-type="linenumber">1056</context>
</context-group>
<target state="final">Speichern und wechseln</target>
<target state="needs-translation">Save and switch</target>
</trans-unit>
<trans-unit id="3456881259945295697" datatype="html" approved="yes">
<source>Error retrieving suggestions.</source>
@@ -10740,7 +10740,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10756,7 +10756,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11040,7 +11040,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="final">Filter / Auswahl zurücksetzen</target>
</trans-unit>
@@ -11048,7 +11048,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="final">Erstes [ausgewähltes] Dokument öffnen</target>
</trans-unit>
@@ -11056,7 +11056,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="final">Vorherige Seite</target>
</trans-unit>
@@ -11064,7 +11064,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="final">Nächste Seite</target>
</trans-unit>
@@ -11072,7 +11072,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="final">Ansicht „<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>“ erfolgreich gespeichert.</target>
</trans-unit>
@@ -11080,7 +11080,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="final">Fehler beim Speichern der Ansicht „<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>“.</target>
</trans-unit>
@@ -11088,7 +11088,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="final">Ansicht „<x id="PH" equiv-text="savedView.name"/>“ erfolgreich erstellt.</target>
</trans-unit>
@@ -11096,7 +11096,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="translated">Ansicht „<x id="PH" equiv-text="savedView.name"/>“ wurde erfolgreich erstellt, die Sichtbarkeitseinstellungen konnten jedoch nicht aktualisiert werden.</target>
</trans-unit>
@@ -12410,7 +12410,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">40,41</context>
</context-group>
<target state="translated">Abgelaufen</target>
<target state="needs-translation">Expired</target>
</trans-unit>
<trans-unit id="2057574872309338088" datatype="html">
<source>Copy share link</source>
@@ -12454,7 +12454,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-bundle-list/share-link-bundle-list.component.html</context>
<context context-type="linenumber">164,165</context>
</context-group>
<target state="translated">Freigabelink-Pakete Seitennummerierung</target>
<target state="needs-translation">Share link bundles pagination</target>
</trans-unit>
<trans-unit id="1541995860059283227" datatype="html">
<source>Failed to load share link bundles.</source>
@@ -12510,23 +12510,23 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">7,8</context>
</context-group>
<target state="translated"> Derzeit gibt es keine Dokumenten-Freigabe-Links. </target>
<target state="needs-translation"> No document share links currently exist. </target>
</trans-unit>
<trans-unit id="894965666917873756" datatype="html" approved="yes">
<trans-unit id="894965666917873756" datatype="html">
<source>Document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">15,16</context>
</context-group>
<target state="final">Dokument</target>
<target state="needs-translation">Document</target>
</trans-unit>
<trans-unit id="7420713064779772535" datatype="html" approved="yes">
<trans-unit id="7420713064779772535" datatype="html">
<source>Delete share link</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">75,76</context>
</context-group>
<target state="final">Freigabelink löschen</target>
<target state="needs-translation">Delete share link</target>
</trans-unit>
<trans-unit id="5198271726831144068" datatype="html">
<source>Share links pagination</source>
@@ -12534,39 +12534,39 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">104,105</context>
</context-group>
<target state="translated">Freigabelinks-Seitennummerierung</target>
<target state="needs-translation">Share links pagination</target>
</trans-unit>
<trans-unit id="2976350639944567244" datatype="html" approved="yes">
<trans-unit id="2976350639944567244" datatype="html">
<source>Failed to load share links.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.ts</context>
<context context-type="linenumber">105</context>
</context-group>
<target state="final">Fehler beim Laden des Freigabelinks.</target>
<target state="needs-translation">Failed to load share links.</target>
</trans-unit>
<trans-unit id="4100863040928608880" datatype="html" approved="yes">
<trans-unit id="4100863040928608880" datatype="html">
<source>Error retrieving share links.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.ts</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="final">Fehler beim Abrufen des Freigabelinks.</target>
<target state="needs-translation">Error retrieving share links.</target>
</trans-unit>
<trans-unit id="326120283142363299" datatype="html" approved="yes">
<trans-unit id="326120283142363299" datatype="html">
<source>Share link deleted.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.ts</context>
<context context-type="linenumber">154</context>
</context-group>
<target state="final">Freigabelink gelöscht.</target>
<target state="needs-translation">Share link deleted.</target>
</trans-unit>
<trans-unit id="4964931417181298145" datatype="html" approved="yes">
<trans-unit id="4964931417181298145" datatype="html">
<source>Error deleting share link.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.ts</context>
<context context-type="linenumber">159</context>
</context-group>
<target state="final">Fehler beim Löschen des Freigabelinks.</target>
<target state="needs-translation">Error deleting share link.</target>
</trans-unit>
<trans-unit id="3439104787814858626" datatype="html">
<source>Manage public links to individual documents and document bundles.</source>
@@ -12574,7 +12574,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-links.component.html</context>
<context context-type="linenumber">4,5</context>
</context-group>
<target state="translated">Verwalten Sie öffentliche Links zu einzelnen Dokumenten und Dokumentenbündeln.</target>
<target state="needs-translation">Manage public links to individual documents and document bundles.</target>
</trans-unit>
<trans-unit id="3740311348735113099" datatype="html">
<source>Document links</source>
@@ -12582,15 +12582,15 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-links.component.html</context>
<context context-type="linenumber">18,19</context>
</context-group>
<target state="translated">Dokumentenlinks</target>
<target state="needs-translation">Document links</target>
</trans-unit>
<trans-unit id="8216780576869093031" datatype="html" approved="yes">
<trans-unit id="8216780576869093031" datatype="html">
<source>Bundles</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/share-links/share-links.component.html</context>
<context context-type="linenumber">26,27</context>
</context-group>
<target state="final">Pakete</target>
<target state="needs-translation">Bundles</target>
</trans-unit>
<trans-unit id="1229748338333965418" datatype="html" approved="yes">
<source>Use workflows to customize the behavior of Paperless-ngx when events &apos;trigger&apos; a workflow.</source>
@@ -13297,27 +13297,11 @@
</context-group>
<target state="translated">LLM-Einbettungsmodell</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="translated">LLM Einbettungs API Schlüssel</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="translated">Wird für Einbettung genutzt, wenn gesetzt, ansonsten wird der LLM API Schlüssel verwendet.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="translated">LLM-Einbettungsendpunkt</target>
</trans-unit>
@@ -13325,7 +13309,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="translated">LLM-Einbettungschunkgröße</target>
</trans-unit>
@@ -13333,7 +13317,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="translated">LLM-Kontextgröße</target>
</trans-unit>
@@ -13341,7 +13325,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="final">LLM-Backend</target>
</trans-unit>
@@ -13349,7 +13333,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="final">LLM-Modell</target>
</trans-unit>
@@ -13357,7 +13341,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="final">LLM API-Schlüssel</target>
</trans-unit>
@@ -13365,7 +13349,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="final">LLM-Endpunkt</target>
</trans-unit>
@@ -13373,7 +13357,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="translated">LLM-Ausgabesprache</target>
</trans-unit>
@@ -13381,7 +13365,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</context>
</context-group>
<target state="translated">Sprache, die für KI-Vorschläge verwendet werden soll. Wenn sie nicht gesetzt ist, verwenden KI-Vorschläge die Anzeigesprache des Benutzers, sofern diese explizit festgelegt ist.</target>
</trans-unit>
@@ -13389,7 +13373,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="translated">LLM-Anfrage Zeitüberschreitung</target>
</trans-unit>
@@ -13397,7 +13381,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="translated">Zeiltimit in Sekunden für LLM-Anfragen.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="needs-translation">Reset filters / selection</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">Open first [selected] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="needs-translation">Previous page</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Next page</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">Η προβολή "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" αποθηκεύτηκε επιτυχώς.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">Η προβολή "<x id="PH" equiv-text="savedView.name"/>" δημιουργήθηκε επιτυχώς.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Restablecer filtros / selección</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Abrir primero documento [seleccionado]</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Página anterior</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Página siguiente</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="final">Ver "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" guardado satisfactoriamente.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">No se pudo guardar la vista "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="final">Ver "<x id="PH" equiv-text="savedView.name"/>" creado satisfactoriamente.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="needs-translation">Reset filters / selection</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">Open first [selected] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="needs-translation">Previous page</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Next page</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">تنظیم مجدد فیلترها / انتخاب</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">اولین سند [انتخاب شده] را باز کنید</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">صفحه قبلی</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">صفحه بعدی</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Nollaa suodattimet / valinta</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">Open first [selected] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Edellinen sivu</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Seuraava sivu</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">Näkymä "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" tallennettu onnistuneesti.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">Näkymä "<x id="PH" equiv-text="savedView.name"/>" luotu onnistuneesti.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10740,7 +10740,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10756,7 +10756,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11040,7 +11040,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Réinitialiser les filtres / la sélection</target>
</trans-unit>
@@ -11048,7 +11048,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Ouvrir le premier document [sélectionné]</target>
</trans-unit>
@@ -11056,7 +11056,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Page précédente</target>
</trans-unit>
@@ -11064,7 +11064,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Page suivante</target>
</trans-unit>
@@ -11072,7 +11072,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="final">Vue "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" enregistrée avec succès.</target>
</trans-unit>
@@ -11080,7 +11080,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Impossible d'enregistrer la vue "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11088,7 +11088,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="final">Vue « <x id="PH" equiv-text="savedView.name"/> » créée avec succès.</target>
</trans-unit>
@@ -11096,7 +11096,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13297,27 +13297,11 @@
</context-group>
<target state="final">Modèle d'embeddings</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="translated">Point de terminaison de l'intégration LLM</target>
</trans-unit>
@@ -13325,7 +13309,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="translated">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13333,7 +13317,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="translated">LLM Context Size</target>
</trans-unit>
@@ -13341,7 +13325,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="translated">Backend LLM</target>
</trans-unit>
@@ -13349,7 +13333,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="translated">Modèle LLM</target>
</trans-unit>
@@ -13357,7 +13341,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="translated">Clé d'API LLM</target>
</trans-unit>
@@ -13365,7 +13349,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="translated">LLM Endpoint</target>
</trans-unit>
@@ -13373,7 +13357,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="translated">Langue de sortie LLM</target>
</trans-unit>
@@ -13381,7 +13365,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</context>
</context-group>
<target state="translated">Langue à utiliser pour les suggestions d'IA générées. Lorsqu'elle n'est pas définie, les suggestions d'IA utilisent la langue d'affichage de l'utilisateur si elle est explicitement définie.</target>
</trans-unit>
@@ -13389,7 +13373,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="translated">Délai d'attente des requêtes LLM</target>
</trans-unit>
@@ -13397,7 +13381,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="translated">Délai d'attente en secondes pour les requêtes LLM.</target>
</trans-unit>
+21 -37
View File
@@ -10740,7 +10740,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10756,7 +10756,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11040,7 +11040,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">איפוס סינון / בחירה</target>
</trans-unit>
@@ -11048,7 +11048,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">פתח את המסמך הראשון [הנבחר]</target>
</trans-unit>
@@ -11056,7 +11056,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">עמוד קודם</target>
</trans-unit>
@@ -11064,7 +11064,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">עמוד הבא</target>
</trans-unit>
@@ -11072,7 +11072,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">תצוגה "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" נשמרה בהצלחה.</target>
</trans-unit>
@@ -11080,7 +11080,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">כישלון בעת שמירת תצוגה "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11088,7 +11088,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">תצוגה "<x id="PH" equiv-text="savedView.name"/>" נוצרה בהצלחה.</target>
</trans-unit>
@@ -11096,7 +11096,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="translated">התצוגה "<x id="PH" equiv-text="savedView.name"/>" נוצרה בהצלחה, אך לא ניתן היה לעדכן את הגדרות הנראות.</target>
</trans-unit>
@@ -13297,27 +13297,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13325,7 +13309,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13333,7 +13317,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13341,7 +13325,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13349,7 +13333,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13357,7 +13341,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13365,7 +13349,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13373,7 +13357,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13381,7 +13365,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13389,7 +13373,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13397,7 +13381,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="needs-translation">Reset filters / selection</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">Open first [selected] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="needs-translation">Previous page</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Next page</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Resetiraj filtere / odabir</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Otvori prvi [odabrani] dokument</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Prethodna stranica</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Sljedeća stranica</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">Prikaz "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" uspješno spremljen.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Spremanje prikaza "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" nije uspjelo.</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">Prikaz "<x id="PH" equiv-text="savedView.name"/>" uspješno kreiran.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="translated">Prikaz "<x id="PH" equiv-text="savedView.name"/>" uspješno kreiran, ali nije moguće ažurirati postavke vidljivosti.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="translated">LLM embedding model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="translated">LLM embedding krajnja točka</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="translated">Veličina LLM embedding bloka</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="translated">Veličina LLM konteksta</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="translated">LLM pozadina</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="translated">LLM model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="translated">LLM API ključ</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="translated">LLM krajnja točka</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="translated">LLM izlazni jezik</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</context>
</context-group>
<target state="translated">Jezik za generirane AI prijedloge. Ako nije postavljeno, AI prijedlozi koriste korisnikov jezik prikaza ako je eksplicitno postavljen.</target>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Szűrők / kiválasztás alaphelyzetbe</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Első [kiválasztott] dokumentum megnyitása</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Előző oldal</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Következő oldal</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">Nézet "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" sikeresen mentve.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">"<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" nézet mentése sikertelen.</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">Nézet "<x id="PH" equiv-text="savedView.name"/>" sikeresen létrehozva.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10740,7 +10740,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10756,7 +10756,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11040,7 +11040,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Reset filter / pilihan</target>
</trans-unit>
@@ -11048,7 +11048,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Buka dokumen [terpilih] pertama</target>
</trans-unit>
@@ -11056,7 +11056,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Halaman sebelumnya</target>
</trans-unit>
@@ -11064,7 +11064,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Halaman berikutnya</target>
</trans-unit>
@@ -11072,7 +11072,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">Tampilan "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" berhasil disimpan.</target>
</trans-unit>
@@ -11080,7 +11080,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Gagal menyimpan tampilan "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11088,7 +11088,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">Tampilan "<x id="PH" equiv-text="savedView.name"/>" berhasil dibuat.</target>
</trans-unit>
@@ -11096,7 +11096,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13297,27 +13297,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13325,7 +13309,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13333,7 +13317,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13341,7 +13325,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13349,7 +13333,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13357,7 +13341,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13365,7 +13349,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13373,7 +13357,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13381,7 +13365,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13389,7 +13373,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13397,7 +13381,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+35 -51
View File
@@ -3907,7 +3907,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-links.component.html</context>
<context context-type="linenumber">2,3</context>
</context-group>
<target state="translated">Condividi link</target>
<target state="needs-translation">Share links</target>
</trans-unit>
<trans-unit id="7844706011418789951" datatype="html">
<source>Administration</source>
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Azzera filtri / selezione</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Apri il primo documento [selezionato]</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Pagina precedente</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Pagina successiva</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="final">La vista "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" è stata salvata.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Impossibile salvare la visualizzazione "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="final">La vista "<x id="PH" equiv-text="savedView.name"/>" è stata creata.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="translated">La vista "<x id="PH" equiv-text="savedView.name"/>" è stata creata correttamente, ma non è stato possibile aggiornare le impostazioni di visibilità.</target>
</trans-unit>
@@ -12411,7 +12411,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">40,41</context>
</context-group>
<target state="translated">Scaduto</target>
<target state="needs-translation">Expired</target>
</trans-unit>
<trans-unit id="2057574872309338088" datatype="html">
<source>Copy share link</source>
@@ -12455,7 +12455,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-bundle-list/share-link-bundle-list.component.html</context>
<context context-type="linenumber">164,165</context>
</context-group>
<target state="translated">Paginazione dei pacchetti di link di condivisione</target>
<target state="needs-translation">Share link bundles pagination</target>
</trans-unit>
<trans-unit id="1541995860059283227" datatype="html">
<source>Failed to load share link bundles.</source>
@@ -12511,7 +12511,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">7,8</context>
</context-group>
<target state="translated"> Attualmente non sono presenti link per la condivisione dei documenti. </target>
<target state="needs-translation"> No document share links currently exist. </target>
</trans-unit>
<trans-unit id="894965666917873756" datatype="html">
<source>Document</source>
@@ -12519,7 +12519,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">15,16</context>
</context-group>
<target state="translated">Documento</target>
<target state="needs-translation">Document</target>
</trans-unit>
<trans-unit id="7420713064779772535" datatype="html">
<source>Delete share link</source>
@@ -12527,7 +12527,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">75,76</context>
</context-group>
<target state="translated">Elimina link di condivisione</target>
<target state="needs-translation">Delete share link</target>
</trans-unit>
<trans-unit id="5198271726831144068" datatype="html">
<source>Share links pagination</source>
@@ -12535,7 +12535,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">104,105</context>
</context-group>
<target state="translated">Paginazione link condivisi</target>
<target state="needs-translation">Share links pagination</target>
</trans-unit>
<trans-unit id="2976350639944567244" datatype="html">
<source>Failed to load share links.</source>
@@ -12543,7 +12543,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.ts</context>
<context context-type="linenumber">105</context>
</context-group>
<target state="translated">Impossibile caricare i link di condivisione.</target>
<target state="needs-translation">Failed to load share links.</target>
</trans-unit>
<trans-unit id="4100863040928608880" datatype="html">
<source>Error retrieving share links.</source>
@@ -12551,7 +12551,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.ts</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="translated">Errore nel recuperare i link di condivisione.</target>
<target state="needs-translation">Error retrieving share links.</target>
</trans-unit>
<trans-unit id="326120283142363299" datatype="html">
<source>Share link deleted.</source>
@@ -12559,7 +12559,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.ts</context>
<context context-type="linenumber">154</context>
</context-group>
<target state="translated">Link di condivisione eliminato.</target>
<target state="needs-translation">Share link deleted.</target>
</trans-unit>
<trans-unit id="4964931417181298145" datatype="html">
<source>Error deleting share link.</source>
@@ -12567,7 +12567,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.ts</context>
<context context-type="linenumber">159</context>
</context-group>
<target state="translated">Errore nell'eliminare il link condivisione.</target>
<target state="needs-translation">Error deleting share link.</target>
</trans-unit>
<trans-unit id="3439104787814858626" datatype="html">
<source>Manage public links to individual documents and document bundles.</source>
@@ -12575,7 +12575,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-links.component.html</context>
<context context-type="linenumber">4,5</context>
</context-group>
<target state="translated">Gestisci i link pubblici ai singoli documenti e pacchetti di documenti.</target>
<target state="needs-translation">Manage public links to individual documents and document bundles.</target>
</trans-unit>
<trans-unit id="3740311348735113099" datatype="html">
<source>Document links</source>
@@ -12583,7 +12583,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-links.component.html</context>
<context context-type="linenumber">18,19</context>
</context-group>
<target state="translated">Link al documento</target>
<target state="needs-translation">Document links</target>
</trans-unit>
<trans-unit id="8216780576869093031" datatype="html">
<source>Bundles</source>
@@ -12591,7 +12591,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-links.component.html</context>
<context context-type="linenumber">26,27</context>
</context-group>
<target state="translated">Pacchetti</target>
<target state="needs-translation">Bundles</target>
</trans-unit>
<trans-unit id="1229748338333965418" datatype="html">
<source>Use workflows to customize the behavior of Paperless-ngx when events &apos;trigger&apos; a workflow.</source>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="translated">Modello di embedding LLM</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="translated">Endpoint di integrazione LLM</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="translated">Dimensione del blocco di incorporamento LLM</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="translated">Dimensione del contesto LLM</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="translated">Backend LLM</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="translated">Modello LLM</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="translated">Chiave API LLM</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="translated">Endpoint LLM</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="translated">Lingua di output LLM</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</context>
</context-group>
<target state="translated">Lingua da utilizzare per i suggerimenti generati dall'IA. Se non specificata, i suggerimenti dell'IA utilizzano la lingua di visualizzazione dell'utente, qualora sia impostata esplicitamente.</target>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="translated">Timeout della richiesta LLM</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="translated">Timeout in secondi per le richieste LLM.</target>
</trans-unit>
+21 -37
View File
@@ -10740,7 +10740,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10756,7 +10756,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11040,7 +11040,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">フィルター/選択をリセット</target>
</trans-unit>
@@ -11048,7 +11048,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">最初の [selected] ドキュメントを開く</target>
</trans-unit>
@@ -11056,7 +11056,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">前のページ</target>
</trans-unit>
@@ -11064,7 +11064,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">次のページ</target>
</trans-unit>
@@ -11072,7 +11072,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">ビュー "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" は正常に保存されました</target>
</trans-unit>
@@ -11080,7 +11080,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">ビュー "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/> " を保存できませんでした。</target>
</trans-unit>
@@ -11088,7 +11088,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">ビュー "<x id="PH" equiv-text="savedView.name"/>" は正常に作成されました</target>
</trans-unit>
@@ -11096,7 +11096,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13297,27 +13297,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13325,7 +13309,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13333,7 +13317,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13341,7 +13325,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13349,7 +13333,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13357,7 +13341,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13365,7 +13349,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13373,7 +13357,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13381,7 +13365,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13389,7 +13373,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13397,7 +13381,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">필터/선택 항목 재설정</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">첫번째 [선택한] 문서 열기</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">이전 페이지</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">다음 페이지</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated"><x id="PH" equiv-text="this.list.activeSavedViewTitle"/> 뷰가 성공적으로 저장되었습니다.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated"><x id="PH" equiv-text="this.list.activeSavedViewTitle"/> 뷰가 성공적으로 생성되었습니다.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="needs-translation">Reset filters / selection</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">Open first [selected] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="needs-translation">Previous page</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Next page</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="final">Usiicht "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" gouf erfollegräich gespäichert.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="final">Vue "<x id="PH" equiv-text="savedView.name"/>" gouf erfollegräich erstallt.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="needs-translation">Reset filters / selection</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">Open first [selected] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="needs-translation">Previous page</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Next page</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="needs-translation">Reset filters / selection</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">Open first [selected] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="needs-translation">Previous page</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Next page</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="needs-translation">Reset filters / selection</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">Open first [selected] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="needs-translation">Previous page</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Next page</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="needs-translation">Reset filters / selection</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">Open first [selected] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="needs-translation">Previous page</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Next page</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10740,7 +10740,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10756,7 +10756,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11040,7 +11040,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Reset filters / selectie</target>
</trans-unit>
@@ -11048,7 +11048,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Open het eerste [geselecteerde] document</target>
</trans-unit>
@@ -11056,7 +11056,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Vorige pagina</target>
</trans-unit>
@@ -11064,7 +11064,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Volgende pagina</target>
</trans-unit>
@@ -11072,7 +11072,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="final">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" met succes opgeslagen.</target>
</trans-unit>
@@ -11080,7 +11080,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Fout bij het opslaan van weergave "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11088,7 +11088,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="final">View "<x id="PH" equiv-text="savedView.name"/>" met succes gemaakt.</target>
</trans-unit>
@@ -11096,7 +11096,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13297,27 +13297,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13325,7 +13309,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13333,7 +13317,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13341,7 +13325,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13349,7 +13333,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13357,7 +13341,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13365,7 +13349,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13373,7 +13357,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13381,7 +13365,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13389,7 +13373,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13397,7 +13381,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Tilbakestill filtre / utvalg</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Åpne første [selected] dokument</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Forrige side</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Neste side</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">Visning "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" ble lagret.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Kan ikke lagre visning "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">Visning "<x id="PH" equiv-text="savedView.name"/>" ble opprettet.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="translated">Se "<x id="PH" equiv-text="savedView.name"/>" opprettet vellykket, men klarte ikke oppdatere synlighetsinnstillinger.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="translated">LLM innebygd modell</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="translated">LLM Innebygd endepunkt</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="translated">LLM-innebyggingings blokkstørrelse</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="translated">LLM-kontekststørrelse</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="translated">LLM-motor</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="translated">LLM modell</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="translated">LLM API-nøkkel</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="translated">LLM endepunkt</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="translated">LLM-utdataspråk</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</context>
</context-group>
<target state="translated">Språk som skal brukes for genererte KI forslag. Når upasset, bruker KI forslag brukerens visningsspråk dersom det er angitt eksplisitt.</target>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="translated">Tidsavbrudd for LTM-forespørsel</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="translated">Tidsavbrudd i sekunder for LSM-forespørsler.</target>
</trans-unit>
+21 -37
View File
@@ -10740,7 +10740,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10756,7 +10756,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11040,7 +11040,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Resetowanie filtrów/wyboru</target>
</trans-unit>
@@ -11048,7 +11048,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Otwórz pierwszy [wybrany] dokument</target>
</trans-unit>
@@ -11056,7 +11056,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Poprzednia strona</target>
</trans-unit>
@@ -11064,7 +11064,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Następna strona</target>
</trans-unit>
@@ -11072,7 +11072,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="final">Widok "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" został zapisany.</target>
</trans-unit>
@@ -11080,7 +11080,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Nie udało się zapisać widoku "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11088,7 +11088,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="final">Widok "<x id="PH" equiv-text="savedView.name"/>" został utworzony pomyślnie.</target>
</trans-unit>
@@ -11096,7 +11096,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="translated">Widok "<x id="PH" equiv-text="savedView.name"/>" utworzono pomyślnie, ale nie można zaktualizować ustawień widoczności.</target>
</trans-unit>
@@ -13297,27 +13297,11 @@
</context-group>
<target state="translated">Model do analizy treści dokumentów</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13325,7 +13309,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13333,7 +13317,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13341,7 +13325,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="translated">Usługa sztucznej inteligencji</target>
</trans-unit>
@@ -13349,7 +13333,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="translated">Model sztucznej inteligencji</target>
</trans-unit>
@@ -13357,7 +13341,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="translated">Klucz dostępu do usługi AI</target>
</trans-unit>
@@ -13365,7 +13349,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="translated">Adres usługi AI</target>
</trans-unit>
@@ -13373,7 +13357,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13381,7 +13365,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13389,7 +13373,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13397,7 +13381,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10742,7 +10742,7 @@ Erro ao enviar documentos por e-mail</target>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10758,7 +10758,7 @@ Erro ao enviar documentos por e-mail</target>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11042,7 +11042,7 @@ Erro ao enviar documentos por e-mail</target>
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Redefinir filtros / seleção</target>
</trans-unit>
@@ -11050,7 +11050,7 @@ Erro ao enviar documentos por e-mail</target>
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Abrir o primeiro documento [selected]</target>
</trans-unit>
@@ -11058,7 +11058,7 @@ Erro ao enviar documentos por e-mail</target>
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Página anterior</target>
</trans-unit>
@@ -11066,7 +11066,7 @@ Erro ao enviar documentos por e-mail</target>
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Próxima página</target>
</trans-unit>
@@ -11074,7 +11074,7 @@ Erro ao enviar documentos por e-mail</target>
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="final">Visualização "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" salva com sucesso.</target>
</trans-unit>
@@ -11082,7 +11082,7 @@ Erro ao enviar documentos por e-mail</target>
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Falha ao salvar a view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11090,7 +11090,7 @@ Erro ao enviar documentos por e-mail</target>
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="final">Visualização "<x id="PH" equiv-text="savedView.name"/>" criada com sucesso.</target>
</trans-unit>
@@ -11098,7 +11098,7 @@ Erro ao enviar documentos por e-mail</target>
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13299,27 +13299,11 @@ Erro ao enviar documentos por e-mail</target>
</context-group>
<target state="translated">Modelo de embedding do LLM</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="translated">Endpoint de embedding do LLM</target>
</trans-unit>
@@ -13327,7 +13311,7 @@ Erro ao enviar documentos por e-mail</target>
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="translated">Tamanho do Chunk de embedding do LLM</target>
</trans-unit>
@@ -13335,7 +13319,7 @@ Erro ao enviar documentos por e-mail</target>
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="translated">Tamanho do Contexto do LLM</target>
</trans-unit>
@@ -13343,7 +13327,7 @@ Erro ao enviar documentos por e-mail</target>
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="translated">Backend do LLM</target>
</trans-unit>
@@ -13351,7 +13335,7 @@ Erro ao enviar documentos por e-mail</target>
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="translated">Modelo do LLM</target>
</trans-unit>
@@ -13359,7 +13343,7 @@ Erro ao enviar documentos por e-mail</target>
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="translated">API Key do LLM</target>
</trans-unit>
@@ -13367,7 +13351,7 @@ Erro ao enviar documentos por e-mail</target>
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="translated">Endpoint do LLM</target>
</trans-unit>
@@ -13375,7 +13359,7 @@ Erro ao enviar documentos por e-mail</target>
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="translated">Idioma de Saída do LLM</target>
</trans-unit>
@@ -13383,7 +13367,7 @@ Erro ao enviar documentos por e-mail</target>
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</context>
</context-group>
<target state="translated">Idioma a ser usado para sugestões geradas por IA. Quando não definido, as sugestões de IA usam o idioma de exibição do usuário, se definido explicitamente.</target>
</trans-unit>
@@ -13391,7 +13375,7 @@ Erro ao enviar documentos por e-mail</target>
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="translated">Tempo limite da requisição LLM</target>
</trans-unit>
@@ -13399,7 +13383,7 @@ Erro ao enviar documentos por e-mail</target>
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="translated">Tempo limite em segundos para requisições LLM.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="needs-translation">Reset filters / selection</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">Open first [selected] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="needs-translation">Previous page</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Next page</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="final">Visualização "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" guardado com sucesso.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="final">Visualização "<x id="PH" equiv-text="savedView.name"/>" criada com sucesso.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10740,7 +10740,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10756,7 +10756,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11040,7 +11040,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Resetare filtre / selecţie</target>
</trans-unit>
@@ -11048,7 +11048,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Deschide primul document [selectat]</target>
</trans-unit>
@@ -11056,7 +11056,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Pagina precedentă</target>
</trans-unit>
@@ -11064,7 +11064,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Pagina următoare</target>
</trans-unit>
@@ -11072,7 +11072,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="final">Vizualizarea "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" a fost salvată.</target>
</trans-unit>
@@ -11080,7 +11080,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Nu s-a putut salva vizualizarea "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11088,7 +11088,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="final">Vizualizarea "<x id="PH" equiv-text="savedView.name"/>" a fost creată.</target>
</trans-unit>
@@ -11096,7 +11096,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13297,27 +13297,11 @@
</context-group>
<target state="translated">Modelul de Încorporare LLM</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13325,7 +13309,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13333,7 +13317,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13341,7 +13325,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="translated">Backend-ul LLM</target>
</trans-unit>
@@ -13349,7 +13333,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="translated">Model LLM</target>
</trans-unit>
@@ -13357,7 +13341,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="translated">Cheie API LLM</target>
</trans-unit>
@@ -13365,7 +13349,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="translated">Endpoint LLM</target>
</trans-unit>
@@ -13373,7 +13357,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13381,7 +13365,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13389,7 +13373,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13397,7 +13381,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+35 -51
View File
@@ -3907,7 +3907,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-links.component.html</context>
<context context-type="linenumber">2,3</context>
</context-group>
<target state="translated">Ссылки для обмена</target>
<target state="needs-translation">Share links</target>
</trans-unit>
<trans-unit id="7844706011418789951" datatype="html">
<source>Administration</source>
@@ -10740,7 +10740,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10756,7 +10756,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11040,7 +11040,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Сбросить фильтры / выбор</target>
</trans-unit>
@@ -11048,7 +11048,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Открыть первый [выбранный] документ</target>
</trans-unit>
@@ -11056,7 +11056,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Предыдущая страница</target>
</trans-unit>
@@ -11064,7 +11064,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Следующая страница</target>
</trans-unit>
@@ -11072,7 +11072,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="final">Представление "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" успешно сохранено.</target>
</trans-unit>
@@ -11080,7 +11080,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Не удалось сохранить представление "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11088,7 +11088,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="final">Представление "<x id="PH" equiv-text="savedView.name"/>" успешно создано.</target>
</trans-unit>
@@ -11096,7 +11096,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="translated">Просмотр "<x id="PH" equiv-text="savedView.name"/>" успешно создан, но не удалось обновить настройки видимости.</target>
</trans-unit>
@@ -12410,7 +12410,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">40,41</context>
</context-group>
<target state="translated">Истёкшие</target>
<target state="needs-translation">Expired</target>
</trans-unit>
<trans-unit id="2057574872309338088" datatype="html">
<source>Copy share link</source>
@@ -12454,7 +12454,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-bundle-list/share-link-bundle-list.component.html</context>
<context context-type="linenumber">164,165</context>
</context-group>
<target state="translated">Пагинация ссылок</target>
<target state="needs-translation">Share link bundles pagination</target>
</trans-unit>
<trans-unit id="1541995860059283227" datatype="html">
<source>Failed to load share link bundles.</source>
@@ -12510,7 +12510,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">7,8</context>
</context-group>
<target state="translated"> В настоящее время нет общих ссылок. </target>
<target state="needs-translation"> No document share links currently exist. </target>
</trans-unit>
<trans-unit id="894965666917873756" datatype="html">
<source>Document</source>
@@ -12518,7 +12518,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">15,16</context>
</context-group>
<target state="translated">Документ</target>
<target state="needs-translation">Document</target>
</trans-unit>
<trans-unit id="7420713064779772535" datatype="html">
<source>Delete share link</source>
@@ -12526,7 +12526,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">75,76</context>
</context-group>
<target state="translated">Удалить ссылку для обмена</target>
<target state="needs-translation">Delete share link</target>
</trans-unit>
<trans-unit id="5198271726831144068" datatype="html">
<source>Share links pagination</source>
@@ -12534,7 +12534,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">104,105</context>
</context-group>
<target state="translated">Пагинация ссылок</target>
<target state="needs-translation">Share links pagination</target>
</trans-unit>
<trans-unit id="2976350639944567244" datatype="html">
<source>Failed to load share links.</source>
@@ -12542,7 +12542,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.ts</context>
<context context-type="linenumber">105</context>
</context-group>
<target state="translated">Не удалось загрузить ссылки.</target>
<target state="needs-translation">Failed to load share links.</target>
</trans-unit>
<trans-unit id="4100863040928608880" datatype="html">
<source>Error retrieving share links.</source>
@@ -12550,7 +12550,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.ts</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="translated">Ошибка при получении ссылок.</target>
<target state="needs-translation">Error retrieving share links.</target>
</trans-unit>
<trans-unit id="326120283142363299" datatype="html">
<source>Share link deleted.</source>
@@ -12558,7 +12558,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.ts</context>
<context context-type="linenumber">154</context>
</context-group>
<target state="translated">Ссылка для обмена удалена.</target>
<target state="needs-translation">Share link deleted.</target>
</trans-unit>
<trans-unit id="4964931417181298145" datatype="html">
<source>Error deleting share link.</source>
@@ -12566,7 +12566,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.ts</context>
<context context-type="linenumber">159</context>
</context-group>
<target state="translated">Ошибка при удалении ссылки.</target>
<target state="needs-translation">Error deleting share link.</target>
</trans-unit>
<trans-unit id="3439104787814858626" datatype="html">
<source>Manage public links to individual documents and document bundles.</source>
@@ -12574,7 +12574,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-links.component.html</context>
<context context-type="linenumber">4,5</context>
</context-group>
<target state="translated">Управление публичными ссылками на отдельные документы и комплекты документов.</target>
<target state="needs-translation">Manage public links to individual documents and document bundles.</target>
</trans-unit>
<trans-unit id="3740311348735113099" datatype="html">
<source>Document links</source>
@@ -12582,7 +12582,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-links.component.html</context>
<context context-type="linenumber">18,19</context>
</context-group>
<target state="translated">Ссылки на документы</target>
<target state="needs-translation">Document links</target>
</trans-unit>
<trans-unit id="8216780576869093031" datatype="html">
<source>Bundles</source>
@@ -12590,7 +12590,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-links.component.html</context>
<context context-type="linenumber">26,27</context>
</context-group>
<target state="translated">Комплекты</target>
<target state="needs-translation">Bundles</target>
</trans-unit>
<trans-unit id="1229748338333965418" datatype="html">
<source>Use workflows to customize the behavior of Paperless-ngx when events &apos;trigger&apos; a workflow.</source>
@@ -13297,27 +13297,11 @@
</context-group>
<target state="translated">Модель встраивания LLM</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="translated">Конечная точка встраивания LLM</target>
</trans-unit>
@@ -13325,7 +13309,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="translated">Размер кучи встраивания LLM</target>
</trans-unit>
@@ -13333,7 +13317,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="translated">Размер контекста LLM</target>
</trans-unit>
@@ -13341,7 +13325,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="translated">Бэкенд LLM</target>
</trans-unit>
@@ -13349,7 +13333,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="translated">Модель LLM</target>
</trans-unit>
@@ -13357,7 +13341,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="translated">API-ключ LLM</target>
</trans-unit>
@@ -13365,7 +13349,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="translated">Конечная точка LLM</target>
</trans-unit>
@@ -13373,7 +13357,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="translated">Язык выдачи LLM</target>
</trans-unit>
@@ -13381,7 +13365,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</context>
</context-group>
<target state="translated">Язык для сгенерированных ИИ предложений. Когда отключено, ИИ использует язык пользователя, если он явно установлен.</target>
</trans-unit>
@@ -13389,7 +13373,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="translated">Таймаут запроса LLM</target>
</trans-unit>
@@ -13397,7 +13381,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="translated">Тайм-аут в секундах для LLM запросов.</target>
</trans-unit>
+54 -70
View File
@@ -17,7 +17,7 @@
<context context-type="linenumber">129</context>
</context-group>
<note priority="1" from="description">Currently selected slide number read by screen reader</note>
<target state="translated">Snímka <x id="INTERPOLATION"/> z <x id="INTERPOLATION_1"/></target>
<target state="needs-translation"> Slide <x id="INTERPOLATION"/> of <x id="INTERPOLATION_1"/> </target>
</trans-unit>
<trans-unit id="ngb.carousel.previous" datatype="html">
<source>Previous</source>
@@ -479,7 +479,7 @@
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">201</context>
</context-group>
<target state="translated">Tu možno spravovať atribúty, ako sú štítky, korešpondenti, typy dokumentov, cesty k úložisku a vlastné polia. Možno ich vytvárať aj v zobrazení úpravy dokumentu.</target>
<target state="needs-translation">Attributes like tags, correspondents, document types, storage paths and custom fields can all be managed here. They can also be created from the document edit view.</target>
</trans-unit>
<trans-unit id="7851939076947092983" datatype="html">
<source>Manage e-mail accounts and rules for automatically importing documents.</source>
@@ -507,7 +507,7 @@
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">225</context>
</context-group>
<target state="translated">Funkcia Úlohy vám pomáha sledovať prácu na pozadí, záležitosti vyžadujúce pozornosť a nedávno dokončené úlohy.</target>
<target state="needs-translation">Tasks helps you track background work, what needs attention, and what recently completed.</target>
</trans-unit>
<trans-unit id="2755033621682206902" datatype="html">
<source>Check out the settings for various tweaks to the web app.</source>
@@ -515,7 +515,7 @@
<context context-type="sourcefile">src/app/app.component.ts</context>
<context context-type="linenumber">233</context>
</context-group>
<target state="translated">Pozrite si nastavenia rôznych vylepšení webovej aplikácie.</target>
<target state="needs-translation">Check out the settings for various tweaks to the web app.</target>
</trans-unit>
<trans-unit id="7172877665285340082" datatype="html">
<source>Thank you! 🙏</source>
@@ -555,7 +555,7 @@
<context context-type="sourcefile">src/app/components/admin/config/config.component.html</context>
<context context-type="linenumber">4,5</context>
</context-group>
<target state="translated">Globálne možnosti konfigurácie aplikácie, ktoré sa vzťahujú na &lt;strong&gt;každého&lt;/strong&gt; používateľa tejto inštalácie Paperless-ngx. Možnosti možno nastaviť aj pomocou premenných prostredia alebo konfiguračného súboru, avšak tu uvedená hodnota bude mať vždy prednosť.</target>
<target state="needs-translation">Global app configuration options which apply to &lt;strong&gt;every&lt;/strong&gt; user of this install of Paperless-ngx. Options can also be set using environment variables or the configuration file but the value here will always take precedence.</target>
</trans-unit>
<trans-unit id="7991430199894172363" datatype="html">
<source>Read the documentation about this setting</source>
@@ -563,7 +563,7 @@
<context context-type="sourcefile">src/app/components/admin/config/config.component.html</context>
<context context-type="linenumber">30</context>
</context-group>
<target state="translated">Prečítajte si dokumentáciu k tomuto nastaveniu.</target>
<target state="needs-translation">Read the documentation about this setting</target>
</trans-unit>
<trans-unit id="7057826840809102816" datatype="html">
<source>This value overrides <x id="INTERPOLATION" equiv-text="{{option.config_key}}"/>, which is set outside Paperless.</source>
@@ -571,7 +571,7 @@
<context context-type="sourcefile">src/app/components/admin/config/config.component.html</context>
<context context-type="linenumber">35</context>
</context-group>
<target state="translated">Táto hodnota prepíše <x id="INTERPOLATION" equiv-text="{{option.config_key}}"/>, ktorá je nastavená mimo Paperless.</target>
<target state="needs-translation">This value overrides <x id="INTERPOLATION" equiv-text="{{option.config_key}}"/>, which is set outside Paperless.</target>
</trans-unit>
<trans-unit id="7221396516204435584" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{option.config_key}}"/> is set outside Paperless. Enter a value here to override it.</source>
@@ -579,7 +579,7 @@
<context context-type="sourcefile">src/app/components/admin/config/config.component.html</context>
<context context-type="linenumber">37</context>
</context-group>
<target state="translated"><x id="INTERPOLATION" equiv-text="{{option.config_key}}"/> je nastavené mimo aplikácie Paperless. Zadajte sem hodnotu, ak chcete toto nastavenie prepísať.</target>
<target state="needs-translation"><x id="INTERPOLATION" equiv-text="{{option.config_key}}"/> is set outside Paperless. Enter a value here to override it.</target>
</trans-unit>
<trans-unit id="8318849619178340389" datatype="html">
<source>Use the externally configured value</source>
@@ -587,7 +587,7 @@
<context context-type="sourcefile">src/app/components/admin/config/config.component.html</context>
<context context-type="linenumber">42</context>
</context-group>
<target state="translated">Použite externe nakonfigurovanú hodnotu.</target>
<target state="needs-translation">Use the externally configured value</target>
</trans-unit>
<trans-unit id="6032629623003430385" datatype="html">
<source>Reset to external</source>
@@ -595,7 +595,7 @@
<context context-type="sourcefile">src/app/components/admin/config/config.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<target state="translated">Obnoviť na externé</target>
<target state="needs-translation">Reset to external</target>
</trans-unit>
<trans-unit id="7808756054397155068" datatype="html">
<source>Reset</source>
@@ -1271,7 +1271,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">188</context>
</context-group>
<target state="translated">Kontrola aktualizácií funguje tak, že sa prostredníctvom verejného rozhrania GitHub API zisťuje najnovšie vydanie, čím sa overuje dostupnosť novej verzie. Samotnú aktualizáciu aplikácie je však stále nutné vykonať manuálne.</target>
<target state="needs-translation"> Update checking works by pinging the public GitHub API for the latest release to determine whether a new version is available. Actual updating of the app must still be performed manually. </target>
</trans-unit>
<trans-unit id="8416061320800650487" datatype="html">
<source>No tracking data is collected by the app in any way.</source>
@@ -1279,7 +1279,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">191,192</context>
</context-group>
<target state="translated">Aplikácia žiadnym spôsobom nezhromažďuje žiadne údaje o sledovaní.</target>
<target state="needs-translation">No tracking data is collected by the app in any way.</target>
</trans-unit>
<trans-unit id="5775451530782446954" datatype="html">
<source>Saved Views</source>
@@ -1323,7 +1323,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">201</context>
</context-group>
<target state="translated">Zobraziť počty dokumentov pri uložených zobrazeniach na bočnom paneli</target>
<target state="needs-translation">Show document counts in sidebar saved views</target>
</trans-unit>
<trans-unit id="8939587804990976924" datatype="html">
<source>Items per page</source>
@@ -1387,7 +1387,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">246,247</context>
</context-group>
<target state="translated">Vzťahuje sa len na prehliadač PDF v aplikácii Paperless-ngx.</target>
<target state="needs-translation">Only applies to the Paperless-ngx PDF viewer.</target>
</trans-unit>
<trans-unit id="2959590948110714366" datatype="html">
<source>Automatically remove inbox tag(s) on save</source>
@@ -1395,7 +1395,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">252</context>
</context-group>
<target state="translated">Automaticky odstrániť štítky doručenej pošty pri uložení</target>
<target state="needs-translation">Automatically remove inbox tag(s) on save</target>
</trans-unit>
<trans-unit id="1043449647727456069" datatype="html">
<source>Automatically request suggestions for inbox documents</source>
@@ -1403,7 +1403,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">258</context>
</context-group>
<target state="translated">Automaticky vyžiadať návrhy pre dokumenty v doručenej pošte</target>
<target state="needs-translation">Automatically request suggestions for inbox documents</target>
</trans-unit>
<trans-unit id="460700039378563125" datatype="html">
<source>If un-checked, suggestions must be requested via the Suggest button.</source>
@@ -1411,7 +1411,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">258</context>
</context-group>
<target state="translated">Ak políčko nie je začiarknuté, o návrhy treba požiadať pomocou tlačidla „Navrhnúť“.</target>
<target state="needs-translation">If un-checked, suggestions must be requested via the Suggest button.</target>
</trans-unit>
<trans-unit id="8793267604636304297" datatype="html">
<source>Show document thumbnail during loading</source>
@@ -1419,7 +1419,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">264</context>
</context-group>
<target state="translated">Zobraziť miniatúru dokumentu počas načítavania</target>
<target state="needs-translation">Show document thumbnail during loading</target>
</trans-unit>
<trans-unit id="1783600598811723080" datatype="html">
<source>Built-in fields to show:</source>
@@ -1427,7 +1427,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">270,271</context>
</context-group>
<target state="translated">Vstavané polia na zobrazenie:</target>
<target state="needs-translation">Built-in fields to show:</target>
</trans-unit>
<trans-unit id="3467966318201103991" datatype="html">
<source>Uncheck fields to hide them on the document details page.</source>
@@ -1435,7 +1435,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">282,283</context>
</context-group>
<target state="translated">Zrušením zaškrtnutia políčok ich skryjete na stránke s podrobnosťami o dokumente.</target>
<target state="needs-translation">Uncheck fields to hide them on the document details page.</target>
</trans-unit>
<trans-unit id="8508424367627989968" datatype="html">
<source>Bulk editing</source>
@@ -1483,7 +1483,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">299,300</context>
</context-group>
<target state="translated">Predvolený režim úprav</target>
<target state="needs-translation">Default editing mode</target>
</trans-unit>
<trans-unit id="7273640930165035289" datatype="html">
<source>Create new document(s)</source>
@@ -1607,7 +1607,7 @@
<context context-type="sourcefile">src/app/components/admin/settings/settings.component.html</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Nastavenia sa pre tento používateľský účet vzťahujú na objekty (štítky, pravidlá pre poštu atď.) vytvorené prostredníctvom webového rozhrania. Tieto nastavenia sa nevzťahujú na dokumenty.</target>
<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>
</trans-unit>
<trans-unit id="4292903881380648974" datatype="html">
<source>Default Owner</source>
@@ -2003,7 +2003,7 @@
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
<context context-type="linenumber">99,100</context>
</context-group>
<target state="translated">Odkazy pre zdieľanie</target>
<target state="needs-translation">Share Links</target>
</trans-unit>
<trans-unit id="2889601918256567804" datatype="html">
<source>Workflows</source>
@@ -2179,7 +2179,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.html</context>
<context context-type="linenumber">4,5</context>
</context-group>
<target state="translated">Sekcia Úlohy zobrazuje podrobné informácie o spracovaní dokumentov a systémových úlohách.</target>
<target state="needs-translation">Tasks shows detailed information about document consumption and system tasks.</target>
</trans-unit>
<trans-unit id="103921551219467537" datatype="html">
<source>Clear selection</source>
@@ -2319,7 +2319,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.html</context>
<context context-type="linenumber">122</context>
</context-group>
<target state="translated">{VAR_PLURAL, plural, =1 {1 task} other {<x id="INTERPOLATION"/> tasks}}</target>
<target state="needs-translation">{VAR_PLURAL, plural, =1 {1 task} other {<x id="INTERPOLATION"/> tasks}}</target>
</trans-unit>
<trans-unit id="8953033926734869941" datatype="html">
<source>Name</source>
@@ -2619,7 +2619,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.html</context>
<context context-type="linenumber">207</context>
</context-group>
<target state="translated">Zobraziť podrobnosti úlohy</target>
<target state="needs-translation">View task details</target>
</trans-unit>
<trans-unit id="1536087519743707362" datatype="html">
<source>Dismiss</source>
@@ -2723,7 +2723,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.html</context>
<context context-type="linenumber">285,287</context>
</context-group>
<target state="translated">Žiadne úlohy nezodpovedajú aktuálnym filtrom.</target>
<target state="needs-translation">No tasks match the current filters.</target>
</trans-unit>
<trans-unit id="2525230676386818985" datatype="html">
<source>Result</source>
@@ -2755,7 +2755,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">57</context>
</context-group>
<target state="translated">Nedávno dokončené</target>
<target state="needs-translation">Recently completed</target>
</trans-unit>
<trans-unit id="2936452645673957909" datatype="html">
<source>Consume File</source>
@@ -2855,7 +2855,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">104</context>
</context-group>
<target state="translated">Použiť návrhy umelej inteligencie</target>
<target state="needs-translation">Apply AI Suggestions</target>
</trans-unit>
<trans-unit id="9172233176401579786" datatype="html">
<source>Scheduled</source>
@@ -2999,7 +2999,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">412</context>
</context-group>
<target state="translated">Úspešné. Vytvorené nové ID dokumentu <x id="PH" equiv-text="documentId"/>.</target>
<target state="needs-translation">Success. New document id <x id="PH" equiv-text="documentId"/> created</target>
</trans-unit>
<trans-unit id="8760066891202884337" datatype="html">
<source>Duplicate of document #<x id="PH" equiv-text="duplicateOf"/></source>
@@ -3011,7 +3011,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">456</context>
</context-group>
<target state="translated">Kópia dokumentu č. <x id="PH" equiv-text="duplicateOf"/></target>
<target state="needs-translation">Duplicate of document #<x id="PH" equiv-text="duplicateOf"/></target>
</trans-unit>
<trans-unit id="3418677553313974490" datatype="html">
<source>Trash</source>
@@ -3035,7 +3035,7 @@
<context context-type="sourcefile">src/app/components/admin/trash/trash.component.html</context>
<context context-type="linenumber">4,5</context>
</context-group>
<target state="translated">Spravujte dokumenty v koši, ktoré čakajú na odstránenie.</target>
<target state="needs-translation">Manage trashed documents that are pending deletion.</target>
</trans-unit>
<trans-unit id="3186604097120837257" datatype="html">
<source>Restore selected</source>
@@ -3083,7 +3083,7 @@
<context context-type="sourcefile">src/app/components/admin/trash/trash.component.html</context>
<context context-type="linenumber">65,66</context>
</context-group>
<target state="translated"><x id="INTERPOLATION" equiv-text="{{ getDaysRemaining(document) }}"/> dni</target>
<target state="needs-translation"><x id="INTERPOLATION" equiv-text="{{ getDaysRemaining(document) }}"/> days</target>
</trans-unit>
<trans-unit id="6770769801335635194" datatype="html">
<source>Restore</source>
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="needs-translation">Reset filters / selection</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">Open first [selected] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="needs-translation">Previous page</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Next page</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">Pohľad "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" úspešne uložený.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">Pohľad "<x id="PH" equiv-text="savedView.name"/>" úspešne vytvorený.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+36 -52
View File
@@ -2855,7 +2855,7 @@
<context context-type="sourcefile">src/app/components/admin/tasks/tasks.component.ts</context>
<context context-type="linenumber">104</context>
</context-group>
<target state="translated">Uporabi predloge umetne inteligence</target>
<target state="needs-translation">Apply AI Suggestions</target>
</trans-unit>
<trans-unit id="9172233176401579786" datatype="html">
<source>Scheduled</source>
@@ -3907,7 +3907,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-links.component.html</context>
<context context-type="linenumber">2,3</context>
</context-group>
<target state="translated">Delite povezave</target>
<target state="needs-translation">Share links</target>
</trans-unit>
<trans-unit id="7844706011418789951" datatype="html">
<source>Administration</source>
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Ponastavi filtre / izbor</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Odpri prvi [izbran] dokument</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Prejšnja stran</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Naslednja stran</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">Pogled »<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" je uspešno shranjen.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Shranjevanje pogleda "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" ni uspelo.</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">Pogled »<x id="PH" equiv-text="savedView.name"/>" je bil uspešno ustvarjen.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="translated">Pogled »<x id="PH" equiv-text="savedView.name"/>« je bil uspešno ustvarjen, vendar nastavitev vidnosti ni bilo mogoče posodobiti.</target>
</trans-unit>
@@ -12411,7 +12411,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">40,41</context>
</context-group>
<target state="translated">Poteklo</target>
<target state="needs-translation">Expired</target>
</trans-unit>
<trans-unit id="2057574872309338088" datatype="html">
<source>Copy share link</source>
@@ -12455,7 +12455,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-bundle-list/share-link-bundle-list.component.html</context>
<context context-type="linenumber">164,165</context>
</context-group>
<target state="translated">Deljenje povezav – strani v sklopih</target>
<target state="needs-translation">Share link bundles pagination</target>
</trans-unit>
<trans-unit id="1541995860059283227" datatype="html">
<source>Failed to load share link bundles.</source>
@@ -12511,7 +12511,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">7,8</context>
</context-group>
<target state="translated"> Trenutno ni povezav za skupno rabo dokumentov. </target>
<target state="needs-translation"> No document share links currently exist. </target>
</trans-unit>
<trans-unit id="894965666917873756" datatype="html">
<source>Document</source>
@@ -12519,7 +12519,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">15,16</context>
</context-group>
<target state="translated">Dokument</target>
<target state="needs-translation">Document</target>
</trans-unit>
<trans-unit id="7420713064779772535" datatype="html">
<source>Delete share link</source>
@@ -12527,7 +12527,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">75,76</context>
</context-group>
<target state="translated">Izbriši povezavo za deljenje</target>
<target state="needs-translation">Delete share link</target>
</trans-unit>
<trans-unit id="5198271726831144068" datatype="html">
<source>Share links pagination</source>
@@ -12535,7 +12535,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.html</context>
<context context-type="linenumber">104,105</context>
</context-group>
<target state="translated">Deljenje povezav – strani v sklopih</target>
<target state="needs-translation">Share links pagination</target>
</trans-unit>
<trans-unit id="2976350639944567244" datatype="html">
<source>Failed to load share links.</source>
@@ -12543,7 +12543,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.ts</context>
<context context-type="linenumber">105</context>
</context-group>
<target state="translated">Povezav za deljenje ni bilo mogoče naložiti.</target>
<target state="needs-translation">Failed to load share links.</target>
</trans-unit>
<trans-unit id="4100863040928608880" datatype="html">
<source>Error retrieving share links.</source>
@@ -12551,7 +12551,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.ts</context>
<context context-type="linenumber">107</context>
</context-group>
<target state="translated">Napaka pri pridobivanju povezav za deljenje.</target>
<target state="needs-translation">Error retrieving share links.</target>
</trans-unit>
<trans-unit id="326120283142363299" datatype="html">
<source>Share link deleted.</source>
@@ -12559,7 +12559,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.ts</context>
<context context-type="linenumber">154</context>
</context-group>
<target state="translated">Povezava za deljenje je bila izbrisana.</target>
<target state="needs-translation">Share link deleted.</target>
</trans-unit>
<trans-unit id="4964931417181298145" datatype="html">
<source>Error deleting share link.</source>
@@ -12567,7 +12567,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-link-list/share-link-list.component.ts</context>
<context context-type="linenumber">159</context>
</context-group>
<target state="translated">Napaka pri brisanju povezave za deljenje.</target>
<target state="needs-translation">Error deleting share link.</target>
</trans-unit>
<trans-unit id="3439104787814858626" datatype="html">
<source>Manage public links to individual documents and document bundles.</source>
@@ -12575,7 +12575,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-links.component.html</context>
<context context-type="linenumber">4,5</context>
</context-group>
<target state="translated">Upravljajte javne povezave do posameznih dokumentov in paketov dokumentov.</target>
<target state="needs-translation">Manage public links to individual documents and document bundles.</target>
</trans-unit>
<trans-unit id="3740311348735113099" datatype="html">
<source>Document links</source>
@@ -12583,7 +12583,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-links.component.html</context>
<context context-type="linenumber">18,19</context>
</context-group>
<target state="translated">Povezave do dokumentov</target>
<target state="needs-translation">Document links</target>
</trans-unit>
<trans-unit id="8216780576869093031" datatype="html">
<source>Bundles</source>
@@ -12591,7 +12591,7 @@
<context context-type="sourcefile">src/app/components/manage/share-links/share-links.component.html</context>
<context context-type="linenumber">26,27</context>
</context-group>
<target state="translated">Paketi</target>
<target state="needs-translation">Bundles</target>
</trans-unit>
<trans-unit id="1229748338333965418" datatype="html">
<source>Use workflows to customize the behavior of Paperless-ngx when events &apos;trigger&apos; a workflow.</source>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="translated">Model vdelave LLM</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="translated">Končna točka vdelave LLM</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="translated">Velikost vdelanega kosa LLM</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="translated">Velikost konteksta LLM</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="translated">Zaledni sistem za LLM</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="translated">Model LLM</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="translated">Ključ API-ja LLM</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="translated">Končna točka LLM</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="translated">Izhodni jezik LLM</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</context>
</context-group>
<target state="translated">Jezik, ki se uporablja za ustvarjene predloge umetne inteligence. Če ni nastavljen, predlogi umetne inteligence uporabljajo uporabnikov jezik prikaza, če je izrecno nastavljen.</target>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="translated">Časovna omejitev zahteve LLM</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="translated">Časovna omejitev v sekundah za zahteve LLM.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Rivendos filters / selection</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Hap first [selected] dokument</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Previous faqe</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Next faqe</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">Pamje "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Dështoi të save pamje "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">Pamje "<x id="PH" equiv-text="savedView.name"/>" created successfully.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="translated">Pamje "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility cilësime.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="translated">Modeli i embedding LLM</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="translated">Endpoint-i i embedding LLM</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="translated">Madhësia e copës për embedding LLM</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="translated">Madhësia e kontekstit LLM</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="translated">Backend-i LLM</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="translated">Modeli LLM</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="translated">Çelësi API i LLM</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="translated">Endpoint-i LLM</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="translated">LLM Output Gjuha</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</context>
</context-group>
<target state="translated">Gjuha to use for generated AI suggestions. When unset, AI suggestions use the përdorues's display language if explicitly set.</target>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="translated">Koha limit e kërkesës LLM</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="translated">Koha limit në sekonda për kërkesat LLM.</target>
</trans-unit>
+21 -37
View File
@@ -10742,7 +10742,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10758,7 +10758,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11042,7 +11042,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Resetuj filtere / selekciju</target>
</trans-unit>
@@ -11050,7 +11050,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Otvorite prvi [selected] dokument</target>
</trans-unit>
@@ -11058,7 +11058,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Prethodna stranica</target>
</trans-unit>
@@ -11066,7 +11066,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Sledeća stranica</target>
</trans-unit>
@@ -11074,7 +11074,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">Prikaz "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" je uspešno sačuvan.</target>
</trans-unit>
@@ -11082,7 +11082,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Nije moguće sačuvati prikaz "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11090,7 +11090,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">Prikaz "<x id="PH" equiv-text="savedView.name"/>" je uspešno kreiran.</target>
</trans-unit>
@@ -11098,7 +11098,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="translated">Prikaz „<x id="PH" equiv-text="savedView.name"/>“ je uspešno kreiran, ali podešavanja vidljivosti nisu ažurirana.</target>
</trans-unit>
@@ -13299,27 +13299,11 @@
</context-group>
<target state="translated">Model ugrađivanja LLM-a</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13327,7 +13311,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13335,7 +13319,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13343,7 +13327,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="translated">LLM Bekend</target>
</trans-unit>
@@ -13351,7 +13335,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="translated">LLM Model</target>
</trans-unit>
@@ -13359,7 +13343,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="translated">LLM API Ključ</target>
</trans-unit>
@@ -13367,7 +13351,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="translated">LLM Endpoint</target>
</trans-unit>
@@ -13375,7 +13359,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13383,7 +13367,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13391,7 +13375,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13399,7 +13383,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+22 -38
View File
@@ -10740,7 +10740,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10756,7 +10756,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11040,7 +11040,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Återställ filter / val</target>
</trans-unit>
@@ -11048,7 +11048,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Öppna första [valt] dokument</target>
</trans-unit>
@@ -11056,7 +11056,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Föregående sida</target>
</trans-unit>
@@ -11064,7 +11064,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Nästa sida</target>
</trans-unit>
@@ -11072,7 +11072,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="final">Vy "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" sparades.</target>
</trans-unit>
@@ -11080,7 +11080,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">Kunde inte spara vy "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11088,7 +11088,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="final">Vy "<x id="PH" equiv-text="savedView.name"/>" skapades.</target>
</trans-unit>
@@ -11096,7 +11096,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="translated">Vyn "<x id="PH" equiv-text="savedView.name"/>" skapades, men synlighetsinställningarna kunde inte uppdateras.</target>
</trans-unit>
@@ -11518,7 +11518,7 @@
<context context-type="sourcefile">src/app/components/manage/document-attributes/custom-fields/custom-fields.component.html</context>
<context context-type="linenumber">70,72</context>
</context-group>
<target state="translated">Inga fält har definierats.</target>
<target state="translated"/>
</trans-unit>
<trans-unit id="3032792139967609806" datatype="html">
<source>Confirm delete field</source>
@@ -13297,27 +13297,11 @@
</context-group>
<target state="translated">Modell för LLM-inbäddning</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="translated">API-nyckel för LLM-inbäddning</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="translated">Används för inbäddningar när inställd, annars används LLM API-nyckel.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="translated">Slutpunkt för LLM-inbäddning</target>
</trans-unit>
@@ -13325,7 +13309,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="translated">Blockstorlek för LLM-inbäddning</target>
</trans-unit>
@@ -13333,7 +13317,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="translated">LLM-kontextstorlek</target>
</trans-unit>
@@ -13341,7 +13325,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="translated">LLM-serverdel</target>
</trans-unit>
@@ -13349,7 +13333,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="translated">LLM-modell</target>
</trans-unit>
@@ -13357,7 +13341,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="translated">LLM-API-nyckel</target>
</trans-unit>
@@ -13365,7 +13349,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="translated">LLM-slutpunkt</target>
</trans-unit>
@@ -13373,7 +13357,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="translated">Utdataspråk för LLM</target>
</trans-unit>
@@ -13381,7 +13365,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</context>
</context-group>
<target state="translated">Språk för genererade AI-förslag. Om inget språk har angetts används användarens visningsspråk, om det uttryckligen har valts.</target>
</trans-unit>
@@ -13389,7 +13373,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="translated">Tidsgräns för LLM-begäran</target>
</trans-unit>
@@ -13397,7 +13381,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="translated">Tidsgräns i sekunder för LLM-begäranden.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="needs-translation">Reset filters / selection</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="needs-translation">Open first [selected] document</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="needs-translation">Previous page</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="needs-translation">Next page</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" saved successfully.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10742,7 +10742,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10758,7 +10758,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11042,7 +11042,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Filtreleri / seçimi sıfırla</target>
</trans-unit>
@@ -11050,7 +11050,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">İlk [selected] belgeyi aç</target>
</trans-unit>
@@ -11058,7 +11058,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Önceki sayfa</target>
</trans-unit>
@@ -11066,7 +11066,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Sonraki sayfa</target>
</trans-unit>
@@ -11074,7 +11074,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">"<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" adlı görünüm başarıyla kaydedildi.</target>
</trans-unit>
@@ -11082,7 +11082,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">"<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" görünümünü kaydederken bir hata ile karşılaşıldı.</target>
</trans-unit>
@@ -11090,7 +11090,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated"><x id="PH" equiv-text="savedView.name"/> adlı görünüm başarıyla oluşturuldu.</target>
</trans-unit>
@@ -11098,7 +11098,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13299,27 +13299,11 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13327,7 +13311,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13335,7 +13319,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13343,7 +13327,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13351,7 +13335,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13359,7 +13343,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13367,7 +13351,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13375,7 +13359,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13383,7 +13367,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13391,7 +13375,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13399,7 +13383,7 @@ tüm <x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="&lt;/em&gt;"/> krite
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">Скинути фільтри / вибір</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">Відкрити перший [selected] документ</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">Попередня сторінка</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">Наступна сторінка</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">Представлення "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" успішно збережено.</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="needs-translation">Failed to save view "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>".</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">Представлення "<x id="PH" equiv-text="savedView.name"/>" успішно створено.</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10797,7 +10797,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10813,7 +10813,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11103,7 +11103,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="final">Đặt lại bộ lọc / bỏ chọn</target>
</trans-unit>
@@ -11111,7 +11111,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="final">Mở tài liệu [Đã chọn] đầu tiên</target>
</trans-unit>
@@ -11119,7 +11119,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="final">Trang trước</target>
</trans-unit>
@@ -11127,7 +11127,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="final">Trang tiếp theo</target>
</trans-unit>
@@ -11135,7 +11135,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="final">Xem "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>" đã lưu thành công.</target>
</trans-unit>
@@ -11143,7 +11143,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="final">
Không thể lưu chế độ xem "".
@@ -11153,7 +11153,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="final">Xem "<x id="PH" equiv-text="savedView.name"/>" đã tạo thành công.</target>
</trans-unit>
@@ -11161,7 +11161,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13432,27 +13432,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13460,7 +13444,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13468,7 +13452,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13476,7 +13460,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13484,7 +13468,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13492,7 +13476,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13500,7 +13484,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13508,7 +13492,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13516,7 +13500,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13524,7 +13508,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13532,7 +13516,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+21 -37
View File
@@ -10740,7 +10740,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10756,7 +10756,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11040,7 +11040,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">重置筛选 / 选择</target>
</trans-unit>
@@ -11048,7 +11048,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">打开第一个 [已选中] 文档</target>
</trans-unit>
@@ -11056,7 +11056,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">上一頁</target>
</trans-unit>
@@ -11064,7 +11064,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">下一頁</target>
</trans-unit>
@@ -11072,7 +11072,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">视图<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>保存成功。</target>
</trans-unit>
@@ -11080,7 +11080,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">无法保存视图 "<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>"。</target>
</trans-unit>
@@ -11088,7 +11088,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">视图:<x id="PH" equiv-text="savedView.name"/>创建成功。</target>
</trans-unit>
@@ -11096,7 +11096,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="translated">已成功创建视图“<x id="PH" equiv-text="savedView.name"/>”,但无法更新可见性设置。</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="translated">LLM 嵌入模型</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="translated">LLM 嵌入接口</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="translated">LLM 嵌入块大小</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="translated">LLM 上下文大小</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="translated">LLM 后端</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="translated">LLM 模型</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="translated">LLM API 密钥</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="translated">LLM 接口</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="translated">LLM 输出语言</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</context>
</context-group>
<target state="translated">用于生成 AI 建议的语言。未设置时,如果用户明确设置了显示语言,AI 建议将使用该语言。</target>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="translated">LLM 请求超时</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="translated">LLM 请求超时时间(秒)。</target>
</trans-unit>
+21 -37
View File
@@ -10741,7 +10741,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">351</context>
<context context-type="linenumber">348</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -10757,7 +10757,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">344</context>
<context context-type="linenumber">341</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/manage/document-attributes/document-attributes.component.html</context>
@@ -11041,7 +11041,7 @@
<source>Reset filters / selection</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">332</context>
<context context-type="linenumber">329</context>
</context-group>
<target state="translated">重置篩條件/選項</target>
</trans-unit>
@@ -11049,7 +11049,7 @@
<source>Open first [selected] document</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">360</context>
<context context-type="linenumber">357</context>
</context-group>
<target state="translated">開啟前 [selected] 個文件</target>
</trans-unit>
@@ -11057,7 +11057,7 @@
<source>Previous page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">376</context>
<context context-type="linenumber">373</context>
</context-group>
<target state="translated">上一頁</target>
</trans-unit>
@@ -11065,7 +11065,7 @@
<source>Next page</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">388</context>
<context context-type="linenumber">385</context>
</context-group>
<target state="translated">下一頁</target>
</trans-unit>
@@ -11073,7 +11073,7 @@
<source>View &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot; saved successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">422</context>
<context context-type="linenumber">419</context>
</context-group>
<target state="translated">檢視表「<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>」儲存成功。</target>
</trans-unit>
@@ -11081,7 +11081,7 @@
<source>Failed to save view &quot;<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>&quot;.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">425</context>
</context-group>
<target state="translated">檢視表「<x id="PH" equiv-text="this.list.activeSavedViewTitle"/>」儲存失敗。</target>
</trans-unit>
@@ -11089,7 +11089,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">497</context>
<context context-type="linenumber">494</context>
</context-group>
<target state="translated">檢視表「<x id="PH" equiv-text="savedView.name"/>」建立成功。</target>
</trans-unit>
@@ -11097,7 +11097,7 @@
<source>View &quot;<x id="PH" equiv-text="savedView.name"/>&quot; created successfully, but could not update visibility settings.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/document-list/document-list.component.ts</context>
<context context-type="linenumber">503</context>
<context context-type="linenumber">500</context>
</context-group>
<target state="needs-translation">View "<x id="PH" equiv-text="savedView.name"/>" created successfully, but could not update visibility settings.</target>
</trans-unit>
@@ -13298,27 +13298,11 @@
</context-group>
<target state="needs-translation">LLM Embedding Model</target>
</trans-unit>
<trans-unit id="861068592166833023" datatype="html">
<source>LLM Embedding API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding API Key</target>
</trans-unit>
<trans-unit id="2929108042259892948" datatype="html">
<source>Used for embeddings when set, otherwise LLM API key is used.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">360</context>
</context-group>
<target state="needs-translation">Used for embeddings when set, otherwise LLM API key is used.</target>
</trans-unit>
<trans-unit id="3554114880473286122" datatype="html">
<source>LLM Embedding Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">366</context>
<context context-type="linenumber">358</context>
</context-group>
<target state="needs-translation">LLM Embedding Endpoint</target>
</trans-unit>
@@ -13326,7 +13310,7 @@
<source>LLM Embedding Chunk Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">373</context>
<context context-type="linenumber">365</context>
</context-group>
<target state="needs-translation">LLM Embedding Chunk Size</target>
</trans-unit>
@@ -13334,7 +13318,7 @@
<source>LLM Context Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">380</context>
<context context-type="linenumber">372</context>
</context-group>
<target state="needs-translation">LLM Context Size</target>
</trans-unit>
@@ -13342,7 +13326,7 @@
<source>LLM Backend</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">387</context>
<context context-type="linenumber">379</context>
</context-group>
<target state="needs-translation">LLM Backend</target>
</trans-unit>
@@ -13350,7 +13334,7 @@
<source>LLM Model</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">395</context>
<context context-type="linenumber">387</context>
</context-group>
<target state="needs-translation">LLM Model</target>
</trans-unit>
@@ -13358,7 +13342,7 @@
<source>LLM API Key</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">402</context>
<context context-type="linenumber">394</context>
</context-group>
<target state="needs-translation">LLM API Key</target>
</trans-unit>
@@ -13366,7 +13350,7 @@
<source>LLM Endpoint</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">409</context>
<context context-type="linenumber">401</context>
</context-group>
<target state="needs-translation">LLM Endpoint</target>
</trans-unit>
@@ -13374,7 +13358,7 @@
<source>LLM Output Language</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">416</context>
<context context-type="linenumber">408</context>
</context-group>
<target state="needs-translation">LLM Output Language</target>
</trans-unit>
@@ -13382,7 +13366,7 @@
<source>Language to use for generated AI suggestions. When unset, AI suggestions use the user&apos;s display language if explicitly set.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">420</context>
<context context-type="linenumber">412</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>
</trans-unit>
@@ -13390,7 +13374,7 @@
<source>LLM Request Timeout</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">424</context>
<context context-type="linenumber">416</context>
</context-group>
<target state="needs-translation">LLM Request Timeout</target>
</trans-unit>
@@ -13398,7 +13382,7 @@
<source>Timeout in seconds for LLM requests.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/data/paperless-config.ts</context>
<context context-type="linenumber">428</context>
<context context-type="linenumber">420</context>
</context-group>
<target state="needs-translation">Timeout in seconds for LLM requests.</target>
</trans-unit>
+2
View File
@@ -148,6 +148,7 @@ import {
send,
shop,
slashCircle,
sliders,
sliders2Vertical,
sortAlphaDown,
sortAlphaUpAlt,
@@ -397,6 +398,7 @@ const icons = {
send,
slashCircle,
shop,
sliders,
sliders2Vertical,
sortAlphaDown,
sortAlphaUpAlt,
-151
View File
@@ -1,151 +0,0 @@
"""Fixtures available to every Paperless-ngx app.
Loaded automatically for every test path. Keep module-scope imports minimal:
this file is imported for every session, so anything heavy belongs inside
the fixture body that needs it.
"""
from __future__ import annotations
from typing import TYPE_CHECKING
import pytest
if TYPE_CHECKING:
from collections.abc import Generator
from pathlib import Path
from django.contrib.auth.models import User
from pytest_django.fixtures import Settings
from rest_framework.test import APIClient
from paperless_testing.dirs import PaperlessDirs
from paperless_testing.fakes.progress import FakeProgressManager
@pytest.fixture(scope="session", autouse=True)
def faker_session_locale() -> str:
"""Pin Faker's locale so generated data does not follow the host locale.
The seed itself is left to pytest-randomly, which derives one per run.
"""
return "en_US"
@pytest.fixture(autouse=True)
def _fast_password_hasher(settings: Settings) -> None:
"""Hash test passwords with MD5 instead of Django's default PBKDF2.
PBKDF2 is deliberately slow, and every ``admin_user`` or
``create_superuser`` call pays for it: about 600 ms each. No test depends
on the hash format, only on ``check_password`` and on the stored value
changing when the password does.
"""
settings.PASSWORD_HASHERS = ["django.contrib.auth.hashers.MD5PasswordHasher"]
@pytest.fixture(autouse=True)
def _clear_content_type_caches() -> None:
"""Clear Django's ContentType cache and guardian's lru_cache before each test.
Tests that delete and reinsert ContentType/Permission rows (e.g. the
importer) corrupt both caches. Without this fixture a subsequent test on
the same xdist worker sees stale ContentType objects and guardian raises
MixedContentTypeError.
"""
from django.contrib.contenttypes.models import ContentType
from guardian.shortcuts import clear_ct_cache
ContentType.objects.clear_cache()
clear_ct_cache()
@pytest.fixture(autouse=True)
def _clear_django_caches() -> None:
"""Clear every configured cache before each test.
Cached values outlive the test that wrote them: the classifier keys its
vectorized content on a hash of the content itself, so a second test
generating the same fixture data takes the cache-hit path and never calls
the code it is asserting against.
"""
from django.core.cache import caches
for cache in caches.all(initialized_only=False):
cache.clear()
@pytest.fixture
def paperless_dirs(
tmp_path: Path,
settings: Settings,
) -> Generator[PaperlessDirs, None, None]:
"""The standard temp directory layout, applied to Django settings."""
from documents.search import reset_backend
from paperless_testing.dirs import build_paperless_dirs
from paperless_testing.dirs import dirs_settings
dirs = build_paperless_dirs(tmp_path)
for name, value in dirs_settings(dirs).items():
setattr(settings, name, value)
# Not directory settings, but they are needed alongside the layout by the
# sanity checker tests.
settings.IGNORABLE_FILES = {".DS_Store", "Thumbs.db", "desktop.ini"}
settings.APP_LOGO = ""
reset_backend()
yield dirs
reset_backend()
@pytest.fixture
def rest_api_client() -> APIClient:
"""The basic DRF APIClient, unauthenticated."""
from rest_framework.test import APIClient
return APIClient()
@pytest.fixture
def regular_user(db: None) -> User:
"""Unprivileged user for permission boundary tests."""
from paperless_testing.factories import UserFactory
return UserFactory(username="regular")
@pytest.fixture
def admin_client(rest_api_client: APIClient, admin_user: User) -> APIClient:
"""Admin client pre-authenticated and sending the v10 Accept header."""
rest_api_client.force_authenticate(user=admin_user)
rest_api_client.credentials(HTTP_ACCEPT="application/json; version=10")
return rest_api_client
@pytest.fixture
def v9_client(rest_api_client: APIClient, admin_user: User) -> APIClient:
"""Admin client pre-authenticated and sending the v9 Accept header."""
rest_api_client.force_authenticate(user=admin_user)
rest_api_client.credentials(HTTP_ACCEPT="application/json; version=9")
return rest_api_client
@pytest.fixture
def user_client(rest_api_client: APIClient, regular_user: User) -> APIClient:
"""Regular-user client pre-authenticated and sending the v10 Accept header."""
rest_api_client.force_authenticate(user=regular_user)
rest_api_client.credentials(HTTP_ACCEPT="application/json; version=10")
return rest_api_client
@pytest.fixture
def fake_progress_manager(
monkeypatch: pytest.MonkeyPatch,
) -> type[FakeProgressManager]:
"""Replace documents.tasks.ProgressManager with the fake, so consuming a file
in a test never tries to reach a broker."""
from paperless_testing.fakes.progress import FakeProgressManager
monkeypatch.setattr("documents.tasks.ProgressManager", FakeProgressManager)
return FakeProgressManager
+1
View File
@@ -26,6 +26,7 @@ class DocumentsConfig(AppConfig):
document_consumption_finished.connect(set_document_type)
document_consumption_finished.connect(set_tags)
document_consumption_finished.connect(set_storage_path)
document_consumption_finished.connect(add_to_index)
document_consumption_finished.connect(run_workflows_added)
document_consumption_finished.connect(add_to_index)
document_consumption_finished.connect(add_or_update_document_in_llm_index)
+2 -3
View File
@@ -857,9 +857,8 @@ class ConsumerPlugin(
self.log.debug(f"Creation date from parse_date: {create_date}")
else:
stats = Path(self.input_doc.original_file).stat()
create_date = datetime.datetime.fromtimestamp(
stats.st_mtime,
tz=timezone.get_current_timezone(),
create_date = timezone.make_aware(
datetime.datetime.fromtimestamp(stats.st_mtime),
)
self.log.debug(f"Creation date from st_mtime: {create_date}")
+63 -50
View File
@@ -196,49 +196,52 @@ class WriteBatch:
return self._raw_writer
def __enter__(self) -> Self:
lock_path = self._backend._path / ".tantivy.lock"
self._lock = filelock.FileLock(str(lock_path))
for attempt in range(_LOCK_RETRY_ATTEMPTS):
try:
self._lock.acquire(timeout=self._lock_timeout)
break
except filelock.Timeout:
if attempt == _LOCK_RETRY_ATTEMPTS - 1:
raise SearchIndexLockError(
f"Could not acquire index lock after {_LOCK_RETRY_ATTEMPTS} "
f"attempts (timeout={self._lock_timeout}s each)",
if self._backend._path is not None:
lock_path = self._backend._path / ".tantivy.lock"
self._lock = filelock.FileLock(str(lock_path))
for attempt in range(_LOCK_RETRY_ATTEMPTS):
try:
self._lock.acquire(timeout=self._lock_timeout)
break
except filelock.Timeout:
if attempt == _LOCK_RETRY_ATTEMPTS - 1:
raise SearchIndexLockError(
f"Could not acquire index lock after {_LOCK_RETRY_ATTEMPTS} "
f"attempts (timeout={self._lock_timeout}s each)",
)
sleep_s = random.uniform(
0,
min(_LOCK_BACKOFF_CAP, _LOCK_BACKOFF_BASE * (2**attempt)),
)
sleep_s = random.uniform(
0,
min(_LOCK_BACKOFF_CAP, _LOCK_BACKOFF_BASE * (2**attempt)),
)
logger.debug(
"Index lock contention; retrying in %.2fs (attempt %d/%d)",
sleep_s,
attempt + 1,
_LOCK_RETRY_ATTEMPTS,
)
time.sleep(sleep_s)
logger.debug(
"Index lock contention; retrying in %.2fs (attempt %d/%d)",
sleep_s,
attempt + 1,
_LOCK_RETRY_ATTEMPTS,
)
time.sleep(sleep_s)
# Open a fresh Index (and thus a fresh Tantivy ManagedDirectory)
# for the write, rather than reusing the process-local cached
# index. ManagedDirectory loads its GC bookkeeping (.managed.json)
# once, at construction, and never re-reads it; paperless runs
# several long-lived processes (Granian workers, Celery workers)
# that take turns writing under the file lock above. A cached,
# long-lived writer index would carry a stale managed-files view
# and, on commit, overwrite .managed.json with that stale view -
# permanently losing track of segment files other processes
# registered in the meantime, so they can never be garbage
# collected. Reopening fresh here always picks up the current
# on-disk state. The long-lived self._backend._index is used for
# reads only and is reloaded (not reopened) after commit below.
write_index = tantivy.Index(
build_schema(),
path=str(self._backend._path),
)
register_tokenizers(write_index, settings.SEARCH_LANGUAGE)
self._raw_writer = write_index.writer()
# Open a fresh Index (and thus a fresh Tantivy ManagedDirectory)
# for the write, rather than reusing the process-local cached
# index. ManagedDirectory loads its GC bookkeeping (.managed.json)
# once, at construction, and never re-reads it; paperless runs
# several long-lived processes (Granian workers, Celery workers)
# that take turns writing under the file lock above. A cached,
# long-lived writer index would carry a stale managed-files view
# and, on commit, overwrite .managed.json with that stale view -
# permanently losing track of segment files other processes
# registered in the meantime, so they can never be garbage
# collected. Reopening fresh here always picks up the current
# on-disk state. The long-lived self._backend._index is used for
# reads only and is reloaded (not reopened) after commit below.
write_index = tantivy.Index(
build_schema(),
path=str(self._backend._path),
)
register_tokenizers(write_index, settings.SEARCH_LANGUAGE)
self._raw_writer = write_index.writer()
else:
self._raw_writer = self._backend._index.writer()
return self
def __exit__(self, exc_type, exc_val, exc_tb):
@@ -369,8 +372,9 @@ class TantivyBackend:
Tantivy search backend with explicit lifecycle management.
Provides full-text search capabilities using the Tantivy search engine.
Keeps a persistent on-disk index. Handles document indexing, search queries,
autocompletion, and "more like this" functionality.
Supports in-memory indexes (for testing) and persistent on-disk indexes
(for production use). Handles document indexing, search queries, autocompletion,
and "more like this" functionality.
The backend manages its own connection lifecycle and can be reset when
the underlying index directory changes (e.g., during test isolation).
@@ -404,7 +408,9 @@ class TantivyBackend:
},
)
def __init__(self, path: Path):
def __init__(self, path: Path | None = None):
# path=None → in-memory index (for tests)
# path=some_dir → on-disk index (for production)
self._path = path
self._raw_index: tantivy.Index | None = None
self._raw_schema: tantivy.Schema | None = None
@@ -423,13 +429,16 @@ class TantivyBackend:
"""
Open or rebuild the index as needed.
Checks if rebuilding is needed due to schema version or language
changes. Registers custom tokenizers after opening.
For disk-based indexes, checks if rebuilding is needed due to schema
version or language changes. Registers custom tokenizers after opening.
Safe to call multiple times - subsequent calls are no-ops.
"""
if self._raw_index is not None:
return # pragma: no cover
self._raw_index = open_or_rebuild_index(self._path)
if self._path is not None:
self._raw_index = open_or_rebuild_index(self._path)
else:
self._raw_index = tantivy.Index(build_schema())
register_tokenizers(self._raw_index, settings.SEARCH_LANGUAGE)
self._raw_schema = self._raw_index.schema
@@ -1093,9 +1102,13 @@ class TantivyBackend:
writer's threads). Larger values buffer more docs in RAM before
flushing a segment, deferring merge work; they do not avoid it.
"""
wipe_index(self._path)
new_index = tantivy.Index(build_schema(), path=str(self._path))
_write_sentinels(self._path)
# Create new index (on-disk or in-memory)
if self._path is not None:
wipe_index(self._path)
new_index = tantivy.Index(build_schema(), path=str(self._path))
_write_sentinels(self._path)
else:
new_index = tantivy.Index(build_schema())
register_tokenizers(new_index, settings.SEARCH_LANGUAGE)
# Point instance at the new index so _build_tantivy_doc uses it
+1 -3
View File
@@ -2098,8 +2098,6 @@ class BulkEditSerializer(
if not isinstance(parameters["pages"], str):
raise serializers.ValidationError("invalid pages specified")
page_count = Document.objects.get(id=document_id).page_count
if not page_count:
raise serializers.ValidationError("document page count is unknown")
pages = []
for group in parameters["pages"].split(","):
start, is_range, end = group.partition("-")
@@ -2109,7 +2107,7 @@ class BulkEditSerializer(
except ValueError as e:
raise serializers.ValidationError("invalid pages specified") from e
# Bound the range before building it, a huge one would exhaust memory
if not 1 <= first <= last <= page_count:
if not 1 <= first <= last or (page_count and last > page_count):
raise serializers.ValidationError("invalid pages specified")
pages.append(list(range(first, last + 1)))
parameters["pages"] = pages
+1 -6
View File
@@ -56,7 +56,6 @@ from documents.permissions import get_objects_for_user_owner_aware
from documents.plugins.helpers import DocumentsStatusManager
from documents.templating.utils import convert_format_str_to_template_format
from documents.utils import compute_checksum
from documents.utils import copy_file_with_basic_stats
from documents.workflows.actions import build_workflow_action_context
from documents.workflows.actions import execute_email_action
from documents.workflows.actions import execute_move_to_trash_action
@@ -364,11 +363,7 @@ def cleanup_document_deletion(sender, instance, **kwargs) -> None:
logger.debug(f"Moving {instance.source_path} to trash at {new_file_path}")
try:
shutil.move(
instance.source_path,
new_file_path,
copy_function=copy_file_with_basic_stats,
)
shutil.move(instance.source_path, new_file_path)
except OSError as e:
logger.error(
f"Failed to move {instance.source_path} to trash at "
+143 -18
View File
@@ -1,41 +1,88 @@
import shutil
import zoneinfo
from collections.abc import Generator
from dataclasses import dataclass
from pathlib import Path
from typing import TYPE_CHECKING
import filelock
import pytest
from django.contrib.auth import get_user_model
from django.contrib.contenttypes.models import ContentType
from guardian.shortcuts import clear_ct_cache
from pytest_django.fixtures import Settings
from rest_framework.test import APIClient
from paperless_testing.factories import DocumentFactory
from documents.tests.factories import DocumentFactory
UserModelT = get_user_model()
if TYPE_CHECKING:
from documents.models import Document
from paperless_testing.dirs import PaperlessDirs
@dataclass(frozen=True, slots=True)
class PaperlessDirs:
"""Standard Paperless-ngx directory layout for tests."""
media: Path
originals: Path
archive: Path
thumbnails: Path
@pytest.fixture(scope="session")
def document_samples_dir() -> Path:
def samples_dir() -> Path:
"""Path to the shared test sample documents."""
return Path(__file__).parent / "samples" / "documents"
@pytest.fixture()
def paperless_dirs(tmp_path: Path) -> PaperlessDirs:
"""Create and return the directory structure for testing."""
media = tmp_path / "media"
dirs = PaperlessDirs(
media=media,
originals=media / "documents" / "originals",
archive=media / "documents" / "archive",
thumbnails=media / "documents" / "thumbnails",
)
for d in (dirs.originals, dirs.archive, dirs.thumbnails):
d.mkdir(parents=True)
return dirs
@pytest.fixture()
def _media_settings(paperless_dirs: PaperlessDirs, settings) -> None:
"""Configure Django settings to point at temp directories."""
settings.MEDIA_ROOT = paperless_dirs.media
settings.ORIGINALS_DIR = paperless_dirs.originals
settings.ARCHIVE_DIR = paperless_dirs.archive
settings.THUMBNAIL_DIR = paperless_dirs.thumbnails
settings.MEDIA_LOCK = paperless_dirs.media / "media.lock"
settings.IGNORABLE_FILES = {".DS_Store", "Thumbs.db", "desktop.ini"}
settings.APP_LOGO = ""
@pytest.fixture()
def sample_doc(
paperless_dirs: "PaperlessDirs",
document_samples_dir: Path,
paperless_dirs: PaperlessDirs,
_media_settings: None,
samples_dir: Path,
) -> "Document":
"""Create a document with valid files and matching checksums."""
with filelock.FileLock(paperless_dirs.media_lock):
with filelock.FileLock(paperless_dirs.media / "media.lock"):
shutil.copy(
document_samples_dir / "originals" / "0000001.pdf",
paperless_dirs.originals_dir / "0000001.pdf",
samples_dir / "originals" / "0000001.pdf",
paperless_dirs.originals / "0000001.pdf",
)
shutil.copy(
document_samples_dir / "archive" / "0000001.pdf",
paperless_dirs.archive_dir / "0000001.pdf",
samples_dir / "archive" / "0000001.pdf",
paperless_dirs.archive / "0000001.pdf",
)
shutil.copy(
document_samples_dir / "thumbnails" / "0000001.webp",
paperless_dirs.thumbnail_dir / "0000001.webp",
samples_dir / "thumbnails" / "0000001.webp",
paperless_dirs.thumbnails / "0000001.webp",
)
return DocumentFactory(
@@ -50,17 +97,95 @@ def sample_doc(
)
@pytest.fixture
def _search_index(paperless_dirs: "PaperlessDirs") -> None:
"""Point the search backend at a fresh, empty index directory.
@pytest.fixture()
def _search_index(
tmp_path: Path,
settings: Settings,
) -> Generator[None, None, None]:
"""Create a temp index directory and point INDEX_DIR at it.
paperless_dirs owns INDEX_DIR and resets the backend singleton on both
sides of the test, so requesting it is all that is needed.
Resets the backend singleton before and after so each test gets a clean
index rather than reusing a stale singleton from another test.
"""
from documents.search import reset_backend
index_dir = tmp_path / "index"
index_dir.mkdir()
settings.INDEX_DIR = index_dir
reset_backend()
yield
reset_backend()
@pytest.fixture()
def settings_timezone(settings: Settings) -> zoneinfo.ZoneInfo:
return zoneinfo.ZoneInfo(settings.TIME_ZONE)
@pytest.fixture
def searchable_document(_search_index: None) -> "Document":
def rest_api_client():
"""
The basic DRF ApiClient
"""
yield APIClient()
@pytest.fixture()
def regular_user(django_user_model: type[UserModelT]) -> UserModelT:
"""Unprivileged authenticated user for permission boundary tests."""
return django_user_model.objects.create_user(username="regular", password="regular")
@pytest.fixture()
def admin_client(rest_api_client: APIClient, admin_user: UserModelT) -> APIClient:
"""Admin client pre-authenticated and sending the v10 Accept header."""
rest_api_client.force_authenticate(user=admin_user)
rest_api_client.credentials(HTTP_ACCEPT="application/json; version=10")
return rest_api_client
@pytest.fixture()
def v9_client(rest_api_client: APIClient, admin_user: UserModelT) -> APIClient:
"""Admin client pre-authenticated and sending the v9 Accept header."""
rest_api_client.force_authenticate(user=admin_user)
rest_api_client.credentials(HTTP_ACCEPT="application/json; version=9")
return rest_api_client
@pytest.fixture()
def user_client(rest_api_client: APIClient, regular_user: UserModelT) -> APIClient:
"""Regular-user client pre-authenticated and sending the v10 Accept header."""
rest_api_client.force_authenticate(user=regular_user)
rest_api_client.credentials(HTTP_ACCEPT="application/json; version=10")
return rest_api_client
@pytest.fixture(autouse=True)
def _clear_content_type_caches() -> None:
"""Clear Django's ContentType cache and guardian's lru_cache before each test.
Tests that delete and reinsert ContentType/Permission rows (e.g. the
importer) corrupt both caches. Without this fixture a subsequent test on
the same xdist worker sees stale ContentType objects and guardian raises
MixedContentTypeError.
"""
ContentType.objects.clear_cache()
clear_ct_cache()
@pytest.fixture(scope="session", autouse=True)
def faker_session_locale():
"""Set Faker locale for reproducibility."""
return "en_US"
@pytest.fixture(scope="session", autouse=True)
def faker_seed():
return 12345
@pytest.fixture
def indexed_document(_search_index: None) -> "Document":
"""One searchable document, for tests about what the search endpoint
returns rather than about what it finds.
"""
@@ -78,10 +78,7 @@ class UserFactory(DjangoModelFactory[UserModelT]):
username = factory.Sequence(lambda n: f"user{n}")
is_staff = False
is_superuser = False
# Hashing a real password costs about half a second per user, and no test
# authenticates with its password. None gives the unusable password
# create_user() gives.
password = factory.django.Password(None)
password = factory.django.Password("test")
class Params:
superuser = factory.Trait(is_staff=True, is_superuser=True)
-10
View File
@@ -1,10 +0,0 @@
import re
def dummy_preprocess(content: str) -> str:
"""
Simpler, faster pre-processing for testing purposes
"""
content = content.lower().strip()
content = re.sub(r"\s+", " ", content)
return content
@@ -15,11 +15,11 @@ from rich.console import Console
from documents.management.commands.document_sanity_checker import Command
from documents.sanity_checker import SanityCheckMessages
from paperless_testing.factories import DocumentFactory
from documents.tests.factories import DocumentFactory
if TYPE_CHECKING:
from documents.models import Document
from paperless_testing.dirs import PaperlessDirs
from documents.tests.conftest import PaperlessDirs
def _render_to_string(messages: SanityCheckMessages) -> str:
@@ -71,7 +71,7 @@ class TestRenderResultsWithIssues:
assert "INFO" in output
assert "No OCR data" in output
@pytest.mark.usefixtures("paperless_dirs")
@pytest.mark.usefixtures("_media_settings")
def test_global_message(self) -> None:
msgs = SanityCheckMessages()
msgs.warning(None, "Orphaned file: /tmp/stray.pdf")
@@ -87,7 +87,7 @@ class TestRenderResultsWithIssues:
assert "Thumbnail missing" in output
assert "Checksum mismatch" in output
@pytest.mark.usefixtures("paperless_dirs")
@pytest.mark.usefixtures("_media_settings")
def test_unknown_doc_pk(self) -> None:
msgs = SanityCheckMessages()
msgs.error(99999, "Ghost document")
@@ -184,6 +184,7 @@ class TestDocumentSanityCheckerCommand:
assert "ERROR" in output
assert "Original of document does not exist" in output
@pytest.mark.usefixtures("_media_settings")
def test_checksum_mismatch(self, paperless_dirs: PaperlessDirs) -> None:
"""Lightweight document with zero-byte files triggers checksum mismatch."""
doc = DocumentFactory(
+12 -4
View File
@@ -9,21 +9,29 @@ from documents.search._backend import TantivyBackend
from documents.search._backend import reset_backend
from documents.search._schema import build_schema
from documents.search._tokenizer import register_tokenizers
from paperless_testing.factories import DocumentFactory
from documents.tests.factories import DocumentFactory
if TYPE_CHECKING:
from collections.abc import Callable
from collections.abc import Generator
from pathlib import Path
from pytest_django.fixtures import Settings
from documents.models import Document
from paperless_testing.dirs import PaperlessDirs
@pytest.fixture
def backend(paperless_dirs: PaperlessDirs) -> Generator[TantivyBackend, None, None]:
b = TantivyBackend(path=paperless_dirs.index_dir)
def index_dir(tmp_path: Path, settings: Settings) -> Path:
path = tmp_path / "index"
path.mkdir()
settings.INDEX_DIR = path
return path
@pytest.fixture
def backend() -> Generator[TantivyBackend, None, None]:
b = TantivyBackend() # path=None → in-memory index
b.open()
try:
yield b
@@ -14,6 +14,7 @@ from typing import TYPE_CHECKING
import pytest
import time_machine
from django.contrib.auth.models import User
from documents.models import CustomField
from documents.models import CustomFieldInstance
@@ -21,8 +22,7 @@ from documents.models import DocumentType
from documents.models import Note
from documents.models import StoragePath
from documents.search._query import parse_user_query
from paperless_testing.factories import DocumentFactory
from paperless_testing.factories import UserFactory
from documents.tests.factories import DocumentFactory
if TYPE_CHECKING:
from collections.abc import Callable
@@ -148,7 +148,7 @@ class TestJsonSubpaths:
THEN:
- Only the document with alice's note matches
"""
alice = UserFactory(username="alice")
alice = User.objects.create_user(username="alice")
doc_with_note = DocumentFactory(
title="Has note",
content="x",
+16 -17
View File
@@ -3,8 +3,10 @@ from pathlib import Path
import pytest
from django.contrib.auth.models import Group
from django.contrib.auth.models import User
from django.db import connection
from django.test.utils import CaptureQueriesContext
from guardian.shortcuts import assign_perm
from pytest_mock import MockerFixture
from documents.models import CustomField
@@ -17,12 +19,11 @@ from documents.search._backend import WriteBatch
from documents.search._backend import get_backend
from documents.search._backend import reset_backend
from documents.signals.handlers import add_to_index
from paperless_testing.factories import CorrespondentFactory
from paperless_testing.factories import DocumentFactory
from paperless_testing.factories import DocumentTypeFactory
from paperless_testing.factories import TagFactory
from paperless_testing.factories import UserFactory
from paperless_testing.permissions import grant_object
from documents.tests.factories import CorrespondentFactory
from documents.tests.factories import DocumentFactory
from documents.tests.factories import DocumentTypeFactory
from documents.tests.factories import TagFactory
from documents.tests.factories import UserFactory
pytestmark = [pytest.mark.search, pytest.mark.django_db]
@@ -188,7 +189,7 @@ class TestAddOrUpdateIds:
pk=1,
owner=owner,
)
grant_object(user, doc, "view_document")
assign_perm("view_document", user, doc)
with backend.batch_update() as batch:
batch.add_or_update_ids([doc.pk])
@@ -208,7 +209,7 @@ class TestAddOrUpdateIds:
pk=1,
owner=owner,
)
grant_object(group, doc, "view_document")
assign_perm("view_document", group, doc)
with backend.batch_update() as batch:
batch.add_or_update_ids([doc.pk])
@@ -762,8 +763,8 @@ class TestSearchIds:
def test_respects_permission_filter(self, backend: TantivyBackend) -> None:
"""search_ids must respect user permission filtering."""
owner = UserFactory(username="ids_owner")
other = UserFactory(username="ids_other")
owner = User.objects.create_user("ids_owner")
other = User.objects.create_user("ids_other")
doc = Document.objects.create(
title="private doc",
content="secret keyword",
@@ -842,7 +843,7 @@ class TestRebuild:
content="group secret keyword",
owner=owner,
)
grant_object(group, doc, "view_document")
assign_perm("view_document", group, doc)
backend.rebuild(Document.objects.all())
@@ -947,8 +948,7 @@ class TestSingleton:
yield
reset_backend()
@pytest.mark.usefixtures("paperless_dirs")
def test_returns_same_instance_on_repeated_calls(self) -> None:
def test_returns_same_instance_on_repeated_calls(self, index_dir) -> None:
"""Singleton pattern: repeated calls to get_backend() must return the same instance."""
assert get_backend() is get_backend()
@@ -965,8 +965,7 @@ class TestSingleton:
assert b1 is not b2
assert b2._path == tmp_path / "b"
@pytest.mark.usefixtures("paperless_dirs")
def test_reset_forces_new_instance(self) -> None:
def test_reset_forces_new_instance(self, index_dir) -> None:
"""reset_backend() must force creation of a new backend instance on next get_backend() call."""
b1 = get_backend()
reset_backend()
@@ -1072,7 +1071,7 @@ class TestFieldHandling:
def test_notes_include_user_information(self, backend: TantivyBackend) -> None:
"""Notes must be indexed with user information when available for structured queries."""
user = UserFactory(username="notewriter")
user = User.objects.create_user("notewriter")
doc = Document.objects.create(
title="Doc with notes",
content="test",
@@ -1174,7 +1173,7 @@ class TestHighlightHits:
notes.note: prefix so the query targets notes content directly, but
the snippet is generated from notes_text which stores the same text.
"""
user = UserFactory(username="hl_noteuser")
user = User.objects.create_user("hl_noteuser")
doc = Document.objects.create(
title="Doc with matching note",
content="unrelated content",
@@ -27,7 +27,7 @@ import time_machine
from documents.models import Note
from documents.models import Tag
from documents.search._errors import InvalidDateQuery
from paperless_testing.factories import DocumentFactory
from documents.tests.factories import DocumentFactory
if TYPE_CHECKING:
from collections.abc import Callable
@@ -269,7 +269,7 @@ class TestDocumentedDateForms:
yield
@pytest.fixture
def dated(self, backend: TantivyBackend) -> dict[str, int]:
def dated(self, index_document: Callable[..., Document]) -> dict[str, int]:
stamps = {
"today": datetime(2026, 6, 15, 9, 0, tzinfo=UTC),
"yesterday": datetime(2026, 6, 14, 9, 0, tzinfo=UTC),
@@ -279,14 +279,14 @@ class TestDocumentedDateForms:
"january": datetime(2026, 1, 10, 10, 0, tzinfo=UTC),
"old": datetime(2005, 3, 4, 15, 30, tzinfo=UTC),
}
docs = {
label: DocumentFactory(title=label, content="dated body", added=stamp)
return {
label: index_document(
title=label,
content="dated body",
added=stamp,
).pk
for label, stamp in stamps.items()
}
with backend.batch_update() as batch:
for doc in docs.values():
batch.add_or_update(doc)
return {label: doc.pk for label, doc in docs.items()}
@pytest.mark.parametrize(
("query", "label"),
@@ -29,7 +29,7 @@ from rest_framework import status
from documents.search._backend import SearchMode
from documents.search._query import parse_simple_text_highlight_query
from paperless_testing.factories import DocumentFactory
from documents.tests.factories import DocumentFactory
if TYPE_CHECKING:
from rest_framework.test import APIClient
@@ -17,12 +17,12 @@ from __future__ import annotations
from typing import TYPE_CHECKING
import pytest
from django.contrib.auth.models import User
from documents.models import CustomField
from documents.models import CustomFieldInstance
from documents.models import Note
from paperless_testing.factories import DocumentFactory
from paperless_testing.factories import UserFactory
from documents.tests.factories import DocumentFactory
if TYPE_CHECKING:
from collections.abc import Callable
@@ -53,7 +53,7 @@ class TestBareJsonFieldPrefixes:
decoy's content match does not resurface through a demoted
text search
"""
alice = UserFactory(username="alice")
alice = User.objects.create_user(username="alice")
with_note = DocumentFactory(title="Has note", content="x")
Note.objects.create(document=with_note, user=alice, note="crocodile")
backend.add_or_update(with_note)
@@ -116,7 +116,7 @@ class TestBareJsonFieldPrefixes:
document; the default-subpath resolution for the bare
prefix does not interfere with explicit subpath addressing
"""
bob = UserFactory(username="bob")
bob = User.objects.create_user(username="bob")
doc = DocumentFactory(title="Bob note", content="x")
Note.objects.create(document=doc, user=bob, note="remark")
backend.add_or_update(doc)
@@ -20,6 +20,7 @@ from typing import TYPE_CHECKING
import pytest
import tantivy
from django.contrib.auth.models import User
from whoosh_compat import FieldKind
from documents.models import CustomField
@@ -27,7 +28,6 @@ from documents.models import CustomFieldInstance
from documents.models import Document
from documents.models import Note
from documents.search._fields import PUBLIC_FIELDS
from paperless_testing.factories import UserFactory
if TYPE_CHECKING:
from documents.search._backend import TantivyBackend
@@ -49,7 +49,7 @@ class TestJsonSubpathsAreWrittenAtIndexTime:
- Every subpath PUBLIC_FIELDS declares for notes/custom_fields
is present as a key in the document's stored JSON payload
"""
user = UserFactory(username="completeness-user")
user = User.objects.create_user(username="completeness-user")
field = CustomField.objects.create(
name="Completeness Field",
data_type=CustomField.FieldDataType.STRING,
@@ -15,7 +15,7 @@ from documents.search._backend import SearchIndexLockError
from documents.search._backend import TantivyBackend
from documents.tasks import index_document
from documents.tasks import remove_document_from_index
from paperless_testing.factories import DocumentFactory
from documents.tests.factories import DocumentFactory
if TYPE_CHECKING:
from collections.abc import Generator
@@ -1,6 +1,6 @@
import pytest
from paperless_testing.migrations import TestMigrations
from documents.tests.utils import TestMigrations
pytestmark = pytest.mark.search
@@ -18,14 +18,13 @@ from typing import TYPE_CHECKING
import pytest
from django.contrib.auth.models import Group
from django.contrib.auth.models import User
from guardian.shortcuts import assign_perm
from documents.models import Correspondent
from documents.models import Document
from documents.models import DocumentType
from documents.models import StoragePath
from documents.models import Tag
from paperless_testing.factories import UserFactory
from paperless_testing.permissions import grant_object
if TYPE_CHECKING:
from documents.search._backend import TantivyBackend
@@ -35,22 +34,22 @@ pytestmark = [pytest.mark.search, pytest.mark.django_db]
@pytest.fixture
def owner() -> User:
return UserFactory(username="owner")
return User.objects.create_user(username="owner")
@pytest.fixture
def stranger() -> User:
return UserFactory(username="stranger")
return User.objects.create_user(username="stranger")
@pytest.fixture
def viewer() -> User:
return UserFactory(username="viewer")
return User.objects.create_user(username="viewer")
@pytest.fixture
def group_member() -> User:
user = UserFactory(username="group_member")
user = User.objects.create_user(username="group_member")
user.groups.add(Group.objects.create(name="accounting"))
return user
@@ -128,7 +127,7 @@ class TestPermissionFilteringOnIndexedDocuments:
checksum="perm-shared-user",
owner=owner,
)
grant_object(viewer, doc, "view_document")
assign_perm("view_document", viewer, doc)
backend.add_or_update(doc)
assert backend.search_ids("invoice", user=viewer) == [doc.pk]
@@ -158,7 +157,7 @@ class TestPermissionFilteringOnIndexedDocuments:
checksum="perm-shared-group",
owner=owner,
)
grant_object(group_member.groups.first(), doc, "view_document")
assign_perm("view_document", group_member.groups.first(), doc)
backend.add_or_update(doc)
assert backend.search_ids("invoice", user=group_member) == [doc.pk]
+19 -22
View File
@@ -13,11 +13,11 @@ from documents.search._schema import needs_rebuild
from documents.search._schema import schema_fingerprint
if TYPE_CHECKING:
from pathlib import Path
import tantivy
from pytest_django.fixtures import Settings
from paperless_testing.dirs import PaperlessDirs
pytestmark = pytest.mark.search
@@ -25,19 +25,16 @@ pytestmark = pytest.mark.search
class TestNeedsRebuild:
"""needs_rebuild covers all sentinel-file states that require a full reindex."""
def test_returns_true_when_settings_file_missing(
self,
paperless_dirs: PaperlessDirs,
) -> None:
assert needs_rebuild(paperless_dirs.index_dir) is True
def test_returns_true_when_settings_file_missing(self, index_dir: Path) -> None:
assert needs_rebuild(index_dir) is True
def test_returns_false_when_version_and_language_match(
self,
paperless_dirs: PaperlessDirs,
index_dir: Path,
settings: Settings,
) -> None:
settings.SEARCH_LANGUAGE = "en"
(paperless_dirs.index_dir / ".index_settings.json").write_text(
(index_dir / ".index_settings.json").write_text(
json.dumps(
{
"schema_version": SCHEMA_VERSION,
@@ -46,51 +43,51 @@ class TestNeedsRebuild:
},
),
)
assert needs_rebuild(paperless_dirs.index_dir) is False
assert needs_rebuild(index_dir) is False
def test_returns_true_on_schema_version_mismatch(
self,
paperless_dirs: PaperlessDirs,
index_dir: Path,
settings: Settings,
) -> None:
settings.SEARCH_LANGUAGE = None
(paperless_dirs.index_dir / ".index_settings.json").write_text(
(index_dir / ".index_settings.json").write_text(
json.dumps({"schema_version": SCHEMA_VERSION - 1, "language": None}),
)
assert needs_rebuild(paperless_dirs.index_dir) is True
assert needs_rebuild(index_dir) is True
def test_returns_true_when_version_is_not_an_integer(
self,
paperless_dirs: PaperlessDirs,
index_dir: Path,
settings: Settings,
) -> None:
settings.SEARCH_LANGUAGE = None
(paperless_dirs.index_dir / ".index_settings.json").write_text(
(index_dir / ".index_settings.json").write_text(
json.dumps({"schema_version": "not-a-number", "language": None}),
)
assert needs_rebuild(paperless_dirs.index_dir) is True
assert needs_rebuild(index_dir) is True
def test_returns_true_when_language_key_missing(
self,
paperless_dirs: PaperlessDirs,
index_dir: Path,
settings: Settings,
) -> None:
settings.SEARCH_LANGUAGE = "en"
(paperless_dirs.index_dir / ".index_settings.json").write_text(
(index_dir / ".index_settings.json").write_text(
json.dumps({"schema_version": SCHEMA_VERSION}),
)
assert needs_rebuild(paperless_dirs.index_dir) is True
assert needs_rebuild(index_dir) is True
def test_returns_true_when_language_differs(
self,
paperless_dirs: PaperlessDirs,
index_dir: Path,
settings: Settings,
) -> None:
settings.SEARCH_LANGUAGE = "de"
(paperless_dirs.index_dir / ".index_settings.json").write_text(
(index_dir / ".index_settings.json").write_text(
json.dumps({"schema_version": SCHEMA_VERSION, "language": "en"}),
)
assert needs_rebuild(paperless_dirs.index_dir) is True
assert needs_rebuild(index_dir) is True
def _schema_fields(schema: tantivy.Schema) -> dict[str, dict]:
@@ -35,8 +35,6 @@ if TYPE_CHECKING:
from pytest_django.fixtures import SettingsWrapper
from paperless_testing.dirs import PaperlessDirs
pytestmark = pytest.mark.search
# The on-disk field layout of a v2 index, pinned as data. Any edit here is an
@@ -471,7 +469,7 @@ def _fingerprint_of(descriptors: list[FieldDescriptor]) -> str:
class TestNeedsRebuildOnFingerprint:
def test_matching_fingerprint_does_not_rebuild(
self,
paperless_dirs: PaperlessDirs,
index_dir: Path,
settings: SettingsWrapper,
) -> None:
"""
@@ -484,13 +482,13 @@ class TestNeedsRebuildOnFingerprint:
- It returns False
"""
settings.SEARCH_LANGUAGE = None
_sentinels(paperless_dirs.index_dir)
_sentinels(index_dir)
assert needs_rebuild(paperless_dirs.index_dir) is False
assert needs_rebuild(index_dir) is False
def test_stale_fingerprint_rebuilds_despite_a_matching_version(
self,
paperless_dirs: PaperlessDirs,
index_dir: Path,
settings: SettingsWrapper,
monkeypatch: pytest.MonkeyPatch,
) -> None:
@@ -507,7 +505,7 @@ class TestNeedsRebuildOnFingerprint:
every subsequent write would raise
"""
settings.SEARCH_LANGUAGE = None
_sentinels(paperless_dirs.index_dir)
_sentinels(index_dir)
extended = [
*field_descriptors(),
FieldDescriptor(
@@ -521,11 +519,11 @@ class TestNeedsRebuildOnFingerprint:
]
monkeypatch.setattr(_schema, "field_descriptors", lambda: extended)
assert needs_rebuild(paperless_dirs.index_dir) is True
assert needs_rebuild(index_dir) is True
def test_reordered_schema_rebuilds(
self,
paperless_dirs: PaperlessDirs,
index_dir: Path,
settings: SettingsWrapper,
monkeypatch: pytest.MonkeyPatch,
) -> None:
@@ -540,16 +538,16 @@ class TestNeedsRebuildOnFingerprint:
- It returns True
"""
settings.SEARCH_LANGUAGE = None
_sentinels(paperless_dirs.index_dir)
_sentinels(index_dir)
reordered = field_descriptors()
reordered[1], reordered[2] = reordered[2], reordered[1]
monkeypatch.setattr(_schema, "field_descriptors", lambda: reordered)
assert needs_rebuild(paperless_dirs.index_dir) is True
assert needs_rebuild(index_dir) is True
def test_missing_fingerprint_rebuilds(
self,
paperless_dirs: PaperlessDirs,
index_dir: Path,
settings: SettingsWrapper,
) -> None:
"""
@@ -563,15 +561,15 @@ class TestNeedsRebuildOnFingerprint:
is rebuilt rather than trusted
"""
settings.SEARCH_LANGUAGE = None
(paperless_dirs.index_dir / ".index_settings.json").write_text(
(index_dir / ".index_settings.json").write_text(
json.dumps({"schema_version": SCHEMA_VERSION, "language": None}),
)
assert needs_rebuild(paperless_dirs.index_dir) is True
assert needs_rebuild(index_dir) is True
def test_written_sentinels_satisfy_the_check(
self,
paperless_dirs: PaperlessDirs,
index_dir: Path,
settings: SettingsWrapper,
) -> None:
"""
@@ -584,6 +582,6 @@ class TestNeedsRebuildOnFingerprint:
- It returns False
"""
settings.SEARCH_LANGUAGE = "en"
_write_sentinels(paperless_dirs.index_dir)
_write_sentinels(index_dir)
assert needs_rebuild(paperless_dirs.index_dir) is False
assert needs_rebuild(index_dir) is False
+4 -4
View File
@@ -16,11 +16,11 @@ from documents.models import Document
from documents.models import Tag
from documents.search import get_backend
from documents.search import reset_backend
from documents.tests.factories import DocumentFactory
from documents.tests.factories import TagFactory
from documents.tests.factories import UserFactory
from documents.tests.utils import DirectoriesMixin
from paperless.admin import PaperlessUserAdmin
from paperless_testing.dirs import DirectoriesMixin
from paperless_testing.factories import DocumentFactory
from paperless_testing.factories import TagFactory
from paperless_testing.factories import UserFactory
@pytest.fixture
+5 -49
View File
@@ -3,6 +3,7 @@ from io import BytesIO
from pathlib import Path
from unittest.mock import patch
from django.contrib.auth.models import User
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import override_settings
from PIL import Image
@@ -10,11 +11,10 @@ from PIL.PngImagePlugin import PngInfo
from rest_framework import status
from rest_framework.test import APITestCase
from documents.tests.utils import DirectoriesMixin
from documents.tests.utils import read_streaming_response
from paperless.models import ApplicationConfiguration
from paperless.models import ColorConvertChoices
from paperless_testing.dirs import DirectoriesMixin
from paperless_testing.factories import UserFactory
from paperless_testing.http import read_streaming_response
class TestApiAppConfig(DirectoriesMixin, APITestCase):
@@ -23,7 +23,7 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase):
def setUp(self) -> None:
super().setUp()
user = UserFactory(username="temp_admin", superuser=True)
user = User.objects.create_superuser(username="temp_admin")
self.client.force_authenticate(user=user)
def test_api_get_config(self) -> None:
@@ -81,7 +81,6 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase):
"ai_enabled": None,
"llm_embedding_backend": None,
"llm_embedding_model": None,
"llm_embedding_api_key": None,
"llm_embedding_endpoint": None,
"llm_embedding_chunk_size": None,
"llm_context_size": None,
@@ -268,7 +267,7 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase):
THEN:
- old app_logo file is deleted
"""
admin = UserFactory(username="admin", superuser=True)
admin = User.objects.create_superuser(username="admin")
self.client.force_login(user=admin)
response = self.client.get("/logo/")
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
@@ -923,49 +922,6 @@ class TestApiAppConfig(DirectoriesMixin, APITestCase):
self.assertEqual(response.status_code, status.HTTP_405_METHOD_NOT_ALLOWED)
self.assertEqual(ApplicationConfiguration.objects.count(), 1)
def test_update_llm_embedding_api_key(self) -> None:
"""
GIVEN:
- Existing config with llm_embedding_api_key specified
WHEN:
- API to update llm_embedding_api_key is called with all *s
- API to update llm_embedding_api_key is called with empty string
THEN:
- llm_embedding_api_key is unchanged
- llm_embedding_api_key is set to None
"""
config = ApplicationConfiguration.objects.first()
assert config is not None
config.llm_embedding_api_key = "1234567890"
config.save()
# Test with all *
response = self.client.patch(
f"{self.ENDPOINT}1/",
json.dumps(
{
"llm_embedding_api_key": "*" * 32,
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
config.refresh_from_db()
self.assertEqual(config.llm_embedding_api_key, "1234567890")
# Test with empty string
response = self.client.patch(
f"{self.ENDPOINT}1/",
json.dumps(
{
"llm_embedding_api_key": "",
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
config.refresh_from_db()
self.assertEqual(config.llm_embedding_api_key, None)
def test_update_llm_api_key(self) -> None:
"""
GIVEN:
+10 -16
View File
@@ -4,6 +4,8 @@ import json
import shutil
import zipfile
from django.contrib.auth.models import Permission
from django.contrib.auth.models import User
from django.test import override_settings
from django.utils import timezone
from rest_framework import status
@@ -12,11 +14,9 @@ from rest_framework.test import APITestCase
from documents.models import Correspondent
from documents.models import Document
from documents.models import DocumentType
from documents.tests.utils import DirectoriesMixin
from documents.tests.utils import SampleDirMixin
from paperless_testing.dirs import DirectoriesMixin
from paperless_testing.factories import UserFactory
from paperless_testing.http import read_streaming_response
from paperless_testing.permissions import grant_global
from documents.tests.utils import read_streaming_response
class TestBulkDownload(DirectoriesMixin, SampleDirMixin, APITestCase):
@@ -25,7 +25,7 @@ class TestBulkDownload(DirectoriesMixin, SampleDirMixin, APITestCase):
def setUp(self) -> None:
super().setUp()
self.user = UserFactory(username="temp_admin", superuser=True)
self.user = User.objects.create_superuser(username="temp_admin")
self.client.force_authenticate(user=self.user)
self.doc1 = Document.objects.create(title="unrelated", checksum="A")
@@ -166,15 +166,7 @@ class TestBulkDownload(DirectoriesMixin, SampleDirMixin, APITestCase):
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response["Content-Type"], "application/zip")
with zipfile.ZipFile(io.BytesIO(read_streaming_response(response))) as zipf:
self.assertEqual(zipf.infolist()[0].compress_type, zipfile.ZIP_LZMA)
with self.doc2.source_file as f:
self.assertEqual(f.read(), zipf.read("2021-01-01 document A.pdf"))
response.close()
@override_settings(FILENAME_FORMAT="{correspondent}/{title}")
def test_formatted_download_originals(self) -> None:
@@ -334,8 +326,10 @@ class TestBulkDownload(DirectoriesMixin, SampleDirMixin, APITestCase):
)
def test_download_insufficient_permissions(self) -> None:
user = UserFactory(username="temp_user")
grant_global(user, "view_document")
user = User.objects.create_user(username="temp_user")
user.user_permissions.add(
Permission.objects.get(codename="view_document"),
)
self.client.force_authenticate(user=user)
self.doc2.owner = self.user
+43 -90
View File
@@ -2,30 +2,27 @@ import json
from unittest import mock
from auditlog.models import LogEntry
from django.contrib.auth.models import Permission
from django.contrib.auth.models import User
from django.test import override_settings
from guardian.shortcuts import assign_perm
from rest_framework import status
from rest_framework.test import APITestCase
from documents.models import Correspondent
from documents.models import CustomField
from documents.models import CustomFieldInstance
from documents.models import Document
from documents.models import DocumentType
from documents.models import StoragePath
from documents.models import Tag
from paperless_testing.dirs import DirectoriesMixin
from paperless_testing.factories import UserFactory
from paperless_testing.permissions import grant_all_global
from paperless_testing.permissions import grant_global
from paperless_testing.permissions import grant_object
from documents.tests.utils import DirectoriesMixin
class TestBulkEditAPI(DirectoriesMixin, APITestCase):
def setUp(self) -> None:
super().setUp()
user = UserFactory(username="temp_admin", superuser=True)
user = User.objects.create_superuser(username="temp_admin")
self.user = user
self.client.force_authenticate(user=user)
@@ -287,9 +284,9 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
m,
) -> None:
self.setup_mock(m, "modify_custom_fields")
user = UserFactory(username="doc-owner")
grant_global(user, "change_document")
other_user = UserFactory(username="other-user")
user = User.objects.create_user(username="doc-owner")
user.user_permissions.add(Permission.objects.get(codename="change_document"))
other_user = User.objects.create_user(username="other-user")
source_doc = Document.objects.create(
checksum="source",
title="Source",
@@ -790,8 +787,10 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
@mock.patch("documents.serialisers.bulk_edit.set_storage_path")
def test_api_bulk_edit_with_all_true_resolves_owned_duplicates(self, m) -> None:
self.setup_mock(m, "set_storage_path")
user = UserFactory(username="duplicate-owner")
grant_global(user, "change_document")
user = User.objects.create_user(username="duplicate-owner")
user.user_permissions.add(
Permission.objects.get(codename="change_document"),
)
first_duplicate = Document.objects.create(
checksum="owned-duplicate",
title="First duplicate",
@@ -1179,7 +1178,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
user1 = User.objects.create(username="user1")
self.client.force_authenticate(user=user1)
grant_object(user1, self.doc2, "view_document")
assign_perm("view_document", user1, self.doc2)
response = self.client.post(
"/api/documents/selection_data/",
@@ -1189,7 +1188,9 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
grant_global(user1, "view_document")
user1.user_permissions.add(
Permission.objects.get(codename="view_document"),
)
user1 = User.objects.get(pk=user1.pk)
self.client.force_authenticate(user=user1)
response = self.client.post(
@@ -1532,7 +1533,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
self.doc1.owner = User.objects.get(username="temp_admin")
self.doc1.save()
user1 = User.objects.create(username="user1")
grant_all_global(user1)
user1.user_permissions.add(*Permission.objects.all())
user1.save()
self.client.force_authenticate(user=user1)
@@ -1586,8 +1587,8 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
self.doc1.owner = User.objects.get(username="temp_admin")
self.doc1.save()
user1 = User.objects.create(username="user1")
grant_object(user1, self.doc1, "view_document")
grant_all_global(user1)
assign_perm("view_document", user1, self.doc1)
user1.user_permissions.add(*Permission.objects.all())
user1.save()
self.client.force_authenticate(user=user1)
@@ -1608,7 +1609,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
m.assert_not_called()
self.assertEqual(response.content, b"Insufficient permissions")
grant_object(user1, self.doc1, "change_document")
assign_perm("change_document", user1, self.doc1)
response = self.client.post(
"/api/documents/bulk_edit/",
@@ -1785,36 +1786,6 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
self.assertIn(b"invalid pages specified", response.content)
m.assert_not_called()
@mock.patch("documents.serialisers.bulk_edit.split")
def test_bulk_edit_split_rejects_unknown_page_count(self, m) -> None:
"""
GIVEN:
- A legacy split bulk edit of a document without a page count
WHEN:
- API to bulk edit is called
THEN:
- API returns HTTP 400
- split is not called
"""
self.setup_mock(m, "split")
for pages in ("1", "1-5000000"):
with self.subTest(pages=pages):
response = self.client.post(
"/api/documents/bulk_edit/",
json.dumps(
{
"documents": [self.doc1.id],
"method": "split",
"parameters": {"pages": pages},
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertIn(b"document page count is unknown", response.content)
m.assert_not_called()
@mock.patch("documents.serialisers.bulk_edit.split")
def test_bulk_edit_split_parses_pages(self, m) -> None:
"""
@@ -1848,7 +1819,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
self.doc1.owner = User.objects.get(username="temp_admin")
self.doc1.save()
user1 = User.objects.create(username="user1")
grant_all_global(user1)
user1.user_permissions.add(*Permission.objects.all())
user1.save()
self.client.force_authenticate(user=user1)
@@ -1909,7 +1880,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
self.doc1.owner = User.objects.get(username="temp_admin")
self.doc1.save()
user1 = User.objects.create(username="user1")
grant_all_global(user1)
user1.user_permissions.add(*Permission.objects.all())
user1.save()
self.client.force_authenticate(user=user1)
@@ -1948,8 +1919,11 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
@mock.patch("documents.views.bulk_edit.merge")
def test_merge_and_delete_requires_change_permission(self, m) -> None:
self.setup_mock(m, "merge")
user = UserFactory(username="no-change")
grant_global(user, "add_document", "delete_document")
user = User.objects.create_user(username="no-change")
user.user_permissions.add(
Permission.objects.get(codename="add_document"),
Permission.objects.get(codename="delete_document"),
)
self.client.force_authenticate(user=user)
response = self.client.post(
@@ -2336,7 +2310,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
self.doc1.owner = User.objects.get(username="temp_admin")
self.doc1.save()
user1 = User.objects.create(username="user1")
grant_all_global(user1)
user1.user_permissions.add(*Permission.objects.all())
user1.save()
self.client.force_authenticate(user=user1)
@@ -2371,7 +2345,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
@mock.patch("documents.views.bulk_edit.edit_pdf")
def test_edit_pdf_update_requires_change_permission(self, m) -> None:
self.setup_mock(m, "edit_pdf")
user = UserFactory(username="no-change")
user = User.objects.create_user(username="no-change")
self.client.force_authenticate(user=user)
response = self.client.post(
@@ -2398,8 +2372,11 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
) -> None:
self.setup_mock(edit_pdf_mock, "edit_pdf")
self.setup_mock(remove_password_mock, "remove_password")
user = UserFactory(username="no-delete")
grant_global(user, "add_document", "change_document")
user = User.objects.create_user(username="no-delete")
user.user_permissions.add(
Permission.objects.get(codename="add_document"),
Permission.objects.get(codename="change_document"),
)
self.client.force_authenticate(user=user)
cases = [
@@ -2486,7 +2463,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
self.doc1.owner = User.objects.get(username="temp_admin")
self.doc1.save()
user1 = User.objects.create(username="user1")
grant_all_global(user1)
user1.user_permissions.add(*Permission.objects.all())
user1.save()
self.client.force_authenticate(user=user1)
@@ -2526,7 +2503,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
WHEN:
- API to bulk edit documents is called
THEN:
- Audit log is created with the old and new correspondent
- Audit log is created
"""
LogEntry.objects.all().delete()
response = self.client.post(
@@ -2542,8 +2519,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
entry = LogEntry.objects.get_for_object(self.doc1).get()
self.assertEqual(entry.changes, {"correspondent": [None, self.c2.id]})
self.assertEqual(LogEntry.objects.filter(object_pk=self.doc1.id).count(), 1)
@override_settings(AUDIT_LOG_ENABLED=True)
def test_bulk_edit_audit_log_enabled_tags(self) -> None:
@@ -2551,18 +2527,16 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
GIVEN:
- Audit log is enabled
WHEN:
- API to bulk edit tags is called on an untagged document and a
document with several tags
- API to bulk edit tags is called
THEN:
- Audit log is created for each document with its full tag list
before and after the edit
- Audit log is created
"""
LogEntry.objects.all().delete()
response = self.client.post(
"/api/documents/bulk_edit/",
json.dumps(
{
"documents": [self.doc1.id, self.doc4.id],
"documents": [self.doc1.id],
"method": "modify_tags",
"parameters": {
"add_tags": [self.t1.id],
@@ -2574,32 +2548,18 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
entry = LogEntry.objects.get_for_object(self.doc1).get()
self.assertEqual(entry.changes, {"tags": [[], [self.t1.id]]})
entry = LogEntry.objects.get_for_object(self.doc4).get()
self.assertEqual(
entry.changes,
{"tags": [[self.t1.id, self.t2.id], [self.t1.id]]},
)
self.assertEqual(LogEntry.objects.filter(object_pk=self.doc1.id).count(), 1)
@override_settings(AUDIT_LOG_ENABLED=True)
def test_bulk_edit_audit_log_enabled_custom_fields(self) -> None:
"""
GIVEN:
- Audit log is enabled
- A document with two custom fields
WHEN:
- API to bulk edit custom fields is called to add a third
- API to bulk edit custom fields is called
THEN:
- Audit log is created with every custom field instance before and
after the edit
- Audit log is created for the new custom field instance
- Audit log is created
"""
cf3 = CustomField.objects.create(name="cf3", data_type="string")
existing = [
CustomFieldInstance.objects.create(document=self.doc1, field=field)
for field in (self.cf2, cf3)
]
LogEntry.objects.all().delete()
response = self.client.post(
"/api/documents/bulk_edit/",
@@ -2617,14 +2577,7 @@ class TestBulkEditAPI(DirectoriesMixin, APITestCase):
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
added = CustomFieldInstance.objects.get(document=self.doc1, field=self.cf1)
existing_ids = [instance.id for instance in existing]
entry = LogEntry.objects.get_for_object(self.doc1).get()
self.assertEqual(
entry.changes,
{"custom_fields": [existing_ids, [*existing_ids, added.id]]},
)
self.assertEqual(LogEntry.objects.get_for_object(added).count(), 1)
self.assertEqual(LogEntry.objects.filter(object_pk=self.doc1.id).count(), 2)
def test_api_bulk_edit_with_bad_search_query_returns_400(self) -> None:
"""

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