Merge branch 'dev'

This commit is contained in:
shamoon
2024-01-05 21:36:01 -08:00
185 changed files with 52171 additions and 27280 deletions

View File

@@ -9,8 +9,11 @@ class DocumentsConfig(AppConfig):
def ready(self):
from documents.signals import document_consumption_finished
from documents.signals import document_updated
from documents.signals.handlers import add_inbox_tags
from documents.signals.handlers import add_to_index
from documents.signals.handlers import run_workflow_added
from documents.signals.handlers import run_workflow_updated
from documents.signals.handlers import set_correspondent
from documents.signals.handlers import set_document_type
from documents.signals.handlers import set_log_entry
@@ -24,5 +27,7 @@ class DocumentsConfig(AppConfig):
document_consumption_finished.connect(set_storage_path)
document_consumption_finished.connect(set_log_entry)
document_consumption_finished.connect(add_to_index)
document_consumption_finished.connect(run_workflow_added)
document_updated.connect(run_workflow_updated)
AppConfig.ready(self)

View File

@@ -90,6 +90,9 @@ class BarcodeReader:
"""
asn = None
if not self.supported_mime_type:
return None
# Ensure the barcodes have been read
self.detect()
@@ -215,7 +218,7 @@ class BarcodeReader:
# This file is really borked, allow the consumption to continue
# but it may fail further on
except Exception as e: # pragma: no cover
logger.warning(
logger.exception(
f"Exception during barcode scanning: {e}",
)

View File

@@ -52,7 +52,7 @@ def load_classifier() -> Optional["DocumentClassifier"]:
except OSError:
logger.exception("IO error while loading document classification model")
classifier = None
except Exception: # pragma: nocover
except Exception: # pragma: no cover
logger.exception("Unknown error while loading document classification model")
classifier = None
@@ -318,7 +318,7 @@ class DocumentClassifier:
return True
def preprocess_content(self, content: str) -> str: # pragma: nocover
def preprocess_content(self, content: str) -> str: # pragma: no cover
"""
Process to contents of a document, distilling it down into
words which are meaningful to the content

View File

@@ -26,8 +26,7 @@ from documents.data_models import DocumentMetadataOverrides
from documents.file_handling import create_source_path_directory
from documents.file_handling import generate_unique_filename
from documents.loggers import LoggingMixin
from documents.matching import document_matches_template
from documents.models import ConsumptionTemplate
from documents.matching import document_matches_workflow
from documents.models import Correspondent
from documents.models import CustomField
from documents.models import CustomFieldInstance
@@ -36,6 +35,8 @@ from documents.models import DocumentType
from documents.models import FileInfo
from documents.models import StoragePath
from documents.models import Tag
from documents.models import Workflow
from documents.models import WorkflowTrigger
from documents.parsers import DocumentParser
from documents.parsers import ParseError
from documents.parsers import get_parser_class_for_mime_type
@@ -134,24 +135,24 @@ class Consumer(LoggingMixin):
"""
Confirm the input file still exists where it should
"""
if not os.path.isfile(self.path):
if not os.path.isfile(self.original_path):
self._fail(
ConsumerStatusShortMessage.FILE_NOT_FOUND,
f"Cannot consume {self.path}: File not found.",
f"Cannot consume {self.original_path}: File not found.",
)
def pre_check_duplicate(self):
"""
Using the MD5 of the file, check this exact file doesn't already exist
"""
with open(self.path, "rb") as f:
with open(self.original_path, "rb") as f:
checksum = hashlib.md5(f.read()).hexdigest()
existing_doc = Document.objects.filter(
Q(checksum=checksum) | Q(archive_checksum=checksum),
)
if existing_doc.exists():
if settings.CONSUMER_DELETE_DUPLICATES:
os.unlink(self.path)
os.unlink(self.original_path)
self._fail(
ConsumerStatusShortMessage.DOCUMENT_ALREADY_EXISTS,
f"Not consuming {self.filename}: It is a duplicate of"
@@ -210,7 +211,7 @@ class Consumer(LoggingMixin):
self.log.info(f"Executing pre-consume script {settings.PRE_CONSUME_SCRIPT}")
working_file_path = str(self.path)
working_file_path = str(self.working_copy)
original_file_path = str(self.original_path)
script_env = os.environ.copy()
@@ -342,8 +343,8 @@ class Consumer(LoggingMixin):
Return the document object if it was successfully created.
"""
self.path = Path(path).resolve()
self.filename = override_filename or self.path.name
self.original_path = Path(path).resolve()
self.filename = override_filename or self.original_path.name
self.override_title = override_title
self.override_correspondent_id = override_correspondent_id
self.override_document_type_id = override_document_type_id
@@ -376,17 +377,16 @@ class Consumer(LoggingMixin):
self.log.info(f"Consuming {self.filename}")
# For the actual work, copy the file into a tempdir
self.original_path = self.path
tempdir = tempfile.TemporaryDirectory(
prefix="paperless-ngx",
dir=settings.SCRATCH_DIR,
)
self.path = Path(tempdir.name) / Path(self.filename)
copy_file_with_basic_stats(self.original_path, self.path)
self.working_copy = Path(tempdir.name) / Path(self.filename)
copy_file_with_basic_stats(self.original_path, self.working_copy)
# Determine the parser class.
mime_type = magic.from_file(self.path, mime=True)
mime_type = magic.from_file(self.working_copy, mime=True)
self.log.debug(f"Detected mime type: {mime_type}")
@@ -405,7 +405,7 @@ class Consumer(LoggingMixin):
document_consumption_started.send(
sender=self.__class__,
filename=self.path,
filename=self.working_copy,
logging_group=self.logging_group,
)
@@ -420,7 +420,7 @@ class Consumer(LoggingMixin):
document_parser: DocumentParser = parser_class(
self.logging_group,
progress_callback,
progress_callback=progress_callback,
)
self.log.debug(f"Parser: {type(document_parser).__name__}")
@@ -443,7 +443,7 @@ class Consumer(LoggingMixin):
ConsumerStatusShortMessage.PARSING_DOCUMENT,
)
self.log.debug(f"Parsing {self.filename}...")
document_parser.parse(self.path, mime_type, self.filename)
document_parser.parse(self.working_copy, mime_type, self.filename)
self.log.debug(f"Generating thumbnail for {self.filename}...")
self._send_progress(
@@ -453,7 +453,7 @@ class Consumer(LoggingMixin):
ConsumerStatusShortMessage.GENERATING_THUMBNAIL,
)
thumbnail = document_parser.get_thumbnail(
self.path,
self.working_copy,
mime_type,
self.filename,
)
@@ -526,7 +526,7 @@ class Consumer(LoggingMixin):
self._write(
document.storage_type,
self.original_path,
self.working_copy,
document.source_path,
)
@@ -559,9 +559,9 @@ class Consumer(LoggingMixin):
document.save()
# Delete the file only if it was successfully consumed
self.log.debug(f"Deleting file {self.path}")
os.unlink(self.path)
self.log.debug(f"Deleting file {self.working_copy}")
self.original_path.unlink()
self.working_copy.unlink()
# https://github.com/jonaswinkler/paperless-ng/discussions/1037
shadow_file = os.path.join(
@@ -602,66 +602,71 @@ class Consumer(LoggingMixin):
return document
def get_template_overrides(
def get_workflow_overrides(
self,
input_doc: ConsumableDocument,
) -> DocumentMetadataOverrides:
"""
Match consumption templates to a document based on source and
file name filters, path filters or mail rule filter if specified
Get overrides from matching workflows
"""
overrides = DocumentMetadataOverrides()
for template in ConsumptionTemplate.objects.all().order_by("order"):
for workflow in Workflow.objects.filter(enabled=True).order_by("order"):
template_overrides = DocumentMetadataOverrides()
if document_matches_template(input_doc, template):
if template.assign_title is not None:
template_overrides.title = template.assign_title
if template.assign_tags is not None:
template_overrides.tag_ids = [
tag.pk for tag in template.assign_tags.all()
]
if template.assign_correspondent is not None:
template_overrides.correspondent_id = (
template.assign_correspondent.pk
if document_matches_workflow(
input_doc,
workflow,
WorkflowTrigger.WorkflowTriggerType.CONSUMPTION,
):
for action in workflow.actions.all():
self.log.info(
f"Applying overrides in {action} from {workflow}",
)
if template.assign_document_type is not None:
template_overrides.document_type_id = (
template.assign_document_type.pk
)
if template.assign_storage_path is not None:
template_overrides.storage_path_id = template.assign_storage_path.pk
if template.assign_owner is not None:
template_overrides.owner_id = template.assign_owner.pk
if template.assign_view_users is not None:
template_overrides.view_users = [
user.pk for user in template.assign_view_users.all()
]
if template.assign_view_groups is not None:
template_overrides.view_groups = [
group.pk for group in template.assign_view_groups.all()
]
if template.assign_change_users is not None:
template_overrides.change_users = [
user.pk for user in template.assign_change_users.all()
]
if template.assign_change_groups is not None:
template_overrides.change_groups = [
group.pk for group in template.assign_change_groups.all()
]
if template.assign_custom_fields is not None:
template_overrides.custom_field_ids = [
field.pk for field in template.assign_custom_fields.all()
]
if action.assign_title is not None:
template_overrides.title = action.assign_title
if action.assign_tags is not None:
template_overrides.tag_ids = [
tag.pk for tag in action.assign_tags.all()
]
if action.assign_correspondent is not None:
template_overrides.correspondent_id = (
action.assign_correspondent.pk
)
if action.assign_document_type is not None:
template_overrides.document_type_id = (
action.assign_document_type.pk
)
if action.assign_storage_path is not None:
template_overrides.storage_path_id = (
action.assign_storage_path.pk
)
if action.assign_owner is not None:
template_overrides.owner_id = action.assign_owner.pk
if action.assign_view_users is not None:
template_overrides.view_users = [
user.pk for user in action.assign_view_users.all()
]
if action.assign_view_groups is not None:
template_overrides.view_groups = [
group.pk for group in action.assign_view_groups.all()
]
if action.assign_change_users is not None:
template_overrides.change_users = [
user.pk for user in action.assign_change_users.all()
]
if action.assign_change_groups is not None:
template_overrides.change_groups = [
group.pk for group in action.assign_change_groups.all()
]
if action.assign_custom_fields is not None:
template_overrides.custom_field_ids = [
field.pk for field in action.assign_custom_fields.all()
]
overrides.update(template_overrides)
overrides.update(template_overrides)
return overrides
def _parse_title_placeholders(self, title: str) -> str:
"""
Consumption template title placeholders can only include items that are
assigned as part of this template (since auto-matching hasnt happened yet)
"""
local_added = timezone.localtime(timezone.now())
correspondent_name = (
@@ -680,20 +685,14 @@ class Consumer(LoggingMixin):
else None
)
return title.format(
correspondent=correspondent_name,
document_type=doc_type_name,
added=local_added.isoformat(),
added_year=local_added.strftime("%Y"),
added_year_short=local_added.strftime("%y"),
added_month=local_added.strftime("%m"),
added_month_name=local_added.strftime("%B"),
added_month_name_short=local_added.strftime("%b"),
added_day=local_added.strftime("%d"),
owner_username=owner_username,
original_filename=Path(self.filename).stem,
added_time=local_added.strftime("%H:%M"),
).strip()
return parse_doc_title_w_placeholders(
title,
correspondent_name,
doc_type_name,
owner_username,
local_added,
self.filename,
)
def _store(
self,
@@ -735,7 +734,7 @@ class Consumer(LoggingMixin):
)[:127],
content=text,
mime_type=mime_type,
checksum=hashlib.md5(self.original_path.read_bytes()).hexdigest(),
checksum=hashlib.md5(self.working_copy.read_bytes()).hexdigest(),
created=create_date,
modified=create_date,
storage_type=storage_type,
@@ -846,3 +845,47 @@ class Consumer(LoggingMixin):
self.log.warning("Script stderr:")
for line in stderr_str:
self.log.warning(line)
def parse_doc_title_w_placeholders(
title: str,
correspondent_name: str,
doc_type_name: str,
owner_username: str,
local_added: datetime.datetime,
original_filename: str,
created: Optional[datetime.datetime] = None,
) -> str:
"""
Available title placeholders for Workflows depend on what has already been assigned,
e.g. for pre-consumption triggers created will not have been parsed yet, but it will
for added / updated triggers
"""
formatting = {
"correspondent": correspondent_name,
"document_type": doc_type_name,
"added": local_added.isoformat(),
"added_year": local_added.strftime("%Y"),
"added_year_short": local_added.strftime("%y"),
"added_month": local_added.strftime("%m"),
"added_month_name": local_added.strftime("%B"),
"added_month_name_short": local_added.strftime("%b"),
"added_day": local_added.strftime("%d"),
"added_time": local_added.strftime("%H:%M"),
"owner_username": owner_username,
"original_filename": Path(original_filename).stem,
}
if created is not None:
formatting.update(
{
"created": created.isoformat(),
"created_year": created.strftime("%Y"),
"created_year_short": created.strftime("%y"),
"created_month": created.strftime("%m"),
"created_month_name": created.strftime("%B"),
"created_month_name_short": created.strftime("%b"),
"created_day": created.strftime("%d"),
"created_time": created.strftime("%H:%M"),
},
)
return title.format(**formatting).strip()

View File

@@ -33,21 +33,20 @@ class DocumentMetadataOverrides:
def update(self, other: "DocumentMetadataOverrides") -> "DocumentMetadataOverrides":
"""
Merges two DocumentMetadataOverrides objects such that object B's overrides
are only applied if the property is empty in object A or merged if multiple
are accepted.
are applied to object A or merged if multiple are accepted.
The update is an in-place modification of self
"""
# only if empty
if self.title is None:
if other.title is not None:
self.title = other.title
if self.correspondent_id is None:
if other.correspondent_id is not None:
self.correspondent_id = other.correspondent_id
if self.document_type_id is None:
if other.document_type_id is not None:
self.document_type_id = other.document_type_id
if self.storage_path_id is None:
if other.storage_path_id is not None:
self.storage_path_id = other.storage_path_id
if self.owner_id is None:
if other.owner_id is not None:
self.owner_id = other.owner_id
# merge

View File

@@ -222,7 +222,7 @@ def generate_filename(
).strip()
if settings.FILENAME_FORMAT_REMOVE_NONE:
path = path.replace("-none-/", "") # remove empty directories
path = path.replace("/-none-/", "/") # remove empty directories
path = path.replace(" -none-", "") # remove when spaced, with space
path = path.replace("-none-", "") # remove rest of the occurences

View File

@@ -1,7 +1,9 @@
from django.contrib.contenttypes.models import ContentType
from django.db.models import CharField
from django.db.models import Count
from django.db.models import OuterRef
from django.db.models import Q
from django.db.models.functions import Cast
from django_filters.rest_framework import BooleanFilter
from django_filters.rest_framework import Filter
from django_filters.rest_framework import FilterSet
@@ -10,6 +12,7 @@ from guardian.utils import get_user_obj_perms_model
from rest_framework_guardian.filters import ObjectPermissionsFilter
from documents.models import Correspondent
from documents.models import CustomField
from documents.models import Document
from documents.models import DocumentType
from documents.models import Log
@@ -119,7 +122,7 @@ class SharedByUser(Filter):
num_shared_users=Count(
UserObjectPermission.objects.filter(
content_type=ctype,
object_pk=OuterRef("pk"),
object_pk=Cast(OuterRef("pk"), CharField()),
).values("user_id"),
),
)
@@ -127,7 +130,7 @@ class SharedByUser(Filter):
num_shared_groups=Count(
GroupObjectPermission.objects.filter(
content_type=ctype,
object_pk=OuterRef("pk"),
object_pk=Cast(OuterRef("pk"), CharField()),
).values("group_id"),
),
)
@@ -139,6 +142,15 @@ class SharedByUser(Filter):
)
class CustomFieldFilterSet(FilterSet):
class Meta:
model = CustomField
fields = {
"id": ID_KWARGS,
"name": CHAR_KWARGS,
}
class CustomFieldsFilter(Filter):
def filter(self, qs, value):
if value:

View File

@@ -4,11 +4,12 @@ import os
from collections import Counter
from contextlib import contextmanager
from datetime import datetime
from datetime import timezone
from typing import Optional
from dateutil.parser import isoparse
from django.conf import settings
from django.utils import timezone
from django.utils import timezone as django_timezone
from guardian.shortcuts import get_users_with_perms
from whoosh import classify
from whoosh import highlight
@@ -370,7 +371,7 @@ class DelayedQuery:
class LocalDateParser(English):
def reverse_timezone_offset(self, d):
return (d.replace(tzinfo=timezone.get_current_timezone())).astimezone(
return (d.replace(tzinfo=django_timezone.get_current_timezone())).astimezone(
timezone.utc,
)
@@ -401,7 +402,7 @@ class DelayedFullTextQuery(DelayedQuery):
)
qp.add_plugin(
DateParserPlugin(
basedate=timezone.now(),
basedate=django_timezone.now(),
dateparser=LocalDateParser(),
),
)

View File

@@ -26,7 +26,7 @@ from documents.tasks import consume_file
try:
from inotifyrecursive import INotify
from inotifyrecursive import flags
except ImportError: # pragma: nocover
except ImportError: # pragma: no cover
INotify = flags = None
logger = logging.getLogger("paperless.management.consumer")

View File

@@ -5,6 +5,7 @@ import shutil
import tempfile
import time
from pathlib import Path
from typing import Optional
import tqdm
from django.conf import settings
@@ -23,7 +24,6 @@ from guardian.models import UserObjectPermission
from documents.file_handling import delete_empty_directories
from documents.file_handling import generate_filename
from documents.models import ConsumptionTemplate
from documents.models import Correspondent
from documents.models import CustomField
from documents.models import CustomFieldInstance
@@ -35,12 +35,16 @@ from documents.models import SavedViewFilterRule
from documents.models import StoragePath
from documents.models import Tag
from documents.models import UiSettings
from documents.models import Workflow
from documents.models import WorkflowAction
from documents.models import WorkflowTrigger
from documents.settings import EXPORTER_ARCHIVE_NAME
from documents.settings import EXPORTER_FILE_NAME
from documents.settings import EXPORTER_THUMBNAIL_NAME
from documents.utils import copy_file_with_basic_stats
from paperless import version
from paperless.db import GnuPG
from paperless.models import ApplicationConfiguration
from paperless_mail.models import MailAccount
from paperless_mail.models import MailRule
@@ -169,14 +173,14 @@ class Command(BaseCommand):
self.delete: bool = options["delete"]
self.no_archive: bool = options["no_archive"]
self.no_thumbnail: bool = options["no_thumbnail"]
zip_export: bool = options["zip"]
self.zip_export: bool = options["zip"]
# If zipping, save the original target for later and
# get a temporary directory for the target instead
temp_dir = None
original_target = None
if zip_export:
original_target = self.target
self.original_target: Optional[Path] = None
if self.zip_export:
self.original_target = self.target
os.makedirs(settings.SCRATCH_DIR, exist_ok=True)
temp_dir = tempfile.TemporaryDirectory(
@@ -200,10 +204,10 @@ class Command(BaseCommand):
# We've written everything to the temporary directory in this case,
# now make an archive in the original target, with all files stored
if zip_export:
if self.zip_export:
shutil.make_archive(
os.path.join(
original_target,
self.original_target,
options["zip_name"],
),
format="zip",
@@ -212,7 +216,7 @@ class Command(BaseCommand):
finally:
# Always cleanup the temporary directory, if one was created
if zip_export and temp_dir is not None:
if self.zip_export and temp_dir is not None:
temp_dir.cleanup()
def dump(self, progress_bar_disable=False):
@@ -284,13 +288,25 @@ class Command(BaseCommand):
)
manifest += json.loads(
serializers.serialize("json", ConsumptionTemplate.objects.all()),
serializers.serialize("json", WorkflowTrigger.objects.all()),
)
manifest += json.loads(
serializers.serialize("json", WorkflowAction.objects.all()),
)
manifest += json.loads(
serializers.serialize("json", Workflow.objects.all()),
)
manifest += json.loads(
serializers.serialize("json", CustomField.objects.all()),
)
manifest += json.loads(
serializers.serialize("json", ApplicationConfiguration.objects.all()),
)
# These are treated specially and included in the per-document manifest
# if that setting is enabled. Otherwise, they are just exported to the bulk
# manifest
@@ -451,14 +467,21 @@ class Command(BaseCommand):
if self.delete:
# 5. Remove files which we did not explicitly export in this run
if not self.zip_export:
for f in self.files_in_export_dir:
f.unlink()
for f in self.files_in_export_dir:
f.unlink()
delete_empty_directories(
f.parent,
self.target,
)
delete_empty_directories(
f.parent,
self.target,
)
else:
# 5. Remove anything in the original location (before moving the zip)
for item in self.original_target.glob("*"):
if item.is_dir():
shutil.rmtree(item)
else:
item.unlink()
def check_and_copy(self, source, source_checksum, target: Path):
if target in self.files_in_export_dir:

View File

@@ -5,7 +5,7 @@ from django.core.management.commands.loaddata import Command as LoadDataCommand
# This class is used to migrate data between databases
# That's difficult to test
class Command(LoadDataCommand): # pragma: nocover
class Command(LoadDataCommand): # pragma: no cover
"""
Allow the loading of data from standard in. Sourced originally from:
https://gist.github.com/bmispelon/ad5a2c333443b3a1d051 (MIT licensed)

View File

@@ -1,27 +1,35 @@
import logging
import re
from fnmatch import fnmatch
from typing import Union
from documents.classifier import DocumentClassifier
from documents.data_models import ConsumableDocument
from documents.data_models import DocumentSource
from documents.models import ConsumptionTemplate
from documents.models import Correspondent
from documents.models import Document
from documents.models import DocumentType
from documents.models import MatchingModel
from documents.models import StoragePath
from documents.models import Tag
from documents.models import Workflow
from documents.models import WorkflowTrigger
from documents.permissions import get_objects_for_user_owner_aware
logger = logging.getLogger("paperless.matching")
def log_reason(matching_model: MatchingModel, document: Document, reason: str):
def log_reason(
matching_model: Union[MatchingModel, WorkflowTrigger],
document: Document,
reason: str,
):
class_name = type(matching_model).__name__
name = (
matching_model.name if hasattr(matching_model, "name") else str(matching_model)
)
logger.debug(
f"{class_name} {matching_model.name} matched on document "
f"{document} because {reason}",
f"{class_name} {name} matched on document {document} because {reason}",
)
@@ -237,65 +245,185 @@ def _split_match(matching_model):
]
def document_matches_template(
def consumable_document_matches_workflow(
document: ConsumableDocument,
template: ConsumptionTemplate,
) -> bool:
trigger: WorkflowTrigger,
) -> tuple[bool, str]:
"""
Returns True if the incoming document matches all filters and
settings from the template, False otherwise
Returns True if the ConsumableDocument matches all filters from the workflow trigger,
False otherwise. Includes a reason if doesn't match
"""
def log_match_failure(reason: str):
logger.info(f"Document did not match template {template.name}")
logger.debug(reason)
trigger_matched = True
reason = ""
# Document source vs template source
if document.source not in [int(x) for x in list(template.sources)]:
log_match_failure(
# Document source vs trigger source
if document.source not in [int(x) for x in list(trigger.sources)]:
reason = (
f"Document source {document.source.name} not in"
f" {[DocumentSource(int(x)).name for x in template.sources]}",
f" {[DocumentSource(int(x)).name for x in trigger.sources]}",
)
return False
trigger_matched = False
# Document mail rule vs template mail rule
# Document mail rule vs trigger mail rule
if (
document.mailrule_id is not None
and template.filter_mailrule is not None
and document.mailrule_id != template.filter_mailrule.pk
and trigger.filter_mailrule is not None
and document.mailrule_id != trigger.filter_mailrule.pk
):
log_match_failure(
reason = (
f"Document mail rule {document.mailrule_id}"
f" != {template.filter_mailrule.pk}",
f" != {trigger.filter_mailrule.pk}",
)
return False
trigger_matched = False
# Document filename vs template filename
# Document filename vs trigger filename
if (
template.filter_filename is not None
and len(template.filter_filename) > 0
trigger.filter_filename is not None
and len(trigger.filter_filename) > 0
and not fnmatch(
document.original_file.name.lower(),
template.filter_filename.lower(),
trigger.filter_filename.lower(),
)
):
log_match_failure(
reason = (
f"Document filename {document.original_file.name} does not match"
f" {template.filter_filename.lower()}",
f" {trigger.filter_filename.lower()}",
)
return False
trigger_matched = False
# Document path vs template path
# Document path vs trigger path
if (
template.filter_path is not None
and len(template.filter_path) > 0
and not document.original_file.match(template.filter_path)
):
log_match_failure(
f"Document path {document.original_file}"
f" does not match {template.filter_path}",
trigger.filter_path is not None
and len(trigger.filter_path) > 0
and not fnmatch(
document.original_file,
trigger.filter_path,
)
return False
):
reason = (
f"Document path {document.original_file}"
f" does not match {trigger.filter_path}",
)
trigger_matched = False
logger.info(f"Document matched template {template.name}")
return True
return (trigger_matched, reason)
def existing_document_matches_workflow(
document: Document,
trigger: WorkflowTrigger,
) -> tuple[bool, str]:
"""
Returns True if the Document matches all filters from the workflow trigger,
False otherwise. Includes a reason if doesn't match
"""
trigger_matched = True
reason = ""
if trigger.matching_algorithm > MatchingModel.MATCH_NONE and not matches(
trigger,
document,
):
reason = (
f"Document content matching settings for algorithm '{trigger.matching_algorithm}' did not match",
)
trigger_matched = False
# Document tags vs trigger has_tags
if (
trigger.filter_has_tags.all().count() > 0
and document.tags.filter(
id__in=trigger.filter_has_tags.all().values_list("id"),
).count()
== 0
):
reason = (
f"Document tags {document.tags.all()} do not include"
f" {trigger.filter_has_tags.all()}",
)
trigger_matched = False
# Document correpondent vs trigger has_correspondent
if (
trigger.filter_has_correspondent is not None
and document.correspondent != trigger.filter_has_correspondent
):
reason = (
f"Document correspondent {document.correspondent} does not match {trigger.filter_has_correspondent}",
)
trigger_matched = False
# Document document_type vs trigger has_document_type
if (
trigger.filter_has_document_type is not None
and document.document_type != trigger.filter_has_document_type
):
reason = (
f"Document doc type {document.document_type} does not match {trigger.filter_has_document_type}",
)
trigger_matched = False
# Document original_filename vs trigger filename
if (
trigger.filter_filename is not None
and len(trigger.filter_filename) > 0
and document.original_filename is not None
and not fnmatch(
document.original_filename.lower(),
trigger.filter_filename.lower(),
)
):
reason = (
f"Document filename {document.original_filename} does not match"
f" {trigger.filter_filename.lower()}",
)
trigger_matched = False
return (trigger_matched, reason)
def document_matches_workflow(
document: Union[ConsumableDocument, Document],
workflow: Workflow,
trigger_type: WorkflowTrigger.WorkflowTriggerType,
) -> bool:
"""
Returns True if the ConsumableDocument or Document matches all filters and
settings from the workflow trigger, False otherwise
"""
trigger_matched = True
if workflow.triggers.filter(type=trigger_type).count() == 0:
trigger_matched = False
logger.info(f"Document did not match {workflow}")
logger.debug(f"No matching triggers with type {trigger_type} found")
else:
for trigger in workflow.triggers.filter(type=trigger_type):
if trigger_type == WorkflowTrigger.WorkflowTriggerType.CONSUMPTION:
trigger_matched, reason = consumable_document_matches_workflow(
document,
trigger,
)
elif (
trigger_type == WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED
or trigger_type == WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED
):
trigger_matched, reason = existing_document_matches_workflow(
document,
trigger,
)
else:
# New trigger types need to be explicitly checked above
raise Exception(f"Trigger type {trigger_type} not yet supported")
if trigger_matched:
logger.info(f"Document matched {trigger} from {workflow}")
# matched, bail early
return True
else:
logger.info(f"Document did not match {workflow}")
logger.debug(reason)
return trigger_matched

View File

@@ -0,0 +1,513 @@
# Generated by Django 4.2.7 on 2023-12-23 22:51
import django.db.models.deletion
import multiselectfield.db.fields
from django.conf import settings
from django.contrib.auth.management import create_permissions
from django.contrib.auth.models import Group
from django.contrib.auth.models import Permission
from django.contrib.auth.models import User
from django.db import migrations
from django.db import models
from django.db import transaction
from django.db.models import Q
from documents.models import Correspondent
from documents.models import CustomField
from documents.models import DocumentType
from documents.models import StoragePath
from documents.models import Tag
from documents.models import Workflow
from documents.models import WorkflowAction
from documents.models import WorkflowTrigger
from paperless_mail.models import MailRule
def add_workflow_permissions(apps, schema_editor):
# create permissions without waiting for post_migrate signal
for app_config in apps.get_app_configs():
app_config.models_module = True
create_permissions(app_config, apps=apps, verbosity=0)
app_config.models_module = None
add_permission = Permission.objects.get(codename="add_document")
workflow_permissions = Permission.objects.filter(
codename__contains="workflow",
)
for user in User.objects.filter(Q(user_permissions=add_permission)).distinct():
user.user_permissions.add(*workflow_permissions)
for group in Group.objects.filter(Q(permissions=add_permission)).distinct():
group.permissions.add(*workflow_permissions)
def remove_workflow_permissions(apps, schema_editor):
workflow_permissions = Permission.objects.filter(
codename__contains="workflow",
)
for user in User.objects.all():
user.user_permissions.remove(*workflow_permissions)
for group in Group.objects.all():
group.permissions.remove(*workflow_permissions)
def migrate_consumption_templates(apps, schema_editor):
"""
Migrate consumption templates to workflows. At this point ConsumptionTemplate still exists
but objects are not returned as their true model so we have to manually do that
"""
model_name = "ConsumptionTemplate"
app_name = "documents"
ConsumptionTemplate = apps.get_model(app_label=app_name, model_name=model_name)
with transaction.atomic():
for template in ConsumptionTemplate.objects.all():
trigger = WorkflowTrigger(
type=WorkflowTrigger.WorkflowTriggerType.CONSUMPTION,
sources=template.sources,
filter_path=template.filter_path,
filter_filename=template.filter_filename,
)
if template.filter_mailrule is not None:
trigger.filter_mailrule = MailRule.objects.get(
id=template.filter_mailrule.id,
)
trigger.save()
action = WorkflowAction.objects.create(
assign_title=template.assign_title,
)
if template.assign_document_type is not None:
action.assign_document_type = DocumentType.objects.get(
id=template.assign_document_type.id,
)
if template.assign_correspondent is not None:
action.assign_correspondent = Correspondent.objects.get(
id=template.assign_correspondent.id,
)
if template.assign_storage_path is not None:
action.assign_storage_path = StoragePath.objects.get(
id=template.assign_storage_path.id,
)
if template.assign_owner is not None:
action.assign_owner = User.objects.get(id=template.assign_owner.id)
if template.assign_tags is not None:
action.assign_tags.set(
Tag.objects.filter(
id__in=[t.id for t in template.assign_tags.all()],
).all(),
)
if template.assign_view_users is not None:
action.assign_view_users.set(
User.objects.filter(
id__in=[u.id for u in template.assign_view_users.all()],
).all(),
)
if template.assign_view_groups is not None:
action.assign_view_groups.set(
Group.objects.filter(
id__in=[g.id for g in template.assign_view_groups.all()],
).all(),
)
if template.assign_change_users is not None:
action.assign_change_users.set(
User.objects.filter(
id__in=[u.id for u in template.assign_change_users.all()],
).all(),
)
if template.assign_change_groups is not None:
action.assign_change_groups.set(
Group.objects.filter(
id__in=[g.id for g in template.assign_change_groups.all()],
).all(),
)
if template.assign_custom_fields is not None:
action.assign_custom_fields.set(
CustomField.objects.filter(
id__in=[cf.id for cf in template.assign_custom_fields.all()],
).all(),
)
action.save()
workflow = Workflow.objects.create(
name=template.name,
order=template.order,
)
workflow.triggers.set([trigger])
workflow.actions.set([action])
workflow.save()
def unmigrate_consumption_templates(apps, schema_editor):
model_name = "ConsumptionTemplate"
app_name = "documents"
ConsumptionTemplate = apps.get_model(app_label=app_name, model_name=model_name)
for workflow in Workflow.objects.all():
template = ConsumptionTemplate.objects.create(
name=workflow.name,
order=workflow.order,
sources=workflow.triggers.first().sources,
filter_path=workflow.triggers.first().filter_path,
filter_filename=workflow.triggers.first().filter_filename,
filter_mailrule=workflow.triggers.first().filter_mailrule,
assign_title=workflow.actions.first().assign_title,
assign_document_type=workflow.actions.first().assign_document_type,
assign_correspondent=workflow.actions.first().assign_correspondent,
assign_storage_path=workflow.actions.first().assign_storage_path,
assign_owner=workflow.actions.first().assign_owner,
)
template.assign_tags.set(workflow.actions.first().assign_tags.all())
template.assign_view_users.set(workflow.actions.first().assign_view_users.all())
template.assign_view_groups.set(
workflow.actions.first().assign_view_groups.all(),
)
template.assign_change_users.set(
workflow.actions.first().assign_change_users.all(),
)
template.assign_change_groups.set(
workflow.actions.first().assign_change_groups.all(),
)
template.assign_custom_fields.set(
workflow.actions.first().assign_custom_fields.all(),
)
template.save()
def delete_consumption_template_content_type(apps, schema_editor):
with transaction.atomic():
apps.get_model("contenttypes", "ContentType").objects.filter(
app_label="documents",
model="consumptiontemplate",
).delete()
def undelete_consumption_template_content_type(apps, schema_editor):
apps.get_model("contenttypes", "ContentType").objects.create(
app_label="documents",
model="consumptiontemplate",
)
class Migration(migrations.Migration):
dependencies = [
("paperless_mail", "0023_remove_mailrule_filter_attachment_filename_and_more"),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("auth", "0012_alter_user_first_name_max_length"),
("documents", "1043_alter_savedviewfilterrule_rule_type"),
]
operations = [
migrations.CreateModel(
name="Workflow",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"name",
models.CharField(max_length=256, unique=True, verbose_name="name"),
),
("order", models.IntegerField(default=0, verbose_name="order")),
(
"enabled",
models.BooleanField(default=True, verbose_name="enabled"),
),
],
),
migrations.CreateModel(
name="WorkflowAction",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"type",
models.PositiveIntegerField(
choices=[(1, "Assignment")],
default=1,
verbose_name="Workflow Action Type",
),
),
(
"assign_title",
models.CharField(
blank=True,
help_text="Assign a document title, can include some placeholders, see documentation.",
max_length=256,
null=True,
verbose_name="assign title",
),
),
(
"assign_change_groups",
models.ManyToManyField(
blank=True,
related_name="+",
to="auth.group",
verbose_name="grant change permissions to these groups",
),
),
(
"assign_change_users",
models.ManyToManyField(
blank=True,
related_name="+",
to=settings.AUTH_USER_MODEL,
verbose_name="grant change permissions to these users",
),
),
(
"assign_correspondent",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="documents.correspondent",
verbose_name="assign this correspondent",
),
),
(
"assign_custom_fields",
models.ManyToManyField(
blank=True,
related_name="+",
to="documents.customfield",
verbose_name="assign these custom fields",
),
),
(
"assign_document_type",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="documents.documenttype",
verbose_name="assign this document type",
),
),
(
"assign_owner",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="+",
to=settings.AUTH_USER_MODEL,
verbose_name="assign this owner",
),
),
(
"assign_storage_path",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="documents.storagepath",
verbose_name="assign this storage path",
),
),
(
"assign_tags",
models.ManyToManyField(
blank=True,
to="documents.tag",
verbose_name="assign this tag",
),
),
(
"assign_view_groups",
models.ManyToManyField(
blank=True,
related_name="+",
to="auth.group",
verbose_name="grant view permissions to these groups",
),
),
(
"assign_view_users",
models.ManyToManyField(
blank=True,
related_name="+",
to=settings.AUTH_USER_MODEL,
verbose_name="grant view permissions to these users",
),
),
],
options={
"verbose_name": "workflow action",
"verbose_name_plural": "workflow actions",
},
),
migrations.CreateModel(
name="WorkflowTrigger",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"type",
models.PositiveIntegerField(
choices=[
(1, "Consumption Started"),
(2, "Document Added"),
(3, "Document Updated"),
],
default=1,
verbose_name="Workflow Trigger Type",
),
),
(
"sources",
multiselectfield.db.fields.MultiSelectField(
choices=[
(1, "Consume Folder"),
(2, "Api Upload"),
(3, "Mail Fetch"),
],
default="1,2,3",
max_length=5,
),
),
(
"filter_path",
models.CharField(
blank=True,
help_text="Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive.",
max_length=256,
null=True,
verbose_name="filter path",
),
),
(
"filter_filename",
models.CharField(
blank=True,
help_text="Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive.",
max_length=256,
null=True,
verbose_name="filter filename",
),
),
(
"filter_mailrule",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="paperless_mail.mailrule",
verbose_name="filter documents from this mail rule",
),
),
(
"matching_algorithm",
models.PositiveIntegerField(
choices=[
(0, "None"),
(1, "Any word"),
(2, "All words"),
(3, "Exact match"),
(4, "Regular expression"),
(5, "Fuzzy word"),
],
default=0,
verbose_name="matching algorithm",
),
),
(
"match",
models.CharField(blank=True, max_length=256, verbose_name="match"),
),
(
"is_insensitive",
models.BooleanField(default=True, verbose_name="is insensitive"),
),
(
"filter_has_tags",
models.ManyToManyField(
blank=True,
to="documents.tag",
verbose_name="has these tag(s)",
),
),
(
"filter_has_document_type",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="documents.documenttype",
verbose_name="has this document type",
),
),
(
"filter_has_correspondent",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="documents.correspondent",
verbose_name="has this correspondent",
),
),
],
options={
"verbose_name": "workflow trigger",
"verbose_name_plural": "workflow triggers",
},
),
migrations.RunPython(
add_workflow_permissions,
remove_workflow_permissions,
),
migrations.AddField(
model_name="workflow",
name="actions",
field=models.ManyToManyField(
related_name="workflows",
to="documents.workflowaction",
verbose_name="actions",
),
),
migrations.AddField(
model_name="workflow",
name="triggers",
field=models.ManyToManyField(
related_name="workflows",
to="documents.workflowtrigger",
verbose_name="triggers",
),
),
migrations.RunPython(
migrate_consumption_templates,
unmigrate_consumption_templates,
),
migrations.DeleteModel("ConsumptionTemplate"),
migrations.RunPython(
delete_consumption_template_content_type,
undelete_consumption_template_content_type,
),
]

View File

@@ -888,15 +888,31 @@ if settings.AUDIT_LOG_ENABLED:
auditlog.register(CustomFieldInstance)
class ConsumptionTemplate(models.Model):
class WorkflowTrigger(models.Model):
class WorkflowTriggerMatching(models.IntegerChoices):
# No auto matching
NONE = MatchingModel.MATCH_NONE, _("None")
ANY = MatchingModel.MATCH_ANY, _("Any word")
ALL = MatchingModel.MATCH_ALL, _("All words")
LITERAL = MatchingModel.MATCH_LITERAL, _("Exact match")
REGEX = MatchingModel.MATCH_REGEX, _("Regular expression")
FUZZY = MatchingModel.MATCH_FUZZY, _("Fuzzy word")
class WorkflowTriggerType(models.IntegerChoices):
CONSUMPTION = 1, _("Consumption Started")
DOCUMENT_ADDED = 2, _("Document Added")
DOCUMENT_UPDATED = 3, _("Document Updated")
class DocumentSourceChoices(models.IntegerChoices):
CONSUME_FOLDER = DocumentSource.ConsumeFolder.value, _("Consume Folder")
API_UPLOAD = DocumentSource.ApiUpload.value, _("Api Upload")
MAIL_FETCH = DocumentSource.MailFetch.value, _("Mail Fetch")
name = models.CharField(_("name"), max_length=256, unique=True)
order = models.IntegerField(_("order"), default=0)
type = models.PositiveIntegerField(
_("Workflow Trigger Type"),
choices=WorkflowTriggerType.choices,
default=WorkflowTriggerType.CONSUMPTION,
)
sources = MultiSelectField(
max_length=5,
@@ -936,6 +952,56 @@ class ConsumptionTemplate(models.Model):
verbose_name=_("filter documents from this mail rule"),
)
match = models.CharField(_("match"), max_length=256, blank=True)
matching_algorithm = models.PositiveIntegerField(
_("matching algorithm"),
choices=WorkflowTriggerMatching.choices,
default=WorkflowTriggerMatching.NONE,
)
is_insensitive = models.BooleanField(_("is insensitive"), default=True)
filter_has_tags = models.ManyToManyField(
Tag,
blank=True,
verbose_name=_("has these tag(s)"),
)
filter_has_document_type = models.ForeignKey(
DocumentType,
null=True,
blank=True,
on_delete=models.SET_NULL,
verbose_name=_("has this document type"),
)
filter_has_correspondent = models.ForeignKey(
Correspondent,
null=True,
blank=True,
on_delete=models.SET_NULL,
verbose_name=_("has this correspondent"),
)
class Meta:
verbose_name = _("workflow trigger")
verbose_name_plural = _("workflow triggers")
def __str__(self):
return f"WorkflowTrigger {self.pk}"
class WorkflowAction(models.Model):
class WorkflowActionType(models.IntegerChoices):
ASSIGNMENT = 1, _("Assignment")
type = models.PositiveIntegerField(
_("Workflow Action Type"),
choices=WorkflowActionType.choices,
default=WorkflowActionType.ASSIGNMENT,
)
assign_title = models.CharField(
_("assign title"),
max_length=256,
@@ -1022,8 +1088,33 @@ class ConsumptionTemplate(models.Model):
)
class Meta:
verbose_name = _("consumption template")
verbose_name_plural = _("consumption templates")
verbose_name = _("workflow action")
verbose_name_plural = _("workflow actions")
def __str__(self):
return f"{self.name}"
return f"WorkflowAction {self.pk}"
class Workflow(models.Model):
name = models.CharField(_("name"), max_length=256, unique=True)
order = models.IntegerField(_("order"), default=0)
triggers = models.ManyToManyField(
WorkflowTrigger,
related_name="workflows",
blank=False,
verbose_name=_("triggers"),
)
actions = models.ManyToManyField(
WorkflowAction,
related_name="workflows",
blank=False,
verbose_name=_("actions"),
)
enabled = models.BooleanField(_("enabled"), default=True)
def __str__(self):
return f"Workflow: {self.name}"

View File

@@ -125,8 +125,10 @@ def get_parser_class_for_mime_type(mime_type: str) -> Optional[type["DocumentPar
if not options:
return None
best_parser = sorted(options, key=lambda _: _["weight"], reverse=True)[0]
# Return the parser with the highest weight.
return sorted(options, key=lambda _: _["weight"], reverse=True)[0]["parser"]
return best_parser["parser"]
def run_convert(
@@ -318,8 +320,11 @@ class DocumentParser(LoggingMixin):
def __init__(self, logging_group, progress_callback=None):
super().__init__()
self.logging_group = logging_group
self.settings = self.get_settings()
os.makedirs(settings.SCRATCH_DIR, exist_ok=True)
self.tempdir = tempfile.mkdtemp(prefix="paperless-", dir=settings.SCRATCH_DIR)
self.tempdir = Path(
tempfile.mkdtemp(prefix="paperless-", dir=settings.SCRATCH_DIR),
)
self.archive_path = None
self.text = None
@@ -330,6 +335,12 @@ class DocumentParser(LoggingMixin):
if self.progress_callback:
self.progress_callback(current_progress, max_progress)
def get_settings(self): # pragma: no cover
"""
A parser must implement this
"""
raise NotImplementedError
def read_file_handle_unicode_errors(self, filepath: Path) -> str:
"""
Helper utility for reading from a file, and handling a problem with its

View File

@@ -2,6 +2,7 @@ import datetime
import math
import re
import zoneinfo
from decimal import Decimal
import magic
from celery import states
@@ -9,7 +10,9 @@ from django.conf import settings
from django.contrib.auth.models import Group
from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
from django.core.validators import URLValidator
from django.core.validators import DecimalValidator
from django.core.validators import MaxLengthValidator
from django.core.validators import integer_validator
from django.utils.crypto import get_random_string
from django.utils.text import slugify
from django.utils.translation import gettext as _
@@ -24,7 +27,6 @@ from rest_framework.fields import SerializerMethodField
from documents import bulk_edit
from documents.data_models import DocumentSource
from documents.models import ConsumptionTemplate
from documents.models import Correspondent
from documents.models import CustomField
from documents.models import CustomFieldInstance
@@ -38,9 +40,13 @@ from documents.models import ShareLink
from documents.models import StoragePath
from documents.models import Tag
from documents.models import UiSettings
from documents.models import Workflow
from documents.models import WorkflowAction
from documents.models import WorkflowTrigger
from documents.parsers import is_mime_type_supported
from documents.permissions import get_groups_with_only_permission
from documents.permissions import set_permissions_for_object
from documents.validators import uri_validator
# https://www.django-rest-framework.org/api-guide/serializers/#example
@@ -489,13 +495,29 @@ class CustomFieldInstanceSerializer(serializers.ModelSerializer):
def validate(self, data):
"""
For some reason, URLField validation is not run against the value
automatically. Force it to run against the value
Probably because we're kind of doing it odd, validation from the model
doesn't run against the field "value", so we have to re-create it here.
Don't like it, but it is better than returning an HTTP 500 when the database
hates the value
"""
data = super().validate(data)
field: CustomField = data["field"]
if field.data_type == CustomField.FieldDataType.URL:
URLValidator()(data["value"])
if "value" in data and data["value"] is not None:
if (
field.data_type == CustomField.FieldDataType.URL
and len(data["value"]) > 0
):
uri_validator(data["value"])
elif field.data_type == CustomField.FieldDataType.INT:
integer_validator(data["value"])
elif field.data_type == CustomField.FieldDataType.MONETARY:
DecimalValidator(max_digits=12, decimal_places=2)(
Decimal(str(data["value"])),
)
elif field.data_type == CustomField.FieldDataType.STRING:
MaxLengthValidator(limit_value=128)(data["value"])
return data
def reflect_doclinks(
@@ -507,6 +529,10 @@ class CustomFieldInstanceSerializer(serializers.ModelSerializer):
"""
Add or remove 'symmetrical' links to `document` on all `target_doc_ids`
"""
if target_doc_ids is None:
target_doc_ids = []
# Check if any documents are going to be removed from the current list of links and remove the symmetrical links
current_field_instance = CustomFieldInstance.objects.filter(
field=field,
@@ -520,9 +546,6 @@ class CustomFieldInstanceSerializer(serializers.ModelSerializer):
if doc_id not in target_doc_ids:
self.remove_doclink(document, field, doc_id)
if target_doc_ids is None:
target_doc_ids = []
# Create an instance if target doc doesnt have this field or append it to an existing one
existing_custom_field_instances = {
custom_field.document_id: custom_field
@@ -545,6 +568,9 @@ class CustomFieldInstanceSerializer(serializers.ModelSerializer):
value_document_ids=[document.id],
),
)
elif target_doc_field_instance.value is None:
target_doc_field_instance.value_document_ids = [document.id]
custom_field_instances_to_update.append(target_doc_field_instance)
elif document.id not in target_doc_field_instance.value:
target_doc_field_instance.value_document_ids.append(document.id)
custom_field_instances_to_update.append(target_doc_field_instance)
@@ -940,6 +966,14 @@ class PostDocumentSerializer(serializers.Serializer):
required=False,
)
storage_path = serializers.PrimaryKeyRelatedField(
queryset=StoragePath.objects.all(),
label="Storage path",
allow_null=True,
write_only=True,
required=False,
)
tags = serializers.PrimaryKeyRelatedField(
many=True,
queryset=Tag.objects.all(),
@@ -979,6 +1013,12 @@ class PostDocumentSerializer(serializers.Serializer):
else:
return None
def validate_storage_path(self, storage_path):
if storage_path:
return storage_path.id
else:
return None
def validate_tags(self, tags):
if tags:
return [tag.id for tag in tags]
@@ -1254,43 +1294,38 @@ class BulkEditObjectPermissionsSerializer(serializers.Serializer, SetPermissions
return attrs
class ConsumptionTemplateSerializer(serializers.ModelSerializer):
order = serializers.IntegerField(required=False)
class WorkflowTriggerSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(required=False, allow_null=True)
sources = fields.MultipleChoiceField(
choices=ConsumptionTemplate.DocumentSourceChoices.choices,
allow_empty=False,
choices=WorkflowTrigger.DocumentSourceChoices.choices,
allow_empty=True,
default={
DocumentSource.ConsumeFolder,
DocumentSource.ApiUpload,
DocumentSource.MailFetch,
},
)
assign_correspondent = CorrespondentField(allow_null=True, required=False)
assign_tags = TagsField(many=True, allow_null=True, required=False)
assign_document_type = DocumentTypeField(allow_null=True, required=False)
assign_storage_path = StoragePathField(allow_null=True, required=False)
type = serializers.ChoiceField(
choices=WorkflowTrigger.WorkflowTriggerType.choices,
label="Trigger Type",
)
class Meta:
model = ConsumptionTemplate
model = WorkflowTrigger
fields = [
"id",
"name",
"order",
"sources",
"type",
"filter_path",
"filter_filename",
"filter_mailrule",
"assign_title",
"assign_tags",
"assign_correspondent",
"assign_document_type",
"assign_storage_path",
"assign_owner",
"assign_view_users",
"assign_view_groups",
"assign_change_users",
"assign_change_groups",
"assign_custom_fields",
"matching_algorithm",
"match",
"is_insensitive",
"filter_has_tags",
"filter_has_correspondent",
"filter_has_document_type",
]
def validate(self, attrs):
@@ -1298,12 +1333,6 @@ class ConsumptionTemplateSerializer(serializers.ModelSerializer):
attrs["sources"] = {DocumentSource.MailFetch.value}
# Empty strings treated as None to avoid unexpected behavior
if (
"assign_title" in attrs
and attrs["assign_title"] is not None
and len(attrs["assign_title"]) == 0
):
attrs["assign_title"] = None
if (
"filter_filename" in attrs
and attrs["filter_filename"] is not None
@@ -1318,7 +1347,8 @@ class ConsumptionTemplateSerializer(serializers.ModelSerializer):
attrs["filter_path"] = None
if (
"filter_mailrule" not in attrs
attrs["type"] == WorkflowTrigger.WorkflowTriggerType.CONSUMPTION
and "filter_mailrule" not in attrs
and ("filter_filename" not in attrs or attrs["filter_filename"] is None)
and ("filter_path" not in attrs or attrs["filter_path"] is None)
):
@@ -1327,3 +1357,144 @@ class ConsumptionTemplateSerializer(serializers.ModelSerializer):
)
return attrs
class WorkflowActionSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(required=False, allow_null=True)
assign_correspondent = CorrespondentField(allow_null=True, required=False)
assign_tags = TagsField(many=True, allow_null=True, required=False)
assign_document_type = DocumentTypeField(allow_null=True, required=False)
assign_storage_path = StoragePathField(allow_null=True, required=False)
class Meta:
model = WorkflowAction
fields = [
"id",
"type",
"assign_title",
"assign_tags",
"assign_correspondent",
"assign_document_type",
"assign_storage_path",
"assign_owner",
"assign_view_users",
"assign_view_groups",
"assign_change_users",
"assign_change_groups",
"assign_custom_fields",
]
def validate(self, attrs):
# Empty strings treated as None to avoid unexpected behavior
if (
"assign_title" in attrs
and attrs["assign_title"] is not None
and len(attrs["assign_title"]) == 0
):
attrs["assign_title"] = None
return attrs
class WorkflowSerializer(serializers.ModelSerializer):
order = serializers.IntegerField(required=False)
triggers = WorkflowTriggerSerializer(many=True)
actions = WorkflowActionSerializer(many=True)
class Meta:
model = Workflow
fields = [
"id",
"name",
"order",
"enabled",
"triggers",
"actions",
]
def update_triggers_and_actions(self, instance: Workflow, triggers, actions):
set_triggers = []
set_actions = []
if triggers is not None:
for trigger in triggers:
filter_has_tags = trigger.pop("filter_has_tags", None)
trigger_instance, _ = WorkflowTrigger.objects.update_or_create(
id=trigger["id"] if "id" in trigger else None,
defaults=trigger,
)
if filter_has_tags is not None:
trigger_instance.filter_has_tags.set(filter_has_tags)
set_triggers.append(trigger_instance)
if actions is not None:
for action in actions:
assign_tags = action.pop("assign_tags", None)
assign_view_users = action.pop("assign_view_users", None)
assign_view_groups = action.pop("assign_view_groups", None)
assign_change_users = action.pop("assign_change_users", None)
assign_change_groups = action.pop("assign_change_groups", None)
assign_custom_fields = action.pop("assign_custom_fields", None)
action_instance, _ = WorkflowAction.objects.update_or_create(
id=action["id"] if "id" in action else None,
defaults=action,
)
if assign_tags is not None:
action_instance.assign_tags.set(assign_tags)
if assign_view_users is not None:
action_instance.assign_view_users.set(assign_view_users)
if assign_view_groups is not None:
action_instance.assign_view_groups.set(assign_view_groups)
if assign_change_users is not None:
action_instance.assign_change_users.set(assign_change_users)
if assign_change_groups is not None:
action_instance.assign_change_groups.set(assign_change_groups)
if assign_custom_fields is not None:
action_instance.assign_custom_fields.set(assign_custom_fields)
set_actions.append(action_instance)
instance.triggers.set(set_triggers)
instance.actions.set(set_actions)
instance.save()
def prune_triggers_and_actions(self):
"""
ManyToMany fields dont support e.g. on_delete so we need to discard unattached
triggers and actionas manually
"""
for trigger in WorkflowTrigger.objects.all():
if trigger.workflows.all().count() == 0:
trigger.delete()
for action in WorkflowAction.objects.all():
if action.workflows.all().count() == 0:
action.delete()
def create(self, validated_data) -> Workflow:
if "triggers" in validated_data:
triggers = validated_data.pop("triggers")
if "actions" in validated_data:
actions = validated_data.pop("actions")
instance = super().create(validated_data)
self.update_triggers_and_actions(instance, triggers, actions)
return instance
def update(self, instance: Workflow, validated_data) -> Workflow:
if "triggers" in validated_data:
triggers = validated_data.pop("triggers")
if "actions" in validated_data:
actions = validated_data.pop("actions")
instance = super().update(instance, validated_data)
self.update_triggers_and_actions(instance, triggers, actions)
self.prune_triggers_and_actions()
return instance

View File

@@ -3,3 +3,4 @@ from django.dispatch import Signal
document_consumption_started = Signal()
document_consumption_finished = Signal()
document_consumer_declaration = Signal()
document_updated = Signal()

View File

@@ -24,14 +24,19 @@ from filelock import FileLock
from documents import matching
from documents.classifier import DocumentClassifier
from documents.consumer import parse_doc_title_w_placeholders
from documents.file_handling import create_source_path_directory
from documents.file_handling import delete_empty_directories
from documents.file_handling import generate_unique_filename
from documents.models import CustomFieldInstance
from documents.models import Document
from documents.models import MatchingModel
from documents.models import PaperlessTask
from documents.models import Tag
from documents.models import Workflow
from documents.models import WorkflowTrigger
from documents.permissions import get_objects_for_user_owner_aware
from documents.permissions import set_permissions_for_object
logger = logging.getLogger("paperless.handlers")
@@ -514,6 +519,105 @@ def add_to_index(sender, document, **kwargs):
index.add_or_update_document(document)
def run_workflow_added(sender, document: Document, logging_group=None, **kwargs):
run_workflow(
WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED,
document,
logging_group,
)
def run_workflow_updated(sender, document: Document, logging_group=None, **kwargs):
run_workflow(
WorkflowTrigger.WorkflowTriggerType.DOCUMENT_UPDATED,
document,
logging_group,
)
def run_workflow(
trigger_type: WorkflowTrigger.WorkflowTriggerType,
document: Document,
logging_group=None,
):
for workflow in Workflow.objects.filter(
enabled=True,
triggers__type=trigger_type,
).order_by("order"):
if matching.document_matches_workflow(
document,
workflow,
trigger_type,
):
for action in workflow.actions.all():
logger.info(
f"Applying {action} from {workflow}",
extra={"group": logging_group},
)
if action.assign_tags.all().count() > 0:
document.tags.add(*action.assign_tags.all())
if action.assign_correspondent is not None:
document.correspondent = action.assign_correspondent
if action.assign_document_type is not None:
document.document_type = action.assign_document_type
if action.assign_storage_path is not None:
document.storage_path = action.assign_storage_path
if action.assign_owner is not None:
document.owner = action.assign_owner
if action.assign_title is not None:
document.title = parse_doc_title_w_placeholders(
action.assign_title,
document.correspondent.name
if document.correspondent is not None
else "",
document.document_type.name
if document.document_type is not None
else "",
document.owner.username if document.owner is not None else "",
document.added,
document.original_filename,
document.created,
)
if (
action.assign_view_users is not None
or action.assign_view_groups is not None
or action.assign_change_users is not None
or action.assign_change_groups is not None
):
permissions = {
"view": {
"users": action.assign_view_users.all().values_list("id")
or [],
"groups": action.assign_view_groups.all().values_list("id")
or [],
},
"change": {
"users": action.assign_change_users.all().values_list("id")
or [],
"groups": action.assign_change_groups.all().values_list(
"id",
)
or [],
},
}
set_permissions_for_object(permissions=permissions, object=document)
if action.assign_custom_fields is not None:
for field in action.assign_custom_fields.all():
CustomFieldInstance.objects.create(
field=field,
document=document,
) # adds to document
document.save()
@before_task_publish.connect
def before_task_publish_handler(sender=None, headers=None, body=None, **kwargs):
"""

View File

@@ -37,6 +37,11 @@ body {
border-bottom-left-radius: 0;
}
#inputUsername:focus {
position: relative;
z-index: 100;
}
#inputPassword,
#inputPassword2 {
border-top-left-radius: 0;

View File

@@ -36,6 +36,7 @@ from documents.models import Tag
from documents.parsers import DocumentParser
from documents.parsers import get_parser_class_for_mime_type
from documents.sanity_checker import SanityCheckFailedException
from documents.signals import document_updated
if settings.AUDIT_LOG_ENABLED:
import json
@@ -151,13 +152,16 @@ def consume_file(
return "File successfully split"
# try reading the ASN from barcode
if settings.CONSUMER_ENABLE_ASN_BARCODE and reader.asn is not None:
if (
settings.CONSUMER_ENABLE_ASN_BARCODE
and (located_asn := reader.asn) is not None
):
# Note this will take precedence over an API provided ASN
# But it's from a physical barcode, so that's good
overrides.asn = reader.asn
overrides.asn = located_asn
logger.info(f"Found ASN in barcode: {overrides.asn}")
template_overrides = Consumer().get_template_overrides(
template_overrides = Consumer().get_workflow_overrides(
input_doc=input_doc,
)
@@ -215,6 +219,11 @@ def bulk_update_documents(document_ids):
ix = index.open_index()
for doc in documents:
document_updated.send(
sender=None,
document=doc,
logging_group=uuid.uuid4(),
)
post_save.send(Document, instance=doc, created=False)
with AsyncWriter(ix) as writer:

View File

@@ -1,236 +0,0 @@
import json
from django.contrib.auth.models import Group
from django.contrib.auth.models import User
from rest_framework import status
from rest_framework.test import APITestCase
from documents.data_models import DocumentSource
from documents.models import ConsumptionTemplate
from documents.models import Correspondent
from documents.models import CustomField
from documents.models import DocumentType
from documents.models import StoragePath
from documents.models import Tag
from documents.tests.utils import DirectoriesMixin
from paperless_mail.models import MailAccount
from paperless_mail.models import MailRule
class TestApiConsumptionTemplates(DirectoriesMixin, APITestCase):
ENDPOINT = "/api/consumption_templates/"
def setUp(self) -> None:
super().setUp()
user = User.objects.create_superuser(username="temp_admin")
self.client.force_authenticate(user=user)
self.user2 = User.objects.create(username="user2")
self.user3 = User.objects.create(username="user3")
self.group1 = Group.objects.create(name="group1")
self.c = Correspondent.objects.create(name="Correspondent Name")
self.c2 = Correspondent.objects.create(name="Correspondent Name 2")
self.dt = DocumentType.objects.create(name="DocType Name")
self.t1 = Tag.objects.create(name="t1")
self.t2 = Tag.objects.create(name="t2")
self.t3 = Tag.objects.create(name="t3")
self.sp = StoragePath.objects.create(path="/test/")
self.cf1 = CustomField.objects.create(name="Custom Field 1", data_type="string")
self.cf2 = CustomField.objects.create(
name="Custom Field 2",
data_type="integer",
)
self.ct = ConsumptionTemplate.objects.create(
name="Template 1",
order=0,
sources=f"{int(DocumentSource.ApiUpload)},{int(DocumentSource.ConsumeFolder)},{int(DocumentSource.MailFetch)}",
filter_filename="*simple*",
filter_path="*/samples/*",
assign_title="Doc from {correspondent}",
assign_correspondent=self.c,
assign_document_type=self.dt,
assign_storage_path=self.sp,
assign_owner=self.user2,
)
self.ct.assign_tags.add(self.t1)
self.ct.assign_tags.add(self.t2)
self.ct.assign_tags.add(self.t3)
self.ct.assign_view_users.add(self.user3.pk)
self.ct.assign_view_groups.add(self.group1.pk)
self.ct.assign_change_users.add(self.user3.pk)
self.ct.assign_change_groups.add(self.group1.pk)
self.ct.assign_custom_fields.add(self.cf1.pk)
self.ct.assign_custom_fields.add(self.cf2.pk)
self.ct.save()
def test_api_get_consumption_template(self):
"""
GIVEN:
- API request to get all consumption template
WHEN:
- API is called
THEN:
- Existing consumption templates are returned
"""
response = self.client.get(self.ENDPOINT, format="json")
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data["count"], 1)
resp_consumption_template = response.data["results"][0]
self.assertEqual(resp_consumption_template["id"], self.ct.id)
self.assertEqual(
resp_consumption_template["assign_correspondent"],
self.ct.assign_correspondent.pk,
)
def test_api_create_consumption_template(self):
"""
GIVEN:
- API request to create a consumption template
WHEN:
- API is called
THEN:
- Correct HTTP response
- New template is created
"""
response = self.client.post(
self.ENDPOINT,
json.dumps(
{
"name": "Template 2",
"order": 1,
"sources": [DocumentSource.ApiUpload],
"filter_filename": "*test*",
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(ConsumptionTemplate.objects.count(), 2)
def test_api_create_invalid_consumption_template(self):
"""
GIVEN:
- API request to create a consumption template
- Neither file name nor path filter are specified
WHEN:
- API is called
THEN:
- Correct HTTP 400 response
- No template is created
"""
response = self.client.post(
self.ENDPOINT,
json.dumps(
{
"name": "Template 2",
"order": 1,
"sources": [DocumentSource.ApiUpload],
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(ConsumptionTemplate.objects.count(), 1)
def test_api_create_consumption_template_empty_fields(self):
"""
GIVEN:
- API request to create a consumption template
- Path or filename filter or assign title are empty string
WHEN:
- API is called
THEN:
- Template is created but filter or title assignment is not set if ""
"""
response = self.client.post(
self.ENDPOINT,
json.dumps(
{
"name": "Template 2",
"order": 1,
"sources": [DocumentSource.ApiUpload],
"filter_filename": "*test*",
"filter_path": "",
"assign_title": "",
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
ct = ConsumptionTemplate.objects.get(name="Template 2")
self.assertEqual(ct.filter_filename, "*test*")
self.assertIsNone(ct.filter_path)
self.assertIsNone(ct.assign_title)
response = self.client.post(
self.ENDPOINT,
json.dumps(
{
"name": "Template 3",
"order": 1,
"sources": [DocumentSource.ApiUpload],
"filter_filename": "",
"filter_path": "*/test/*",
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
ct2 = ConsumptionTemplate.objects.get(name="Template 3")
self.assertEqual(ct2.filter_path, "*/test/*")
self.assertIsNone(ct2.filter_filename)
def test_api_create_consumption_template_with_mailrule(self):
"""
GIVEN:
- API request to create a consumption template with a mail rule but no MailFetch source
WHEN:
- API is called
THEN:
- New template is created with MailFetch as source
"""
account1 = MailAccount.objects.create(
name="Email1",
username="username1",
password="password1",
imap_server="server.example.com",
imap_port=443,
imap_security=MailAccount.ImapSecurity.SSL,
character_set="UTF-8",
)
rule1 = MailRule.objects.create(
name="Rule1",
account=account1,
folder="INBOX",
filter_from="from@example.com",
filter_to="someone@somewhere.com",
filter_subject="subject",
filter_body="body",
filter_attachment_filename_include="file.pdf",
maximum_age=30,
action=MailRule.MailAction.MARK_READ,
assign_title_from=MailRule.TitleSource.FROM_SUBJECT,
assign_correspondent_from=MailRule.CorrespondentSource.FROM_NOTHING,
order=0,
attachment_type=MailRule.AttachmentProcessing.ATTACHMENTS_ONLY,
)
response = self.client.post(
self.ENDPOINT,
json.dumps(
{
"name": "Template 2",
"order": 1,
"sources": [DocumentSource.ApiUpload],
"filter_mailrule": rule1.pk,
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(ConsumptionTemplate.objects.count(), 2)
ct = ConsumptionTemplate.objects.get(name="Template 2")
self.assertEqual(ct.sources, [int(DocumentSource.MailFetch).__str__()])

View File

@@ -333,19 +333,17 @@ class TestCustomField(DirectoriesMixin, APITestCase):
},
format="json",
)
from pprint import pprint
pprint(resp.json())
self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(CustomFieldInstance.objects.count(), 0)
self.assertEqual(len(doc.custom_fields.all()), 0)
def test_custom_field_value_validation(self):
def test_custom_field_value_url_validation(self):
"""
GIVEN:
- Document & custom field exist
WHEN:
- API request to set a field value
- API request to set a field value to something which is or is not a link
THEN:
- HTTP 400 is returned
- No field instance is created or attached to the document
@@ -360,31 +358,62 @@ class TestCustomField(DirectoriesMixin, APITestCase):
name="Test Custom Field URL",
data_type=CustomField.FieldDataType.URL,
)
custom_field_int = CustomField.objects.create(
name="Test Custom Field INT",
data_type=CustomField.FieldDataType.INT,
)
for value in ["not a url", "file:"]:
with self.subTest(f"Test value {value}"):
resp = self.client.patch(
f"/api/documents/{doc.id}/",
data={
"custom_fields": [
{
"field": custom_field_url.id,
"value": value,
},
],
},
format="json",
)
self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(CustomFieldInstance.objects.count(), 0)
self.assertEqual(len(doc.custom_fields.all()), 0)
resp = self.client.patch(
f"/api/documents/{doc.id}/",
data={
"custom_fields": [
{
"field": custom_field_url.id,
"value": "not a url",
"value": "tel:+1-816-555-1212",
},
],
},
format="json",
)
self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(CustomFieldInstance.objects.count(), 0)
self.assertEqual(len(doc.custom_fields.all()), 0)
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertRaises(
Exception,
self.client.patch,
def test_custom_field_value_integer_validation(self):
"""
GIVEN:
- Document & custom field exist
WHEN:
- API request to set a field value to something not an integer
THEN:
- HTTP 400 is returned
- No field instance is created or attached to the document
"""
doc = Document.objects.create(
title="WOW",
content="the content",
checksum="123",
mime_type="application/pdf",
)
custom_field_int = CustomField.objects.create(
name="Test Custom Field INT",
data_type=CustomField.FieldDataType.INT,
)
resp = self.client.patch(
f"/api/documents/{doc.id}/",
data={
"custom_fields": [
@@ -397,6 +426,81 @@ class TestCustomField(DirectoriesMixin, APITestCase):
format="json",
)
self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(CustomFieldInstance.objects.count(), 0)
self.assertEqual(len(doc.custom_fields.all()), 0)
def test_custom_field_value_monetary_validation(self):
"""
GIVEN:
- Document & custom field exist
WHEN:
- API request to set a field value to something not a valid monetary decimal
THEN:
- HTTP 400 is returned
- No field instance is created or attached to the document
"""
doc = Document.objects.create(
title="WOW",
content="the content",
checksum="123",
mime_type="application/pdf",
)
custom_field_money = CustomField.objects.create(
name="Test Custom Field MONETARY",
data_type=CustomField.FieldDataType.MONETARY,
)
resp = self.client.patch(
f"/api/documents/{doc.id}/",
data={
"custom_fields": [
{
"field": custom_field_money.id,
# Too many places past decimal
"value": 12.123,
},
],
},
format="json",
)
self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(CustomFieldInstance.objects.count(), 0)
self.assertEqual(len(doc.custom_fields.all()), 0)
def test_custom_field_value_short_text_validation(self):
"""
GIVEN:
- Document & custom field exist
WHEN:
- API request to set a field value to a too long string
THEN:
- HTTP 400 is returned
- No field instance is created or attached to the document
"""
doc = Document.objects.create(
title="WOW",
content="the content",
checksum="123",
mime_type="application/pdf",
)
custom_field_string = CustomField.objects.create(
name="Test Custom Field STRING",
data_type=CustomField.FieldDataType.STRING,
)
resp = self.client.patch(
f"/api/documents/{doc.id}/",
data={
"custom_fields": [
{"field": custom_field_string.id, "value": "a" * 129},
],
},
format="json",
)
self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(CustomFieldInstance.objects.count(), 0)
self.assertEqual(len(doc.custom_fields.all()), 0)
@@ -426,7 +530,7 @@ class TestCustomField(DirectoriesMixin, APITestCase):
self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
def test_bidirectional_doclink_fields(self):
def test_symmetric_doclink_fields(self):
"""
GIVEN:
- Existing document
@@ -533,3 +637,64 @@ class TestCustomField(DirectoriesMixin, APITestCase):
self.assertEqual(doc2.custom_fields.first().value, [])
self.assertEqual(doc3.custom_fields.first().value, [4])
self.assertEqual(doc4.custom_fields.first().value, [3])
# If field exists on target doc but value is None
doc5 = Document.objects.create(
title="WOW5",
content="the content4",
checksum="5",
mime_type="application/pdf",
)
CustomFieldInstance.objects.create(document=doc5, field=custom_field_doclink)
resp = self.client.patch(
f"/api/documents/{doc1.id}/",
data={
"custom_fields": [
{
"field": custom_field_doclink.id,
"value": [doc5.id],
},
],
},
format="json",
)
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertEqual(doc5.custom_fields.first().value, [1])
def test_custom_field_filters(self):
custom_field_string = CustomField.objects.create(
name="Test Custom Field String",
data_type=CustomField.FieldDataType.STRING,
)
custom_field_date = CustomField.objects.create(
name="Test Custom Field Date",
data_type=CustomField.FieldDataType.DATE,
)
custom_field_int = CustomField.objects.create(
name="Test Custom Field Int",
data_type=CustomField.FieldDataType.INT,
)
response = self.client.get(
f"{self.ENDPOINT}?id={custom_field_string.id}",
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
results = response.data["results"]
self.assertEqual(len(results), 1)
response = self.client.get(
f"{self.ENDPOINT}?id__in={custom_field_string.id},{custom_field_date.id}",
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
results = response.data["results"]
self.assertEqual(len(results), 2)
response = self.client.get(
f"{self.ENDPOINT}?name__icontains=Int",
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
results = response.data["results"]
self.assertEqual(len(results), 1)
self.assertEqual(results[0]["name"], custom_field_int.name)

View File

@@ -819,7 +819,13 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
) as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f, "title": "", "correspondent": "", "document_type": ""},
{
"document": f,
"title": "",
"correspondent": "",
"document_type": "",
"storage_path": "",
},
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
@@ -833,6 +839,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
self.assertIsNone(overrides.title)
self.assertIsNone(overrides.correspondent_id)
self.assertIsNone(overrides.document_type_id)
self.assertIsNone(overrides.storage_path_id)
self.assertIsNone(overrides.tag_ids)
def test_upload_invalid_form(self):
@@ -975,6 +982,48 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
self.consume_file_mock.assert_not_called()
def test_upload_with_storage_path(self):
self.consume_file_mock.return_value = celery.result.AsyncResult(
id=str(uuid.uuid4()),
)
sp = StoragePath.objects.create(name="invoices")
with open(
os.path.join(os.path.dirname(__file__), "samples", "simple.pdf"),
"rb",
) as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f, "storage_path": sp.id},
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.consume_file_mock.assert_called_once()
_, overrides = self.get_last_consume_delay_call_args()
self.assertEqual(overrides.storage_path_id, sp.id)
self.assertIsNone(overrides.correspondent_id)
self.assertIsNone(overrides.title)
self.assertIsNone(overrides.tag_ids)
def test_upload_with_invalid_storage_path(self):
self.consume_file_mock.return_value = celery.result.AsyncResult(
id=str(uuid.uuid4()),
)
with open(
os.path.join(os.path.dirname(__file__), "samples", "simple.pdf"),
"rb",
) as f:
response = self.client.post(
"/api/documents/post_document/",
{"document": f, "storage_path": 34578},
)
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.consume_file_mock.assert_not_called()
def test_upload_with_tags(self):
self.consume_file_mock.return_value = celery.result.AsyncResult(
id=str(uuid.uuid4()),

View File

@@ -0,0 +1,435 @@
import json
from django.contrib.auth.models import Group
from django.contrib.auth.models import User
from rest_framework import status
from rest_framework.test import APITestCase
from documents.data_models import DocumentSource
from documents.models import Correspondent
from documents.models import CustomField
from documents.models import DocumentType
from documents.models import StoragePath
from documents.models import Tag
from documents.models import Workflow
from documents.models import WorkflowAction
from documents.models import WorkflowTrigger
from documents.tests.utils import DirectoriesMixin
from paperless_mail.models import MailAccount
from paperless_mail.models import MailRule
class TestApiWorkflows(DirectoriesMixin, APITestCase):
ENDPOINT = "/api/workflows/"
ENDPOINT_TRIGGERS = "/api/workflow_triggers/"
ENDPOINT_ACTIONS = "/api/workflow_actions/"
def setUp(self) -> None:
super().setUp()
user = User.objects.create_superuser(username="temp_admin")
self.client.force_authenticate(user=user)
self.user2 = User.objects.create(username="user2")
self.user3 = User.objects.create(username="user3")
self.group1 = Group.objects.create(name="group1")
self.c = Correspondent.objects.create(name="Correspondent Name")
self.c2 = Correspondent.objects.create(name="Correspondent Name 2")
self.dt = DocumentType.objects.create(name="DocType Name")
self.dt2 = DocumentType.objects.create(name="DocType Name 2")
self.t1 = Tag.objects.create(name="t1")
self.t2 = Tag.objects.create(name="t2")
self.t3 = Tag.objects.create(name="t3")
self.sp = StoragePath.objects.create(name="Storage Path 1", path="/test/")
self.sp2 = StoragePath.objects.create(name="Storage Path 2", path="/test2/")
self.cf1 = CustomField.objects.create(name="Custom Field 1", data_type="string")
self.cf2 = CustomField.objects.create(
name="Custom Field 2",
data_type="integer",
)
self.trigger = WorkflowTrigger.objects.create(
type=WorkflowTrigger.WorkflowTriggerType.CONSUMPTION,
sources=f"{int(DocumentSource.ApiUpload)},{int(DocumentSource.ConsumeFolder)},{int(DocumentSource.MailFetch)}",
filter_filename="*simple*",
filter_path="*/samples/*",
)
self.action = WorkflowAction.objects.create(
assign_title="Doc from {correspondent}",
assign_correspondent=self.c,
assign_document_type=self.dt,
assign_storage_path=self.sp,
assign_owner=self.user2,
)
self.action.assign_tags.add(self.t1)
self.action.assign_tags.add(self.t2)
self.action.assign_tags.add(self.t3)
self.action.assign_view_users.add(self.user3.pk)
self.action.assign_view_groups.add(self.group1.pk)
self.action.assign_change_users.add(self.user3.pk)
self.action.assign_change_groups.add(self.group1.pk)
self.action.assign_custom_fields.add(self.cf1.pk)
self.action.assign_custom_fields.add(self.cf2.pk)
self.action.save()
self.workflow = Workflow.objects.create(
name="Workflow 1",
order=0,
)
self.workflow.triggers.add(self.trigger)
self.workflow.actions.add(self.action)
self.workflow.save()
def test_api_get_workflow(self):
"""
GIVEN:
- API request to get all workflows
WHEN:
- API is called
THEN:
- Existing workflows are returned
"""
response = self.client.get(self.ENDPOINT, format="json")
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data["count"], 1)
resp_workflow = response.data["results"][0]
self.assertEqual(resp_workflow["id"], self.workflow.id)
self.assertEqual(
resp_workflow["actions"][0]["assign_correspondent"],
self.action.assign_correspondent.pk,
)
def test_api_create_workflow(self):
"""
GIVEN:
- API request to create a workflow, trigger and action separately
WHEN:
- API is called
THEN:
- Correct HTTP response
- New workflow, trigger and action are created
"""
trigger_response = self.client.post(
self.ENDPOINT_TRIGGERS,
json.dumps(
{
"type": WorkflowTrigger.WorkflowTriggerType.CONSUMPTION,
"sources": [DocumentSource.ApiUpload],
"filter_filename": "*",
},
),
content_type="application/json",
)
self.assertEqual(trigger_response.status_code, status.HTTP_201_CREATED)
action_response = self.client.post(
self.ENDPOINT_ACTIONS,
json.dumps(
{
"assign_title": "Action Title",
},
),
content_type="application/json",
)
self.assertEqual(action_response.status_code, status.HTTP_201_CREATED)
response = self.client.post(
self.ENDPOINT,
json.dumps(
{
"name": "Workflow 2",
"order": 1,
"triggers": [
{
"id": trigger_response.data["id"],
"sources": [DocumentSource.ApiUpload],
"type": trigger_response.data["type"],
"filter_filename": trigger_response.data["filter_filename"],
},
],
"actions": [
{
"id": action_response.data["id"],
"assign_title": action_response.data["assign_title"],
},
],
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(Workflow.objects.count(), 2)
def test_api_create_workflow_nested(self):
"""
GIVEN:
- API request to create a workflow with nested trigger and action
WHEN:
- API is called
THEN:
- Correct HTTP response
- New workflow, trigger and action are created
"""
response = self.client.post(
self.ENDPOINT,
json.dumps(
{
"name": "Workflow 2",
"order": 1,
"triggers": [
{
"sources": [DocumentSource.ApiUpload],
"type": WorkflowTrigger.WorkflowTriggerType.CONSUMPTION,
"filter_filename": "*",
"filter_path": "*/samples/*",
"filter_has_tags": [self.t1.id],
"filter_has_document_type": self.dt.id,
"filter_has_correspondent": self.c.id,
},
],
"actions": [
{
"assign_title": "Action Title",
"assign_tags": [self.t2.id],
"assign_document_type": self.dt2.id,
"assign_correspondent": self.c2.id,
"assign_storage_path": self.sp2.id,
"assign_owner": self.user2.id,
"assign_view_users": [self.user2.id],
"assign_view_groups": [self.group1.id],
"assign_change_users": [self.user2.id],
"assign_change_groups": [self.group1.id],
"assign_custom_fields": [self.cf2.id],
},
],
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(Workflow.objects.count(), 2)
def test_api_create_invalid_workflow_trigger(self):
"""
GIVEN:
- API request to create a workflow trigger
- Neither type or file name nor path filter are specified
WHEN:
- API is called
THEN:
- Correct HTTP 400 response
- No objects are created
"""
response = self.client.post(
self.ENDPOINT_TRIGGERS,
json.dumps(
{
"sources": [DocumentSource.ApiUpload],
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
response = self.client.post(
self.ENDPOINT_TRIGGERS,
json.dumps(
{
"type": WorkflowTrigger.WorkflowTriggerType.CONSUMPTION,
"sources": [DocumentSource.ApiUpload],
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(WorkflowTrigger.objects.count(), 1)
def test_api_create_workflow_trigger_action_empty_fields(self):
"""
GIVEN:
- API request to create a workflow trigger and action
- Path or filename filter or assign title are empty string
WHEN:
- API is called
THEN:
- Template is created but filter or title assignment is not set if ""
"""
response = self.client.post(
self.ENDPOINT_TRIGGERS,
json.dumps(
{
"type": WorkflowTrigger.WorkflowTriggerType.CONSUMPTION,
"sources": [DocumentSource.ApiUpload],
"filter_filename": "*test*",
"filter_path": "",
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
trigger = WorkflowTrigger.objects.get(id=response.data["id"])
self.assertEqual(trigger.filter_filename, "*test*")
self.assertIsNone(trigger.filter_path)
response = self.client.post(
self.ENDPOINT_ACTIONS,
json.dumps(
{
"assign_title": "",
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
action = WorkflowAction.objects.get(id=response.data["id"])
self.assertIsNone(action.assign_title)
response = self.client.post(
self.ENDPOINT_TRIGGERS,
json.dumps(
{
"type": WorkflowTrigger.WorkflowTriggerType.CONSUMPTION,
"sources": [DocumentSource.ApiUpload],
"filter_filename": "",
"filter_path": "*/test/*",
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
trigger2 = WorkflowTrigger.objects.get(id=response.data["id"])
self.assertEqual(trigger2.filter_path, "*/test/*")
self.assertIsNone(trigger2.filter_filename)
def test_api_create_workflow_trigger_with_mailrule(self):
"""
GIVEN:
- API request to create a workflow trigger with a mail rule but no MailFetch source
WHEN:
- API is called
THEN:
- New trigger is created with MailFetch as source
"""
account1 = MailAccount.objects.create(
name="Email1",
username="username1",
password="password1",
imap_server="server.example.com",
imap_port=443,
imap_security=MailAccount.ImapSecurity.SSL,
character_set="UTF-8",
)
rule1 = MailRule.objects.create(
name="Rule1",
account=account1,
folder="INBOX",
filter_from="from@example.com",
filter_to="someone@somewhere.com",
filter_subject="subject",
filter_body="body",
filter_attachment_filename_include="file.pdf",
maximum_age=30,
action=MailRule.MailAction.MARK_READ,
assign_title_from=MailRule.TitleSource.FROM_SUBJECT,
assign_correspondent_from=MailRule.CorrespondentSource.FROM_NOTHING,
order=0,
attachment_type=MailRule.AttachmentProcessing.ATTACHMENTS_ONLY,
)
response = self.client.post(
self.ENDPOINT_TRIGGERS,
json.dumps(
{
"type": WorkflowTrigger.WorkflowTriggerType.CONSUMPTION,
"sources": [DocumentSource.ApiUpload],
"filter_mailrule": rule1.pk,
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(WorkflowTrigger.objects.count(), 2)
trigger = WorkflowTrigger.objects.get(id=response.data["id"])
self.assertEqual(trigger.sources, [int(DocumentSource.MailFetch).__str__()])
def test_api_update_workflow_nested_triggers_actions(self):
"""
GIVEN:
- Existing workflow with trigger and action
WHEN:
- API request to update an existing workflow with nested triggers actions
THEN:
- Triggers and actions are updated
"""
response = self.client.patch(
f"{self.ENDPOINT}{self.workflow.id}/",
json.dumps(
{
"name": "Workflow Updated",
"order": 1,
"triggers": [
{
"type": WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED,
"filter_has_tags": [self.t1.id],
"filter_has_correspondent": self.c.id,
"filter_has_document_type": self.dt.id,
},
],
"actions": [
{
"assign_title": "Action New Title",
},
],
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
workflow = Workflow.objects.get(id=response.data["id"])
self.assertEqual(workflow.name, "Workflow Updated")
self.assertEqual(workflow.triggers.first().filter_has_tags.first(), self.t1)
self.assertEqual(workflow.actions.first().assign_title, "Action New Title")
def test_api_auto_remove_orphaned_triggers_actions(self):
"""
GIVEN:
- Existing trigger and action
WHEN:
- API request is made which creates new trigger / actions
THEN:
- "Orphaned" triggers and actions are removed
"""
response = self.client.patch(
f"{self.ENDPOINT}{self.workflow.id}/",
json.dumps(
{
"name": "Workflow Updated",
"order": 1,
"triggers": [
{
"type": WorkflowTrigger.WorkflowTriggerType.DOCUMENT_ADDED,
"filter_has_tags": [self.t1.id],
"filter_has_correspondent": self.c.id,
"filter_has_document_type": self.dt.id,
},
],
"actions": [
{
"assign_title": "Action New Title",
},
],
},
),
content_type="application/json",
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
workflow = Workflow.objects.get(id=response.data["id"])
self.assertEqual(WorkflowTrigger.objects.all().count(), 1)
self.assertNotEqual(workflow.triggers.first().id, self.trigger.id)
self.assertEqual(WorkflowAction.objects.all().count(), 1)
self.assertNotEqual(workflow.actions.first().id, self.action.id)

View File

@@ -172,7 +172,15 @@ class TestFieldPermutations(TestCase):
self.assertEqual(info.title, "anotherall")
class DummyParser(DocumentParser):
class _BaseTestParser(DocumentParser):
def get_settings(self):
"""
This parser does not implement additional settings yet
"""
return None
class DummyParser(_BaseTestParser):
def __init__(self, logging_group, scratch_dir, archive_path):
super().__init__(logging_group, None)
_, self.fake_thumb = tempfile.mkstemp(suffix=".webp", dir=scratch_dir)
@@ -185,7 +193,7 @@ class DummyParser(DocumentParser):
self.text = "The Text"
class CopyParser(DocumentParser):
class CopyParser(_BaseTestParser):
def get_thumbnail(self, document_path, mime_type, file_name=None):
return self.fake_thumb
@@ -199,7 +207,7 @@ class CopyParser(DocumentParser):
shutil.copy(document_path, self.archive_path)
class FaultyParser(DocumentParser):
class FaultyParser(_BaseTestParser):
def __init__(self, logging_group, scratch_dir):
super().__init__(logging_group)
_, self.fake_thumb = tempfile.mkstemp(suffix=".webp", dir=scratch_dir)
@@ -211,7 +219,7 @@ class FaultyParser(DocumentParser):
raise ParseError("Does not compute.")
class FaultyGenericExceptionParser(DocumentParser):
class FaultyGenericExceptionParser(_BaseTestParser):
def __init__(self, logging_group, scratch_dir):
super().__init__(logging_group)
_, self.fake_thumb = tempfile.mkstemp(suffix=".webp", dir=scratch_dir)
@@ -920,7 +928,7 @@ class PreConsumeTestCase(TestCase):
@override_settings(PRE_CONSUME_SCRIPT=None)
def test_no_pre_consume_script(self, m):
c = Consumer()
c.path = "path-to-file"
c.working_copy = "path-to-file"
c.run_pre_consume_script()
m.assert_not_called()
@@ -930,7 +938,7 @@ class PreConsumeTestCase(TestCase):
def test_pre_consume_script_not_found(self, m, m2):
c = Consumer()
c.filename = "somefile.pdf"
c.path = "path-to-file"
c.working_copy = "path-to-file"
self.assertRaises(ConsumerError, c.run_pre_consume_script)
@mock.patch("documents.consumer.run")
@@ -939,7 +947,7 @@ class PreConsumeTestCase(TestCase):
with override_settings(PRE_CONSUME_SCRIPT=script.name):
c = Consumer()
c.original_path = "path-to-file"
c.path = "/tmp/somewhere/path-to-file"
c.working_copy = "/tmp/somewhere/path-to-file"
c.task_id = str(uuid.uuid4())
c.run_pre_consume_script()
@@ -955,7 +963,7 @@ class PreConsumeTestCase(TestCase):
subset = {
"DOCUMENT_SOURCE_PATH": c.original_path,
"DOCUMENT_WORKING_PATH": c.path,
"DOCUMENT_WORKING_PATH": c.working_copy,
"TASK_ID": c.task_id,
}
self.assertDictEqual(environment, {**environment, **subset})
@@ -983,7 +991,7 @@ class PreConsumeTestCase(TestCase):
with override_settings(PRE_CONSUME_SCRIPT=script.name):
with self.assertLogs("paperless.consumer", level="INFO") as cm:
c = Consumer()
c.path = "path-to-file"
c.working_copy = "path-to-file"
c.run_pre_consume_script()
self.assertIn(
@@ -1016,7 +1024,7 @@ class PreConsumeTestCase(TestCase):
with override_settings(PRE_CONSUME_SCRIPT=script.name):
c = Consumer()
c.path = "path-to-file"
c.working_copy = "path-to-file"
self.assertRaises(
ConsumerError,
c.run_pre_consume_script,

View File

@@ -1,539 +0,0 @@
from pathlib import Path
from unittest import TestCase
from unittest import mock
import pytest
from django.contrib.auth.models import Group
from django.contrib.auth.models import User
from documents import tasks
from documents.data_models import ConsumableDocument
from documents.data_models import DocumentSource
from documents.models import ConsumptionTemplate
from documents.models import Correspondent
from documents.models import CustomField
from documents.models import DocumentType
from documents.models import StoragePath
from documents.models import Tag
from documents.tests.utils import DirectoriesMixin
from documents.tests.utils import FileSystemAssertsMixin
from paperless_mail.models import MailAccount
from paperless_mail.models import MailRule
@pytest.mark.django_db
class TestConsumptionTemplates(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
SAMPLE_DIR = Path(__file__).parent / "samples"
def setUp(self) -> None:
self.c = Correspondent.objects.create(name="Correspondent Name")
self.c2 = Correspondent.objects.create(name="Correspondent Name 2")
self.dt = DocumentType.objects.create(name="DocType Name")
self.t1 = Tag.objects.create(name="t1")
self.t2 = Tag.objects.create(name="t2")
self.t3 = Tag.objects.create(name="t3")
self.sp = StoragePath.objects.create(path="/test/")
self.cf1 = CustomField.objects.create(name="Custom Field 1", data_type="string")
self.cf2 = CustomField.objects.create(
name="Custom Field 2",
data_type="integer",
)
self.user2 = User.objects.create(username="user2")
self.user3 = User.objects.create(username="user3")
self.group1 = Group.objects.create(name="group1")
account1 = MailAccount.objects.create(
name="Email1",
username="username1",
password="password1",
imap_server="server.example.com",
imap_port=443,
imap_security=MailAccount.ImapSecurity.SSL,
character_set="UTF-8",
)
self.rule1 = MailRule.objects.create(
name="Rule1",
account=account1,
folder="INBOX",
filter_from="from@example.com",
filter_to="someone@somewhere.com",
filter_subject="subject",
filter_body="body",
filter_attachment_filename_include="file.pdf",
maximum_age=30,
action=MailRule.MailAction.MARK_READ,
assign_title_from=MailRule.TitleSource.NONE,
assign_correspondent_from=MailRule.CorrespondentSource.FROM_NOTHING,
order=0,
attachment_type=MailRule.AttachmentProcessing.ATTACHMENTS_ONLY,
assign_owner_from_rule=False,
)
return super().setUp()
@mock.patch("documents.consumer.Consumer.try_consume_file")
def test_consumption_template_match(self, m):
"""
GIVEN:
- Existing consumption template
WHEN:
- File that matches is consumed
THEN:
- Template overrides are applied
"""
ct = ConsumptionTemplate.objects.create(
name="Template 1",
order=0,
sources=f"{DocumentSource.ApiUpload},{DocumentSource.ConsumeFolder},{DocumentSource.MailFetch}",
filter_filename="*simple*",
filter_path="*/samples/*",
assign_title="Doc from {correspondent}",
assign_correspondent=self.c,
assign_document_type=self.dt,
assign_storage_path=self.sp,
assign_owner=self.user2,
)
ct.assign_tags.add(self.t1)
ct.assign_tags.add(self.t2)
ct.assign_tags.add(self.t3)
ct.assign_view_users.add(self.user3.pk)
ct.assign_view_groups.add(self.group1.pk)
ct.assign_change_users.add(self.user3.pk)
ct.assign_change_groups.add(self.group1.pk)
ct.assign_custom_fields.add(self.cf1.pk)
ct.assign_custom_fields.add(self.cf2.pk)
ct.save()
self.assertEqual(ct.__str__(), "Template 1")
test_file = self.SAMPLE_DIR / "simple.pdf"
with mock.patch("documents.tasks.async_to_sync"):
with self.assertLogs("paperless.matching", level="INFO") as cm:
tasks.consume_file(
ConsumableDocument(
source=DocumentSource.ConsumeFolder,
original_file=test_file,
),
None,
)
m.assert_called_once()
_, overrides = m.call_args
self.assertEqual(overrides["override_correspondent_id"], self.c.pk)
self.assertEqual(overrides["override_document_type_id"], self.dt.pk)
self.assertEqual(
overrides["override_tag_ids"],
[self.t1.pk, self.t2.pk, self.t3.pk],
)
self.assertEqual(overrides["override_storage_path_id"], self.sp.pk)
self.assertEqual(overrides["override_owner_id"], self.user2.pk)
self.assertEqual(overrides["override_view_users"], [self.user3.pk])
self.assertEqual(overrides["override_view_groups"], [self.group1.pk])
self.assertEqual(overrides["override_change_users"], [self.user3.pk])
self.assertEqual(overrides["override_change_groups"], [self.group1.pk])
self.assertEqual(
overrides["override_title"],
"Doc from {correspondent}",
)
self.assertEqual(
overrides["override_custom_field_ids"],
[self.cf1.pk, self.cf2.pk],
)
info = cm.output[0]
expected_str = f"Document matched template {ct}"
self.assertIn(expected_str, info)
@mock.patch("documents.consumer.Consumer.try_consume_file")
def test_consumption_template_match_mailrule(self, m):
"""
GIVEN:
- Existing consumption template
WHEN:
- File that matches is consumed via mail rule
THEN:
- Template overrides are applied
"""
ct = ConsumptionTemplate.objects.create(
name="Template 1",
order=0,
sources=f"{DocumentSource.ApiUpload},{DocumentSource.ConsumeFolder},{DocumentSource.MailFetch}",
filter_mailrule=self.rule1,
assign_title="Doc from {correspondent}",
assign_correspondent=self.c,
assign_document_type=self.dt,
assign_storage_path=self.sp,
assign_owner=self.user2,
)
ct.assign_tags.add(self.t1)
ct.assign_tags.add(self.t2)
ct.assign_tags.add(self.t3)
ct.assign_view_users.add(self.user3.pk)
ct.assign_view_groups.add(self.group1.pk)
ct.assign_change_users.add(self.user3.pk)
ct.assign_change_groups.add(self.group1.pk)
ct.save()
self.assertEqual(ct.__str__(), "Template 1")
test_file = self.SAMPLE_DIR / "simple.pdf"
with mock.patch("documents.tasks.async_to_sync"):
with self.assertLogs("paperless.matching", level="INFO") as cm:
tasks.consume_file(
ConsumableDocument(
source=DocumentSource.ConsumeFolder,
original_file=test_file,
mailrule_id=self.rule1.pk,
),
None,
)
m.assert_called_once()
_, overrides = m.call_args
self.assertEqual(overrides["override_correspondent_id"], self.c.pk)
self.assertEqual(overrides["override_document_type_id"], self.dt.pk)
self.assertEqual(
overrides["override_tag_ids"],
[self.t1.pk, self.t2.pk, self.t3.pk],
)
self.assertEqual(overrides["override_storage_path_id"], self.sp.pk)
self.assertEqual(overrides["override_owner_id"], self.user2.pk)
self.assertEqual(overrides["override_view_users"], [self.user3.pk])
self.assertEqual(overrides["override_view_groups"], [self.group1.pk])
self.assertEqual(overrides["override_change_users"], [self.user3.pk])
self.assertEqual(overrides["override_change_groups"], [self.group1.pk])
self.assertEqual(
overrides["override_title"],
"Doc from {correspondent}",
)
info = cm.output[0]
expected_str = f"Document matched template {ct}"
self.assertIn(expected_str, info)
@mock.patch("documents.consumer.Consumer.try_consume_file")
def test_consumption_template_match_multiple(self, m):
"""
GIVEN:
- Multiple existing consumption template
WHEN:
- File that matches is consumed
THEN:
- Template overrides are applied with subsequent templates only overwriting empty values
or merging if multiple
"""
ct1 = ConsumptionTemplate.objects.create(
name="Template 1",
order=0,
sources=f"{DocumentSource.ApiUpload},{DocumentSource.ConsumeFolder},{DocumentSource.MailFetch}",
filter_path="*/samples/*",
assign_title="Doc from {correspondent}",
assign_correspondent=self.c,
assign_document_type=self.dt,
)
ct1.assign_tags.add(self.t1)
ct1.assign_tags.add(self.t2)
ct1.assign_view_users.add(self.user2)
ct1.save()
ct2 = ConsumptionTemplate.objects.create(
name="Template 2",
order=0,
sources=f"{DocumentSource.ApiUpload},{DocumentSource.ConsumeFolder},{DocumentSource.MailFetch}",
filter_filename="*simple*",
assign_title="Doc from {correspondent}",
assign_correspondent=self.c2,
assign_storage_path=self.sp,
)
ct2.assign_tags.add(self.t3)
ct1.assign_view_users.add(self.user3)
ct2.save()
test_file = self.SAMPLE_DIR / "simple.pdf"
with mock.patch("documents.tasks.async_to_sync"):
with self.assertLogs("paperless.matching", level="INFO") as cm:
tasks.consume_file(
ConsumableDocument(
source=DocumentSource.ConsumeFolder,
original_file=test_file,
),
None,
)
m.assert_called_once()
_, overrides = m.call_args
# template 1
self.assertEqual(overrides["override_correspondent_id"], self.c.pk)
self.assertEqual(overrides["override_document_type_id"], self.dt.pk)
# template 2
self.assertEqual(overrides["override_storage_path_id"], self.sp.pk)
# template 1 & 2
self.assertEqual(
overrides["override_tag_ids"],
[self.t1.pk, self.t2.pk, self.t3.pk],
)
self.assertEqual(
overrides["override_view_users"],
[self.user2.pk, self.user3.pk],
)
expected_str = f"Document matched template {ct1}"
self.assertIn(expected_str, cm.output[0])
expected_str = f"Document matched template {ct2}"
self.assertIn(expected_str, cm.output[1])
@mock.patch("documents.consumer.Consumer.try_consume_file")
def test_consumption_template_no_match_filename(self, m):
"""
GIVEN:
- Existing consumption template
WHEN:
- File that does not match on filename is consumed
THEN:
- Template overrides are not applied
"""
ct = ConsumptionTemplate.objects.create(
name="Template 1",
order=0,
sources=f"{DocumentSource.ApiUpload},{DocumentSource.ConsumeFolder},{DocumentSource.MailFetch}",
filter_filename="*foobar*",
filter_path=None,
assign_title="Doc from {correspondent}",
assign_correspondent=self.c,
assign_document_type=self.dt,
assign_storage_path=self.sp,
assign_owner=self.user2,
)
test_file = self.SAMPLE_DIR / "simple.pdf"
with mock.patch("documents.tasks.async_to_sync"):
with self.assertLogs("paperless.matching", level="DEBUG") as cm:
tasks.consume_file(
ConsumableDocument(
source=DocumentSource.ConsumeFolder,
original_file=test_file,
),
None,
)
m.assert_called_once()
_, overrides = m.call_args
self.assertIsNone(overrides["override_correspondent_id"])
self.assertIsNone(overrides["override_document_type_id"])
self.assertIsNone(overrides["override_tag_ids"])
self.assertIsNone(overrides["override_storage_path_id"])
self.assertIsNone(overrides["override_owner_id"])
self.assertIsNone(overrides["override_view_users"])
self.assertIsNone(overrides["override_view_groups"])
self.assertIsNone(overrides["override_change_users"])
self.assertIsNone(overrides["override_change_groups"])
self.assertIsNone(overrides["override_title"])
expected_str = f"Document did not match template {ct}"
self.assertIn(expected_str, cm.output[0])
expected_str = f"Document filename {test_file.name} does not match"
self.assertIn(expected_str, cm.output[1])
@mock.patch("documents.consumer.Consumer.try_consume_file")
def test_consumption_template_no_match_path(self, m):
"""
GIVEN:
- Existing consumption template
WHEN:
- File that does not match on path is consumed
THEN:
- Template overrides are not applied
"""
ct = ConsumptionTemplate.objects.create(
name="Template 1",
order=0,
sources=f"{DocumentSource.ApiUpload},{DocumentSource.ConsumeFolder},{DocumentSource.MailFetch}",
filter_path="*foo/bar*",
assign_title="Doc from {correspondent}",
assign_correspondent=self.c,
assign_document_type=self.dt,
assign_storage_path=self.sp,
assign_owner=self.user2,
)
test_file = self.SAMPLE_DIR / "simple.pdf"
with mock.patch("documents.tasks.async_to_sync"):
with self.assertLogs("paperless.matching", level="DEBUG") as cm:
tasks.consume_file(
ConsumableDocument(
source=DocumentSource.ConsumeFolder,
original_file=test_file,
),
None,
)
m.assert_called_once()
_, overrides = m.call_args
self.assertIsNone(overrides["override_correspondent_id"])
self.assertIsNone(overrides["override_document_type_id"])
self.assertIsNone(overrides["override_tag_ids"])
self.assertIsNone(overrides["override_storage_path_id"])
self.assertIsNone(overrides["override_owner_id"])
self.assertIsNone(overrides["override_view_users"])
self.assertIsNone(overrides["override_view_groups"])
self.assertIsNone(overrides["override_change_users"])
self.assertIsNone(overrides["override_change_groups"])
self.assertIsNone(overrides["override_title"])
expected_str = f"Document did not match template {ct}"
self.assertIn(expected_str, cm.output[0])
expected_str = f"Document path {test_file} does not match"
self.assertIn(expected_str, cm.output[1])
@mock.patch("documents.consumer.Consumer.try_consume_file")
def test_consumption_template_no_match_mail_rule(self, m):
"""
GIVEN:
- Existing consumption template
WHEN:
- File that does not match on source is consumed
THEN:
- Template overrides are not applied
"""
ct = ConsumptionTemplate.objects.create(
name="Template 1",
order=0,
sources=f"{DocumentSource.ApiUpload},{DocumentSource.ConsumeFolder},{DocumentSource.MailFetch}",
filter_mailrule=self.rule1,
assign_title="Doc from {correspondent}",
assign_correspondent=self.c,
assign_document_type=self.dt,
assign_storage_path=self.sp,
assign_owner=self.user2,
)
test_file = self.SAMPLE_DIR / "simple.pdf"
with mock.patch("documents.tasks.async_to_sync"):
with self.assertLogs("paperless.matching", level="DEBUG") as cm:
tasks.consume_file(
ConsumableDocument(
source=DocumentSource.ConsumeFolder,
original_file=test_file,
mailrule_id=99,
),
None,
)
m.assert_called_once()
_, overrides = m.call_args
self.assertIsNone(overrides["override_correspondent_id"])
self.assertIsNone(overrides["override_document_type_id"])
self.assertIsNone(overrides["override_tag_ids"])
self.assertIsNone(overrides["override_storage_path_id"])
self.assertIsNone(overrides["override_owner_id"])
self.assertIsNone(overrides["override_view_users"])
self.assertIsNone(overrides["override_view_groups"])
self.assertIsNone(overrides["override_change_users"])
self.assertIsNone(overrides["override_change_groups"])
self.assertIsNone(overrides["override_title"])
expected_str = f"Document did not match template {ct}"
self.assertIn(expected_str, cm.output[0])
expected_str = "Document mail rule 99 !="
self.assertIn(expected_str, cm.output[1])
@mock.patch("documents.consumer.Consumer.try_consume_file")
def test_consumption_template_no_match_source(self, m):
"""
GIVEN:
- Existing consumption template
WHEN:
- File that does not match on source is consumed
THEN:
- Template overrides are not applied
"""
ct = ConsumptionTemplate.objects.create(
name="Template 1",
order=0,
sources=f"{DocumentSource.ConsumeFolder},{DocumentSource.MailFetch}",
filter_path="*",
assign_title="Doc from {correspondent}",
assign_correspondent=self.c,
assign_document_type=self.dt,
assign_storage_path=self.sp,
assign_owner=self.user2,
)
test_file = self.SAMPLE_DIR / "simple.pdf"
with mock.patch("documents.tasks.async_to_sync"):
with self.assertLogs("paperless.matching", level="DEBUG") as cm:
tasks.consume_file(
ConsumableDocument(
source=DocumentSource.ApiUpload,
original_file=test_file,
),
None,
)
m.assert_called_once()
_, overrides = m.call_args
self.assertIsNone(overrides["override_correspondent_id"])
self.assertIsNone(overrides["override_document_type_id"])
self.assertIsNone(overrides["override_tag_ids"])
self.assertIsNone(overrides["override_storage_path_id"])
self.assertIsNone(overrides["override_owner_id"])
self.assertIsNone(overrides["override_view_users"])
self.assertIsNone(overrides["override_view_groups"])
self.assertIsNone(overrides["override_change_users"])
self.assertIsNone(overrides["override_change_groups"])
self.assertIsNone(overrides["override_title"])
expected_str = f"Document did not match template {ct}"
self.assertIn(expected_str, cm.output[0])
expected_str = f"Document source {DocumentSource.ApiUpload.name} not in ['{DocumentSource.ConsumeFolder.name}', '{DocumentSource.MailFetch.name}']"
self.assertIn(expected_str, cm.output[1])
@mock.patch("documents.consumer.Consumer.try_consume_file")
def test_consumption_template_repeat_custom_fields(self, m):
"""
GIVEN:
- Existing consumption templates which assign the same custom field
WHEN:
- File that matches is consumed
THEN:
- Custom field is added the first time successfully
"""
ct = ConsumptionTemplate.objects.create(
name="Template 1",
order=0,
sources=f"{DocumentSource.ApiUpload},{DocumentSource.ConsumeFolder},{DocumentSource.MailFetch}",
filter_filename="*simple*",
)
ct.assign_custom_fields.add(self.cf1.pk)
ct.save()
ct2 = ConsumptionTemplate.objects.create(
name="Template 2",
order=1,
sources=f"{DocumentSource.ApiUpload},{DocumentSource.ConsumeFolder},{DocumentSource.MailFetch}",
filter_filename="*simple*",
)
ct2.assign_custom_fields.add(self.cf1.pk)
ct2.save()
test_file = self.SAMPLE_DIR / "simple.pdf"
with mock.patch("documents.tasks.async_to_sync"):
with self.assertLogs("paperless.matching", level="INFO") as cm:
tasks.consume_file(
ConsumableDocument(
source=DocumentSource.ConsumeFolder,
original_file=test_file,
),
None,
)
m.assert_called_once()
_, overrides = m.call_args
self.assertEqual(
overrides["override_custom_field_ids"],
[self.cf1.pk],
)
expected_str = f"Document matched template {ct}"
self.assertIn(expected_str, cm.output[0])
expected_str = f"Document matched template {ct2}"
self.assertIn(expected_str, cm.output[1])

View File

@@ -1007,6 +1007,9 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase):
self.assertEqual(generate_filename(doc_a), "ThisIsAFolder/4/2020-06-25.pdf")
self.assertEqual(generate_filename(doc_b), "SomeImportantNone/2020-07-25.pdf")
@override_settings(
FILENAME_FORMAT=None,
)
def test_no_path_fallback(self):
"""
GIVEN:
@@ -1157,3 +1160,28 @@ class TestFilenameGeneration(DirectoriesMixin, TestCase):
self.assertEqual(generate_filename(text_doc), "logs.txt")
self.assertEqual(generate_filename(text_doc, archive_filename=True), "logs.pdf")
@override_settings(
FILENAME_FORMAT="XX{correspondent}/{title}",
FILENAME_FORMAT_REMOVE_NONE=True,
)
def test_remove_none_not_dir(self):
"""
GIVEN:
- A document with & filename format that includes correspondent as part of directory name
- FILENAME_FORMAT_REMOVE_NONE is True
WHEN:
- the filename is generated for the document
THEN:
- the missing correspondent is removed but directory structure retained
"""
document = Document.objects.create(
title="doc1",
mime_type="application/pdf",
)
document.storage_type = Document.STORAGE_TYPE_UNENCRYPTED
document.save()
# Ensure that filename is properly generated
document.filename = generate_filename(document)
self.assertEqual(document.filename, "XX/doc1.pdf")

View File

@@ -21,7 +21,6 @@ from guardian.models import UserObjectPermission
from guardian.shortcuts import assign_perm
from documents.management.commands import document_exporter
from documents.models import ConsumptionTemplate
from documents.models import Correspondent
from documents.models import CustomField
from documents.models import CustomFieldInstance
@@ -31,6 +30,9 @@ from documents.models import Note
from documents.models import StoragePath
from documents.models import Tag
from documents.models import User
from documents.models import Workflow
from documents.models import WorkflowAction
from documents.models import WorkflowTrigger
from documents.sanity_checker import check_sanity
from documents.settings import EXPORTER_FILE_NAME
from documents.tests.utils import DirectoriesMixin
@@ -40,7 +42,7 @@ from documents.tests.utils import paperless_environment
class TestExportImport(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
def setUp(self) -> None:
self.target = tempfile.mkdtemp()
self.target = Path(tempfile.mkdtemp())
self.addCleanup(shutil.rmtree, self.target)
self.user = User.objects.create(username="temp_admin")
@@ -109,7 +111,16 @@ class TestExportImport(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
self.d4.storage_path = self.sp1
self.d4.save()
self.ct1 = ConsumptionTemplate.objects.create(name="CT 1", filter_path="*")
self.trigger = WorkflowTrigger.objects.create(
type=WorkflowTrigger.WorkflowTriggerType.CONSUMPTION,
sources=[1],
filter_filename="*",
)
self.action = WorkflowAction.objects.create(assign_title="new title")
self.workflow = Workflow.objects.create(name="Workflow 1", order="0")
self.workflow.triggers.add(self.trigger)
self.workflow.actions.add(self.action)
self.workflow.save()
super().setUp()
@@ -168,7 +179,7 @@ class TestExportImport(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
manifest = self._do_export(use_filename_format=use_filename_format)
self.assertEqual(len(manifest), 172)
self.assertEqual(len(manifest), 190)
# dont include consumer or AnonymousUser users
self.assertEqual(
@@ -262,7 +273,7 @@ class TestExportImport(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
self.assertEqual(Document.objects.get(id=self.d4.id).title, "wow_dec")
self.assertEqual(GroupObjectPermission.objects.count(), 1)
self.assertEqual(UserObjectPermission.objects.count(), 1)
self.assertEqual(Permission.objects.count(), 124)
self.assertEqual(Permission.objects.count(), 136)
messages = check_sanity()
# everything is alright after the test
self.assertEqual(len(messages), 0)
@@ -485,6 +496,54 @@ class TestExportImport(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
self.assertIn("manifest.json", zip.namelist())
self.assertIn("version.json", zip.namelist())
@override_settings(PASSPHRASE="test")
def test_export_zipped_with_delete(self):
"""
GIVEN:
- Request to export documents to zipfile
- There is one existing file in the target
- There is one existing directory in the target
WHEN:
- Documents are exported
- deletion of existing files is requested
THEN:
- Zipfile is created
- Zipfile contains exported files
- The existing file and directory in target are removed
"""
shutil.rmtree(os.path.join(self.dirs.media_dir, "documents"))
shutil.copytree(
os.path.join(os.path.dirname(__file__), "samples", "documents"),
os.path.join(self.dirs.media_dir, "documents"),
)
# Create stuff in target directory
existing_file = self.target / "test.txt"
existing_file.touch()
existing_dir = self.target / "somedir"
existing_dir.mkdir(parents=True)
self.assertIsFile(existing_file)
self.assertIsDir(existing_dir)
args = ["document_exporter", self.target, "--zip", "--delete"]
call_command(*args)
expected_file = os.path.join(
self.target,
f"export-{timezone.localdate().isoformat()}.zip",
)
self.assertIsFile(expected_file)
self.assertIsNotFile(existing_file)
self.assertIsNotDir(existing_dir)
with ZipFile(expected_file) as zip:
self.assertEqual(len(zip.namelist()), 11)
self.assertIn("manifest.json", zip.namelist())
self.assertIn("version.json", zip.namelist())
def test_export_target_not_exists(self):
"""
GIVEN:
@@ -694,15 +753,15 @@ class TestExportImport(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
os.path.join(self.dirs.media_dir, "documents"),
)
self.assertEqual(ContentType.objects.count(), 31)
self.assertEqual(Permission.objects.count(), 124)
self.assertEqual(ContentType.objects.count(), 34)
self.assertEqual(Permission.objects.count(), 136)
manifest = self._do_export()
with paperless_environment():
self.assertEqual(
len(list(filter(lambda e: e["model"] == "auth.permission", manifest))),
124,
136,
)
# add 1 more to db to show objects are not re-created by import
Permission.objects.create(
@@ -710,7 +769,7 @@ class TestExportImport(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
codename="test_perm",
content_type_id=1,
)
self.assertEqual(Permission.objects.count(), 125)
self.assertEqual(Permission.objects.count(), 137)
# will cause an import error
self.user.delete()
@@ -719,5 +778,5 @@ class TestExportImport(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
with self.assertRaises(IntegrityError):
call_command("document_importer", "--no-progress-bar", self.target)
self.assertEqual(ContentType.objects.count(), 31)
self.assertEqual(Permission.objects.count(), 125)
self.assertEqual(ContentType.objects.count(), 34)
self.assertEqual(Permission.objects.count(), 137)

View File

@@ -33,11 +33,18 @@ class TestReverseMigrateConsumptionTemplate(TestMigrations):
self.Permission = apps.get_model("auth", "Permission")
self.user = User.objects.create(username="user1")
self.group = Group.objects.create(name="group1")
permission = self.Permission.objects.get(codename="add_consumptiontemplate")
self.user.user_permissions.add(permission.id)
self.group.permissions.add(permission.id)
permission = self.Permission.objects.filter(
codename="add_consumptiontemplate",
).first()
if permission is not None:
self.user.user_permissions.add(permission.id)
self.group.permissions.add(permission.id)
def test_remove_consumptiontemplate_permissions(self):
permission = self.Permission.objects.get(codename="add_consumptiontemplate")
self.assertFalse(self.user.has_perm(f"documents.{permission.codename}"))
self.assertFalse(permission in self.group.permissions.all())
permission = self.Permission.objects.filter(
codename="add_consumptiontemplate",
).first()
# can be None ? now that CTs removed
if permission is not None:
self.assertFalse(self.user.has_perm(f"documents.{permission.codename}"))
self.assertFalse(permission in self.group.permissions.all())

View File

@@ -0,0 +1,131 @@
from documents.data_models import DocumentSource
from documents.tests.utils import TestMigrations
class TestMigrateWorkflow(TestMigrations):
migrate_from = "1043_alter_savedviewfilterrule_rule_type"
migrate_to = "1044_workflow_workflowaction_workflowtrigger_and_more"
dependencies = (
("paperless_mail", "0023_remove_mailrule_filter_attachment_filename_and_more"),
)
def setUpBeforeMigration(self, apps):
User = apps.get_model("auth", "User")
Group = apps.get_model("auth", "Group")
self.Permission = apps.get_model("auth", "Permission")
self.user = User.objects.create(username="user1")
self.group = Group.objects.create(name="group1")
permission = self.Permission.objects.get(codename="add_document")
self.user.user_permissions.add(permission.id)
self.group.permissions.add(permission.id)
# create a CT to migrate
c = apps.get_model("documents", "Correspondent").objects.create(
name="Correspondent Name",
)
dt = apps.get_model("documents", "DocumentType").objects.create(
name="DocType Name",
)
t1 = apps.get_model("documents", "Tag").objects.create(name="t1")
sp = apps.get_model("documents", "StoragePath").objects.create(path="/test/")
cf1 = apps.get_model("documents", "CustomField").objects.create(
name="Custom Field 1",
data_type="string",
)
ma = apps.get_model("paperless_mail", "MailAccount").objects.create(
name="MailAccount 1",
)
mr = apps.get_model("paperless_mail", "MailRule").objects.create(
name="MailRule 1",
order=0,
account=ma,
)
user2 = User.objects.create(username="user2")
user3 = User.objects.create(username="user3")
group2 = Group.objects.create(name="group2")
ConsumptionTemplate = apps.get_model("documents", "ConsumptionTemplate")
ct = ConsumptionTemplate.objects.create(
name="Template 1",
order=0,
sources=f"{DocumentSource.ApiUpload},{DocumentSource.ConsumeFolder},{DocumentSource.MailFetch}",
filter_filename="*simple*",
filter_path="*/samples/*",
filter_mailrule=mr,
assign_title="Doc from {correspondent}",
assign_correspondent=c,
assign_document_type=dt,
assign_storage_path=sp,
assign_owner=user2,
)
ct.assign_tags.add(t1)
ct.assign_view_users.add(user3)
ct.assign_view_groups.add(group2)
ct.assign_change_users.add(user3)
ct.assign_change_groups.add(group2)
ct.assign_custom_fields.add(cf1)
ct.save()
def test_users_with_add_documents_get_add_and_workflow_templates_get_migrated(self):
permission = self.Permission.objects.get(codename="add_workflow")
self.assertTrue(permission in self.user.user_permissions.all())
self.assertTrue(permission in self.group.permissions.all())
Workflow = self.apps.get_model("documents", "Workflow")
self.assertEqual(Workflow.objects.all().count(), 1)
class TestReverseMigrateWorkflow(TestMigrations):
migrate_from = "1044_workflow_workflowaction_workflowtrigger_and_more"
migrate_to = "1043_alter_savedviewfilterrule_rule_type"
def setUpBeforeMigration(self, apps):
User = apps.get_model("auth", "User")
Group = apps.get_model("auth", "Group")
self.Permission = apps.get_model("auth", "Permission")
self.user = User.objects.create(username="user1")
self.group = Group.objects.create(name="group1")
permission = self.Permission.objects.filter(
codename="add_workflow",
).first()
if permission is not None:
self.user.user_permissions.add(permission.id)
self.group.permissions.add(permission.id)
Workflow = apps.get_model("documents", "Workflow")
WorkflowTrigger = apps.get_model("documents", "WorkflowTrigger")
WorkflowAction = apps.get_model("documents", "WorkflowAction")
trigger = WorkflowTrigger.objects.create(
type=0,
sources=[DocumentSource.ConsumeFolder],
filter_path="*/path/*",
filter_filename="*file*",
)
action = WorkflowAction.objects.create(
assign_title="assign title",
)
workflow = Workflow.objects.create(
name="workflow 1",
order=0,
)
workflow.triggers.set([trigger])
workflow.actions.set([action])
workflow.save()
def test_remove_workflow_permissions_and_migrate_workflows_to_consumption_templates(
self,
):
permission = self.Permission.objects.filter(
codename="add_workflow",
).first()
if permission is not None:
self.assertFalse(permission in self.user.user_permissions.all())
self.assertFalse(permission in self.group.permissions.all())
ConsumptionTemplate = self.apps.get_model("documents", "ConsumptionTemplate")
self.assertEqual(ConsumptionTemplate.objects.all().count(), 1)

File diff suppressed because it is too large Load Diff

View File

@@ -265,6 +265,7 @@ class TestMigrations(TransactionTestCase):
return apps.get_containing_app_config(type(self).__module__).name
migrate_from = None
dependencies = None
migrate_to = None
auto_migrate = True
@@ -277,6 +278,8 @@ class TestMigrations(TransactionTestCase):
type(self).__name__,
)
self.migrate_from = [(self.app, self.migrate_from)]
if self.dependencies is not None:
self.migrate_from.extend(self.dependencies)
self.migrate_to = [(self.app, self.migrate_to)]
executor = MigrationExecutor(connection)
old_apps = executor.loader.project_state(self.migrate_from).apps

View File

@@ -0,0 +1,29 @@
from urllib.parse import urlparse
from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _
def uri_validator(value) -> None:
"""
Raises a ValidationError if the given value does not parse as an
URI looking thing, which we're defining as a scheme and either network
location or path value
"""
try:
parts = urlparse(value)
if not parts.scheme:
raise ValidationError(
_(f"Unable to parse URI {value}, missing scheme"),
params={"value": value},
)
elif not parts.netloc and not parts.path:
raise ValidationError(
_(f"Unable to parse URI {value}, missing net location or path"),
params={"value": value},
)
except Exception as e:
raise ValidationError(
_(f"Unable to parse URI {value}"),
params={"value": value},
) from e

View File

@@ -66,6 +66,7 @@ from documents.data_models import ConsumableDocument
from documents.data_models import DocumentMetadataOverrides
from documents.data_models import DocumentSource
from documents.filters import CorrespondentFilterSet
from documents.filters import CustomFieldFilterSet
from documents.filters import DocumentFilterSet
from documents.filters import DocumentTypeFilterSet
from documents.filters import ObjectOwnedOrGrantedPermissionsFilter
@@ -76,7 +77,6 @@ from documents.matching import match_correspondents
from documents.matching import match_document_types
from documents.matching import match_storage_paths
from documents.matching import match_tags
from documents.models import ConsumptionTemplate
from documents.models import Correspondent
from documents.models import CustomField
from documents.models import Document
@@ -87,6 +87,9 @@ from documents.models import SavedView
from documents.models import ShareLink
from documents.models import StoragePath
from documents.models import Tag
from documents.models import Workflow
from documents.models import WorkflowAction
from documents.models import WorkflowTrigger
from documents.parsers import get_parser_class_for_mime_type
from documents.parsers import parse_date_generator
from documents.permissions import PaperlessAdminPermissions
@@ -98,7 +101,6 @@ from documents.serialisers import AcknowledgeTasksViewSerializer
from documents.serialisers import BulkDownloadSerializer
from documents.serialisers import BulkEditObjectPermissionsSerializer
from documents.serialisers import BulkEditSerializer
from documents.serialisers import ConsumptionTemplateSerializer
from documents.serialisers import CorrespondentSerializer
from documents.serialisers import CustomFieldSerializer
from documents.serialisers import DocumentListSerializer
@@ -112,6 +114,10 @@ from documents.serialisers import TagSerializer
from documents.serialisers import TagSerializerVersion1
from documents.serialisers import TasksViewSerializer
from documents.serialisers import UiSettingsViewSerializer
from documents.serialisers import WorkflowActionSerializer
from documents.serialisers import WorkflowSerializer
from documents.serialisers import WorkflowTriggerSerializer
from documents.signals import document_updated
from documents.tasks import consume_file
from paperless import version
from paperless.db import GnuPG
@@ -320,6 +326,12 @@ class DocumentViewSet(
from documents import index
index.add_or_update_document(self.get_object())
document_updated.send(
sender=self.__class__,
document=self.get_object(),
)
return response
def destroy(self, request, *args, **kwargs):
@@ -839,6 +851,7 @@ class PostDocumentView(GenericAPIView):
doc_name, doc_data = serializer.validated_data.get("document")
correspondent_id = serializer.validated_data.get("correspondent")
document_type_id = serializer.validated_data.get("document_type")
storage_path_id = serializer.validated_data.get("storage_path")
tag_ids = serializer.validated_data.get("tags")
title = serializer.validated_data.get("title")
created = serializer.validated_data.get("created")
@@ -865,6 +878,7 @@ class PostDocumentView(GenericAPIView):
title=title,
correspondent_id=correspondent_id,
document_type_id=document_type_id,
storage_path_id=storage_path_id,
tag_ids=tag_ids,
created=created,
asn=archive_serial_number,
@@ -1373,25 +1387,50 @@ class BulkEditObjectPermissionsView(GenericAPIView, PassUserMixin):
)
class ConsumptionTemplateViewSet(ModelViewSet):
class WorkflowTriggerViewSet(ModelViewSet):
permission_classes = (IsAuthenticated, PaperlessObjectPermissions)
serializer_class = ConsumptionTemplateSerializer
serializer_class = WorkflowTriggerSerializer
pagination_class = StandardPagination
model = ConsumptionTemplate
model = WorkflowTrigger
queryset = WorkflowTrigger.objects.all()
class WorkflowActionViewSet(ModelViewSet):
permission_classes = (IsAuthenticated, PaperlessObjectPermissions)
serializer_class = WorkflowActionSerializer
pagination_class = StandardPagination
model = WorkflowAction
queryset = WorkflowAction.objects.all().prefetch_related(
"assign_tags",
"assign_view_users",
"assign_view_groups",
"assign_change_users",
"assign_change_groups",
"assign_custom_fields",
)
class WorkflowViewSet(ModelViewSet):
permission_classes = (IsAuthenticated, PaperlessObjectPermissions)
serializer_class = WorkflowSerializer
pagination_class = StandardPagination
model = Workflow
queryset = (
ConsumptionTemplate.objects.prefetch_related(
"assign_tags",
"assign_view_users",
"assign_view_groups",
"assign_change_users",
"assign_change_groups",
"assign_custom_fields",
)
.all()
Workflow.objects.all()
.order_by("order")
.prefetch_related(
"triggers",
"actions",
)
)
@@ -1400,6 +1439,11 @@ class CustomFieldViewSet(ModelViewSet):
serializer_class = CustomFieldSerializer
pagination_class = StandardPagination
filter_backends = (
DjangoFilterBackend,
OrderingFilter,
)
filterset_class = CustomFieldFilterSet
model = CustomField

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Afrikaans\n"
"Language: af_ZA\n"
@@ -25,27 +25,27 @@ msgstr "Dokumente"
msgid "owner"
msgstr "eienaar"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Geen"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Enige woord"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Alle woorde"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Presiese ooreenkoms"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Reguliere uitdrukking"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Wasige woord"
@@ -53,20 +53,20 @@ msgstr "Wasige woord"
msgid "Automatic"
msgstr "Outomaties"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "naam"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "ooreenkoms"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "ooreenkomsalgoritme"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "hoofletterongevoelig"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "volgorde"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Verwerk slegs dokumente wat volledig met hierdie lêernaam ooreenkom indien gespesifiseer. U kan jokertekens soos *.pdf of *faktuur* gebruik. Hoofletterongevoelig."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "ken hierdie etiket toe"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "ken hierdie dokumenttipe toe"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "ken hierdie korrespondent toe"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "ken hierdie etiket toe"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "ken hierdie dokumenttipe toe"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "ken hierdie korrespondent toe"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "volgorde"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Ongeldige reguliere uitdrukking: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Ongeldige kleur."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Lêertipe %(type)s word nie ondersteun nie"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Ongeldige veranderlike bespeur."
@@ -854,135 +910,286 @@ msgstr "E-pos"
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
msgid "English (US)"
msgstr "Engels (VS)"
#: paperless/settings.py:587
msgid "Arabic"
msgstr "Arabies"
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "Belorussies"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
msgstr "Katalaans"
#: paperless/settings.py:592
msgid "Czech"
msgstr "Tsjeggies"
#: paperless/settings.py:593
msgid "Danish"
msgstr "Deens"
#: paperless/settings.py:594
msgid "German"
msgstr "Duits"
#: paperless/settings.py:595
msgid "Greek"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "Engels (GB)"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
msgstr "Spaans"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
msgstr "Fins"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "Frans"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "Italian"
msgstr "Italiaans"
msgid "English (US)"
msgstr "Engels (VS)"
#: paperless/settings.py:602
msgid "Luxembourgish"
msgstr "Luxemburgs"
msgid "Arabic"
msgstr "Arabies"
#: paperless/settings.py:603
msgid "Norwegian"
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Dutch"
msgstr "Nederlands"
msgid "Belarusian"
msgstr "Belorussies"
#: paperless/settings.py:605
msgid "Polish"
msgstr "Pools"
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Portuguese (Brazil)"
msgstr "Portugees (Brasilië)"
msgid "Catalan"
msgstr "Katalaans"
#: paperless/settings.py:607
msgid "Portuguese"
msgstr "Portugees"
msgid "Czech"
msgstr "Tsjeggies"
#: paperless/settings.py:608
msgid "Romanian"
msgstr "Roemeens"
msgid "Danish"
msgstr "Deens"
#: paperless/settings.py:609
msgid "Russian"
msgstr "Russies"
msgid "German"
msgstr "Duits"
#: paperless/settings.py:610
msgid "Slovak"
msgid "Greek"
msgstr ""
#: paperless/settings.py:611
msgid "Slovenian"
msgstr "Sloweens"
msgid "English (GB)"
msgstr "Engels (GB)"
#: paperless/settings.py:612
msgid "Serbian"
msgstr "Serwies"
msgid "Spanish"
msgstr "Spaans"
#: paperless/settings.py:613
msgid "Swedish"
msgstr "Sweeds"
msgid "Finnish"
msgstr "Fins"
#: paperless/settings.py:614
msgid "Turkish"
msgstr "Turks"
msgid "French"
msgstr "Frans"
#: paperless/settings.py:615
msgid "Ukrainian"
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italiaans"
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luxemburgs"
#: paperless/settings.py:618
msgid "Norwegian"
msgstr ""
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Nederlands"
#: paperless/settings.py:620
msgid "Polish"
msgstr "Pools"
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugees (Brasilië)"
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugees"
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Roemeens"
#: paperless/settings.py:624
msgid "Russian"
msgstr "Russies"
#: paperless/settings.py:625
msgid "Slovak"
msgstr ""
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Sloweens"
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Serwies"
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Sweeds"
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turks"
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr ""
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Vereenvoudigde Sjinees"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Paperless-ngx administrasie"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-26 00:23\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Arabic\n"
"Language: ar_SA\n"
@@ -25,27 +25,27 @@ msgstr "المستندات"
msgid "owner"
msgstr "مالك"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "لا شيء"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "أي كلمة"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "كل الكلمات"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "تطابق تام"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "التعابير النظامية"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "كلمة غامضة"
@@ -53,20 +53,20 @@ msgstr "كلمة غامضة"
msgid "Automatic"
msgstr "تلقائي"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "اسم"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "تطابق"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "خوارزمية مطابقة"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "غير حساس"
@@ -429,7 +429,7 @@ msgstr ""
#: documents/models.py:459
msgid "is shared by me"
msgstr ""
msgstr "تم المشاركة من قبلي"
#: documents/models.py:469
msgid "rule type"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr "‏مِلَفّ الاستهلاك"
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "تحميل Api"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "جلب البريد"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "الطلب"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr "مسار التصفية"
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr "فقط استهلك المستندات ذات المسار الذي يطابق هذا إذا تم تحديده. البطاقات البرية المحددة كما * مسموح بها. الحالة غير حساسة."
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "تصفية اسم الملف"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "فقط المستندات التي تتطابق تماما مع اسم هذا المِلَفّ إذا تم تحديدها. المحارف البديلة مثل *.pdf أو *الفواتير* مسموح بها. لأنها غير حساسة."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr "تصفية المستندات من قاعدة البريد هذه"
#: documents/models.py:940
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "تعيين العنوان"
#: documents/models.py:945
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr "تعيين عنوان مستند، يمكن أن يتضمن بعض العناصر النائبة، انظر الوثائق."
#: documents/models.py:953 paperless_mail/models.py:216
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "تعيين هذه العلامة"
#: documents/models.py:961 paperless_mail/models.py:224
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "تعيين نوع هذا المستند"
#: documents/models.py:969 paperless_mail/models.py:238
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "تعيين هذا المراسل"
#: documents/models.py:977
#: documents/models.py:1043
msgid "assign this storage path"
msgstr "تعيين مسار التخزين هذا"
#: documents/models.py:986
#: documents/models.py:1052
msgid "assign this owner"
msgstr "تعيين هذا المالك"
#: documents/models.py:993
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr "منح أذونات العرض إلى هؤلاء المستخدمين"
#: documents/models.py:1000
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr "منح صلاحيات العرض إلى هذه المجموعات"
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr "منح صلاحيات التغيير لهؤلاء المستخدمين"
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr "منح صلاحيات التغيير إلى هذه المجموعات"
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
msgstr "قالب الاستهلاك"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
msgstr "قوالب الاستهلاك"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "الطلب"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "التعبير النظامي خاطىء: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "لون خاطئ."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "نوع الملف %(type)s غير مدعوم"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "اكتشاف متغير خاطئ."
@@ -854,135 +910,286 @@ msgstr "البريد الإلكتروني"
msgid "Send me instructions!"
msgstr "أرسل لي التعليمات!"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "لا ورقي"
#: paperless/settings.py:586
msgid "English (US)"
msgstr "الإنجليزية (الولايات المتحدة)"
#: paperless/settings.py:587
msgid "Arabic"
msgstr "العربية"
#: paperless/settings.py:588
msgid "Afrikaans"
msgstr "اللغة الأفريقانية"
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "البيلاروسية"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
msgstr "اللغة الكتالونية"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
msgstr "التشيكية"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:593
msgid "Danish"
msgstr "الدانماركية"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:594
msgid "German"
msgstr "الألمانية"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:595
msgid "Greek"
msgstr "اليونانية"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "الإنجليزية (المملكة المتحدة)"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
msgstr "الإسبانية"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
msgstr "الفنلندية"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "الفرنسية"
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "الإنجليزية (الولايات المتحدة)"
#: paperless/settings.py:602
msgid "Arabic"
msgstr "العربية"
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "اللغة الأفريقانية"
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "البيلاروسية"
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Catalan"
msgstr "اللغة الكتالونية"
#: paperless/settings.py:607
msgid "Czech"
msgstr "التشيكية"
#: paperless/settings.py:608
msgid "Danish"
msgstr "الدانماركية"
#: paperless/settings.py:609
msgid "German"
msgstr "الألمانية"
#: paperless/settings.py:610
msgid "Greek"
msgstr "اليونانية"
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "الإنجليزية (المملكة المتحدة)"
#: paperless/settings.py:612
msgid "Spanish"
msgstr "الإسبانية"
#: paperless/settings.py:613
msgid "Finnish"
msgstr "الفنلندية"
#: paperless/settings.py:614
msgid "French"
msgstr "الفرنسية"
#: paperless/settings.py:615
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "الإيطالية"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "اللوكسمبرجية"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "النرويجية"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "الهولندية"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "البولندية"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "البرتغالية (البرازيل)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "البرتغالية"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "الرومانية"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "الروسية"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "السلوفاكية"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "السلوفانية"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "الصربية"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "السويدية"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "التركية"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "الأوكرانية"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "الصينية المبسطة"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Paperless-ngx الإدارة"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Belarusian\n"
"Language: be_BY\n"
@@ -25,27 +25,27 @@ msgstr "Дакументы"
msgid "owner"
msgstr ""
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr ""
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Любое слова"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Усе словы"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Дакладнае супадзенне"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Рэгулярны выраз"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Невыразнае слова"
@@ -53,20 +53,20 @@ msgstr "Невыразнае слова"
msgid "Automatic"
msgstr "Аўтаматычна"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "назва"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "супадзенне"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "алгарытм супастаўлення"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "без уліку рэгістра"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "парадак"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Апрацоўваць толькі дакументы, якія цалкам супадаюць з імем файла (калі яно пазначана). Маскі, напрыклад *.pdf ці *рахунак*, дазволеныя. Без уліку рэгістра."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "прызначыць гэты тэг"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "прызначыць гэты тып дакумента"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "прызначыць гэтага карэспандэнта"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "прызначыць гэты тэг"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "прызначыць гэты тып дакумента"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "прызначыць гэтага карэспандэнта"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "парадак"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Няправільны рэгулярны выраз: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Няправільны колер."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Тып файла %(type)s не падтрымліваецца"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Выяўлена няправільная зменная."
@@ -854,135 +910,286 @@ msgstr ""
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr ""
#: paperless/settings.py:586
msgid "English (US)"
msgstr "Англійская (ЗША)"
#: paperless/settings.py:587
msgid "Arabic"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "Беларуская"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
msgstr "Чэшская"
#: paperless/settings.py:593
msgid "Danish"
msgstr "Дацкая"
#: paperless/settings.py:594
msgid "German"
msgstr "Нямецкая"
#: paperless/settings.py:595
msgid "Greek"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "Англійская (Вялікабрытанія)"
#: paperless/settings.py:597
msgid "Spanish"
msgstr "Іспанская"
#: paperless/settings.py:598
msgid "Finnish"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "Французская"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "Italian"
msgstr "Італьянская"
msgid "English (US)"
msgstr "Англійская (ЗША)"
#: paperless/settings.py:602
msgid "Luxembourgish"
msgstr "Люксембургская"
msgid "Arabic"
msgstr ""
#: paperless/settings.py:603
msgid "Norwegian"
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Dutch"
msgstr "Нідэрландская"
msgid "Belarusian"
msgstr "Беларуская"
#: paperless/settings.py:605
msgid "Polish"
msgstr "Польская"
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Portuguese (Brazil)"
msgstr "Партугальская (Бразілія)"
msgid "Catalan"
msgstr ""
#: paperless/settings.py:607
msgid "Portuguese"
msgstr "Партугальская"
msgid "Czech"
msgstr "Чэшская"
#: paperless/settings.py:608
msgid "Romanian"
msgstr "Румынская"
msgid "Danish"
msgstr "Дацкая"
#: paperless/settings.py:609
msgid "Russian"
msgstr "Руская"
msgid "German"
msgstr "Нямецкая"
#: paperless/settings.py:610
msgid "Slovak"
msgid "Greek"
msgstr ""
#: paperless/settings.py:611
msgid "Slovenian"
msgstr "Славенская"
msgid "English (GB)"
msgstr "Англійская (Вялікабрытанія)"
#: paperless/settings.py:612
msgid "Serbian"
msgstr "Сербская"
msgid "Spanish"
msgstr "Іспанская"
#: paperless/settings.py:613
msgid "Swedish"
msgstr "Шведская"
msgid "Finnish"
msgstr ""
#: paperless/settings.py:614
msgid "Turkish"
msgstr "Турэцкая"
msgid "French"
msgstr "Французская"
#: paperless/settings.py:615
msgid "Ukrainian"
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "Італьянская"
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Люксембургская"
#: paperless/settings.py:618
msgid "Norwegian"
msgstr ""
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Нідэрландская"
#: paperless/settings.py:620
msgid "Polish"
msgstr "Польская"
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Партугальская (Бразілія)"
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Партугальская"
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Румынская"
#: paperless/settings.py:624
msgid "Russian"
msgstr "Руская"
#: paperless/settings.py:625
msgid "Slovak"
msgstr ""
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Славенская"
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Сербская"
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Шведская"
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Турэцкая"
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr ""
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Кітайская спрошчаная"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Адміністраванне Paperless-ngx"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-25 12:09\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Bulgarian\n"
"Language: bg_BG\n"
@@ -25,27 +25,27 @@ msgstr "Документи"
msgid "owner"
msgstr "собственик"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Няма"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Всяка дума"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Всички думи"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Точно съвпадение"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Регулярен израз"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Неясна дума"
@@ -53,20 +53,20 @@ msgstr "Неясна дума"
msgid "Automatic"
msgstr "Автоматично"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "име"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "съвпадение"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "алгоритъм за съвпадение"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "без чувствителност към големината на буквите"
@@ -611,113 +611,169 @@ msgstr "инстанция на персонализирано поле"
msgid "custom field instances"
msgstr "инстанции на персонализирани полета"
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr "Папка за консумация"
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "Качване на API"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "Извличане на поща"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "ред"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr "филтриране на път"
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr "Да се консумират само документи с път, който съответства на този, ако е зададен. Позволени са заместващи символи, посочени като *. Нечувствителен към големината на буквите."
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "филтриране по файлово име"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Да се консумират само документи, които изцяло съответстват на това файлово име, ако е посочено. Разрешени са заместващи символи като *.pdf или *invoice*. Нечувствителност към големи и малки букви."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr "филтриране на документи по това правило за поща"
#: documents/models.py:940
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "задаване на заглавие"
#: documents/models.py:945
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr "Задайте заглавие на документа, може да включва някои заместители, вижте документацията."
#: documents/models.py:953 paperless_mail/models.py:216
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "задайте този етикет"
#: documents/models.py:961 paperless_mail/models.py:224
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "задайте този тип документ"
#: documents/models.py:969 paperless_mail/models.py:238
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "задайте този кореспондент"
#: documents/models.py:977
#: documents/models.py:1043
msgid "assign this storage path"
msgstr "задайте този път за хранилище"
#: documents/models.py:986
#: documents/models.py:1052
msgid "assign this owner"
msgstr "задайте този собственик"
#: documents/models.py:993
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr "предоставяне на права за преглед на тези потребители"
#: documents/models.py:1000
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr "предоставяне на права за преглед на тези групи"
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr "предоставяне на права за промяна на тези потребители"
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr "предоставяне на права за промяна на тези групи"
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr "присвояване на тези персонализирани полета"
#: documents/models.py:1025
msgid "consumption template"
msgstr "шаблон за консумация"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
msgstr "шаблони за консумация"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "ред"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Невалиден регулярен израз: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Невалиден цвят."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Файловия тип %(type)s не се поддържа"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Засечена е невалидна променлива."
@@ -854,135 +910,286 @@ msgstr "Имейл"
msgid "Send me instructions!"
msgstr "Изпрати ми указания!"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "Английски (САЩ)"
#: paperless/settings.py:587
#: paperless/settings.py:602
msgid "Arabic"
msgstr "Арабски"
#: paperless/settings.py:588
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "Африканс"
#: paperless/settings.py:589
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Беларуски"
#: paperless/settings.py:590
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr "Български"
#: paperless/settings.py:591
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Каталунски"
#: paperless/settings.py:592
#: paperless/settings.py:607
msgid "Czech"
msgstr "Чешки"
#: paperless/settings.py:593
#: paperless/settings.py:608
msgid "Danish"
msgstr "Датски"
#: paperless/settings.py:594
#: paperless/settings.py:609
msgid "German"
msgstr "Немски"
#: paperless/settings.py:595
#: paperless/settings.py:610
msgid "Greek"
msgstr "Гръцки"
#: paperless/settings.py:596
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Английски (Великобритания)"
#: paperless/settings.py:597
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Испански"
#: paperless/settings.py:598
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Финландски"
#: paperless/settings.py:599
#: paperless/settings.py:614
msgid "French"
msgstr "Френски"
#: paperless/settings.py:600
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "Унгарски"
#: paperless/settings.py:601
#: paperless/settings.py:616
msgid "Italian"
msgstr "Италиански"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Люксембургски"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Норвежки"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Холандски"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Полски"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Португалски (Бразилия)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Португалски"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Румънски"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Руски"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Словашки"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Словенски"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Сръбски"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Шведски"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Турски"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Украински"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Китайски опростен"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Paperless-ngx администрация"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-20 12:08\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Catalan\n"
"Language: ca_ES\n"
@@ -25,27 +25,27 @@ msgstr "documents"
msgid "owner"
msgstr "propietari"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Cap"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Qualsevol paraula"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Totes paraules"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Coincidència exacte"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Expressió Regular"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Paraula difusa"
@@ -53,20 +53,20 @@ msgstr "Paraula difusa"
msgid "Automatic"
msgstr "Automàtic"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "nom"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "coincidència"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "algoritme coincident"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "no distingeix entre majúscules i minúscules"
@@ -611,113 +611,169 @@ msgstr "instància de camp personalitzat"
msgid "custom field instances"
msgstr "instàncies de camps personalitzats"
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr "Començada Consumpció"
#: documents/models.py:903
msgid "Document Added"
msgstr "Document Afegit"
#: documents/models.py:904
msgid "Document Updated"
msgstr "Document Actualitzat"
#: documents/models.py:907
msgid "Consume Folder"
msgstr "Directori 'Condumir'"
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "Api Pujada"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "Recollida Correu"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "ordena"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr "Tipus d'activador de Workflow"
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr "filtra camins"
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr "Consumeix documents amb la ruta que coincideixi si està especificada. Wilcards especificats amb * estan permessos, no sensitiu."
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "filtra nom arxiu"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Consumiu només documents que coincideixin completament amb aquest nom de fitxer si s'especifica. Es permeten els comodins com ara *.pdf o *factura*. Cas insensitiu."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr "filtra documents d'aquesta regla de correu"
#: documents/models.py:940
#: documents/models.py:968
msgid "has these tag(s)"
msgstr "té aquestes etiquete(s)"
#: documents/models.py:976
msgid "has this document type"
msgstr "té aquest tipus de document"
#: documents/models.py:984
msgid "has this correspondent"
msgstr "té aquest corresponsal"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr "Assignació"
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "assigna títol"
#: documents/models.py:945
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr "Assigna un títol de document, pot incloure alguns marcadors de posició, vegeu la documentació."
#: documents/models.py:953 paperless_mail/models.py:216
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "assigna aquesta etiqueta"
#: documents/models.py:961 paperless_mail/models.py:224
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "assigna aquest tipus de document"
#: documents/models.py:969 paperless_mail/models.py:238
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "assigna aquest corresponsal"
#: documents/models.py:977
#: documents/models.py:1043
msgid "assign this storage path"
msgstr "assigna aquesta ruta emmagatzematge"
#: documents/models.py:986
#: documents/models.py:1052
msgid "assign this owner"
msgstr "assigna aquest propietari"
#: documents/models.py:993
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr "dona permissos visualització a aquests usuaris"
#: documents/models.py:1000
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr "dóna permissos de visionat a aquests grups"
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr "dóna permissos d'edició a aquests usuaris"
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr "dóna permissos d'edició a aquests grups"
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr "assigna aquests camps personalitzats"
#: documents/models.py:1025
msgid "consumption template"
msgstr "plantilla consumició"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
msgstr "plantilles consumicions"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "ordena"
#: documents/models.py:1107
msgid "triggers"
msgstr "disparadors"
#: documents/models.py:1114
msgid "actions"
msgstr "accions"
#: documents/models.py:1117
msgid "enabled"
msgstr "habilitat"
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Expressió regular invàlida: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Color Invàlid."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tipus arxiu %(type)s no suportat"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Variable detectada invàlida."
@@ -854,135 +910,286 @@ msgstr "Email"
msgid "Send me instructions!"
msgstr "Enviar instruccions"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "No es pot analitzar l'URI {value}, falta l'esquema"
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "No es pot analitzar l'URI {value}, falta la ubicació o el camí de la xarxa"
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "No es pot analitzar l'URI {value},"
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
#: paperless/models.py:25
msgid "pdf"
msgstr "pdf"
#: paperless/models.py:26
msgid "pdfa"
msgstr "pdfa"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr "pdfa-1"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr "pdfa-2"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr "pdfa-3"
#: paperless/models.py:38
msgid "skip"
msgstr "skip"
#: paperless/models.py:39
msgid "redo"
msgstr "redo"
#: paperless/models.py:40
msgid "force"
msgstr "forçar"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr "mai"
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr "sempre"
#: paperless/models.py:59
msgid "clean"
msgstr "neteja"
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr "cap"
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr "RGB"
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr "Gris"
#: paperless/models.py:73
msgid "CMYK"
msgstr "CMYK"
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr "Estableix tipus de sortida PDF"
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr "OCR des de pàgina 1 fins aquest valor"
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr "Feu OCR utilitzant aquests idiomes"
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr "Estableix el mode OCR"
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr "Habilita la rotació de pàgines"
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr "Estableix el llindar de rotació de pàgines"
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr "Estableix la mida màxima de la imatge per a la descompressió"
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr "configuració de l'aplicació paperless"
#: paperless/settings.py:601
msgid "English (US)"
msgstr "English (US)"
#: paperless/settings.py:587
#: paperless/settings.py:602
msgid "Arabic"
msgstr "Àrab"
#: paperless/settings.py:588
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "Africà"
#: paperless/settings.py:589
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Bielorús"
#: paperless/settings.py:590
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr "Búlgar"
#: paperless/settings.py:591
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Català"
#: paperless/settings.py:592
#: paperless/settings.py:607
msgid "Czech"
msgstr "Txec"
#: paperless/settings.py:593
#: paperless/settings.py:608
msgid "Danish"
msgstr "Danès"
#: paperless/settings.py:594
#: paperless/settings.py:609
msgid "German"
msgstr "Alemany"
#: paperless/settings.py:595
#: paperless/settings.py:610
msgid "Greek"
msgstr "Grec"
#: paperless/settings.py:596
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Anglès (GB)"
#: paperless/settings.py:597
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Espanyol"
#: paperless/settings.py:598
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Finès"
#: paperless/settings.py:599
#: paperless/settings.py:614
msgid "French"
msgstr "Francès"
#: paperless/settings.py:600
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "Hongarès"
#: paperless/settings.py:601
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italià"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luxemburguès"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Noruec"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Holandès"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Polac"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portuguès (BZ)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portuguès"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Romanès"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Rus"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Eslovac"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Eslovè"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Serbi"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Suec"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turc"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Ucranià"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Xinès Simplificat"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Administració Paperless-ngx"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Czech\n"
"Language: cs_CZ\n"
@@ -25,27 +25,27 @@ msgstr "Dokumenty"
msgid "owner"
msgstr "vlastník"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Žádný"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Jakékoliv slovo"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Všechna slova"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Přesná shoda"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Regulární výraz"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Fuzzy slovo"
@@ -53,20 +53,20 @@ msgstr "Fuzzy slovo"
msgid "Automatic"
msgstr "Automatický"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "název"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "shoda"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "algoritmus pro shodu"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "je ignorováno"
@@ -409,7 +409,7 @@ msgstr ""
#: documents/models.py:454
msgid "owner is"
msgstr ""
msgstr "vlastník je"
#: documents/models.py:455
msgid "has owner in"
@@ -529,11 +529,11 @@ msgstr "uživatel"
#: documents/models.py:681
msgid "note"
msgstr ""
msgstr "poznámka"
#: documents/models.py:682
msgid "notes"
msgstr ""
msgstr "poznámky"
#: documents/models.py:690
msgid "Archive"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "pořadí"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Konzumovat jen dokumenty které přesně odpovídají tomuto názvu souboru pokud specifikováno. Zástupné znaky jako *.pdf nebo *invoice* jsou povoleny. Nezáleží na velikosti písmen."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "přiřadit tento tag"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "přiřadit tento typ dokumentu"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "přiřadit tohoto korespondenta"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "přiřadit tento tag"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "přiřadit tento typ dokumentu"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "přiřadit tohoto korespondenta"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "pořadí"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Neplatný regulární výraz: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Neplatná barva."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Typ souboru %(type)s není podporován"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Zjištěna neplatná proměnná."
@@ -854,135 +910,286 @@ msgstr "Email"
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
msgid "English (US)"
msgstr "Angličtina (US)"
#: paperless/settings.py:587
msgid "Arabic"
msgstr "Arabština"
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "Běloruština"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
msgstr "Čeština"
#: paperless/settings.py:593
msgid "Danish"
msgstr "Dánština"
#: paperless/settings.py:594
msgid "German"
msgstr "Němčina"
#: paperless/settings.py:595
msgid "Greek"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "Angličtina (GB)"
#: paperless/settings.py:597
msgid "Spanish"
msgstr "Španělština"
#: paperless/settings.py:598
msgid "Finnish"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "Francouzština"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "Italian"
msgstr "Italština"
msgid "English (US)"
msgstr "Angličtina (US)"
#: paperless/settings.py:602
msgid "Luxembourgish"
msgstr "Lucemburština"
msgid "Arabic"
msgstr "Arabština"
#: paperless/settings.py:603
msgid "Norwegian"
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Dutch"
msgstr "Holandština"
msgid "Belarusian"
msgstr "Běloruština"
#: paperless/settings.py:605
msgid "Polish"
msgstr "Polština"
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Portuguese (Brazil)"
msgstr "Portugalština (Brazílie)"
msgid "Catalan"
msgstr ""
#: paperless/settings.py:607
msgid "Portuguese"
msgstr "Portugalština"
msgid "Czech"
msgstr "Čeština"
#: paperless/settings.py:608
msgid "Romanian"
msgstr "Rumunština"
msgid "Danish"
msgstr "nština"
#: paperless/settings.py:609
msgid "Russian"
msgstr "Ruština"
msgid "German"
msgstr "Němčina"
#: paperless/settings.py:610
msgid "Slovak"
msgid "Greek"
msgstr ""
#: paperless/settings.py:611
msgid "Slovenian"
msgstr "Slovinština"
msgid "English (GB)"
msgstr "Angličtina (GB)"
#: paperless/settings.py:612
msgid "Serbian"
msgstr "Srbština"
msgid "Spanish"
msgstr "Španělština"
#: paperless/settings.py:613
msgid "Swedish"
msgstr "Švédština"
msgid "Finnish"
msgstr ""
#: paperless/settings.py:614
msgid "Turkish"
msgstr "Turečtina"
msgid "French"
msgstr "Francouzština"
#: paperless/settings.py:615
msgid "Ukrainian"
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italština"
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Lucemburština"
#: paperless/settings.py:618
msgid "Norwegian"
msgstr ""
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Holandština"
#: paperless/settings.py:620
msgid "Polish"
msgstr "Polština"
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugalština (Brazílie)"
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugalština"
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Rumunština"
#: paperless/settings.py:624
msgid "Russian"
msgstr "Ruština"
#: paperless/settings.py:625
msgid "Slovak"
msgstr ""
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Slovinština"
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Srbština"
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Švédština"
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turečtina"
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr ""
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Čínština (zjednodušená)"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Správa Paperless-ngx"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Danish\n"
"Language: da_DK\n"
@@ -25,27 +25,27 @@ msgstr "Dokumenter"
msgid "owner"
msgstr ""
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr ""
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Ethvert ord"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Alle ord"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Præcis match"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Regulær udtryk"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Tilnærmet ord"
@@ -53,20 +53,20 @@ msgstr "Tilnærmet ord"
msgid "Automatic"
msgstr "Automatisk"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "navn"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "match"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "matching algoritme"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "er usensitiv"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "rækkefølge"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Bearbejd kun dokumenter, der helt matcher dette filnavn, hvis angivet. Wildcards såsom *.pdf eller *faktura * er tilladt."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "tildel denne etiket"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "tildel denne dokumenttype"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "tildel denne korrespondent"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "tildel denne etiket"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "tildel denne dokumenttype"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "tildel denne korrespondent"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "rækkefølge"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Ugyldigt regulært udtryk: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Ugyldig farve."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Filtype %(type)s understøttes ikke"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr ""
@@ -854,135 +910,286 @@ msgstr ""
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr ""
#: paperless/settings.py:586
msgid "English (US)"
msgstr "Engelsk (USA)"
#: paperless/settings.py:587
msgid "Arabic"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
msgstr "Tjekkisk"
#: paperless/settings.py:593
msgid "Danish"
msgstr "Dansk"
#: paperless/settings.py:594
msgid "German"
msgstr "Tysk"
#: paperless/settings.py:595
msgid "Greek"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "Engelsk (GB)"
#: paperless/settings.py:597
msgid "Spanish"
msgstr "Spansk"
#: paperless/settings.py:598
msgid "Finnish"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "Fransk"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "Italian"
msgstr "Italiensk"
msgid "English (US)"
msgstr "Engelsk (USA)"
#: paperless/settings.py:602
msgid "Luxembourgish"
msgstr "Luxemburgsk"
msgid "Arabic"
msgstr ""
#: paperless/settings.py:603
msgid "Norwegian"
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Dutch"
msgstr "Hollandsk"
msgid "Belarusian"
msgstr ""
#: paperless/settings.py:605
msgid "Polish"
msgstr "Polsk"
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Portuguese (Brazil)"
msgstr "Portugisisk (Brasilien)"
msgid "Catalan"
msgstr ""
#: paperless/settings.py:607
msgid "Portuguese"
msgstr "Portugisisk"
msgid "Czech"
msgstr "Tjekkisk"
#: paperless/settings.py:608
msgid "Romanian"
msgstr "Romansk"
msgid "Danish"
msgstr "Dansk"
#: paperless/settings.py:609
msgid "Russian"
msgstr "Russisk"
msgid "German"
msgstr "Tysk"
#: paperless/settings.py:610
msgid "Slovak"
msgid "Greek"
msgstr ""
#: paperless/settings.py:611
msgid "Slovenian"
msgstr ""
msgid "English (GB)"
msgstr "Engelsk (GB)"
#: paperless/settings.py:612
msgid "Serbian"
msgstr ""
msgid "Spanish"
msgstr "Spansk"
#: paperless/settings.py:613
msgid "Swedish"
msgstr "Svensk"
#: paperless/settings.py:614
msgid "Turkish"
msgid "Finnish"
msgstr ""
#: paperless/settings.py:614
msgid "French"
msgstr "Fransk"
#: paperless/settings.py:615
msgid "Ukrainian"
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italiensk"
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luxemburgsk"
#: paperless/settings.py:618
msgid "Norwegian"
msgstr ""
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Hollandsk"
#: paperless/settings.py:620
msgid "Polish"
msgstr "Polsk"
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugisisk (Brasilien)"
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugisisk"
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Romansk"
#: paperless/settings.py:624
msgid "Russian"
msgstr "Russisk"
#: paperless/settings.py:625
msgid "Slovak"
msgstr ""
#: paperless/settings.py:626
msgid "Slovenian"
msgstr ""
#: paperless/settings.py:627
msgid "Serbian"
msgstr ""
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Svensk"
#: paperless/settings.py:629
msgid "Turkish"
msgstr ""
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr ""
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr ""
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Paperless-ngx administration"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-23 00:22\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: German\n"
"Language: de_DE\n"
@@ -25,27 +25,27 @@ msgstr "Dokumente"
msgid "owner"
msgstr "Eigentümer"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Keiner"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Irgendein Wort"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Alle Wörter"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Exakte Übereinstimmung"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Regulärer Ausdruck"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Ungenaues Wort"
@@ -53,20 +53,20 @@ msgstr "Ungenaues Wort"
msgid "Automatic"
msgstr "Automatisch"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "Name"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "Zuweisungsmuster"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "Zuweisungsalgorithmus"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "Groß-/Kleinschreibung irrelevant"
@@ -611,113 +611,169 @@ msgstr "Benutzerdefinierte Feld-Instanz"
msgid "custom field instances"
msgstr "Benutzerdefinierte Feld-Instanzen"
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr "Dokument hinzugefügt"
#: documents/models.py:904
msgid "Document Updated"
msgstr "Dokument aktualisiert"
#: documents/models.py:907
msgid "Consume Folder"
msgstr "Importordner"
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "API-Upload"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "E-Mail-Abruf"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "Reihenfolge"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr "Pfad filtern"
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr "Nur Dokumente, die mit diesem Pfad (falls angegeben) übereinstimmen, verarbeiten. Platzhalter wie * sind erlaubt. Groß- und Kleinschreibung wird nicht beachtet."
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "Dateinamen filtern"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Nur Dokumente, die vollständig mit diesem Dateinamen (falls angegeben) übereinstimmen, verarbeiten. Platzhalter wie *.pdf oder *rechnung* sind erlaubt. Groß- und Kleinschreibung wird nicht beachtet."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr "Dokumente aus dieser E-Mail-Regel filtern"
#: documents/models.py:940
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr "Zuordnung"
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "Titel zuweisen"
#: documents/models.py:945
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr "Weisen Sie einen Dokumententitel zu. Dieser kann Platzhalter beinhalten, siehe Dokumentation."
#: documents/models.py:953 paperless_mail/models.py:216
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "Dieses Tag zuweisen"
#: documents/models.py:961 paperless_mail/models.py:224
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "Diesen Dokumenttyp zuweisen"
#: documents/models.py:969 paperless_mail/models.py:238
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "Diesen Korrespondenten zuweisen"
#: documents/models.py:977
#: documents/models.py:1043
msgid "assign this storage path"
msgstr "Diesen Speicherpfad zuweisen"
#: documents/models.py:986
#: documents/models.py:1052
msgid "assign this owner"
msgstr "Diesen Eigentümer zuordnen"
#: documents/models.py:993
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr "Diesen Benutzern Anzeigeberechtigungen erteilen"
#: documents/models.py:1000
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr "Diesen Gruppen Anzeigeberechtigungen erteilen"
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr "Diesen Benutzern Bearbeitungsberechtigungen erteilen"
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr "Diesen Gruppen Bearbeitungsberechtigungen erteilen"
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr "Diese benutzerdefinierten Felder zuweisen"
#: documents/models.py:1025
msgid "consumption template"
msgstr "Verarbeitungsvorlage"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
msgstr "Verarbeitungsvorlagen"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "Reihenfolge"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr "aktiviert"
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Ungültiger regulärer Ausdruck: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Ungültige Farbe."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Dateityp %(type)s nicht unterstützt"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Ungültige Variable erkannt."
@@ -854,135 +910,286 @@ msgstr "E-Mail"
msgid "Send me instructions!"
msgstr "Anweisungen senden!"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/models.py:40
msgid "force"
msgstr "erzwingen"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr "nie"
#: paperless/models.py:50
msgid "with_text"
msgstr "mit_Text"
#: paperless/models.py:51
msgid "always"
msgstr "immer"
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr "Grau"
#: paperless/models.py:73
msgid "CMYK"
msgstr "CMYK"
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr "Legt den Ausgabe-PDF-Typ fest"
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr "Legt den OCR-Modus fest"
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "Englisch (US)"
#: paperless/settings.py:587
#: paperless/settings.py:602
msgid "Arabic"
msgstr "Arabisch"
#: paperless/settings.py:588
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "Afrikanisch"
#: paperless/settings.py:589
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Belarussisch"
#: paperless/settings.py:590
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr "Bulgarisch"
#: paperless/settings.py:591
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Katalanisch"
#: paperless/settings.py:592
#: paperless/settings.py:607
msgid "Czech"
msgstr "Tschechisch"
#: paperless/settings.py:593
#: paperless/settings.py:608
msgid "Danish"
msgstr "Dänisch"
#: paperless/settings.py:594
#: paperless/settings.py:609
msgid "German"
msgstr "Deutsch"
#: paperless/settings.py:595
#: paperless/settings.py:610
msgid "Greek"
msgstr "Griechisch"
#: paperless/settings.py:596
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Englisch (UK)"
#: paperless/settings.py:597
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Spanisch"
#: paperless/settings.py:598
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Finnisch"
#: paperless/settings.py:599
#: paperless/settings.py:614
msgid "French"
msgstr "Französisch"
#: paperless/settings.py:600
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "Ungarisch"
#: paperless/settings.py:601
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italienisch"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luxemburgisch"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Norwegisch"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Niederländisch"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Polnisch"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugiesisch (Brasilien)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugiesisch"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Rumänisch"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Russisch"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Slowakisch"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Slowenisch"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Serbisch"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Schwedisch"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Türkisch"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Ukrainisch"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Chinesisch (vereinfacht)"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Paperless-ngx Administration"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Greek\n"
"Language: el_GR\n"
@@ -25,27 +25,27 @@ msgstr "Έγγραφα"
msgid "owner"
msgstr "ιδιοκτήτης"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Τίποτα"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Οποιαδήποτε λέξη"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Όλες οι λέξεις"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Ακριβής ταύτιση"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Κανονική έκφραση"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Fuzzy word"
@@ -53,20 +53,20 @@ msgstr "Fuzzy word"
msgid "Automatic"
msgstr "Αυτόματο"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "όνομα"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "αντιστοίχιση"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "αλγόριθμος αντιστοίχισης"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "χωρίς διάκριση πεζών - κεφαλαίων"
@@ -611,113 +611,169 @@ msgstr "στιγμιότυπο προσαρμοσμένου πεδίου"
msgid "custom field instances"
msgstr "στιγμιότυπα προσαρμοσμένων πεδίων"
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr "Φάκελος Κατανάλωσης"
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "Μεταφόρτωση μέσω API"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "Λήψη Αλληλογραφίας"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "σειρά"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr "διαδρομή φίλτρου"
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr "Μόνο κατανάλωση εγγράφων με μια διαδρομή που ταιριάζει με αυτό αν έχει καθοριστεί. Επιτρέπεται η χρήση μπαλαντέρ που ορίζεται ως *. Χωρίς διάκριση πεζών-κεφαλαίων."
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "φιλτράρισμα ονόματος αρχείου"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Μόνο κατανάλωση αρχείων που ταιριάζουν απόλυτα με το όνομα αρχείου, εάν καθοριστεί. Επιτρέπεται η χρήση μπαλαντέρ όπως *.pdf ή *invoice*. Δεν υπάρχει έλεγχος πεζών/κεφαλαίων."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr "φιλτράρισμα εγγράφων από αυτόν τον κανόνα αλληλογραφίας"
#: documents/models.py:940
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "ανάθεση τίτλου"
#: documents/models.py:945
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr "Η ανάθεση τίτλου εγγράφου μπορεί να περιέχει μερικά placeholders, δείτε την τεκμηρίωση."
#: documents/models.py:953 paperless_mail/models.py:216
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "ανάθεση αυτής της ετικέτας"
#: documents/models.py:961 paperless_mail/models.py:224
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "ανάθεση αυτού του τύπου εγγράφου"
#: documents/models.py:969 paperless_mail/models.py:238
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "ανάθεση αυτού του ανταποκριτή"
#: documents/models.py:977
#: documents/models.py:1043
msgid "assign this storage path"
msgstr "ανάθεση αυτής της διαδρομής αποθήκευσης"
#: documents/models.py:986
#: documents/models.py:1052
msgid "assign this owner"
msgstr "ανάθεση αυτού του ιδιοκτήτη"
#: documents/models.py:993
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr "εκχώρηση δικαιωμάτων προβολής σε αυτούς τους χρήστες"
#: documents/models.py:1000
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr "εκχώρηση δικαιωμάτων προβολής σε αυτές τις ομάδες"
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr "εκχώρηση δικαιωμάτων μεταβολής σε αυτές τις ομάδες"
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr "εκχώρηση δικαιωμάτων μεταβολής σε αυτές τις ομάδες"
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
msgstr "πρότυπο κατανάλωσης"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
msgstr "πρότυπα κατανάλωσης"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "σειρά"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Άκυρη έκφραση: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Άκυρο χρώμα."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Ο τύπος αρχείου %(type)s δεν υποστηρίζεται"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Εντοπίστηκε μη έγκυρη μεταβλητή."
@@ -854,135 +910,286 @@ msgstr "E-mail"
msgid "Send me instructions!"
msgstr "Αποστολή Οδηγιών!"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "Αγγλικά (ΗΠΑ)"
#: paperless/settings.py:587
#: paperless/settings.py:602
msgid "Arabic"
msgstr "Αραβικά"
#: paperless/settings.py:588
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "Αφρικανικά"
#: paperless/settings.py:589
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Λευκορωσικά"
#: paperless/settings.py:590
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr "Βουλγαρικά"
#: paperless/settings.py:591
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Καταλανικά"
#: paperless/settings.py:592
#: paperless/settings.py:607
msgid "Czech"
msgstr "Τσέχικα"
#: paperless/settings.py:593
#: paperless/settings.py:608
msgid "Danish"
msgstr "Δανέζικα"
#: paperless/settings.py:594
#: paperless/settings.py:609
msgid "German"
msgstr "Γερμανικά"
#: paperless/settings.py:595
#: paperless/settings.py:610
msgid "Greek"
msgstr "Ελληνικά"
#: paperless/settings.py:596
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Αγγλικά (Ηνωμένο Βασίλειο)"
#: paperless/settings.py:597
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Ισπανικά"
#: paperless/settings.py:598
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Φινλανδικά"
#: paperless/settings.py:599
#: paperless/settings.py:614
msgid "French"
msgstr "Γαλλικά"
#: paperless/settings.py:600
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "Ουγγρικά"
#: paperless/settings.py:601
#: paperless/settings.py:616
msgid "Italian"
msgstr "Ιταλικά"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Λουξεμβουργικά"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Νορβηγικά"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Ολλανδικά"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Πολωνικά"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Πορτογαλικά (Βραζιλίας)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Πορτογαλικά"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Ρουμάνικα"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Ρωσικά"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Σλοβακικά"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Σλοβενικά"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Σερβικά"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Σουηδικά"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Τούρκικα"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Ουκρανικά"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Κινέζικα Απλοποιημένα"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Διαχείριση Paperless-ngx"

View File

@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2022-02-17 04:17\n"
"Last-Translator: \n"
"Language-Team: English\n"
@@ -25,27 +25,27 @@ msgstr ""
msgid "owner"
msgstr ""
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr ""
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr ""
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr ""
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr ""
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr ""
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr ""
@@ -53,20 +53,20 @@ msgstr ""
msgid "Automatic"
msgstr ""
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr ""
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr ""
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr ""
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr ""
@@ -615,118 +615,174 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid ""
"Only consume documents with a path that matches this if specified. Wildcards "
"specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid ""
"Only consume documents which entirely match this filename if specified. "
"Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr ""
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:945
#: documents/models.py:1011
msgid ""
"Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr ""
#: documents/models.py:961 paperless_mail/models.py:224
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr ""
#: documents/models.py:969 paperless_mail/models.py:238
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr ""
#: documents/models.py:977
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:986
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:993
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1000
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr ""
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr ""
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr ""
@@ -869,135 +925,286 @@ msgstr ""
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr ""
#: paperless/settings.py:586
msgid "English (US)"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:587
msgid "Arabic"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:593
msgid "Danish"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/settings.py:594
msgid "German"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/settings.py:595
msgid "Greek"
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/settings.py:599
msgid "French"
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "Italian"
msgid "English (US)"
msgstr ""
#: paperless/settings.py:602
msgid "Luxembourgish"
msgid "Arabic"
msgstr ""
#: paperless/settings.py:603
msgid "Norwegian"
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Dutch"
msgid "Belarusian"
msgstr ""
#: paperless/settings.py:605
msgid "Polish"
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Portuguese (Brazil)"
msgid "Catalan"
msgstr ""
#: paperless/settings.py:607
msgid "Portuguese"
msgid "Czech"
msgstr ""
#: paperless/settings.py:608
msgid "Romanian"
msgid "Danish"
msgstr ""
#: paperless/settings.py:609
msgid "Russian"
msgid "German"
msgstr ""
#: paperless/settings.py:610
msgid "Slovak"
msgid "Greek"
msgstr ""
#: paperless/settings.py:611
msgid "Slovenian"
msgid "English (GB)"
msgstr ""
#: paperless/settings.py:612
msgid "Serbian"
msgid "Spanish"
msgstr ""
#: paperless/settings.py:613
msgid "Swedish"
msgid "Finnish"
msgstr ""
#: paperless/settings.py:614
msgid "Turkish"
msgid "French"
msgstr ""
#: paperless/settings.py:615
msgid "Ukrainian"
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr ""
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr ""
#: paperless/settings.py:618
msgid "Norwegian"
msgstr ""
#: paperless/settings.py:619
msgid "Dutch"
msgstr ""
#: paperless/settings.py:620
msgid "Polish"
msgstr ""
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings.py:622
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:623
msgid "Romanian"
msgstr ""
#: paperless/settings.py:624
msgid "Russian"
msgstr ""
#: paperless/settings.py:625
msgid "Slovak"
msgstr ""
#: paperless/settings.py:626
msgid "Slovenian"
msgstr ""
#: paperless/settings.py:627
msgid "Serbian"
msgstr ""
#: paperless/settings.py:628
msgid "Swedish"
msgstr ""
#: paperless/settings.py:629
msgid "Turkish"
msgstr ""
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr ""
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr ""
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-21 12:09\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Language: es_ES\n"
@@ -25,27 +25,27 @@ msgstr "Documentos"
msgid "owner"
msgstr "propietario"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Nada"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Cualquier palabra"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Todas las palabras"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Coincidencia exacta"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Expresión regular"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Palabra borrosa"
@@ -53,20 +53,20 @@ msgstr "Palabra borrosa"
msgid "Automatic"
msgstr "Automático"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "nombre"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "coincidencia"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "Algoritmo de coincidencia"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "es insensible"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr "Consumir carpeta"
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "Carga de Api"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "Buscar correo"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "orden"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr "filtrar ruta"
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr "Sólo consumir documentos con una ruta que coincida con esta si se especifica. Los comodines especificados como * están permitidos. No permiten mayúsculas."
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "filtrar nombre del archivo"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Sólo consumirá documentos que coincidan completamente con este nombre de archivo si se especifica. Se permiten comodines como *.pdf o *factura*. No diferencia mayúsculas."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr "filtrar documentos de esta regla de correo"
#: documents/models.py:940
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "asignar título"
#: documents/models.py:945
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr "Asignar título al documento, puede incluir marcadores de posición, vea documentación."
#: documents/models.py:953 paperless_mail/models.py:216
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "asignar esta etiqueta"
#: documents/models.py:961 paperless_mail/models.py:224
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "asignar este tipo de documento"
#: documents/models.py:969 paperless_mail/models.py:238
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "asignar este interlocutor"
#: documents/models.py:977
#: documents/models.py:1043
msgid "assign this storage path"
msgstr "asignar esta ruta de almacenamiento"
#: documents/models.py:986
#: documents/models.py:1052
msgid "assign this owner"
msgstr "asignar dueño"
#: documents/models.py:993
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr "conceder permisos de vista a estos usuarios"
#: documents/models.py:1000
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr "conceder permisos de vista a estos grupos"
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr "conceder permisos de cambio a estos usuarios"
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr "conceder permisos de cambio a estos grupos"
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
msgstr "plantilla de consumo"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
msgstr "plantillas de consumo"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "orden"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Expresión irregular inválida: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Color inválido."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tipo de fichero %(type)s no suportado"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Variable inválida."
@@ -854,135 +910,286 @@ msgstr "E-mail"
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "Inglés (US)"
#: paperless/settings.py:587
#: paperless/settings.py:602
msgid "Arabic"
msgstr "Árabe"
#: paperless/settings.py:588
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "Africano"
#: paperless/settings.py:589
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Bielorruso"
#: paperless/settings.py:590
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr "Búlgaro"
#: paperless/settings.py:591
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Catalán"
#: paperless/settings.py:592
#: paperless/settings.py:607
msgid "Czech"
msgstr "Checo"
#: paperless/settings.py:593
#: paperless/settings.py:608
msgid "Danish"
msgstr "Danés"
#: paperless/settings.py:594
#: paperless/settings.py:609
msgid "German"
msgstr "Alemán"
#: paperless/settings.py:595
#: paperless/settings.py:610
msgid "Greek"
msgstr "Griego"
#: paperless/settings.py:596
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Inglés (Gran Bretaña)"
#: paperless/settings.py:597
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Español"
#: paperless/settings.py:598
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Finlandés"
#: paperless/settings.py:599
#: paperless/settings.py:614
msgid "French"
msgstr "Francés"
#: paperless/settings.py:600
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "Húngaro"
#: paperless/settings.py:601
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italiano"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luxemburgués"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Noruego"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Alemán"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Polaco"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugués (Brasil)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugués"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Rumano"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Ruso"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Eslovaco"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Esloveno"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Serbio"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Sueco"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turco"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Ucraniano"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Chino simplificado"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Administración de Paperless-ngx"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Finnish\n"
"Language: fi_FI\n"
@@ -25,27 +25,27 @@ msgstr "Asiakirjat"
msgid "owner"
msgstr "omistaja"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Ei mitään"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Mikä tahansa sana"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Kaikki sanat"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Tarkka osuma"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Säännöllinen lauseke (regex)"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Sumea sana"
@@ -53,20 +53,20 @@ msgstr "Sumea sana"
msgid "Automatic"
msgstr "Automaattinen"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "nimi"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "osuma"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "tunnistusalgoritmi"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "ei ole herkkä"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "API-lähetys"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "järjestys"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Tuo vain dokumentit jotka täsmäävät täysin tiedostonimen suhteen. Jokerimerkit kuten *.pdf tai *lasku* ovat sallittuja. Kirjainkoko ei merkitse."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "määritä tämä tunniste"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "määritä tämä asiakirjatyyppi"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "määritä tämä kirjeenvaihtaja"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "määritä tämä tunniste"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "määritä tämä asiakirjatyyppi"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "määritä tämä kirjeenvaihtaja"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "järjestys"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Virheellinen regex-lauseke: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Virheellinen väri."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tiedostotyyppiä %(type)s ei tueta"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Virheellinen muuttuja havaittu."
@@ -854,135 +910,286 @@ msgstr "Sähköposti"
msgid "Send me instructions!"
msgstr "Lähettäkää ohjeet!"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
msgid "English (US)"
msgstr "Englanti (US)"
#: paperless/settings.py:587
msgid "Arabic"
msgstr "Arabialainen"
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "valkovenäjä"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
msgstr "Katalaani"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
msgstr "Tšekki"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:593
msgid "Danish"
msgstr "Tanska"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:594
msgid "German"
msgstr "Saksa"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:595
msgid "Greek"
msgstr "Kreikka"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "Englanti (US)"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
msgstr "Espanja"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
msgstr "Suomi"
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "Ranska"
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "Englanti (US)"
#: paperless/settings.py:602
msgid "Arabic"
msgstr "Arabialainen"
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "valkovenäjä"
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Katalaani"
#: paperless/settings.py:607
msgid "Czech"
msgstr "Tšekki"
#: paperless/settings.py:608
msgid "Danish"
msgstr "Tanska"
#: paperless/settings.py:609
msgid "German"
msgstr "Saksa"
#: paperless/settings.py:610
msgid "Greek"
msgstr "Kreikka"
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Englanti (US)"
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Espanja"
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Suomi"
#: paperless/settings.py:614
msgid "French"
msgstr "Ranska"
#: paperless/settings.py:615
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italia"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luxemburg"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Norja"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Hollanti"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "puola"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "portugali (Brasilia)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "portugali"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "romania"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "venäjä"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Slovakia"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Slovenia"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Serbia"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "ruotsi"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turkki"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Ukraina"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Kiina (yksinkertaistettu)"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Paperless-ngx:n ylläpito"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-27 12:08\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: French\n"
"Language: fr_FR\n"
@@ -25,27 +25,27 @@ msgstr "Documents"
msgid "owner"
msgstr "propriétaire"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Aucun élément"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Un des mots"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Tous les mots"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Concordance exacte"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Expression régulière"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Mot approximatif"
@@ -53,20 +53,20 @@ msgstr "Mot approximatif"
msgid "Automatic"
msgstr "Automatique"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "nom"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "rapprochement"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "algorithme de rapprochement"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "est insensible à la casse"
@@ -421,15 +421,15 @@ msgstr "n'a pas de propriétaire"
#: documents/models.py:457
msgid "does not have owner in"
msgstr "n'a pas de propriétaire"
msgstr "n'a pas de propriétaire dans"
#: documents/models.py:458
msgid "has custom field value"
msgstr ""
msgstr "a valeur d'un champ personnalisé"
#: documents/models.py:459
msgid "is shared by me"
msgstr ""
msgstr "est partagé par moi"
#: documents/models.py:469
msgid "rule type"
@@ -589,7 +589,7 @@ msgstr "Monétaire"
#: documents/models.py:761
msgid "Document Link"
msgstr "Lien du Document"
msgstr "Lien du document"
#: documents/models.py:773
msgid "data type"
@@ -611,113 +611,169 @@ msgstr "instance de champs personnalisés"
msgid "custom field instances"
msgstr "instances de champs personnalisés"
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr "Dossier d'Importation"
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "Téléverser l'Api"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "Récupération du courriel"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "ordre"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr "filtrer le chemin"
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr "N'importer que les documents dont le chemin correspond à celui-ci s'il est spécifié. Les caractères spécifiés par * sont autorisés. Insensible à la casse."
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "filtrer le nom de fichier"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Ne traiter que les documents correspondant intégralement à ce nom de fichier s'il est spécifié. Les jokers tels que *.pdf ou *facture* sont autorisés. La casse n'est pas prise en compte."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr "filtrer les documents à partir de cette règle de messagerie"
#: documents/models.py:940
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "attribuer un titre"
#: documents/models.py:945
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr "Assigner un titre de document, peut inclure certains marqueurs, voir la documentation."
#: documents/models.py:953 paperless_mail/models.py:216
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "affecter cette étiquette"
#: documents/models.py:961 paperless_mail/models.py:224
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "affecter ce type de document"
#: documents/models.py:969 paperless_mail/models.py:238
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "affecter ce correspondant"
#: documents/models.py:977
#: documents/models.py:1043
msgid "assign this storage path"
msgstr "assigner ce chemin de stockage"
#: documents/models.py:986
#: documents/models.py:1052
msgid "assign this owner"
msgstr "assigner ce propriétaire"
#: documents/models.py:993
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr "accorder des permissions de vue à ces utilisateurs"
#: documents/models.py:1000
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr "accorder des droits de vue à ces groupes"
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr "accorder des droits de modification à ces utilisateurs"
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr "accorder des droits de modification à ces groupes"
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr "assigner ces champs personnalisés"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
msgstr "modèle d'importation"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
msgstr "modèles d'importation"
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "ordre"
#: documents/serialisers.py:105
#: documents/models.py:1107
msgid "triggers"
msgstr "déclencheurs"
#: documents/models.py:1114
msgid "actions"
msgstr "actions"
#: documents/models.py:1117
msgid "enabled"
msgstr "activé"
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Expression régulière incorrecte : %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Couleur incorrecte."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Type de fichier %(type)s non pris en charge"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Variable invalide détectée."
@@ -854,135 +910,286 @@ msgstr "Adresse électronique"
msgid "Send me instructions!"
msgstr "Envoyez-moi les instructions !"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Impossible d'analyser l'URI {value}, schéma manquant"
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Impossible d'analyser l'URI {value}, emplacement réseau ou chemin manquant"
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Impossible d'analyser l'URI {value}"
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
#: paperless/models.py:25
msgid "pdf"
msgstr "pdf"
#: paperless/models.py:26
msgid "pdfa"
msgstr "pdfa"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr "pdfa-1"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr "pdfa-2"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr "pdfa-3"
#: paperless/models.py:38
msgid "skip"
msgstr "ignorer"
#: paperless/models.py:39
msgid "redo"
msgstr "rétablir"
#: paperless/models.py:40
msgid "force"
msgstr "forcer"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr "jamais"
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr "toujours"
#: paperless/models.py:59
msgid "clean"
msgstr "clean"
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr "aucun"
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr "RGB"
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr "Définit le type de PDF de sortie"
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr "Active la rotation des pages"
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr "Définit le seuil de rotation des pages"
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "Anglais (US)"
#: paperless/settings.py:587
#: paperless/settings.py:602
msgid "Arabic"
msgstr "Arabe"
#: paperless/settings.py:588
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "Afrikaans"
#: paperless/settings.py:589
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Biélorusse"
#: paperless/settings.py:590
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr "Bulgare"
#: paperless/settings.py:591
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Catalan"
#: paperless/settings.py:592
#: paperless/settings.py:607
msgid "Czech"
msgstr "Tchèque"
#: paperless/settings.py:593
#: paperless/settings.py:608
msgid "Danish"
msgstr "Danois"
#: paperless/settings.py:594
#: paperless/settings.py:609
msgid "German"
msgstr "Allemand"
#: paperless/settings.py:595
#: paperless/settings.py:610
msgid "Greek"
msgstr "Grec"
#: paperless/settings.py:596
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Anglais (GB)"
#: paperless/settings.py:597
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Espagnol"
#: paperless/settings.py:598
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Finnois"
#: paperless/settings.py:599
#: paperless/settings.py:614
msgid "French"
msgstr "Français"
#: paperless/settings.py:600
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "Hongrois"
#: paperless/settings.py:601
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italien"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luxembourgeois"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Norvégien"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Néerlandais"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Polonais"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugais (Brésil)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugais"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Roumain"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Russe"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Solvaque"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Slovène"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Serbe"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Suédois"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turc"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Ukrainien"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Chinois simplifié"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Administration de Paperless-ngx"
@@ -1180,15 +1387,15 @@ msgstr "filtrer le corps du message"
#: paperless_mail/models.py:143
msgid "filter attachment filename inclusive"
msgstr ""
msgstr "filtrer le nom de fichier de la pièce jointe de manière inclusive"
#: paperless_mail/models.py:155
msgid "filter attachment filename exclusive"
msgstr ""
msgstr "filtrer le nom de fichier de la pièce jointe de manière exclusive"
#: paperless_mail/models.py:160
msgid "Do not consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr ""
msgstr "N'importer que les documents qui correspondent intégralement à ce nom de fichier s'il est spécifié. Les caractères tels que *.pdf ou *facture* sont autorisés. La casse n'est pas prise en compte."
#: paperless_mail/models.py:167
msgid "maximum age"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-25 12:09\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Hebrew\n"
"Language: he_IL\n"
@@ -25,27 +25,27 @@ msgstr "מסמכים"
msgid "owner"
msgstr "בעלים"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "ללא"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "מילה כלשהי"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "כל המילים"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "התאמה מדויקת"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "ביטוי רגולרי"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "מילה מעורפלת"
@@ -53,20 +53,20 @@ msgstr "מילה מעורפלת"
msgid "Automatic"
msgstr "אוטומטי"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "שם"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "התאמה"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "אלגוריתם התאמה"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "אינו תלוי רישיות"
@@ -611,113 +611,169 @@ msgstr "שדה מותאם אישית"
msgid "custom field instances"
msgstr "שדות מותאמים אישית"
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr "עיבוד תיקיה"
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "העלאה באמצעות API"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "הורד מייל"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "סדר"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr "נתיב מסנן"
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr "עבד רק קבצים המצוים בנתיב זה אם מוגדר. "
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "סנן לפי שם קובץ"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "קבל רק מסמכים שתואמים לחלוטין את שם הקובץ הזה אם צוין. תווים כלליים כגון pdf.* או *חשבונית* מותרים. חסר רגישות תווים גדולים/קטנים (אנגלית)."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr "סנן מסמכים לפי כלל המייל הזה"
#: documents/models.py:940
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "הקצה כותרת"
#: documents/models.py:945
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr "הקצה כותרת למסמך, תוכל להשתמש במראה מקומות. בדוק כיצד במדריך למשתמש"
#: documents/models.py:953 paperless_mail/models.py:216
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "שייך תגית זו"
#: documents/models.py:961 paperless_mail/models.py:224
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "שייך סוג מסמך זה"
#: documents/models.py:969 paperless_mail/models.py:238
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "שייך מכותב זה"
#: documents/models.py:977
#: documents/models.py:1043
msgid "assign this storage path"
msgstr "הקצה נתיב אחסון זה"
#: documents/models.py:986
#: documents/models.py:1052
msgid "assign this owner"
msgstr "הקצה בעלים זה"
#: documents/models.py:993
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr "אפשר זכויות צפיה בקובץ למשתמשים אלו"
#: documents/models.py:1000
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr "אפשר זכויות צפיה בקובץ לקבוצות אלו"
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr "אפשר זכויות שינוי הגדרות צפיה בקובץ למשתמשים אלו"
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr "אפשר זכויות שינוי הגדרות צפיה בקובץ לקבוצות אלו"
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr "הקצה שדות מותאמים אישית אלו "
#: documents/models.py:1025
msgid "consumption template"
msgstr "תבנית עיבוד"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
msgstr "תבניות עיבוד"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "סדר"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "ביטוי רגולרי בלתי חוקי: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "צבע לא חוקי."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "סוג קובץ %(type)s לא נתמך"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "משתנה לא חוקי זוהה."
@@ -854,135 +910,286 @@ msgstr "דוא\"ל"
msgid "Send me instructions!"
msgstr "שלח לי את ההוראות!"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "ללא נייר"
#: paperless/settings.py:586
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "אנגלית (ארה״ב)"
#: paperless/settings.py:587
#: paperless/settings.py:602
msgid "Arabic"
msgstr "ערבית"
#: paperless/settings.py:588
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "אפריקאנס"
#: paperless/settings.py:589
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "בלרוסית"
#: paperless/settings.py:590
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr "בולגרית"
#: paperless/settings.py:591
#: paperless/settings.py:606
msgid "Catalan"
msgstr "קטלאנית"
#: paperless/settings.py:592
#: paperless/settings.py:607
msgid "Czech"
msgstr "צ'כית"
#: paperless/settings.py:593
#: paperless/settings.py:608
msgid "Danish"
msgstr "דנית"
#: paperless/settings.py:594
#: paperless/settings.py:609
msgid "German"
msgstr "גרמנית"
#: paperless/settings.py:595
#: paperless/settings.py:610
msgid "Greek"
msgstr "יוונית"
#: paperless/settings.py:596
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "אנגלית (בריטניה)"
#: paperless/settings.py:597
#: paperless/settings.py:612
msgid "Spanish"
msgstr "ספרדית"
#: paperless/settings.py:598
#: paperless/settings.py:613
msgid "Finnish"
msgstr "פינית"
#: paperless/settings.py:599
#: paperless/settings.py:614
msgid "French"
msgstr "צרפתית"
#: paperless/settings.py:600
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "הונגרית"
#: paperless/settings.py:601
#: paperless/settings.py:616
msgid "Italian"
msgstr "איטלקית"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "לוקסמבורגית"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "נורווגית"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "הולנדית"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "פולנית"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "פורטוגלית ברזילאית"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "פורטוגלית"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "רומנית"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "רוסית"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "סלובקית"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "סלובנית"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "סרבית"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "שוודית"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "טורקית"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "אוקראינית"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "סינית מפושטת"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "ניהול Paperless-ngx"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Croatian\n"
"Language: hr_HR\n"
@@ -25,27 +25,27 @@ msgstr "Dokumenti"
msgid "owner"
msgstr "vlasnik"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Ništa"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Bilo koja riječ"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Sve riječi"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Točno podudaranje"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Uobičajeni izraz"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Nejasna riječ"
@@ -53,20 +53,20 @@ msgstr "Nejasna riječ"
msgid "Automatic"
msgstr "Automatski"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "ime"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "podudarati"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "algoritam podudaranja"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "ne razlikuje velika i mala slova"
@@ -529,7 +529,7 @@ msgstr "korisnik"
#: documents/models.py:681
msgid "note"
msgstr ""
msgstr "bilješka"
#: documents/models.py:682
msgid "notes"
@@ -537,15 +537,15 @@ msgstr ""
#: documents/models.py:690
msgid "Archive"
msgstr ""
msgstr "Arhiva"
#: documents/models.py:691
msgid "Original"
msgstr ""
msgstr "Izvornik"
#: documents/models.py:702
msgid "expiration"
msgstr ""
msgstr "istječe"
#: documents/models.py:709
msgid "slug"
@@ -553,7 +553,7 @@ msgstr ""
#: documents/models.py:741
msgid "share link"
msgstr ""
msgstr "dijeli vezu"
#: documents/models.py:742
msgid "share links"
@@ -569,7 +569,7 @@ msgstr ""
#: documents/models.py:756
msgid "Date"
msgstr ""
msgstr "Datum"
#: documents/models.py:757
msgid "Boolean"
@@ -581,7 +581,7 @@ msgstr ""
#: documents/models.py:759
msgid "Float"
msgstr ""
msgstr "Plutajući"
#: documents/models.py:760
msgid "Monetary"
@@ -589,11 +589,11 @@ msgstr ""
#: documents/models.py:761
msgid "Document Link"
msgstr ""
msgstr "Poveznica dokumenta"
#: documents/models.py:773
msgid "data type"
msgstr ""
msgstr "vrsta dokumenta"
#: documents/models.py:781
msgid "custom field"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "redoslijed"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Konzumirajte samo dokumente koji u potpunosti odgovaraju ovom nazivu datoteke ako je navedeno. Dopušteni su zamjenski znakovi kao što su *.pdf ili *faktura*. Neosjetljivo je na mala i mala slova."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "dodijeli oznaku"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "dodijeliti ovu vrstu dokumenta"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "dodijelite ovom dopisniku"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "dodijeli oznaku"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "dodijeliti ovu vrstu dokumenta"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "dodijelite ovom dopisniku"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr "dodijeliti ova prilagođena polja"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "redoslijed"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Nevažeći regularni izraz: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Nevažeća boja."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Vrsta datoteke %(type)s nije podržana"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Otkrivena je nevaljana vrsta datoteke."
@@ -804,15 +860,15 @@ msgstr ""
#: documents/templates/registration/password_reset_confirm.html:46
msgid "Passwords did not match or too weak. Try again."
msgstr ""
msgstr "Lozinka nije točna ili je prekratka. Pokušajte ponovo."
#: documents/templates/registration/password_reset_confirm.html:49
msgid "New Password"
msgstr ""
msgstr "Nova lozinka"
#: documents/templates/registration/password_reset_confirm.html:50
msgid "Confirm Password"
msgstr ""
msgstr "Potvrdi lozinku"
#: documents/templates/registration/password_reset_confirm.html:61
msgid "Change my password"
@@ -854,135 +910,286 @@ msgstr ""
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
msgid "English (US)"
msgstr "Engleski (US)"
#: paperless/settings.py:587
msgid "Arabic"
msgstr "Arapski"
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "Bjeloruski"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
msgstr "Češki"
#: paperless/settings.py:593
msgid "Danish"
msgstr "Danski"
#: paperless/settings.py:594
msgid "German"
msgstr "Njemački"
#: paperless/settings.py:595
msgid "Greek"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "Engleski (GB)"
#: paperless/settings.py:597
msgid "Spanish"
msgstr "Španjolski"
#: paperless/settings.py:598
msgid "Finnish"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "Francuski"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "Italian"
msgstr "Talijanski"
msgid "English (US)"
msgstr "Engleski (US)"
#: paperless/settings.py:602
msgid "Luxembourgish"
msgstr "Luksemburški"
msgid "Arabic"
msgstr "Arapski"
#: paperless/settings.py:603
msgid "Norwegian"
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Dutch"
msgstr "Nizozemski"
msgid "Belarusian"
msgstr "Bjeloruski"
#: paperless/settings.py:605
msgid "Polish"
msgstr "Poljski"
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Portuguese (Brazil)"
msgstr "Portugalski (Brazil)"
msgid "Catalan"
msgstr ""
#: paperless/settings.py:607
msgid "Portuguese"
msgstr "Portugalski"
msgid "Czech"
msgstr "Češki"
#: paperless/settings.py:608
msgid "Romanian"
msgstr "Rumunjski"
msgid "Danish"
msgstr "Danski"
#: paperless/settings.py:609
msgid "Russian"
msgstr "Ruski"
msgid "German"
msgstr "Njemački"
#: paperless/settings.py:610
msgid "Slovak"
msgid "Greek"
msgstr ""
#: paperless/settings.py:611
msgid "Slovenian"
msgstr "Slovenski"
msgid "English (GB)"
msgstr "Engleski (GB)"
#: paperless/settings.py:612
msgid "Serbian"
msgstr "Srpski"
msgid "Spanish"
msgstr "Španjolski"
#: paperless/settings.py:613
msgid "Swedish"
msgstr "Švedski"
msgid "Finnish"
msgstr ""
#: paperless/settings.py:614
msgid "Turkish"
msgstr "Turski"
msgid "French"
msgstr "Francuski"
#: paperless/settings.py:615
msgid "Ukrainian"
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "Talijanski"
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luksemburški"
#: paperless/settings.py:618
msgid "Norwegian"
msgstr ""
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Nizozemski"
#: paperless/settings.py:620
msgid "Polish"
msgstr "Poljski"
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugalski (Brazil)"
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugalski"
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Rumunjski"
#: paperless/settings.py:624
msgid "Russian"
msgstr "Ruski"
#: paperless/settings.py:625
msgid "Slovak"
msgstr ""
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Slovenski"
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Srpski"
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Švedski"
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turski"
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr ""
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Pojednostavljeni kineski"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Paperless-ngx administracija"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Hungarian\n"
"Language: hu_HU\n"
@@ -25,27 +25,27 @@ msgstr "Dokumentumok"
msgid "owner"
msgstr "tulajdonos"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Nincs"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Bármilyen szó"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Minden szó"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Pontos egyezés"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Reguláris kifejezés"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Fuzzy szó"
@@ -53,20 +53,20 @@ msgstr "Fuzzy szó"
msgid "Automatic"
msgstr "Automatikus"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "név"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "egyezés"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "egyeztető algoritmus"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "érzéketlen"
@@ -611,113 +611,169 @@ msgstr "egyéni mező példány"
msgid "custom field instances"
msgstr "egyéni mező példányok"
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr "Feldolgozási mappa"
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "Api feltöltés"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "Mail lehívás"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "megrendelés"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr "szűrési útvonal"
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr "Csak olyan dokumentumokat dolgoz fel, amelyeknek az elérési útvonala megegyezik ezzel, ha ez meg van adva. A *-gal megadott helyettesítő karakterek engedélyezettek. Nagy- és kisbetűkre nem érzékeny."
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "szűrő fájlnév"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Csak olyan dokumentumokat dolgoz fel, amelyek teljes mértékben megfelelnek ennek a fájlnévnek, ha meg van adva. Az olyan helyettesítő karakterek, mint *.pdf vagy *számla* engedélyezettek. Nagy- és kisbetűkre nem érzékeny."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr "dokumentumok szűrése ebből a levélszabályból"
#: documents/models.py:940
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "cím hozzárendelése"
#: documents/models.py:945
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr "A dokumentum címének hozzárendelése, tartalmazhat néhány helykitöltőt, lásd a dokumentációt."
#: documents/models.py:953 paperless_mail/models.py:216
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "rendelje hozzá ezt a jelölőt"
#: documents/models.py:961 paperless_mail/models.py:224
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "rendelje hozzá ezt a dokumentumtípust"
#: documents/models.py:969 paperless_mail/models.py:238
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "rendelje hozzá ezt a kapcsolattartót"
#: documents/models.py:977
#: documents/models.py:1043
msgid "assign this storage path"
msgstr "rendelje hozzá ezt a tárolási útvonalat"
#: documents/models.py:986
#: documents/models.py:1052
msgid "assign this owner"
msgstr "rendelje hozzá ezt a tulajdonost"
#: documents/models.py:993
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr "adjon megtekintési engedélyeket ezeknek a felhasználóknak"
#: documents/models.py:1000
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr "nézeti engedélyeket adjon ezeknek a csoportoknak"
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr "adjon módosítási engedélyeket ezeknek a felhasználóknak"
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr "adjon módosítási jogosultságokat ezeknek a csoportoknak"
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr "rendelje hozzá ezeket az egyedi mezőket"
#: documents/models.py:1025
msgid "consumption template"
msgstr "feldolgozási sablon"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
msgstr "feldolgozási sablonok"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "megrendelés"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Érvénytelen reguláris kifejezés: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Érvénytelen szín."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Fájltípus %(type)s nem támogatott"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Érvénytelen változót észleltek."
@@ -854,135 +910,286 @@ msgstr "E-mail"
msgid "Send me instructions!"
msgstr "Küldjenek utasításokat!"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Papírmentes"
#: paperless/settings.py:586
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "Angol (US)"
#: paperless/settings.py:587
#: paperless/settings.py:602
msgid "Arabic"
msgstr "Arab"
#: paperless/settings.py:588
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "Afrikai"
#: paperless/settings.py:589
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Fehérorosz"
#: paperless/settings.py:590
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr "Bolgár"
#: paperless/settings.py:591
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Katalán"
#: paperless/settings.py:592
#: paperless/settings.py:607
msgid "Czech"
msgstr "Cseh"
#: paperless/settings.py:593
#: paperless/settings.py:608
msgid "Danish"
msgstr "Dán"
#: paperless/settings.py:594
#: paperless/settings.py:609
msgid "German"
msgstr "Német"
#: paperless/settings.py:595
#: paperless/settings.py:610
msgid "Greek"
msgstr "Görög"
#: paperless/settings.py:596
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Angol (GB)"
#: paperless/settings.py:597
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Spanyol"
#: paperless/settings.py:598
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Finn"
#: paperless/settings.py:599
#: paperless/settings.py:614
msgid "French"
msgstr "Francia"
#: paperless/settings.py:600
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "Magyar"
#: paperless/settings.py:601
#: paperless/settings.py:616
msgid "Italian"
msgstr "Olasz"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luxemburgi"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Norvég"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Holland"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Lengyel"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugál (Brazília)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugál"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Román"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Orosz"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Szlovák"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Szlovén"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Szerb"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Svéd"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Török"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Ukrán"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Kínai egyszerűsített"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Paperless-ngx adminisztráció"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-26 12:08\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Indonesian\n"
"Language: id_ID\n"
@@ -25,27 +25,27 @@ msgstr "Dokumen"
msgid "owner"
msgstr "pemilik"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Tidak ada"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Kata apapun"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Semua kata"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Sama persis"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Ekspresi reguler"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Kata samar"
@@ -53,20 +53,20 @@ msgstr "Kata samar"
msgid "Automatic"
msgstr "Otomatis"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "nama"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "cocok"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "mencocokkan algoritma"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "tidak sensitif"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "Unggah Menggunakan API"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "urut"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "saring nama berkas"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Hanya gunakan dokumen yang sepenuhnya cocok dengan nama berkas ini jika ditentukan. Wildcard seperti *.pdf atau *faktur* diperbolehkan. Tidak peka huruf besar kecil."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr "saring dokumen dari peraturan surel"
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "tetapkan label ini"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "tetapkan label ini"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr ""
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr ""
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "urut"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Ekspresi reguler tidak valid: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Warna tidak valid."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Jenis berkas %(type)s tidak didukung"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Variabel ilegal terdeteksi."
@@ -854,135 +910,286 @@ msgstr "Surat elektronik"
msgid "Send me instructions!"
msgstr "Kirim saya instruksi!"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr ""
#: paperless/settings.py:586
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "Inggris (AS)"
#: paperless/settings.py:587
#: paperless/settings.py:602
msgid "Arabic"
msgstr "Arab"
#: paperless/settings.py:588
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:589
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Belarusia"
#: paperless/settings.py:590
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:591
#: paperless/settings.py:606
msgid "Catalan"
msgstr ""
#: paperless/settings.py:592
#: paperless/settings.py:607
msgid "Czech"
msgstr "Bahasa Ceko"
#: paperless/settings.py:593
#: paperless/settings.py:608
msgid "Danish"
msgstr ""
#: paperless/settings.py:594
#: paperless/settings.py:609
msgid "German"
msgstr "Jerman"
#: paperless/settings.py:595
#: paperless/settings.py:610
msgid "Greek"
msgstr "Yunani"
#: paperless/settings.py:596
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Inggris (GB)"
#: paperless/settings.py:597
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Spanyol"
#: paperless/settings.py:598
#: paperless/settings.py:613
msgid "Finnish"
msgstr ""
#: paperless/settings.py:599
#: paperless/settings.py:614
msgid "French"
msgstr "Prancis"
#: paperless/settings.py:600
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "Hungaria"
#: paperless/settings.py:601
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italia"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luksemburg"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Norwegia"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Belanda"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Polandia"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugis (Brasil)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugis"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Rumania"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Rusia"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Slovakia"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Slovenia"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Serbia"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Swedia"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turki"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Ukraina"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Mandarin Sederhana"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Administrasi Paperless-ngx"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-28 00:23\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Italian\n"
"Language: it_IT\n"
@@ -25,27 +25,27 @@ msgstr "Documenti"
msgid "owner"
msgstr "proprietario"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Niente"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Qualsiasi parola"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Tutte le parole"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Corrispondenza esatta"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Espressione regolare"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Parole fuzzy"
@@ -53,20 +53,20 @@ msgstr "Parole fuzzy"
msgid "Automatic"
msgstr "Automatico"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "nome"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "corrispondenza"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "algoritmo di corrispondenza"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "non distingue maiuscole e minuscole"
@@ -611,113 +611,169 @@ msgstr "istanza campo personalizzato"
msgid "custom field instances"
msgstr "istanze campo personalizzato"
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr "Documento aggiunto"
#: documents/models.py:904
msgid "Document Updated"
msgstr "Documento aggiornato"
#: documents/models.py:907
msgid "Consume Folder"
msgstr "Cartella di elaborazione"
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "Upload Api"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "Recupero Posta"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "priorità"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr "filtro percorso"
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr "Elabora solo i documenti con un percorso che corrisponde a questo, se specificato. I caratteri wildcard come * sono permessi. Ignora differenze tra maiuscole e minuscole."
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "filtra nome file"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Elabora i documenti che corrispondono a questo nome. Puoi usare wildcard come *.pdf o *fattura*. Non fa differenza fra maiuscole e minuscole."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr "filtra i documenti da questa regola di posta"
#: documents/models.py:940
#: documents/models.py:968
msgid "has these tag(s)"
msgstr "ha questi tag(s)"
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "assegna titolo"
#: documents/models.py:945
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr "Assegna un titolo al documento, può includere alcuni segnaposti, vedi documentazione."
#: documents/models.py:953 paperless_mail/models.py:216
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "assegna questo tag"
#: documents/models.py:961 paperless_mail/models.py:224
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "assegna questo tipo di documento"
#: documents/models.py:969 paperless_mail/models.py:238
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "assegna questo corrispondente"
#: documents/models.py:977
#: documents/models.py:1043
msgid "assign this storage path"
msgstr "assegna questo percorso di archiviazione"
#: documents/models.py:986
#: documents/models.py:1052
msgid "assign this owner"
msgstr "assegna questo proprietario"
#: documents/models.py:993
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr "concedi i permessi di visualizzazione a questi utenti"
#: documents/models.py:1000
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr "concedi i permessi di visualizzazione a questi gruppi"
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr "concedi permessi di modifica a questi utenti"
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr "concedi permessi di modifica a questi gruppi"
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr "assegna questi campi personalizzati"
#: documents/models.py:1025
msgid "consumption template"
msgstr "modello di elaborazione"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
msgstr "modelli di elaborazione"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "priorità"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Espressione regolare non valida: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Colore non valido."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Il tipo di file %(type)s non è supportato"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Variabile non valida rilevata."
@@ -854,135 +910,286 @@ msgstr "Email"
msgid "Send me instructions!"
msgstr "Inviami le istruzioni!"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
#: paperless/models.py:25
msgid "pdf"
msgstr "pdf"
#: paperless/models.py:26
msgid "pdfa"
msgstr "pdfa"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr "pdfa-1"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr "pdfa-2"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr "pdfa-3"
#: paperless/models.py:38
msgid "skip"
msgstr "salta"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/models.py:40
msgid "force"
msgstr "forza"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr "mai"
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr "sempre"
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr "RGB"
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr "Grigio"
#: paperless/models.py:73
msgid "CMYK"
msgstr "CMYK"
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr "Imposta il tipo di PDF in uscita"
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr "Esegui OCR dalla pagina 1 a questo valore"
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr "Esegui OCR utilizzando queste lingue"
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr "Imposta la modalità OCR"
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr "Abilita rotazione pagina"
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "Inglese (US)"
#: paperless/settings.py:587
#: paperless/settings.py:602
msgid "Arabic"
msgstr "Arabo"
#: paperless/settings.py:588
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "Africano"
#: paperless/settings.py:589
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Bielorusso"
#: paperless/settings.py:590
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr "Bulgaro"
#: paperless/settings.py:591
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Catalano"
#: paperless/settings.py:592
#: paperless/settings.py:607
msgid "Czech"
msgstr "Ceco"
#: paperless/settings.py:593
#: paperless/settings.py:608
msgid "Danish"
msgstr "Danese"
#: paperless/settings.py:594
#: paperless/settings.py:609
msgid "German"
msgstr "Tedesco"
#: paperless/settings.py:595
#: paperless/settings.py:610
msgid "Greek"
msgstr "Greco"
#: paperless/settings.py:596
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Inglese (GB)"
#: paperless/settings.py:597
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Spagnolo"
#: paperless/settings.py:598
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Finlandese"
#: paperless/settings.py:599
#: paperless/settings.py:614
msgid "French"
msgstr "Francese"
#: paperless/settings.py:600
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "Ungherese"
#: paperless/settings.py:601
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italiano"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Lussemburghese"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Norvegese"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Olandese"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Polacco"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portoghese (Brasile)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portoghese"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Rumeno"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Russo"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Slovacco"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Sloveno"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Serbo"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Svedese"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turco"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Ucraino"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Cinese semplificato"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Amministrazione di Paperless-ngx"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Language: ko_KR\n"
@@ -25,48 +25,48 @@ msgstr "문서"
msgid "owner"
msgstr "소유자"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "없음"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr ""
msgstr "아무 단어"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "모든 단어"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "정확히 일치"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "정규 표현식"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr ""
msgstr "불분명한 단어"
#: documents/models.py:59
msgid "Automatic"
msgstr "자동"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "이름"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "일치"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "일치 알고리즘"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "대소문자 구분 없음"
@@ -221,7 +221,7 @@ msgstr "디버그"
#: documents/models.py:369
msgid "information"
msgstr ""
msgstr "정보"
#: documents/models.py:370
msgid "warning"
@@ -437,7 +437,7 @@ msgstr ""
#: documents/models.py:471
msgid "value"
msgstr ""
msgstr ""
#: documents/models.py:474
msgid "filter rule"
@@ -449,7 +449,7 @@ msgstr ""
#: documents/models.py:586
msgid "Task ID"
msgstr ""
msgstr "작업 ID"
#: documents/models.py:587
msgid "Celery ID for the Task that was run"
@@ -465,7 +465,7 @@ msgstr ""
#: documents/models.py:599
msgid "Task Filename"
msgstr ""
msgstr "작업 파일명"
#: documents/models.py:600
msgid "Name of the file which the Task was run for"
@@ -473,7 +473,7 @@ msgstr ""
#: documents/models.py:606
msgid "Task Name"
msgstr ""
msgstr "작업명"
#: documents/models.py:607
msgid "Name of the Task which was run"
@@ -481,7 +481,7 @@ msgstr ""
#: documents/models.py:614
msgid "Task State"
msgstr ""
msgstr "작업 상태"
#: documents/models.py:615
msgid "Current state of the task being run"
@@ -489,7 +489,7 @@ msgstr ""
#: documents/models.py:620
msgid "Created DateTime"
msgstr ""
msgstr "생성일시"
#: documents/models.py:621
msgid "Datetime field when the task result was created in UTC"
@@ -497,7 +497,7 @@ msgstr ""
#: documents/models.py:626
msgid "Started DateTime"
msgstr ""
msgstr "시작일시"
#: documents/models.py:627
msgid "Datetime field when the task was started in UTC"
@@ -505,7 +505,7 @@ msgstr ""
#: documents/models.py:632
msgid "Completed DateTime"
msgstr ""
msgstr "완료일시"
#: documents/models.py:633
msgid "Datetime field when the task was completed in UTC"
@@ -513,7 +513,7 @@ msgstr ""
#: documents/models.py:638
msgid "Result Data"
msgstr ""
msgstr "완료 결과"
#: documents/models.py:640
msgid "The data returned by the task"
@@ -521,7 +521,7 @@ msgstr ""
#: documents/models.py:652
msgid "Note for the document"
msgstr ""
msgstr "문서에 대한 노트"
#: documents/models.py:676
msgid "user"
@@ -541,7 +541,7 @@ msgstr ""
#: documents/models.py:691
msgid "Original"
msgstr ""
msgstr "원본"
#: documents/models.py:702
msgid "expiration"
@@ -589,11 +589,11 @@ msgstr ""
#: documents/models.py:761
msgid "Document Link"
msgstr ""
msgstr "자료 링크"
#: documents/models.py:773
msgid "data type"
msgstr ""
msgstr "데이터 타입"
#: documents/models.py:781
msgid "custom field"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr ""
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:977
msgid "assign this storage path"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr ""
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr ""
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr ""
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr ""
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr ""
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr ""
@@ -743,27 +799,27 @@ msgstr ""
#: documents/templates/registration/logged_out.html:41
msgid "Sign in again"
msgstr ""
msgstr "다시 로그인해주세요"
#: documents/templates/registration/login.html:14
msgid "Paperless-ngx sign in"
msgstr ""
msgstr "Paperless-ngx 로그인"
#: documents/templates/registration/login.html:41
msgid "Please sign in."
msgstr ""
msgstr "로그인해주세요."
#: documents/templates/registration/login.html:44
msgid "Your username and password didn't match. Please try again."
msgstr ""
msgstr "사용자명과 비밀번호가 일치하지 않습니다. 다시 시도해주세요."
#: documents/templates/registration/login.html:48
msgid "Share link was not found."
msgstr ""
msgstr "공유링크가 유효하지 않습니다."
#: documents/templates/registration/login.html:52
msgid "Share link has expired."
msgstr ""
msgstr "공유링크가 만료되었습니다."
#: documents/templates/registration/login.html:55
msgid "Username"
@@ -775,7 +831,7 @@ msgstr "비밀번호"
#: documents/templates/registration/login.html:66
msgid "Sign in"
msgstr ""
msgstr "로그인"
#: documents/templates/registration/login.html:70
msgid "Forgot your password?"
@@ -783,7 +839,7 @@ msgstr "비밀번호를 잊으셨나요?"
#: documents/templates/registration/password_reset_complete.html:14
msgid "Paperless-ngx reset password complete"
msgstr ""
msgstr "Paperless-ngx 비밀번호 초기화 완료"
#: documents/templates/registration/password_reset_complete.html:40
msgid "Password reset complete."
@@ -792,19 +848,19 @@ msgstr "비밀번호를 초기화했습니다."
#: documents/templates/registration/password_reset_complete.html:42
#, python-format
msgid "Your new password has been set. You can now <a href=\"%(login_url)s\">log in</a>"
msgstr ""
msgstr "새로운 비밀번호로 변경되었습니다. <a href=\"%(login_url)s\">여기</a>에서 로그인하세요"
#: documents/templates/registration/password_reset_confirm.html:14
msgid "Paperless-ngx reset password confirmation"
msgstr ""
msgstr "Paperless-ngx 비밀번호 초기화 확인"
#: documents/templates/registration/password_reset_confirm.html:42
msgid "Set a new password."
msgstr ""
msgstr "새로운 비밀번호를 설정해주세요."
#: documents/templates/registration/password_reset_confirm.html:46
msgid "Passwords did not match or too weak. Try again."
msgstr ""
msgstr "비밀번호가 일치하지 않거나 강력하지 않습니다. 다시 시도해주세요."
#: documents/templates/registration/password_reset_confirm.html:49
msgid "New Password"
@@ -820,15 +876,15 @@ msgstr "비밀번호 변경"
#: documents/templates/registration/password_reset_confirm.html:65
msgid "request a new password reset"
msgstr ""
msgstr "새로운 비밀번호 초기화 요청"
#: documents/templates/registration/password_reset_done.html:14
msgid "Paperless-ngx reset password sent"
msgstr ""
msgstr "Paperless-ngx 비밀번호 초기화 요청이 발송되었습니다"
#: documents/templates/registration/password_reset_done.html:40
msgid "Check your inbox."
msgstr ""
msgstr "메일함을 확인해주세요."
#: documents/templates/registration/password_reset_done.html:41
msgid "We've emailed you instructions for setting your password. You should receive the email shortly!"
@@ -836,15 +892,15 @@ msgstr ""
#: documents/templates/registration/password_reset_form.html:14
msgid "Paperless-ngx reset password request"
msgstr ""
msgstr "Paperless-ngx 비밀번호 초기화 요청"
#: documents/templates/registration/password_reset_form.html:41
msgid "Enter your email address below, and we'll email instructions for setting a new one."
msgstr ""
msgstr "아래에 사용자 이메일 주소를 입력하세요. 새로운 비밀번호를 설정하는 방법을 메일로 보내드리겠습니다."
#: documents/templates/registration/password_reset_form.html:44
msgid "An error occurred. Please try again."
msgstr ""
msgstr "에러가 발생했습니다. 다시 시도해주세요."
#: documents/templates/registration/password_reset_form.html:47
msgid "Email"
@@ -852,151 +908,302 @@ msgstr "전자우편"
#: documents/templates/registration/password_reset_form.html:54
msgid "Send me instructions!"
msgstr "방법 받기!"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
msgid "English (US)"
msgstr "영어 (미국)"
#: paperless/settings.py:587
msgid "Arabic"
msgstr "아랍어"
#: paperless/settings.py:588
msgid "Afrikaans"
msgstr "아프리칸스어"
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "벨라루스어"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
msgstr "카탈로니아어"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
msgstr "체코어"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:593
msgid "Danish"
msgstr "덴마크어"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:594
msgid "German"
msgstr "독일어"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:595
msgid "Greek"
msgstr "그리스어"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "영어 (영국)"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
msgstr "스페인어"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
msgstr "핀란드어"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "프랑스어"
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "영어 (미국)"
#: paperless/settings.py:602
msgid "Arabic"
msgstr "아랍어"
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "아프리칸스어"
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "벨라루스어"
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr "불가리어"
#: paperless/settings.py:606
msgid "Catalan"
msgstr "카탈로니아어"
#: paperless/settings.py:607
msgid "Czech"
msgstr "체코어"
#: paperless/settings.py:608
msgid "Danish"
msgstr "덴마크어"
#: paperless/settings.py:609
msgid "German"
msgstr "독일어"
#: paperless/settings.py:610
msgid "Greek"
msgstr "그리스어"
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "영어 (영국)"
#: paperless/settings.py:612
msgid "Spanish"
msgstr "스페인어"
#: paperless/settings.py:613
msgid "Finnish"
msgstr "핀란드어"
#: paperless/settings.py:614
msgid "French"
msgstr "프랑스어"
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "헝가리어"
#: paperless/settings.py:616
msgid "Italian"
msgstr "이탈리아어"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "룩셈부르크어"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "노르웨이어"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr ""
msgstr "네덜란드어"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr ""
msgstr "폴란드어"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr ""
msgstr "포르투갈어 (브라질)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr ""
msgstr "포르투갈어"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr ""
msgstr "루마니아어"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr ""
msgstr "러시아어"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr ""
msgstr "슬로바키아어"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr ""
msgstr "슬로베니아어"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr ""
msgstr "세르비아어"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr ""
msgstr "스웨덴어"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr ""
msgstr "튀르키예어"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr ""
msgstr "우크라이나어"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr ""
msgstr "중국어 간체"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr ""
#: paperless_mail/admin.py:41
msgid "Authentication"
msgstr ""
msgstr "인증"
#: paperless_mail/admin.py:44
msgid "Advanced settings"
msgstr ""
msgstr "고급 설정"
#: paperless_mail/admin.py:60
msgid "Filter"
msgstr ""
msgstr "필터"
#: paperless_mail/admin.py:63
msgid "Paperless will only process mails that match ALL of the filters given below."
@@ -1004,7 +1211,7 @@ msgstr ""
#: paperless_mail/admin.py:80
msgid "Actions"
msgstr ""
msgstr "작업"
#: paperless_mail/admin.py:83
msgid "The action applied to the mail. This action is only performed when the mail body or attachments were consumed from the mail."
@@ -1012,7 +1219,7 @@ msgstr ""
#: paperless_mail/admin.py:91
msgid "Metadata"
msgstr ""
msgstr "메타데이터"
#: paperless_mail/admin.py:94
msgid "Assign metadata to documents consumed from this rule automatically. If you do not assign tags, types or correspondents here, paperless will still process all matching rules that you have defined."
@@ -1024,31 +1231,31 @@ msgstr ""
#: paperless_mail/models.py:10
msgid "mail account"
msgstr ""
msgstr "메일 계정"
#: paperless_mail/models.py:11
msgid "mail accounts"
msgstr ""
msgstr "메일 계정"
#: paperless_mail/models.py:14
msgid "No encryption"
msgstr ""
msgstr "암호화 없음"
#: paperless_mail/models.py:15
msgid "Use SSL"
msgstr ""
msgstr "SSL 사용"
#: paperless_mail/models.py:16
msgid "Use STARTTLS"
msgstr ""
msgstr "STARTTLS 사용"
#: paperless_mail/models.py:20
msgid "IMAP server"
msgstr ""
msgstr "IMAP 서버"
#: paperless_mail/models.py:23
msgid "IMAP port"
msgstr ""
msgstr "IMAP 포트"
#: paperless_mail/models.py:27
msgid "This is usually 143 for unencrypted and STARTTLS connections, and 993 for SSL connections."
@@ -1056,7 +1263,7 @@ msgstr ""
#: paperless_mail/models.py:33
msgid "IMAP security"
msgstr ""
msgstr "IMAP 보안"
#: paperless_mail/models.py:38
msgid "username"
@@ -1072,7 +1279,7 @@ msgstr ""
#: paperless_mail/models.py:45
msgid "character set"
msgstr ""
msgstr "문자셋"
#: paperless_mail/models.py:49
msgid "The character set to use when communicating with the mail server, such as 'UTF-8' or 'US-ASCII'."
@@ -1152,11 +1359,11 @@ msgstr ""
#: paperless_mail/models.py:101
msgid "account"
msgstr ""
msgstr "계정"
#: paperless_mail/models.py:105 paperless_mail/models.py:260
msgid "folder"
msgstr ""
msgstr "폴더"
#: paperless_mail/models.py:109
msgid "Subfolders must be separated by a delimiter, often a dot ('.') or slash ('/'), but it varies by mail server."
@@ -1212,7 +1419,7 @@ msgstr ""
#: paperless_mail/models.py:189
msgid "action"
msgstr ""
msgstr "작업"
#: paperless_mail/models.py:195
msgid "action parameter"
@@ -1252,5 +1459,5 @@ msgstr ""
#: paperless_mail/models.py:297
msgid "status"
msgstr ""
msgstr "상태"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Luxembourgish\n"
"Language: lb_LU\n"
@@ -25,27 +25,27 @@ msgstr "Dokumenter"
msgid "owner"
msgstr ""
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr ""
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Iergendee Wuert"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "All d'Wierder"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Exakten Treffer"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Regulären Ausdrock"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Ongenaut Wuert"
@@ -53,20 +53,20 @@ msgstr "Ongenaut Wuert"
msgid "Automatic"
msgstr "Automatesch"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "Numm"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "Zouweisungsmuster"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "Zouweisungsalgorithmus"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "Grouss-/Klengschreiwung ignoréieren"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "Reiefolleg"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Just Dokumenter traitéieren, déi exakt dësen Dateinumm hunn (falls definéiert). Platzhalter wéi *.pdf oder *invoice* sinn erlaabt. D'Grouss-/Klengschreiwung gëtt ignoréiert."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "dës Etikett zouweisen"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "Dësen Dokumententyp zouweisen"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "Dëse Korrespondent zouweisen"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "dës Etikett zouweisen"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "Dësen Dokumententyp zouweisen"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "Dëse Korrespondent zouweisen"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "Reiefolleg"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Ongëltege regulären Ausdrock: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Ongëlteg Faarf."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Fichierstyp %(type)s net ënnerstëtzt"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Ongëlteg Zeechen detektéiert."
@@ -854,135 +910,286 @@ msgstr ""
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr ""
#: paperless/settings.py:586
msgid "English (US)"
msgstr "Englesch (USA)"
#: paperless/settings.py:587
msgid "Arabic"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "Belarusesch"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
msgstr "Tschechesch"
#: paperless/settings.py:593
msgid "Danish"
msgstr "Dänesch"
#: paperless/settings.py:594
msgid "German"
msgstr "Däitsch"
#: paperless/settings.py:595
msgid "Greek"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "Englesch (GB)"
#: paperless/settings.py:597
msgid "Spanish"
msgstr "Spuenesch"
#: paperless/settings.py:598
msgid "Finnish"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "Franséisch"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "Italian"
msgstr "Italienesch"
msgid "English (US)"
msgstr "Englesch (USA)"
#: paperless/settings.py:602
msgid "Luxembourgish"
msgstr "Lëtzebuergesch"
msgid "Arabic"
msgstr ""
#: paperless/settings.py:603
msgid "Norwegian"
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Dutch"
msgstr "Hollännesch"
msgid "Belarusian"
msgstr "Belarusesch"
#: paperless/settings.py:605
msgid "Polish"
msgstr "Polnesch"
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Portuguese (Brazil)"
msgstr "Portugisesch (Brasilien)"
msgid "Catalan"
msgstr ""
#: paperless/settings.py:607
msgid "Portuguese"
msgstr "Portugisesch"
msgid "Czech"
msgstr "Tschechesch"
#: paperless/settings.py:608
msgid "Romanian"
msgstr "Rumänesch"
msgid "Danish"
msgstr "Dänesch"
#: paperless/settings.py:609
msgid "Russian"
msgstr "Russesch"
msgid "German"
msgstr "Däitsch"
#: paperless/settings.py:610
msgid "Slovak"
msgid "Greek"
msgstr ""
#: paperless/settings.py:611
msgid "Slovenian"
msgstr "Slowenesch"
msgid "English (GB)"
msgstr "Englesch (GB)"
#: paperless/settings.py:612
msgid "Serbian"
msgstr "Serbesch"
msgid "Spanish"
msgstr "Spuenesch"
#: paperless/settings.py:613
msgid "Swedish"
msgstr "Schwedesch"
msgid "Finnish"
msgstr ""
#: paperless/settings.py:614
msgid "Turkish"
msgstr "Tierkesch"
msgid "French"
msgstr "Franséisch"
#: paperless/settings.py:615
msgid "Ukrainian"
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italienesch"
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Lëtzebuergesch"
#: paperless/settings.py:618
msgid "Norwegian"
msgstr ""
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Hollännesch"
#: paperless/settings.py:620
msgid "Polish"
msgstr "Polnesch"
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugisesch (Brasilien)"
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugisesch"
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Rumänesch"
#: paperless/settings.py:624
msgid "Russian"
msgstr "Russesch"
#: paperless/settings.py:625
msgid "Slovak"
msgstr ""
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Slowenesch"
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Serbesch"
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Schwedesch"
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Tierkesch"
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr ""
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Chinesesch (Vereinfacht)"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Paperless-ngx-Administratioun"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Latvian\n"
"Language: lv_LV\n"
@@ -25,27 +25,27 @@ msgstr "Dokuments"
msgid "owner"
msgstr "īpašnieks"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Neviens"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr ""
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr ""
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr ""
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr ""
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr ""
@@ -53,20 +53,20 @@ msgstr ""
msgid "Automatic"
msgstr ""
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr ""
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr ""
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr ""
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr ""
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr ""
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:977
msgid "assign this storage path"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr ""
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr ""
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr ""
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr ""
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr ""
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr ""
@@ -854,135 +910,286 @@ msgstr ""
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr ""
#: paperless/settings.py:586
msgid "English (US)"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:587
msgid "Arabic"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:593
msgid "Danish"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/settings.py:594
msgid "German"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/settings.py:595
msgid "Greek"
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/settings.py:599
msgid "French"
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "Italian"
msgid "English (US)"
msgstr ""
#: paperless/settings.py:602
msgid "Luxembourgish"
msgid "Arabic"
msgstr ""
#: paperless/settings.py:603
msgid "Norwegian"
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Dutch"
msgid "Belarusian"
msgstr ""
#: paperless/settings.py:605
msgid "Polish"
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Portuguese (Brazil)"
msgid "Catalan"
msgstr ""
#: paperless/settings.py:607
msgid "Portuguese"
msgid "Czech"
msgstr ""
#: paperless/settings.py:608
msgid "Romanian"
msgid "Danish"
msgstr ""
#: paperless/settings.py:609
msgid "Russian"
msgid "German"
msgstr ""
#: paperless/settings.py:610
msgid "Slovak"
msgid "Greek"
msgstr ""
#: paperless/settings.py:611
msgid "Slovenian"
msgid "English (GB)"
msgstr ""
#: paperless/settings.py:612
msgid "Serbian"
msgid "Spanish"
msgstr ""
#: paperless/settings.py:613
msgid "Swedish"
msgid "Finnish"
msgstr ""
#: paperless/settings.py:614
msgid "Turkish"
msgid "French"
msgstr ""
#: paperless/settings.py:615
msgid "Ukrainian"
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr ""
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr ""
#: paperless/settings.py:618
msgid "Norwegian"
msgstr ""
#: paperless/settings.py:619
msgid "Dutch"
msgstr ""
#: paperless/settings.py:620
msgid "Polish"
msgstr ""
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings.py:622
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:623
msgid "Romanian"
msgstr ""
#: paperless/settings.py:624
msgid "Russian"
msgstr ""
#: paperless/settings.py:625
msgid "Slovak"
msgstr ""
#: paperless/settings.py:626
msgid "Slovenian"
msgstr ""
#: paperless/settings.py:627
msgid "Serbian"
msgstr ""
#: paperless/settings.py:628
msgid "Swedish"
msgstr ""
#: paperless/settings.py:629
msgid "Turkish"
msgstr ""
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr ""
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr ""
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Dutch\n"
"Language: nl_NL\n"
@@ -25,27 +25,27 @@ msgstr "Documenten"
msgid "owner"
msgstr "eigenaar"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Geen"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Elk woord"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Alle woorden"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Exacte overeenkomst"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Reguliere expressie"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Gelijkaardig woord"
@@ -53,20 +53,20 @@ msgstr "Gelijkaardig woord"
msgid "Automatic"
msgstr "Automatisch"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "naam"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "Overeenkomst"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "Algoritme voor het bepalen van de overeenkomst"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "is niet hoofdlettergevoelig"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "volgorde"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Alleen documenten verwerken die volledig overeenkomen, indien aangegeven. Je kunt jokertekens gebruiken, zoals *.pdf of *factuur*. Dit is niet hoofdlettergevoelig."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "wijs dit label toe"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "wijs dit documenttype toe"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "wijs deze correspondent toe"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "wijs dit label toe"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "wijs dit documenttype toe"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "wijs deze correspondent toe"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "volgorde"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Ongeldige reguliere expressie: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Ongeldig kleur."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Bestandstype %(type)s niet ondersteund"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Ongeldige variabele ontdekt."
@@ -854,135 +910,286 @@ msgstr "E-mailadres"
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
msgid "English (US)"
msgstr "Engels (US)"
#: paperless/settings.py:587
msgid "Arabic"
msgstr "Arabisch"
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "Wit-Russisch"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
msgstr "Catalaans"
#: paperless/settings.py:592
msgid "Czech"
msgstr "Tsjechisch"
#: paperless/settings.py:593
msgid "Danish"
msgstr "Deens"
#: paperless/settings.py:594
msgid "German"
msgstr "Duits"
#: paperless/settings.py:595
msgid "Greek"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "Engels (Brits)"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
msgstr "Spaans"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
msgstr "Fins"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "Frans"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "Italian"
msgstr "Italiaans"
msgid "English (US)"
msgstr "Engels (US)"
#: paperless/settings.py:602
msgid "Luxembourgish"
msgstr "Luxemburgs"
msgid "Arabic"
msgstr "Arabisch"
#: paperless/settings.py:603
msgid "Norwegian"
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Wit-Russisch"
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Catalaans"
#: paperless/settings.py:607
msgid "Czech"
msgstr "Tsjechisch"
#: paperless/settings.py:608
msgid "Danish"
msgstr "Deens"
#: paperless/settings.py:609
msgid "German"
msgstr "Duits"
#: paperless/settings.py:610
msgid "Greek"
msgstr ""
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Engels (Brits)"
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Spaans"
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Fins"
#: paperless/settings.py:614
msgid "French"
msgstr "Frans"
#: paperless/settings.py:615
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italiaans"
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luxemburgs"
#: paperless/settings.py:618
msgid "Norwegian"
msgstr ""
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Nederlands"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Pools"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugees (Brazilië)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugees"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Roemeens"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Russisch"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Slowaaks"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Sloveens"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Servisch"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Zweeds"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turks"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Oekraïens"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Chinees (vereenvoudigd)"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Paperless-ngx administratie"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Norwegian\n"
"Language: no_NO\n"
@@ -25,27 +25,27 @@ msgstr "Dokumenter"
msgid "owner"
msgstr "eier"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Ingen"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Hvilket som helst ord"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Alle ord"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Eksakt match"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Regulære uttrykk"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Fuzzy word"
@@ -53,20 +53,20 @@ msgstr "Fuzzy word"
msgid "Automatic"
msgstr "Automatisk"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "navn"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "treff"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "samsvarende algoritme"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "er insensitiv"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "API-opplasting"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "Epost-henting"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "ordre"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr "filtrer sti"
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr "Bare last inn dokumenter med en sti som samsvarer med dette hvis angitt. Jokertegn angitt som * er tillatt. Saker er usensitive."
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "filtrer filnavn"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Bare bruke dokumenter som samsvarer med dette filnavnet hvis angitt. Jokertegn som *.pdf eller *faktura* er tillatt. Saksfortegnet."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr "filtrere dokumenter fra denne epostregelen"
#: documents/models.py:940
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "tildel tittel"
#: documents/models.py:945
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr "Tilordne en dokumenttittel, kan inkludere noen plassholdere, se dokumentasjon."
#: documents/models.py:953 paperless_mail/models.py:216
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "tilordne denne taggen"
#: documents/models.py:961 paperless_mail/models.py:224
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "tilordne denne dokumenttypen"
#: documents/models.py:969 paperless_mail/models.py:238
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "Tildel denne korrespondenten"
#: documents/models.py:977
#: documents/models.py:1043
msgid "assign this storage path"
msgstr "tilordne denne lagringsstien"
#: documents/models.py:986
#: documents/models.py:1052
msgid "assign this owner"
msgstr "tilordne denne eieren"
#: documents/models.py:993
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr "gir lesetilgang til disse brukerne"
#: documents/models.py:1000
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr "gi lesetilgang til disse brukerne"
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr "gir skrivetilgang til disse brukerne"
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr "gi skrivetilgang til disse gruppene"
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
msgstr "forbruksmal"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
msgstr "forbruksmaler"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "ordre"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Ugyldig regulært uttrykk: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Ugyldig farge."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Filtype %(type)s støttes ikke"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Ugyldig variabel oppdaget."
@@ -854,135 +910,286 @@ msgstr "E-post"
msgid "Send me instructions!"
msgstr "Send meg instruksjoner!"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
msgid "English (US)"
msgstr "Engelsk (US)"
#: paperless/settings.py:587
msgid "Arabic"
msgstr "Arabisk"
#: paperless/settings.py:588
msgid "Afrikaans"
msgstr "Afrikansk"
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "Hviterussisk"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
msgstr "Katalansk"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
msgstr "Tsjekkisk"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:593
msgid "Danish"
msgstr "Dansk"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:594
msgid "German"
msgstr "Tysk"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:595
msgid "Greek"
msgstr "Gresk"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "Engelsk (GB)"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
msgstr "Spansk"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
msgstr "Finsk"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "Fransk"
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "Engelsk (US)"
#: paperless/settings.py:602
msgid "Arabic"
msgstr "Arabisk"
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "Afrikansk"
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Hviterussisk"
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Katalansk"
#: paperless/settings.py:607
msgid "Czech"
msgstr "Tsjekkisk"
#: paperless/settings.py:608
msgid "Danish"
msgstr "Dansk"
#: paperless/settings.py:609
msgid "German"
msgstr "Tysk"
#: paperless/settings.py:610
msgid "Greek"
msgstr "Gresk"
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Engelsk (GB)"
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Spansk"
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Finsk"
#: paperless/settings.py:614
msgid "French"
msgstr "Fransk"
#: paperless/settings.py:615
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italiensk"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luxembourgsk"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Norsk"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Nederlandsk"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Polsk"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugisisk (Brasil)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugisisk"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Rumensk"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Russisk"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Slovakisk"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Slovenian"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Serbisk"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Svensk"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Tyrkisk"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Ukrainsk"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Kinesisk forenklet"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Paperless-ngx-administrasjon"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-28 12:09\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Polish\n"
"Language: pl_PL\n"
@@ -25,27 +25,27 @@ msgstr "Dokumenty"
msgid "owner"
msgstr "właściciel"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Brak"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Dowolne słowo"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Wszystkie słowa"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Dokładne dopasowanie"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Wyrażenie regularne"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Dopasowanie rozmyte"
@@ -53,20 +53,20 @@ msgstr "Dopasowanie rozmyte"
msgid "Automatic"
msgstr "Automatyczny"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "nazwa"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "dopasowanie"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "algorytm dopasowania"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "bez rozróżniania wielkości znaków"
@@ -112,11 +112,11 @@ msgstr "ścieżka"
#: documents/models.py:129 documents/models.py:156
msgid "storage path"
msgstr "ścieżka przechowywania"
msgstr "ścieżka zapisu"
#: documents/models.py:130
msgid "storage paths"
msgstr "ścieżki przechowywania"
msgstr "ścieżki zapisu"
#: documents/models.py:137
msgid "Unencrypted"
@@ -197,7 +197,7 @@ msgstr "oryginalna nazwa pliku"
#: documents/models.py:256
msgid "The original name of the file when it was uploaded"
msgstr "Oryginalna nazwa pliku podczas jego przesyłania"
msgstr "Oryginalna nazwa pliku w momencie jego przesyłania"
#: documents/models.py:263
msgid "archive serial number"
@@ -253,7 +253,7 @@ msgstr "log"
#: documents/models.py:390
msgid "logs"
msgstr "logi"
msgstr "dziennik"
#: documents/models.py:399 documents/models.py:466
msgid "saved view"
@@ -381,7 +381,7 @@ msgstr "ASN mniejszy niż"
#: documents/models.py:447
msgid "storage path is"
msgstr "ścieżką przechowywania jest"
msgstr "ścieżką zapisu jest"
#: documents/models.py:448
msgid "has correspondent in"
@@ -401,11 +401,11 @@ msgstr "nie ma typu dokumentu w"
#: documents/models.py:452
msgid "has storage path in"
msgstr "ma ścieżkę składowania w"
msgstr "ma ścieżkę zapisu w"
#: documents/models.py:453
msgid "does not have storage path in"
msgstr "nie ma ścieżki składowania w"
msgstr "nie ma ścieżki zapisu w"
#: documents/models.py:454
msgid "owner is"
@@ -425,7 +425,7 @@ msgstr "nie ma właściciela w"
#: documents/models.py:458
msgid "has custom field value"
msgstr "ma wartość pola niestandardowego"
msgstr "ma wartość pola dodatkowego"
#: documents/models.py:459
msgid "is shared by me"
@@ -597,127 +597,183 @@ msgstr "typ danych"
#: documents/models.py:781
msgid "custom field"
msgstr "pole niestandardowe"
msgstr "pole dodatkowe"
#: documents/models.py:782
msgid "custom fields"
msgstr "pola niestandardowe"
msgstr "pola dodatkowe"
#: documents/models.py:844
msgid "custom field instance"
msgstr "przykład pola niestandardowego"
msgstr "przypisane pole dodatkowe"
#: documents/models.py:845
msgid "custom field instances"
msgstr "przykłady pól niestandardowych"
msgstr "przypisanych pól dodatkowych"
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr "Rozpoczęto pobieranie"
#: documents/models.py:903
msgid "Document Added"
msgstr "Dodano dokument"
#: documents/models.py:904
msgid "Document Updated"
msgstr "Dokument zaktualizowano"
#: documents/models.py:907
msgid "Consume Folder"
msgstr "Folder pobierania"
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "Przesyłanie przez API"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "Pobieranie E-mail"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "kolejność"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr "Typ wyzwalacza dla procesu"
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr "filtruj ścieżkę"
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr "Pobiera tylko dokumenty ze ścieżką, która pasuje do wyspecyfikowanej. Symbol * jest dozwolony. Wielkość liter bez znaczenia."
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "filtruj po nazwie pliku"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Przetwarzaj tylko dokumenty, które całkowicie pasują do tej nazwy pliku, jeśli jest podana. Wzorce dopasowania jak *.pdf lub *faktura* są dozwolone. Wielkość liter nie jest rozróżniana."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr "filtruj dokumenty z tej reguły pocztowej"
#: documents/models.py:940
#: documents/models.py:968
msgid "has these tag(s)"
msgstr "posiada wskazane tag(i)"
#: documents/models.py:976
msgid "has this document type"
msgstr "posiada wskazany typ dokumentu"
#: documents/models.py:984
msgid "has this correspondent"
msgstr "posiada wskazanego nadawcę"
#: documents/models.py:988
msgid "workflow trigger"
msgstr "wyzwalacz procesu"
#: documents/models.py:989
msgid "workflow triggers"
msgstr "wyzwalacze procesu"
#: documents/models.py:997
msgid "Assignment"
msgstr "Przypisanie"
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr "Typ akcji w procesie"
#: documents/models.py:1006
msgid "assign title"
msgstr "przypisz tytuł"
#: documents/models.py:945
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr "Przypisz tytuł dokumentu, może zawierać zmienne, szczegóły w dokumentacji."
#: documents/models.py:953 paperless_mail/models.py:216
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "przypisz ten tag"
#: documents/models.py:961 paperless_mail/models.py:224
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "przypisz ten typ dokumentu"
#: documents/models.py:969 paperless_mail/models.py:238
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "przypisz tego korespondenta"
#: documents/models.py:977
#: documents/models.py:1043
msgid "assign this storage path"
msgstr "przypisz tą ścieżkę zapisu"
#: documents/models.py:986
#: documents/models.py:1052
msgid "assign this owner"
msgstr "przypisz tego właściciela"
#: documents/models.py:993
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr "nadaj tym użytkownikom uprawnienia do przeglądania"
#: documents/models.py:1000
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr "nadaj tym grupom uprawnienia do przeglądania"
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr "nadaj tym użytkownikom uprawnienia do zmiany"
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr "nadaj tym grupom uprawnienia do zmiany"
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr "przypisz te pola niestandardowe"
msgstr "przypisz te pola dodatkowe"
#: documents/models.py:1025
msgid "consumption template"
msgstr "szablon pobierania"
#: documents/models.py:1091
msgid "workflow action"
msgstr "akcja procesu"
#: documents/models.py:1026
msgid "consumption templates"
msgstr "szablony pobierania"
#: documents/models.py:1092
msgid "workflow actions"
msgstr "akcje procesu"
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "kolejność"
#: documents/models.py:1107
msgid "triggers"
msgstr "wyzwalacze"
#: documents/models.py:1114
msgid "actions"
msgstr "akcje"
#: documents/models.py:1117
msgid "enabled"
msgstr "włączony"
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Nieprawidłowe wyrażenie regularne: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Nieprawidłowy kolor."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Typ pliku %(type)s nie jest obsługiwany"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Wykryto nieprawidłową zmienną."
@@ -854,135 +910,286 @@ msgstr "Adres e-mail"
msgid "Send me instructions!"
msgstr "Wyślij mi instrukcje!"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr "Nie można przetworzyć URI {value}, błędna struktura"
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr "Nie można przetworzyć URI {value}, błędna lokalizacja sieciowa lub ścieżka"
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr "Nie można przetworzyć URI {value}"
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
#: paperless/models.py:25
msgid "pdf"
msgstr "pdf"
#: paperless/models.py:26
msgid "pdfa"
msgstr "pdfa"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr "pdfa-1"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr "pdfa-2"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr "pdfa-3"
#: paperless/models.py:38
msgid "skip"
msgstr "skip"
#: paperless/models.py:39
msgid "redo"
msgstr "redo"
#: paperless/models.py:40
msgid "force"
msgstr "force"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr "skip_noarchive"
#: paperless/models.py:49
msgid "never"
msgstr "never"
#: paperless/models.py:50
msgid "with_text"
msgstr "with_text"
#: paperless/models.py:51
msgid "always"
msgstr "always"
#: paperless/models.py:59
msgid "clean"
msgstr "wyczyść"
#: paperless/models.py:60
msgid "clean-final"
msgstr "clean-final"
#: paperless/models.py:61
msgid "none"
msgstr "brak"
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr "LeaveColorUnchanged"
#: paperless/models.py:70
msgid "RGB"
msgstr "RGB"
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr "UseDeviceIndependentColor"
#: paperless/models.py:72
msgid "Gray"
msgstr "Gray"
#: paperless/models.py:73
msgid "CMYK"
msgstr "CMYK"
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr "Określa wyjściowy typ PDF"
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr "Wykonaj OCR od strony 1 do strony wskazanej"
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr "Wykonaj OCR używając wskazanych języków"
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr "Określa tryb OCR"
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr "Zarządza tworzeniem pliku archiwum"
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr "Określa wartość rezerwową dla DPI obrazu"
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr "Zarządza procesem oczyszczania skanów"
#: paperless/models.py:137
msgid "Enables deskew"
msgstr "Włącza prostowanie"
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr "Włącza obracanie strony"
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr "Określa próg dla obracania strony"
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr "Ustawia maksymalny rozmiar obrazu dla dekompresji"
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr "Określa strategię konwersji kolorów przez Ghostscript"
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr "Dodaje dodatkowe argumenty dla OCRMyPDF"
#: paperless/models.py:170
msgid "paperless application settings"
msgstr "paperless ustawienia aplikacji"
#: paperless/settings.py:601
msgid "English (US)"
msgstr "Angielski (USA)"
#: paperless/settings.py:587
#: paperless/settings.py:602
msgid "Arabic"
msgstr "arabski"
#: paperless/settings.py:588
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "Afrykanerski"
#: paperless/settings.py:589
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Białoruski"
#: paperless/settings.py:590
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr "Bułgarski"
#: paperless/settings.py:591
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Kataloński"
#: paperless/settings.py:592
#: paperless/settings.py:607
msgid "Czech"
msgstr "Czeski"
#: paperless/settings.py:593
#: paperless/settings.py:608
msgid "Danish"
msgstr "Duński"
#: paperless/settings.py:594
#: paperless/settings.py:609
msgid "German"
msgstr "Niemiecki"
#: paperless/settings.py:595
#: paperless/settings.py:610
msgid "Greek"
msgstr "Grecki"
#: paperless/settings.py:596
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Angielski (Wielka Brytania)"
#: paperless/settings.py:597
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Hiszpański"
#: paperless/settings.py:598
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Fiński"
#: paperless/settings.py:599
#: paperless/settings.py:614
msgid "French"
msgstr "Francuski"
#: paperless/settings.py:600
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "Węgierski"
#: paperless/settings.py:601
#: paperless/settings.py:616
msgid "Italian"
msgstr "Włoski"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luksemburski"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Norweski"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Holenderski"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Polski"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugalski (Brazylia)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugalski"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Rumuński"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Rosyjski"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Słowacki"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Słoweński"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Serbski"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Szwedzki"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turecki"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Ukraiński"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Chiński uproszczony"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Administracja Paperless-ngx"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n"
"Language: pt_BR\n"
@@ -25,27 +25,27 @@ msgstr "Documentos"
msgid "owner"
msgstr "proprietário"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Nenhum"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Qualquer palavra"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Todas as palavras"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Correspondência exata"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Expressão regular"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Palavra difusa (fuzzy)"
@@ -53,20 +53,20 @@ msgstr "Palavra difusa (fuzzy)"
msgid "Automatic"
msgstr "Automático"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "nome"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "correspondência"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "algoritmo de correspondência"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "diferencia maiúsculas de minúsculas"
@@ -611,114 +611,170 @@ msgstr "instância de campo personalizado"
msgid "custom field instances"
msgstr "instâncias de campo personalizadas"
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr "Pasta de Consumo"
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "Envio por API"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "Busca em e-mail"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "ordem"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr "filtro de caminho"
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Consumir somente documentos que correspondem a este nome de arquivo se especificado.\n"
"Curingas como *.pdf ou *invoice* são permitidos. Sem diferenciação de maiúsculas e minúsculas."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
msgstr "atribuir título"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr "Atribuir um título de documento, pode incluir alguns espaços reservados, consulta a documentação."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "atribuir esta etiqueta"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "atribuir este tipo de documento"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "atribuir este correspondente"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:977
msgid "assign this storage path"
msgstr "atribuir este caminho de armazenamento"
#: documents/models.py:986
msgid "assign this owner"
msgstr "atribuir este proprietário"
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "atribuir título"
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr "Atribuir um título de documento, pode incluir alguns espaços reservados, consulta a documentação."
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "atribuir esta etiqueta"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "atribuir este tipo de documento"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "atribuir este correspondente"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr "atribuir este caminho de armazenamento"
#: documents/models.py:1052
msgid "assign this owner"
msgstr "atribuir este proprietário"
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr "atribuir estes campos personalizados"
#: documents/models.py:1025
msgid "consumption template"
msgstr "modelo de consumo"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
msgstr "modelos de consumo"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "ordem"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Expressão regular inválida: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Cor inválida."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tipo de arquivo %(type)s não suportado"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Variável inválida detectada."
@@ -855,135 +911,286 @@ msgstr "E-mail"
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
msgid "English (US)"
msgstr "Inglês (EUA)"
#: paperless/settings.py:587
msgid "Arabic"
msgstr "Árabe"
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "Bielorrusso"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
msgstr "Catalão"
#: paperless/settings.py:592
msgid "Czech"
msgstr "Tcheco"
#: paperless/settings.py:593
msgid "Danish"
msgstr "Dinamarquês"
#: paperless/settings.py:594
msgid "German"
msgstr "Alemão"
#: paperless/settings.py:595
msgid "Greek"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "Inglês (GB)"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
msgstr "Espanhol"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
msgstr "Finlandês"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "Francês"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "Italian"
msgstr "Italiano"
msgid "English (US)"
msgstr "Inglês (EUA)"
#: paperless/settings.py:602
msgid "Luxembourgish"
msgstr "Luxemburguês"
msgid "Arabic"
msgstr "Árabe"
#: paperless/settings.py:603
msgid "Norwegian"
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Dutch"
msgstr "Holandês"
msgid "Belarusian"
msgstr "Bielorrusso"
#: paperless/settings.py:605
msgid "Polish"
msgstr "Polonês"
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Portuguese (Brazil)"
msgstr "Português (Brasil)"
msgid "Catalan"
msgstr "Catalão"
#: paperless/settings.py:607
msgid "Portuguese"
msgstr "Português"
msgid "Czech"
msgstr "Tcheco"
#: paperless/settings.py:608
msgid "Romanian"
msgstr "Romeno"
msgid "Danish"
msgstr "Dinamarquês"
#: paperless/settings.py:609
msgid "Russian"
msgstr "Russo"
msgid "German"
msgstr "Alemão"
#: paperless/settings.py:610
msgid "Slovak"
msgstr "Eslovaco"
msgid "Greek"
msgstr ""
#: paperless/settings.py:611
msgid "Slovenian"
msgstr "Esloveno"
msgid "English (GB)"
msgstr "Inglês (GB)"
#: paperless/settings.py:612
msgid "Serbian"
msgstr "Sérvio"
msgid "Spanish"
msgstr "Espanhol"
#: paperless/settings.py:613
msgid "Swedish"
msgstr "Sueco"
msgid "Finnish"
msgstr "Finlandês"
#: paperless/settings.py:614
msgid "Turkish"
msgstr "Turco"
msgid "French"
msgstr "Francês"
#: paperless/settings.py:615
msgid "Ukrainian"
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italiano"
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luxemburguês"
#: paperless/settings.py:618
msgid "Norwegian"
msgstr ""
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Holandês"
#: paperless/settings.py:620
msgid "Polish"
msgstr "Polonês"
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Português (Brasil)"
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Português"
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Romeno"
#: paperless/settings.py:624
msgid "Russian"
msgstr "Russo"
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Eslovaco"
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Esloveno"
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Sérvio"
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Sueco"
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turco"
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr ""
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Chinês Simplificado"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Administração do Paperless-ngx"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Portuguese\n"
"Language: pt_PT\n"
@@ -25,27 +25,27 @@ msgstr "Documentos"
msgid "owner"
msgstr "dono"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Nenhum"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Qualquer palavra"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Todas as palavras"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Detecção exata"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Expressão regular"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Palavra difusa (fuzzy)"
@@ -53,20 +53,20 @@ msgstr "Palavra difusa (fuzzy)"
msgid "Automatic"
msgstr "Automático"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "nome"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "correspondência"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "algoritmo correspondente"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "é insensível"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "ordem"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Consumir apenas documentos que correspondam inteiramente ao nome de arquivo se especificado. Genéricos como *.pdf ou *fatura* são permitidos. Não é sensível a letras maiúsculas/minúsculas."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "atribuir esta etiqueta"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "atribuir este tipo de documento"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "atribuir este correspondente"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "atribuir esta etiqueta"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "atribuir este tipo de documento"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "atribuir este correspondente"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "ordem"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Expressão regular inválida: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Cor invalida."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tipo de arquivo %(type)s não suportado"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Variável inválida detetada."
@@ -854,135 +910,286 @@ msgstr "Email"
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
msgid "English (US)"
msgstr "Inglês (EUA)"
#: paperless/settings.py:587
msgid "Arabic"
msgstr "Árabe"
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "Bielorrusso"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
msgstr "Catalão"
#: paperless/settings.py:592
msgid "Czech"
msgstr "Checo"
#: paperless/settings.py:593
msgid "Danish"
msgstr "Dinamarquês"
#: paperless/settings.py:594
msgid "German"
msgstr "Deutsch"
#: paperless/settings.py:595
msgid "Greek"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "Inglês (GB)"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
msgstr "Espanhol"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
msgstr "Finlandês"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "Français"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "Italian"
msgstr "Italiano"
msgid "English (US)"
msgstr "Inglês (EUA)"
#: paperless/settings.py:602
msgid "Luxembourgish"
msgstr "Luxemburguês"
msgid "Arabic"
msgstr "Árabe"
#: paperless/settings.py:603
msgid "Norwegian"
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Dutch"
msgstr "Nederlandse"
msgid "Belarusian"
msgstr "Bielorrusso"
#: paperless/settings.py:605
msgid "Polish"
msgstr "Polaco"
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Portuguese (Brazil)"
msgstr "Português (Brasil)"
msgid "Catalan"
msgstr "Catalão"
#: paperless/settings.py:607
msgid "Portuguese"
msgstr "Português"
msgid "Czech"
msgstr "Checo"
#: paperless/settings.py:608
msgid "Romanian"
msgstr "Romeno"
msgid "Danish"
msgstr "Dinamarquês"
#: paperless/settings.py:609
msgid "Russian"
msgstr "Russo"
msgid "German"
msgstr "Deutsch"
#: paperless/settings.py:610
msgid "Slovak"
msgstr "Eslovaco"
msgid "Greek"
msgstr ""
#: paperless/settings.py:611
msgid "Slovenian"
msgstr "Esloveno"
msgid "English (GB)"
msgstr "Inglês (GB)"
#: paperless/settings.py:612
msgid "Serbian"
msgstr "Sérvio"
msgid "Spanish"
msgstr "Espanhol"
#: paperless/settings.py:613
msgid "Swedish"
msgstr "Sueco"
msgid "Finnish"
msgstr "Finlandês"
#: paperless/settings.py:614
msgid "Turkish"
msgstr "Turco"
msgid "French"
msgstr "Français"
#: paperless/settings.py:615
msgid "Ukrainian"
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italiano"
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luxemburguês"
#: paperless/settings.py:618
msgid "Norwegian"
msgstr ""
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Nederlandse"
#: paperless/settings.py:620
msgid "Polish"
msgstr "Polaco"
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Português (Brasil)"
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Português"
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Romeno"
#: paperless/settings.py:624
msgid "Russian"
msgstr "Russo"
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Eslovaco"
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Esloveno"
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Sérvio"
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Sueco"
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turco"
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr ""
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Chinês Simplificado"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Administração do Paperless-ngx"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Romanian\n"
"Language: ro_RO\n"
@@ -25,27 +25,27 @@ msgstr "Documente"
msgid "owner"
msgstr "proprietar"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Nimic"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Orice cuvânt"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Toate cuvintele"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Potrivire exactă"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Expresie regulată"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Mod neatent"
@@ -53,20 +53,20 @@ msgstr "Mod neatent"
msgid "Automatic"
msgstr "Automat"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "nume"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "potrivire"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "algoritm de potrivire"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "nu ține cont de majuscule"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "ordonează"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Consumă doar documentele care se potrivesc în întregime cu acest nume de fișier, dacă este specificat. Simbolul * ține locul oricărui șir de caractere. Majusculele nu contează."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "atribuie această etichetă"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "atribuie acest tip"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "atribuie acest corespondent"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "atribuie această etichetă"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "atribuie acest tip"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "atribuie acest corespondent"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "ordonează"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Expresie regulată invalida: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Culoare invalidă."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Tip de fișier %(type)s nesuportat"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr ""
@@ -854,135 +910,286 @@ msgstr ""
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr ""
#: paperless/settings.py:586
msgid "English (US)"
msgstr "Engleză (Americană)"
#: paperless/settings.py:587
msgid "Arabic"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
msgstr "Cehă"
#: paperless/settings.py:593
msgid "Danish"
msgstr "Daneză"
#: paperless/settings.py:594
msgid "German"
msgstr "Germană"
#: paperless/settings.py:595
msgid "Greek"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "Engleză (Britanică)"
#: paperless/settings.py:597
msgid "Spanish"
msgstr "Spaniolă"
#: paperless/settings.py:598
msgid "Finnish"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "Franceză"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "Italian"
msgstr "Italiană"
msgid "English (US)"
msgstr "Engleză (Americană)"
#: paperless/settings.py:602
msgid "Luxembourgish"
msgstr "Luxemburgheză"
msgid "Arabic"
msgstr ""
#: paperless/settings.py:603
msgid "Norwegian"
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Dutch"
msgstr "Olandeză"
msgid "Belarusian"
msgstr ""
#: paperless/settings.py:605
msgid "Polish"
msgstr "Poloneză"
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Portuguese (Brazil)"
msgstr "Portugheză (Brazilia)"
msgid "Catalan"
msgstr ""
#: paperless/settings.py:607
msgid "Portuguese"
msgstr "Portugheză"
msgid "Czech"
msgstr "Cehă"
#: paperless/settings.py:608
msgid "Romanian"
msgstr "Română"
msgid "Danish"
msgstr "Daneză"
#: paperless/settings.py:609
msgid "Russian"
msgstr "Rusă"
msgid "German"
msgstr "Germană"
#: paperless/settings.py:610
msgid "Slovak"
msgid "Greek"
msgstr ""
#: paperless/settings.py:611
msgid "Slovenian"
msgstr ""
msgid "English (GB)"
msgstr "Engleză (Britanică)"
#: paperless/settings.py:612
msgid "Serbian"
msgstr ""
msgid "Spanish"
msgstr "Spaniolă"
#: paperless/settings.py:613
msgid "Swedish"
msgstr "Suedeză"
#: paperless/settings.py:614
msgid "Turkish"
msgid "Finnish"
msgstr ""
#: paperless/settings.py:614
msgid "French"
msgstr "Franceză"
#: paperless/settings.py:615
msgid "Ukrainian"
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italiană"
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luxemburgheză"
#: paperless/settings.py:618
msgid "Norwegian"
msgstr ""
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Olandeză"
#: paperless/settings.py:620
msgid "Polish"
msgstr "Poloneză"
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugheză (Brazilia)"
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugheză"
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Română"
#: paperless/settings.py:624
msgid "Russian"
msgstr "Rusă"
#: paperless/settings.py:625
msgid "Slovak"
msgstr ""
#: paperless/settings.py:626
msgid "Slovenian"
msgstr ""
#: paperless/settings.py:627
msgid "Serbian"
msgstr ""
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Suedeză"
#: paperless/settings.py:629
msgid "Turkish"
msgstr ""
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr ""
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr ""
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Administrare Paperless-ngx"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Language: ru_RU\n"
@@ -25,27 +25,27 @@ msgstr "Документы"
msgid "owner"
msgstr "владелец"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Ничего"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Любые слова"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Все слова"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Точное соответствие"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Регулярное выражение"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "\"Нечёткий\" режим"
@@ -53,20 +53,20 @@ msgstr "\"Нечёткий\" режим"
msgid "Automatic"
msgstr "Автоматически"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "имя"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "соответствие"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "алгоритм сопоставления"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "без учёта регистра"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "Загрузка API"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "Получить почту"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "порядок"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Обрабатывать только документы, которые полностью совпадают с именем файла (если оно указано). Маски, например *.pdf или *счет*, разрешены. Без учёта регистра."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "назначить этот тег"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "назначить этот тип документа"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "назначить этого корреспондента"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "назначить этот тег"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "назначить этот тип документа"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "назначить этого корреспондента"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "порядок"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "неверное регулярное выражение: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Неверный цвет."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Тип файла %(type)s не поддерживается"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Обнаружена неверная переменная."
@@ -854,135 +910,286 @@ msgstr "Электронная почта"
msgid "Send me instructions!"
msgstr "Отправить мне инструкции!"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "Английский (США)"
#: paperless/settings.py:587
#: paperless/settings.py:602
msgid "Arabic"
msgstr "Арабский"
#: paperless/settings.py:588
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "Африкаанс"
#: paperless/settings.py:589
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Белорусский"
#: paperless/settings.py:590
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr "Болгарский"
#: paperless/settings.py:591
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Каталонский"
#: paperless/settings.py:592
#: paperless/settings.py:607
msgid "Czech"
msgstr "Чешский"
#: paperless/settings.py:593
#: paperless/settings.py:608
msgid "Danish"
msgstr "Датский"
#: paperless/settings.py:594
#: paperless/settings.py:609
msgid "German"
msgstr "Немецкий"
#: paperless/settings.py:595
#: paperless/settings.py:610
msgid "Greek"
msgstr "Греческий"
#: paperless/settings.py:596
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Английский (Великобритании)"
#: paperless/settings.py:597
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Испанский"
#: paperless/settings.py:598
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Финский"
#: paperless/settings.py:599
#: paperless/settings.py:614
msgid "French"
msgstr "Французский"
#: paperless/settings.py:600
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "Венгерский"
#: paperless/settings.py:601
#: paperless/settings.py:616
msgid "Italian"
msgstr "Итальянский"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Люксембургский"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Норвежский"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Датский"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Польский"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Португальский (Бразилия)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Португальский"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Румынский"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Русский"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Словацкий"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Словенский"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Сербский"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Шведский"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Турецкий"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Украинский"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Китайский упрощенный"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Администрирование Paperless-ngx"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Slovak\n"
"Language: sk_SK\n"
@@ -25,27 +25,27 @@ msgstr "Dokumenty"
msgid "owner"
msgstr "vlastník"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Žiadny"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Akékoľvek slovo"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Všetky slová"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Presná zhoda"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Regulárny výraz"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Nejednoznačné slovo"
@@ -53,20 +53,20 @@ msgstr "Nejednoznačné slovo"
msgid "Automatic"
msgstr "Automatické"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "meno"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "zhoda"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "algoritmus zhody"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "nerozlišuje veľké a malé písmená"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "poradie"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Spracuje iba dokumenty so zhodným názvom, ak je vyplnený. Použitie zástupných znakov ako *.pdf alebo *invoice* je povolené. Rozoznáva malé a veľké písmená."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "priradiť tento štítok"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "priradiť tento typ dokumentu"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "priradiť tohto odosielateľa"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "priradiť tento štítok"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "priradiť tento typ dokumentu"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "priradiť tohto odosielateľa"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "poradie"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Neplatný regulárny výraz: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Neplatná farba."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Typ súboru %(type)s nie je podporovaný"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Zistená neplatná premenná."
@@ -854,135 +910,286 @@ msgstr "E-mail"
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
msgid "English (US)"
msgstr "Angličtina (US)"
#: paperless/settings.py:587
msgid "Arabic"
msgstr "Arabčina"
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "Bieloruština"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
msgstr "Catalan"
#: paperless/settings.py:592
msgid "Czech"
msgstr "Čeština"
#: paperless/settings.py:593
msgid "Danish"
msgstr "Dánčina"
#: paperless/settings.py:594
msgid "German"
msgstr "Nemčina"
#: paperless/settings.py:595
msgid "Greek"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "Angličtina (GB)"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
msgstr "Španielčina"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
msgstr "Finnish"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "Francúzština"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "Italian"
msgstr "Taliančina"
msgid "English (US)"
msgstr "Angličtina (US)"
#: paperless/settings.py:602
msgid "Luxembourgish"
msgstr "Luxemburčina"
msgid "Arabic"
msgstr "Arabčina"
#: paperless/settings.py:603
msgid "Norwegian"
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Dutch"
msgstr "Holandčina"
msgid "Belarusian"
msgstr "Bieloruština"
#: paperless/settings.py:605
msgid "Polish"
msgstr "Polština"
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Portuguese (Brazil)"
msgstr "Portugalčina (Brazília)"
msgid "Catalan"
msgstr "Catalan"
#: paperless/settings.py:607
msgid "Portuguese"
msgstr "Portugalčina"
msgid "Czech"
msgstr "Čeština"
#: paperless/settings.py:608
msgid "Romanian"
msgstr "Rumunčina"
msgid "Danish"
msgstr "nčina"
#: paperless/settings.py:609
msgid "Russian"
msgstr "Ruština"
msgid "German"
msgstr "Nemčina"
#: paperless/settings.py:610
msgid "Slovak"
msgstr "Slovenčina"
msgid "Greek"
msgstr ""
#: paperless/settings.py:611
msgid "Slovenian"
msgstr "Slovinčina"
msgid "English (GB)"
msgstr "Angličtina (GB)"
#: paperless/settings.py:612
msgid "Serbian"
msgstr "Srbčina"
msgid "Spanish"
msgstr "Španielčina"
#: paperless/settings.py:613
msgid "Swedish"
msgstr "Švédčina"
msgid "Finnish"
msgstr "Finnish"
#: paperless/settings.py:614
msgid "Turkish"
msgstr "Turečtina"
msgid "French"
msgstr "Francúzština"
#: paperless/settings.py:615
msgid "Ukrainian"
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "Taliančina"
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luxemburčina"
#: paperless/settings.py:618
msgid "Norwegian"
msgstr ""
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Holandčina"
#: paperless/settings.py:620
msgid "Polish"
msgstr "Polština"
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugalčina (Brazília)"
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugalčina"
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Rumunčina"
#: paperless/settings.py:624
msgid "Russian"
msgstr "Ruština"
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Slovenčina"
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Slovinčina"
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Srbčina"
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Švédčina"
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turečtina"
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr ""
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Čínština (zjednodušená)"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Správa Paperless-ngx"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Slovenian\n"
"Language: sl_SI\n"
@@ -25,27 +25,27 @@ msgstr "Dokumenti"
msgid "owner"
msgstr "lastnik"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Brez"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Katerakoli beseda"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Vse besede"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Točno ujemanje"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Regularni izraz"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Fuzzy beseda"
@@ -53,20 +53,20 @@ msgstr "Fuzzy beseda"
msgid "Automatic"
msgstr "Samodejno"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "ime"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "ujemanje"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "algoritem ujemanja"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "brez razlikovanje velikosti črk"
@@ -611,113 +611,169 @@ msgstr "primer polja po meri"
msgid "custom field instances"
msgstr "primeri polja po meri"
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr "Zajemalna mapa"
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "Api prenos"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "Pridobi e-pošto"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "vrstni red"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr "filtriraj pot"
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr "Če je določena, zajemi samo dokumente s potjo, ki se ujema s to. Dovoljeni so nadomestni znaki, določeni kot *. Ni občutljivo na velikost črk."
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "filtriraj imena datotek"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Uporabljajte samo dokumente, ki se v celoti ujemajo s tem imenom datoteke, če je navedeno. Dovoljeni so nadomestni znaki, kot sta *.pdf ali *račun*. Neobčutljiva na velike in male črke."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr "filtriraj dokumente iz tega e-poštnega pravila"
#: documents/models.py:940
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "dodeli naslov"
#: documents/models.py:945
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr "Dodelite naslov dokumenta, lahko vključuje nekatere nadomestne znake, glejte dokumentacijo."
#: documents/models.py:953 paperless_mail/models.py:216
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "dodeli to oznako"
#: documents/models.py:961 paperless_mail/models.py:224
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "dodeli to vrsto dokumenta"
#: documents/models.py:969 paperless_mail/models.py:238
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "dodeli tega dopisnika"
#: documents/models.py:977
#: documents/models.py:1043
msgid "assign this storage path"
msgstr "dodeli to pot shranjevanja"
#: documents/models.py:986
#: documents/models.py:1052
msgid "assign this owner"
msgstr "določi tega lastnika"
#: documents/models.py:993
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr "tem uporabnikom podeli dovoljenje za ogled"
#: documents/models.py:1000
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr "tem skupinam podeli dovoljenje za ogled"
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr "tem uporabnikom podeli dovoljenje za spreminjanje"
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr "tem skupinam podeli dovoljenje za spreminjanje"
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
msgstr "zajemalna predloga"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
msgstr "zajemalne predloge"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "vrstni red"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Neveljaven splošen izraz: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Napačna barva."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Vrsta datoteke %(type)s ni podprta"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Zaznani neveljavni znaki."
@@ -854,135 +910,286 @@ msgstr "E-pošta"
msgid "Send me instructions!"
msgstr "Pošljite mi navodila!"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "Angleščina (ZDA)"
#: paperless/settings.py:587
#: paperless/settings.py:602
msgid "Arabic"
msgstr "Arabščina"
#: paperless/settings.py:588
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "Afrikanščina"
#: paperless/settings.py:589
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Beloruščina"
#: paperless/settings.py:590
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr "Bolgarščina"
#: paperless/settings.py:591
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Katalonščina"
#: paperless/settings.py:592
#: paperless/settings.py:607
msgid "Czech"
msgstr "Češčina"
#: paperless/settings.py:593
#: paperless/settings.py:608
msgid "Danish"
msgstr "Danščina"
#: paperless/settings.py:594
#: paperless/settings.py:609
msgid "German"
msgstr "Nemščina"
#: paperless/settings.py:595
#: paperless/settings.py:610
msgid "Greek"
msgstr "Grščina"
#: paperless/settings.py:596
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Angleščina (GB)"
#: paperless/settings.py:597
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Španščina"
#: paperless/settings.py:598
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Finščina"
#: paperless/settings.py:599
#: paperless/settings.py:614
msgid "French"
msgstr "Francoščina"
#: paperless/settings.py:600
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "Madžarščina"
#: paperless/settings.py:601
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italijanščina"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luksemburški"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Norveščina"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Nizozemščina"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Poljščina"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugalščina (Brazilija)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugalščina"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Romunščina"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Ruščina"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Slovaščina"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Slovenščina"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Srbščina"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Švedščina"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turščina"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Ukrajinščina"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Poenostavljena kitajščina"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Paperless-ngx administracija"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Serbian (Latin)\n"
"Language: sr_CS\n"
@@ -25,27 +25,27 @@ msgstr "Dokumenta"
msgid "owner"
msgstr "vlasnik"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Nijedan"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Bilo koja reč"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Sve reči"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Tačno podudaranje"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Regularni izraz"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Fuzzy reč"
@@ -53,20 +53,20 @@ msgstr "Fuzzy reč"
msgid "Automatic"
msgstr "Automatski"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "naziv"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "poklapanje"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "algoritam podudaranja"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "bez razlike veliko/malo slovo"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr "Folder za obradu"
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "Preuzimanje e-pošte"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "raspored"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr "filtriraj putanju"
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "filtriraj ime fajla"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Konzumirajte samo dokumente koji u potpunosti odgovaraju ovom nazivu datoteke ako je navedeno. Dopušteni su zamenski znakovi kao što su *.pdf ili *faktura*. Neosetljivo je na mala i mala slova."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
msgstr "dodeli naslov"
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "dodeli ovu oznaku"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "dodeli ovaj tip dokumenta"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "dodeli ovog korspodenta"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "dodeli naslov"
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "dodeli ovu oznaku"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "dodeli ovaj tip dokumenta"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "dodeli ovog korspodenta"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
msgstr "šabloni za obradu"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "raspored"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Nevažeći regularni izraz: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Nevažeća boja."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Vrsta datoteke %(type)s nije podržana"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Otkrivena je nevažeća promenljiva."
@@ -854,135 +910,286 @@ msgstr "Email"
msgid "Send me instructions!"
msgstr "Pošalji mi uputstva!"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr ""
#: paperless/settings.py:586
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "Engleski (US)"
#: paperless/settings.py:587
#: paperless/settings.py:602
msgid "Arabic"
msgstr "Arapski"
#: paperless/settings.py:588
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "Afrički"
#: paperless/settings.py:589
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Beloruski"
#: paperless/settings.py:590
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr "Bugarski"
#: paperless/settings.py:591
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Katalonski"
#: paperless/settings.py:592
#: paperless/settings.py:607
msgid "Czech"
msgstr "Češki"
#: paperless/settings.py:593
#: paperless/settings.py:608
msgid "Danish"
msgstr "Danski"
#: paperless/settings.py:594
#: paperless/settings.py:609
msgid "German"
msgstr "Nemački"
#: paperless/settings.py:595
#: paperless/settings.py:610
msgid "Greek"
msgstr "Grčki"
#: paperless/settings.py:596
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Engleski (UK)"
#: paperless/settings.py:597
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Španski"
#: paperless/settings.py:598
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Finski"
#: paperless/settings.py:599
#: paperless/settings.py:614
msgid "French"
msgstr "Francuski"
#: paperless/settings.py:600
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "Mađarski"
#: paperless/settings.py:601
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italijanski"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luksemburški"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Norveški"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Holandski"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Poljski"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugalski (Brazil)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugalski"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Rumunski"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Ruski"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Slovački"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Slovenački"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Srpski"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Švedski"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turski"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Ukrajinski"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Kineski pojednostavljen"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Paperless-ngx administracija"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Swedish\n"
"Language: sv_SE\n"
@@ -25,27 +25,27 @@ msgstr "Dokument"
msgid "owner"
msgstr "ägare"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Ingen"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Valfritt ord"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Alla ord"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Exakt matchning"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Reguljära uttryck"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Ungefärligt ord"
@@ -53,20 +53,20 @@ msgstr "Ungefärligt ord"
msgid "Automatic"
msgstr "Automatisk"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "namn"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "träff"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "matchande algoritm"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "är ej skiftlägeskänsligt"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "Api-uppladdning"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "ordning"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Konsumera endast dokument som matchar exakt detta filnamn, om det är angivet. Jokertecken som *.pdf eller *faktura* är tillåtna. Ej skiftlägeskänsligt."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
msgstr "tilldela titel"
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "tilldela denna etikett"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "tilldela den här dokumenttypen"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "tilldela denna korrespondent"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
msgstr "tilldela denna ägare"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "tilldela titel"
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "tilldela denna etikett"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "tilldela den här dokumenttypen"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "tilldela denna korrespondent"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr "tilldela denna ägare"
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "ordning"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Ogiltigt reguljärt uttryck: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Ogiltig färg."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Filtypen %(type)s stöds inte"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Ogiltig variabel upptäckt."
@@ -854,135 +910,286 @@ msgstr "E-post"
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
msgid "English (US)"
msgstr "Engelska (USA)"
#: paperless/settings.py:587
msgid "Arabic"
msgstr "Arabiska"
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "Belarusiska"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
msgstr "Kataloniska"
#: paperless/settings.py:592
msgid "Czech"
msgstr "Tjeckiska"
#: paperless/settings.py:593
msgid "Danish"
msgstr "Danska"
#: paperless/settings.py:594
msgid "German"
msgstr "Tyska"
#: paperless/settings.py:595
msgid "Greek"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "Engelska (GB)"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
msgstr "Spanska"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
msgstr "Finska"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "Franska"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "Italian"
msgstr "Italienska"
msgid "English (US)"
msgstr "Engelska (USA)"
#: paperless/settings.py:602
msgid "Luxembourgish"
msgstr "Luxemburgiska"
msgid "Arabic"
msgstr "Arabiska"
#: paperless/settings.py:603
msgid "Norwegian"
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Belarusiska"
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Kataloniska"
#: paperless/settings.py:607
msgid "Czech"
msgstr "Tjeckiska"
#: paperless/settings.py:608
msgid "Danish"
msgstr "Danska"
#: paperless/settings.py:609
msgid "German"
msgstr "Tyska"
#: paperless/settings.py:610
msgid "Greek"
msgstr ""
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Engelska (GB)"
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Spanska"
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Finska"
#: paperless/settings.py:614
msgid "French"
msgstr "Franska"
#: paperless/settings.py:615
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "Italienska"
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Luxemburgiska"
#: paperless/settings.py:618
msgid "Norwegian"
msgstr ""
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Holländska"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Polska"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portugisiska (Brasilien)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portugisiska"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Rumänska"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Ryska"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Slovakiska"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Slovenska"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Serbiska"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Svenska"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Turkiska"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Ukrainiska"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Kinesiska (förenklad)"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Paperless-ngx administration"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Thai\n"
"Language: th_TH\n"
@@ -25,27 +25,27 @@ msgstr "เอกสาร"
msgid "owner"
msgstr "เจ้าของ"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "ไม่ใช้งาน"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "คำใดคำหนึ่ง"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "ทุกคำ"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "ตรงกันทุกประการ"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Regular expression"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Fuzzy word"
@@ -53,20 +53,20 @@ msgstr "Fuzzy word"
msgid "Automatic"
msgstr "อัตโนมัติ"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "ชื่อ"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "การจำแนก"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "วิธีการจำแนก"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "ไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "อันดับ"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "ประมวลผลเอกสารที่ชื่อไฟล์ตรงกับที่ระบุ (หากมี) โดยไม่สนใจอักษรพิมพ์ใหญ่-เล็ก และสามารถระบุแบบ wildcard ได้เช่น .pdf หรือ *invoice*"
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "กำหนดแท็กนี้"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "กำหนดประเภทเอกสารนี้"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "กำหนดผู้เขียนนี้"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "กำหนดแท็กนี้"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "กำหนดประเภทเอกสารนี้"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "กำหนดผู้เขียนนี้"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "อันดับ"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Regular expression ไม่ถูกต้อง : %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "สีไม่ถูกต้อง"
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "ไม่รองรับไฟล์ประเภท %(type)s"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "ตรวจพบตัวแปรไม่ถูกต้อง"
@@ -854,135 +910,286 @@ msgstr "อีเมล"
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
msgid "English (US)"
msgstr "ภาษาอังกฤษ (สหรัฐฯ)"
#: paperless/settings.py:587
msgid "Arabic"
msgstr "ภาษาอาหรับ"
#: paperless/settings.py:588
msgid "Afrikaans"
msgstr "ภาษาอาฟรีกานส์"
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "ภาษาเบลารุส"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
msgstr "ภาษาคาตาลัน"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
msgstr "ภาษาเช็ก"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:593
msgid "Danish"
msgstr "ภาษาเดนมาร์ก"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:594
msgid "German"
msgstr "ภาษาเยอรมัน"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:595
msgid "Greek"
msgstr "ภาษากรีก"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "ภาษาอังกฤษ (สหราชอาณาจักร)"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
msgstr "ภาษาสเปน"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
msgstr "ภาษาฟินแลนด์"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "ภาษาฝรั่งเศส"
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "ภาษาอังกฤษ (สหรัฐฯ)"
#: paperless/settings.py:602
msgid "Arabic"
msgstr "ภาษาอาหรับ"
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "ภาษาอาฟรีกานส์"
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "ภาษาเบลารุส"
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Catalan"
msgstr "ภาษาคาตาลัน"
#: paperless/settings.py:607
msgid "Czech"
msgstr "ภาษาเช็ก"
#: paperless/settings.py:608
msgid "Danish"
msgstr "ภาษาเดนมาร์ก"
#: paperless/settings.py:609
msgid "German"
msgstr "ภาษาเยอรมัน"
#: paperless/settings.py:610
msgid "Greek"
msgstr "ภาษากรีก"
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "ภาษาอังกฤษ (สหราชอาณาจักร)"
#: paperless/settings.py:612
msgid "Spanish"
msgstr "ภาษาสเปน"
#: paperless/settings.py:613
msgid "Finnish"
msgstr "ภาษาฟินแลนด์"
#: paperless/settings.py:614
msgid "French"
msgstr "ภาษาฝรั่งเศส"
#: paperless/settings.py:615
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "ภาษาอิตาลี"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "ภาษาลักเซมเบิร์ก"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "ภาษานอร์เวย์"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "ภาษาดัตช์"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "ภาษาโปแลนด์"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "ภาษาโปรตุเกส (บราซิล)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "ภาษาโปรตุเกส"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "ภาษาโรมาเนีย"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "ภาษารัสเซีย"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "ภาษาสโลวาเกีย"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "ภาษาสโลเวเนีย"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "ภาษาเซอร์เบีย"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "ภาษาสวีเดน"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "ภาษาตุรกี"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "ภาษายูเครน"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "ภาษาจีน (ตัวย่อ)"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "การจัดการ Paperless-ngx"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Turkish\n"
"Language: tr_TR\n"
@@ -25,27 +25,27 @@ msgstr "Belgeler"
msgid "owner"
msgstr "sahibi"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Hiçbiri"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Herhangi bir kelime"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Tüm Kelimeler"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Tam eşleşme"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Düzenli ifade"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Fuzzy Kelime"
@@ -53,20 +53,20 @@ msgstr "Fuzzy Kelime"
msgid "Automatic"
msgstr "Otomatik"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "ad"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "eşleme"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "eşleştirme algoritması"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "duyarsızdır"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "sıra"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "dosya adı ara"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Yalnızca belirtilmişse bu dosya ismiyla tamamen eşleşen belgeleri tüket. *.pdf veya *fatura* gibi joker karakterlere izin verilir. Büyük küçük yazılımına duyarsız."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
msgstr "başlık at"
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "bu etiketi atan"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "bu dosya türünü atan"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "bu muhabiri atan"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "başlık at"
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "bu etiketi atan"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "bu dosya türünü atan"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "bu muhabiri atan"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "sıra"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Hatalı Düzenli İfade: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Geçersiz renk."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Dosya türü %(type)s desteklenmiyor"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Geçersiz değişken algılandı."
@@ -854,135 +910,286 @@ msgstr "E-posta"
msgid "Send me instructions!"
msgstr "Talimatları gönder!"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
msgid "English (US)"
msgstr "İngilizce (Birleşik Devletler)"
#: paperless/settings.py:587
msgid "Arabic"
msgstr "Arapça"
#: paperless/settings.py:588
msgid "Afrikaans"
msgstr "Afrika dili"
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "Belarusça"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
msgstr "Katalanca"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
msgstr "Çekçe"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:593
msgid "Danish"
msgstr "Danca"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:594
msgid "German"
msgstr "Almanca"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:595
msgid "Greek"
msgstr "Yunanca"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "İngilizce (GB)"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
msgstr "İspanyolca"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
msgstr "Fince"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "Fransızca"
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "İngilizce (Birleşik Devletler)"
#: paperless/settings.py:602
msgid "Arabic"
msgstr "Arapça"
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "Afrika dili"
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Belarusça"
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Katalanca"
#: paperless/settings.py:607
msgid "Czech"
msgstr "Çekçe"
#: paperless/settings.py:608
msgid "Danish"
msgstr "Danca"
#: paperless/settings.py:609
msgid "German"
msgstr "Almanca"
#: paperless/settings.py:610
msgid "Greek"
msgstr "Yunanca"
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "İngilizce (GB)"
#: paperless/settings.py:612
msgid "Spanish"
msgstr "İspanyolca"
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Fince"
#: paperless/settings.py:614
msgid "French"
msgstr "Fransızca"
#: paperless/settings.py:615
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr "İtalyanca"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Lüksemburgca"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Norveçce"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Hollandaca"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Polonyaca"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Portekizce (Brezilya)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Portekizce"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Romence"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Rusça"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Slovakça"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Slovakça"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Sırpça"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "İsveççe"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Türkçe"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Ukraynaca"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Basitleştirilmiş Çince"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Paperless-ngx yönetimi"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Ukrainian\n"
"Language: uk_UA\n"
@@ -25,27 +25,27 @@ msgstr "Документи"
msgid "owner"
msgstr "власник"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Немає"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Будь-яке слово"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Усі слова"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Точна відповідність"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Регулярний вираз"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "Нечіткий пошук"
@@ -53,20 +53,20 @@ msgstr "Нечіткий пошук"
msgid "Automatic"
msgstr "Автоматично"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "назва"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "відповідність"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "алгоритм зіставляння"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "нечутливий до регістру"
@@ -385,47 +385,47 @@ msgstr "шлях зберігання"
#: documents/models.py:448
msgid "has correspondent in"
msgstr ""
msgstr "має кореспондента в"
#: documents/models.py:449
msgid "does not have correspondent in"
msgstr ""
msgstr "не має кореспондента в"
#: documents/models.py:450
msgid "has document type in"
msgstr ""
msgstr "має тип документа в"
#: documents/models.py:451
msgid "does not have document type in"
msgstr ""
msgstr "не має типу документа в"
#: documents/models.py:452
msgid "has storage path in"
msgstr ""
msgstr "має шлях до сховища в"
#: documents/models.py:453
msgid "does not have storage path in"
msgstr ""
msgstr "не має шляху до сховища в"
#: documents/models.py:454
msgid "owner is"
msgstr ""
msgstr "власник є"
#: documents/models.py:455
msgid "has owner in"
msgstr ""
msgstr "має власника в"
#: documents/models.py:456
msgid "does not have owner"
msgstr ""
msgstr "не має власника"
#: documents/models.py:457
msgid "does not have owner in"
msgstr ""
msgstr "не має власника в"
#: documents/models.py:458
msgid "has custom field value"
msgstr ""
msgstr "має значення спеціального поля"
#: documents/models.py:459
msgid "is shared by me"
@@ -521,7 +521,7 @@ msgstr "Дані, які повернені завданням"
#: documents/models.py:652
msgid "Note for the document"
msgstr ""
msgstr "Примітка до документа"
#: documents/models.py:676
msgid "user"
@@ -529,7 +529,7 @@ msgstr "користувач"
#: documents/models.py:681
msgid "note"
msgstr ""
msgstr "примітка"
#: documents/models.py:682
msgid "notes"
@@ -553,35 +553,35 @@ msgstr ""
#: documents/models.py:741
msgid "share link"
msgstr ""
msgstr "поділитися посиланням"
#: documents/models.py:742
msgid "share links"
msgstr ""
msgstr "поділитися посиланнями"
#: documents/models.py:754
msgid "String"
msgstr ""
msgstr "Текст"
#: documents/models.py:755
msgid "URL"
msgstr ""
msgstr "URL-адреса"
#: documents/models.py:756
msgid "Date"
msgstr ""
msgstr "Дата"
#: documents/models.py:757
msgid "Boolean"
msgstr ""
msgstr "Логічне значення"
#: documents/models.py:758
msgid "Integer"
msgstr ""
msgstr "Ціле число"
#: documents/models.py:759
msgid "Float"
msgstr ""
msgstr "З рухомою комою"
#: documents/models.py:760
msgid "Monetary"
@@ -589,19 +589,19 @@ msgstr ""
#: documents/models.py:761
msgid "Document Link"
msgstr ""
msgstr "Посилання на документ"
#: documents/models.py:773
msgid "data type"
msgstr ""
msgstr "тип даних"
#: documents/models.py:781
msgid "custom field"
msgstr ""
msgstr "користувацьке поле"
#: documents/models.py:782
msgid "custom fields"
msgstr ""
msgstr "користувацькі поля"
#: documents/models.py:844
msgid "custom field instance"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr "Документ додано"
#: documents/models.py:904
msgid "Document Updated"
msgstr "Документ оновлено"
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "порядок"
#: documents/models.py:908
msgid "filter path"
msgid "Api Upload"
msgstr "Завантаження API"
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "Завантаження пошти"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:913
#: documents/models.py:924
msgid "filter path"
msgstr "шлях фільтра"
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "Обробляти лише ті документи, які повністю відповідають назві файлу, якщо вказано. Шаблони, такі як *.pdf чи *invoice* дозволені. Без врахування регістру."
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
msgstr "призначити назву"
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "призначити цей тег"
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "призначити цей тип документа"
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "призначити цього кореспондента"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "призначити назву"
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "призначити цей тег"
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "призначити цей тип документа"
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "призначити цього кореспондента"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr "дія робочого циклу"
#: documents/models.py:1092
msgid "workflow actions"
msgstr "дії робочого циклу"
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "порядок"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr "дії"
#: documents/serialisers.py:105
#: documents/models.py:1117
msgid "enabled"
msgstr "ввімкнено"
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "Неправильний регулярний вираз: %(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "Неправильний колір."
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "Тип файлу %(type)s не підтримується"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "Виявлено неправильну змінну."
@@ -763,7 +819,7 @@ msgstr ""
#: documents/templates/registration/login.html:52
msgid "Share link has expired."
msgstr ""
msgstr "Термін дії посилання закінчився."
#: documents/templates/registration/login.html:55
msgid "Username"
@@ -779,44 +835,44 @@ msgstr "Увійти"
#: documents/templates/registration/login.html:70
msgid "Forgot your password?"
msgstr ""
msgstr "Забули пароль?"
#: documents/templates/registration/password_reset_complete.html:14
msgid "Paperless-ngx reset password complete"
msgstr ""
msgstr "Скидання пароля Paperless-ngx завершено"
#: documents/templates/registration/password_reset_complete.html:40
msgid "Password reset complete."
msgstr ""
msgstr "Скидання пароля завершено."
#: documents/templates/registration/password_reset_complete.html:42
#, python-format
msgid "Your new password has been set. You can now <a href=\"%(login_url)s\">log in</a>"
msgstr ""
msgstr "Ваш новий пароль встановлено. Тепер ви можете <a href=\"%(login_url)s\">увійти в систему</a>"
#: documents/templates/registration/password_reset_confirm.html:14
msgid "Paperless-ngx reset password confirmation"
msgstr ""
msgstr "Підтвердження скидання пароля Paperless-ngx"
#: documents/templates/registration/password_reset_confirm.html:42
msgid "Set a new password."
msgstr ""
msgstr "Встановити новий пароль."
#: documents/templates/registration/password_reset_confirm.html:46
msgid "Passwords did not match or too weak. Try again."
msgstr ""
msgstr "Паролі не збігаються або надто слабкі. Спробуйте ще раз."
#: documents/templates/registration/password_reset_confirm.html:49
msgid "New Password"
msgstr ""
msgstr "Новий пароль"
#: documents/templates/registration/password_reset_confirm.html:50
msgid "Confirm Password"
msgstr ""
msgstr "Підтвердьте пароль"
#: documents/templates/registration/password_reset_confirm.html:61
msgid "Change my password"
msgstr ""
msgstr "Змінити мій пароль"
#: documents/templates/registration/password_reset_confirm.html:65
msgid "request a new password reset"
@@ -828,11 +884,11 @@ msgstr ""
#: documents/templates/registration/password_reset_done.html:40
msgid "Check your inbox."
msgstr ""
msgstr "Перевірте вашу поштову скриньку."
#: documents/templates/registration/password_reset_done.html:41
msgid "We've emailed you instructions for setting your password. You should receive the email shortly!"
msgstr ""
msgstr "Ми надіслали вам на електронну пошту інструкції щодо встановлення паролю. Ви маєте отримати лист найближчим часом!"
#: documents/templates/registration/password_reset_form.html:14
msgid "Paperless-ngx reset password request"
@@ -854,135 +910,286 @@ msgstr "Ел. пошта"
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "Paperless"
#: paperless/settings.py:586
msgid "English (US)"
msgstr "Англійська (США)"
#: paperless/settings.py:587
msgid "Arabic"
msgstr "Арабська"
#: paperless/settings.py:588
msgid "Afrikaans"
msgstr "Африкаанс"
#: paperless/settings.py:589
msgid "Belarusian"
msgstr "Білоруська"
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
msgstr "Каталонська"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
msgstr "Чеська"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:593
msgid "Danish"
msgstr "Данська"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:594
msgid "German"
msgstr "Німецька"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:595
msgid "Greek"
msgstr "Грецька"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
msgstr "Англійська (Велика Британія)"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
msgstr "Іспанська"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
msgstr "Фінська"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/settings.py:599
msgid "French"
msgstr "Французька"
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr "RGB"
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr "Сірий"
#: paperless/models.py:73
msgid "CMYK"
msgstr "CMYK"
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "Англійська (США)"
#: paperless/settings.py:602
msgid "Arabic"
msgstr "Арабська"
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "Африкаанс"
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "Білоруська"
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr "Болгарська"
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Каталонська"
#: paperless/settings.py:607
msgid "Czech"
msgstr "Чеська"
#: paperless/settings.py:608
msgid "Danish"
msgstr "Данська"
#: paperless/settings.py:609
msgid "German"
msgstr "Німецька"
#: paperless/settings.py:610
msgid "Greek"
msgstr "Грецька"
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "Англійська (Велика Британія)"
#: paperless/settings.py:612
msgid "Spanish"
msgstr "Іспанська"
#: paperless/settings.py:613
msgid "Finnish"
msgstr "Фінська"
#: paperless/settings.py:614
msgid "French"
msgstr "Французька"
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "Угорська"
#: paperless/settings.py:616
msgid "Italian"
msgstr "Італійська"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "Люксембурзька"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Норвезька"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "Нідерландська"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "Польська"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "Португальська (Бразилія)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "Португальська"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "Румунська"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "Російська"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Словацька"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "Словенська"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "Сербська"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "Шведська"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "Турецька"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Українська"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "Китайська спрощена"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Адміністрування Paperless-ngx"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Vietnamese\n"
"Language: vi_VN\n"
@@ -25,27 +25,27 @@ msgstr "Tài liệu"
msgid "owner"
msgstr "chủ sở hữu"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "Không có"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "Từ bất kỳ"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "Tất cả từ"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "Chính xác"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "Biểu hiện bình thường"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "từ fuzzy"
@@ -53,20 +53,20 @@ msgstr "từ fuzzy"
msgid "Automatic"
msgstr "Tự động"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "tên"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "phù hợp"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "thuật toán tìm kiếm"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "không phân biệt chữ hoa/thường"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr ""
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:977
msgid "assign this storage path"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr ""
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr ""
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr ""
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr ""
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr ""
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr ""
@@ -854,135 +910,286 @@ msgstr ""
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr ""
#: paperless/settings.py:586
msgid "English (US)"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:587
msgid "Arabic"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:593
msgid "Danish"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/settings.py:594
msgid "German"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/settings.py:595
msgid "Greek"
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/settings.py:599
msgid "French"
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "Italian"
msgid "English (US)"
msgstr ""
#: paperless/settings.py:602
msgid "Luxembourgish"
msgid "Arabic"
msgstr ""
#: paperless/settings.py:603
msgid "Norwegian"
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Dutch"
msgid "Belarusian"
msgstr ""
#: paperless/settings.py:605
msgid "Polish"
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Portuguese (Brazil)"
msgid "Catalan"
msgstr ""
#: paperless/settings.py:607
msgid "Portuguese"
msgid "Czech"
msgstr ""
#: paperless/settings.py:608
msgid "Romanian"
msgid "Danish"
msgstr ""
#: paperless/settings.py:609
msgid "Russian"
msgid "German"
msgstr ""
#: paperless/settings.py:610
msgid "Slovak"
msgid "Greek"
msgstr ""
#: paperless/settings.py:611
msgid "Slovenian"
msgid "English (GB)"
msgstr ""
#: paperless/settings.py:612
msgid "Serbian"
msgid "Spanish"
msgstr ""
#: paperless/settings.py:613
msgid "Swedish"
msgid "Finnish"
msgstr ""
#: paperless/settings.py:614
msgid "Turkish"
msgid "French"
msgstr ""
#: paperless/settings.py:615
msgid "Ukrainian"
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr ""
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr ""
#: paperless/settings.py:618
msgid "Norwegian"
msgstr ""
#: paperless/settings.py:619
msgid "Dutch"
msgstr ""
#: paperless/settings.py:620
msgid "Polish"
msgstr ""
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings.py:622
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:623
msgid "Romanian"
msgstr ""
#: paperless/settings.py:624
msgid "Russian"
msgstr ""
#: paperless/settings.py:625
msgid "Slovak"
msgstr ""
#: paperless/settings.py:626
msgid "Slovenian"
msgstr ""
#: paperless/settings.py:627
msgid "Serbian"
msgstr ""
#: paperless/settings.py:628
msgid "Swedish"
msgstr ""
#: paperless/settings.py:629
msgid "Turkish"
msgstr ""
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr ""
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr ""
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr ""

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-28 12:09\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -25,27 +25,27 @@ msgstr "文档"
msgid "owner"
msgstr "所有者"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "无"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "任意单词"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "所有单词"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "精确匹配"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr "正则表达式"
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "模糊单词"
@@ -53,20 +53,20 @@ msgstr "模糊单词"
msgid "Automatic"
msgstr "自动"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "名称"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "匹配"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "匹配算法"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "忽略大小写"
@@ -425,7 +425,7 @@ msgstr "没有所有者"
#: documents/models.py:458
msgid "has custom field value"
msgstr ""
msgstr "添加自定义字段值"
#: documents/models.py:459
msgid "is shared by me"
@@ -611,113 +611,169 @@ msgstr "自定义字段实例"
msgid "custom field instances"
msgstr "自定义字段实例"
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr "消费文件夹"
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr "Api上传"
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr "邮件获取"
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
msgstr "排序"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr "过滤路径"
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr "只消耗匹配了指定路径的文档。路径指定中允许使用*作为通配符,大小写不敏感。"
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr "过滤文件名"
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr "如果指定了文件名,只处理完全匹配此文件名的文档。允许使用通配符,如 *.pdf 或 *发票*。不区分大小写。"
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr "从邮件规则中过滤文档"
#: documents/models.py:940
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr "指定标题"
#: documents/models.py:945
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr "指定一个文档标题,可以包含一些占位符,参见文档。"
#: documents/models.py:953 paperless_mail/models.py:216
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr "分配此标签"
#: documents/models.py:961 paperless_mail/models.py:224
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr "分配此文档类型"
#: documents/models.py:969 paperless_mail/models.py:238
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "分配此联系人"
#: documents/models.py:977
#: documents/models.py:1043
msgid "assign this storage path"
msgstr "指定存储路径"
#: documents/models.py:986
#: documents/models.py:1052
msgid "assign this owner"
msgstr "指定所有者"
#: documents/models.py:993
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr "为这些用户授予观看权限"
#: documents/models.py:1000
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr "为这些用户组授予观看权限"
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr "为这些用户授予修改权限"
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr "为这些用户组授予修改权限"
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr "分配这些自定义字段"
#: documents/models.py:1025
msgid "consumption template"
msgstr "消费模板"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
msgstr "消费模板"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr "排序"
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr "无效的正则表达式:%(error)s"
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr "无效的颜色"
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr "不支持文件类型 %(type)s"
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr "检测到无效变量。"
@@ -854,135 +910,286 @@ msgstr "电子邮件"
msgid "Send me instructions!"
msgstr "向为发送说明"
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr "无纸版"
#: paperless/settings.py:586
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "English (US)"
msgstr "英语(美国)"
#: paperless/settings.py:587
#: paperless/settings.py:602
msgid "Arabic"
msgstr "阿拉伯语"
#: paperless/settings.py:588
#: paperless/settings.py:603
msgid "Afrikaans"
msgstr "Afrikaans 荷兰语"
#: paperless/settings.py:589
#: paperless/settings.py:604
msgid "Belarusian"
msgstr "白俄罗斯语"
#: paperless/settings.py:590
#: paperless/settings.py:605
msgid "Bulgarian"
msgstr "保加利亚语"
#: paperless/settings.py:591
#: paperless/settings.py:606
msgid "Catalan"
msgstr "Catalan 加泰罗尼亚语"
#: paperless/settings.py:592
#: paperless/settings.py:607
msgid "Czech"
msgstr "捷克语"
#: paperless/settings.py:593
#: paperless/settings.py:608
msgid "Danish"
msgstr "丹麦语"
#: paperless/settings.py:594
#: paperless/settings.py:609
msgid "German"
msgstr "德语"
#: paperless/settings.py:595
#: paperless/settings.py:610
msgid "Greek"
msgstr "Greek 希腊语"
#: paperless/settings.py:596
#: paperless/settings.py:611
msgid "English (GB)"
msgstr "英语(英国)"
#: paperless/settings.py:597
#: paperless/settings.py:612
msgid "Spanish"
msgstr "西班牙语"
#: paperless/settings.py:598
#: paperless/settings.py:613
msgid "Finnish"
msgstr "已完成"
#: paperless/settings.py:599
#: paperless/settings.py:614
msgid "French"
msgstr "法语"
#: paperless/settings.py:600
#: paperless/settings.py:615
msgid "Hungarian"
msgstr "匈牙利语"
#: paperless/settings.py:601
#: paperless/settings.py:616
msgid "Italian"
msgstr "意大利语"
#: paperless/settings.py:602
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr "卢森堡语"
#: paperless/settings.py:603
#: paperless/settings.py:618
msgid "Norwegian"
msgstr "Norwegian 挪威语"
#: paperless/settings.py:604
#: paperless/settings.py:619
msgid "Dutch"
msgstr "荷兰语"
#: paperless/settings.py:605
#: paperless/settings.py:620
msgid "Polish"
msgstr "波兰语"
#: paperless/settings.py:606
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr "葡萄牙语 (巴西)"
#: paperless/settings.py:607
#: paperless/settings.py:622
msgid "Portuguese"
msgstr "葡萄牙语"
#: paperless/settings.py:608
#: paperless/settings.py:623
msgid "Romanian"
msgstr "罗马尼亚语"
#: paperless/settings.py:609
#: paperless/settings.py:624
msgid "Russian"
msgstr "俄语"
#: paperless/settings.py:610
#: paperless/settings.py:625
msgid "Slovak"
msgstr "Slovak 斯洛伐克语"
#: paperless/settings.py:611
#: paperless/settings.py:626
msgid "Slovenian"
msgstr "斯洛语尼亚语"
#: paperless/settings.py:612
#: paperless/settings.py:627
msgid "Serbian"
msgstr "塞尔维亚语"
#: paperless/settings.py:613
#: paperless/settings.py:628
msgid "Swedish"
msgstr "瑞典语"
#: paperless/settings.py:614
#: paperless/settings.py:629
msgid "Turkish"
msgstr "土耳其语"
#: paperless/settings.py:615
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr "Ukrainian 乌克兰语"
#: paperless/settings.py:616
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr "简体中文"
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr "Paperless-ngx 管理"

View File

@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: paperless-ngx\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-12-09 10:53-0800\n"
"PO-Revision-Date: 2023-12-19 20:45\n"
"POT-Creation-Date: 2024-01-05 21:26-0800\n"
"PO-Revision-Date: 2024-01-06 05:27\n"
"Last-Translator: \n"
"Language-Team: Chinese Traditional\n"
"Language: zh_TW\n"
@@ -25,27 +25,27 @@ msgstr "文件"
msgid "owner"
msgstr "擁有者"
#: documents/models.py:53
#: documents/models.py:53 documents/models.py:894
msgid "None"
msgstr "無"
#: documents/models.py:54
#: documents/models.py:54 documents/models.py:895
msgid "Any word"
msgstr "任何字"
#: documents/models.py:55
#: documents/models.py:55 documents/models.py:896
msgid "All words"
msgstr "所有字詞"
#: documents/models.py:56
#: documents/models.py:56 documents/models.py:897
msgid "Exact match"
msgstr "完全符合"
#: documents/models.py:57
#: documents/models.py:57 documents/models.py:898
msgid "Regular expression"
msgstr ""
#: documents/models.py:58
#: documents/models.py:58 documents/models.py:899
msgid "Fuzzy word"
msgstr "模糊詞"
@@ -53,20 +53,20 @@ msgstr "模糊詞"
msgid "Automatic"
msgstr "自動"
#: documents/models.py:62 documents/models.py:402 documents/models.py:897
#: documents/models.py:62 documents/models.py:402 documents/models.py:1099
#: paperless_mail/models.py:18 paperless_mail/models.py:93
msgid "name"
msgstr "名稱"
#: documents/models.py:64
#: documents/models.py:64 documents/models.py:955
msgid "match"
msgstr "比對"
#: documents/models.py:67
#: documents/models.py:67 documents/models.py:958
msgid "matching algorithm"
msgstr "比對演算法"
#: documents/models.py:72
#: documents/models.py:72 documents/models.py:963
msgid "is insensitive"
msgstr "不區分大小寫"
@@ -611,113 +611,169 @@ msgstr ""
msgid "custom field instances"
msgstr ""
#: documents/models.py:893
#: documents/models.py:902
msgid "Consumption Started"
msgstr ""
#: documents/models.py:903
msgid "Document Added"
msgstr ""
#: documents/models.py:904
msgid "Document Updated"
msgstr ""
#: documents/models.py:907
msgid "Consume Folder"
msgstr ""
#: documents/models.py:894
#: documents/models.py:908
msgid "Api Upload"
msgstr ""
#: documents/models.py:895
#: documents/models.py:909
msgid "Mail Fetch"
msgstr ""
#: documents/models.py:899 paperless_mail/models.py:95
msgid "order"
#: documents/models.py:912
msgid "Workflow Trigger Type"
msgstr ""
#: documents/models.py:908
#: documents/models.py:924
msgid "filter path"
msgstr ""
#: documents/models.py:913
#: documents/models.py:929
msgid "Only consume documents with a path that matches this if specified. Wildcards specified as * are allowed. Case insensitive."
msgstr ""
#: documents/models.py:920
#: documents/models.py:936
msgid "filter filename"
msgstr ""
#: documents/models.py:925 paperless_mail/models.py:148
#: documents/models.py:941 paperless_mail/models.py:148
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
msgstr ""
#: documents/models.py:936
#: documents/models.py:952
msgid "filter documents from this mail rule"
msgstr ""
#: documents/models.py:940
msgid "assign title"
#: documents/models.py:968
msgid "has these tag(s)"
msgstr ""
#: documents/models.py:945
msgid "Assign a document title, can include some placeholders, see documentation."
#: documents/models.py:976
msgid "has this document type"
msgstr ""
#: documents/models.py:953 paperless_mail/models.py:216
msgid "assign this tag"
#: documents/models.py:984
msgid "has this correspondent"
msgstr ""
#: documents/models.py:961 paperless_mail/models.py:224
msgid "assign this document type"
#: documents/models.py:988
msgid "workflow trigger"
msgstr ""
#: documents/models.py:969 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "指派這個聯繫者"
#: documents/models.py:977
msgid "assign this storage path"
#: documents/models.py:989
msgid "workflow triggers"
msgstr ""
#: documents/models.py:986
msgid "assign this owner"
msgstr ""
#: documents/models.py:993
msgid "grant view permissions to these users"
#: documents/models.py:997
msgid "Assignment"
msgstr ""
#: documents/models.py:1000
msgid "Workflow Action Type"
msgstr ""
#: documents/models.py:1006
msgid "assign title"
msgstr ""
#: documents/models.py:1011
msgid "Assign a document title, can include some placeholders, see documentation."
msgstr ""
#: documents/models.py:1019 paperless_mail/models.py:216
msgid "assign this tag"
msgstr ""
#: documents/models.py:1027 paperless_mail/models.py:224
msgid "assign this document type"
msgstr ""
#: documents/models.py:1035 paperless_mail/models.py:238
msgid "assign this correspondent"
msgstr "指派這個聯繫者"
#: documents/models.py:1043
msgid "assign this storage path"
msgstr ""
#: documents/models.py:1052
msgid "assign this owner"
msgstr ""
#: documents/models.py:1059
msgid "grant view permissions to these users"
msgstr ""
#: documents/models.py:1066
msgid "grant view permissions to these groups"
msgstr ""
#: documents/models.py:1007
#: documents/models.py:1073
msgid "grant change permissions to these users"
msgstr ""
#: documents/models.py:1014
#: documents/models.py:1080
msgid "grant change permissions to these groups"
msgstr ""
#: documents/models.py:1021
#: documents/models.py:1087
msgid "assign these custom fields"
msgstr ""
#: documents/models.py:1025
msgid "consumption template"
#: documents/models.py:1091
msgid "workflow action"
msgstr ""
#: documents/models.py:1026
msgid "consumption templates"
#: documents/models.py:1092
msgid "workflow actions"
msgstr ""
#: documents/serialisers.py:105
#: documents/models.py:1101 paperless_mail/models.py:95
msgid "order"
msgstr ""
#: documents/models.py:1107
msgid "triggers"
msgstr ""
#: documents/models.py:1114
msgid "actions"
msgstr ""
#: documents/models.py:1117
msgid "enabled"
msgstr ""
#: documents/serialisers.py:111
#, python-format
msgid "Invalid regular expression: %(error)s"
msgstr ""
#: documents/serialisers.py:399
#: documents/serialisers.py:405
msgid "Invalid color."
msgstr ""
#: documents/serialisers.py:865
#: documents/serialisers.py:999
#, python-format
msgid "File type %(type)s not supported"
msgstr ""
#: documents/serialisers.py:962
#: documents/serialisers.py:1102
msgid "Invalid variable detected."
msgstr ""
@@ -854,135 +910,286 @@ msgstr ""
msgid "Send me instructions!"
msgstr ""
#: documents/validators.py:17
#, python-brace-format
msgid "Unable to parse URI {value}, missing scheme"
msgstr ""
#: documents/validators.py:22
#, python-brace-format
msgid "Unable to parse URI {value}, missing net location or path"
msgstr ""
#: documents/validators.py:27
#, python-brace-format
msgid "Unable to parse URI {value}"
msgstr ""
#: paperless/apps.py:10
msgid "Paperless"
msgstr ""
#: paperless/settings.py:586
msgid "English (US)"
#: paperless/models.py:25
msgid "pdf"
msgstr ""
#: paperless/settings.py:587
msgid "Arabic"
#: paperless/models.py:26
msgid "pdfa"
msgstr ""
#: paperless/settings.py:588
msgid "Afrikaans"
#: paperless/models.py:27
msgid "pdfa-1"
msgstr ""
#: paperless/settings.py:589
msgid "Belarusian"
#: paperless/models.py:28
msgid "pdfa-2"
msgstr ""
#: paperless/settings.py:590
msgid "Bulgarian"
#: paperless/models.py:29
msgid "pdfa-3"
msgstr ""
#: paperless/settings.py:591
msgid "Catalan"
#: paperless/models.py:38
msgid "skip"
msgstr ""
#: paperless/settings.py:592
msgid "Czech"
#: paperless/models.py:39
msgid "redo"
msgstr ""
#: paperless/settings.py:593
msgid "Danish"
#: paperless/models.py:40
msgid "force"
msgstr ""
#: paperless/settings.py:594
msgid "German"
#: paperless/models.py:41
msgid "skip_noarchive"
msgstr ""
#: paperless/settings.py:595
msgid "Greek"
#: paperless/models.py:49
msgid "never"
msgstr ""
#: paperless/settings.py:596
msgid "English (GB)"
#: paperless/models.py:50
msgid "with_text"
msgstr ""
#: paperless/settings.py:597
msgid "Spanish"
#: paperless/models.py:51
msgid "always"
msgstr ""
#: paperless/settings.py:598
msgid "Finnish"
#: paperless/models.py:59
msgid "clean"
msgstr ""
#: paperless/settings.py:599
msgid "French"
#: paperless/models.py:60
msgid "clean-final"
msgstr ""
#: paperless/settings.py:600
msgid "Hungarian"
#: paperless/models.py:61
msgid "none"
msgstr ""
#: paperless/models.py:69
msgid "LeaveColorUnchanged"
msgstr ""
#: paperless/models.py:70
msgid "RGB"
msgstr ""
#: paperless/models.py:71
msgid "UseDeviceIndependentColor"
msgstr ""
#: paperless/models.py:72
msgid "Gray"
msgstr ""
#: paperless/models.py:73
msgid "CMYK"
msgstr ""
#: paperless/models.py:82
msgid "Sets the output PDF type"
msgstr ""
#: paperless/models.py:94
msgid "Do OCR from page 1 to this value"
msgstr ""
#: paperless/models.py:100
msgid "Do OCR using these languages"
msgstr ""
#: paperless/models.py:107
msgid "Sets the OCR mode"
msgstr ""
#: paperless/models.py:115
msgid "Controls the generation of an archive file"
msgstr ""
#: paperless/models.py:123
msgid "Sets image DPI fallback value"
msgstr ""
#: paperless/models.py:130
msgid "Controls the unpaper cleaning"
msgstr ""
#: paperless/models.py:137
msgid "Enables deskew"
msgstr ""
#: paperless/models.py:140
msgid "Enables page rotation"
msgstr ""
#: paperless/models.py:145
msgid "Sets the threshold for rotation of pages"
msgstr ""
#: paperless/models.py:151
msgid "Sets the maximum image size for decompression"
msgstr ""
#: paperless/models.py:157
msgid "Sets the Ghostscript color conversion strategy"
msgstr ""
#: paperless/models.py:165
msgid "Adds additional user arguments for OCRMyPDF"
msgstr ""
#: paperless/models.py:170
msgid "paperless application settings"
msgstr ""
#: paperless/settings.py:601
msgid "Italian"
msgid "English (US)"
msgstr ""
#: paperless/settings.py:602
msgid "Luxembourgish"
msgid "Arabic"
msgstr ""
#: paperless/settings.py:603
msgid "Norwegian"
msgid "Afrikaans"
msgstr ""
#: paperless/settings.py:604
msgid "Dutch"
msgid "Belarusian"
msgstr ""
#: paperless/settings.py:605
msgid "Polish"
msgid "Bulgarian"
msgstr ""
#: paperless/settings.py:606
msgid "Portuguese (Brazil)"
msgid "Catalan"
msgstr ""
#: paperless/settings.py:607
msgid "Portuguese"
msgid "Czech"
msgstr ""
#: paperless/settings.py:608
msgid "Romanian"
msgid "Danish"
msgstr ""
#: paperless/settings.py:609
msgid "Russian"
msgid "German"
msgstr ""
#: paperless/settings.py:610
msgid "Slovak"
msgid "Greek"
msgstr ""
#: paperless/settings.py:611
msgid "Slovenian"
msgid "English (GB)"
msgstr ""
#: paperless/settings.py:612
msgid "Serbian"
msgid "Spanish"
msgstr ""
#: paperless/settings.py:613
msgid "Swedish"
msgid "Finnish"
msgstr ""
#: paperless/settings.py:614
msgid "Turkish"
msgid "French"
msgstr ""
#: paperless/settings.py:615
msgid "Ukrainian"
msgid "Hungarian"
msgstr ""
#: paperless/settings.py:616
msgid "Italian"
msgstr ""
#: paperless/settings.py:617
msgid "Luxembourgish"
msgstr ""
#: paperless/settings.py:618
msgid "Norwegian"
msgstr ""
#: paperless/settings.py:619
msgid "Dutch"
msgstr ""
#: paperless/settings.py:620
msgid "Polish"
msgstr ""
#: paperless/settings.py:621
msgid "Portuguese (Brazil)"
msgstr ""
#: paperless/settings.py:622
msgid "Portuguese"
msgstr ""
#: paperless/settings.py:623
msgid "Romanian"
msgstr ""
#: paperless/settings.py:624
msgid "Russian"
msgstr ""
#: paperless/settings.py:625
msgid "Slovak"
msgstr ""
#: paperless/settings.py:626
msgid "Slovenian"
msgstr ""
#: paperless/settings.py:627
msgid "Serbian"
msgstr ""
#: paperless/settings.py:628
msgid "Swedish"
msgstr ""
#: paperless/settings.py:629
msgid "Turkish"
msgstr ""
#: paperless/settings.py:630
msgid "Ukrainian"
msgstr ""
#: paperless/settings.py:631
msgid "Chinese Simplified"
msgstr ""
#: paperless/urls.py:194
#: paperless/urls.py:205
msgid "Paperless-ngx administration"
msgstr ""

88
src/paperless/config.py Normal file
View File

@@ -0,0 +1,88 @@
import dataclasses
import json
from typing import Optional
from django.conf import settings
from paperless.models import ApplicationConfiguration
@dataclasses.dataclass
class OutputTypeConfig:
"""
Almost all parsers care about the chosen PDF output format
"""
output_type: str = dataclasses.field(init=False)
@staticmethod
def _get_config_instance() -> ApplicationConfiguration:
app_config = ApplicationConfiguration.objects.all().first()
# Workaround for a test where the migration hasn't run to create the single model
if app_config is None:
ApplicationConfiguration.objects.create()
app_config = ApplicationConfiguration.objects.all().first()
return app_config
def __post_init__(self) -> None:
app_config = self._get_config_instance()
self.output_type = app_config.output_type or settings.OCR_OUTPUT_TYPE
@dataclasses.dataclass
class OcrConfig(OutputTypeConfig):
"""
Specific settings for the Tesseract based parser. Options generally
correspond almost directly to the OCRMyPDF options
"""
pages: Optional[int] = dataclasses.field(init=False)
language: str = dataclasses.field(init=False)
mode: str = dataclasses.field(init=False)
skip_archive_file: str = dataclasses.field(init=False)
image_dpi: Optional[int] = dataclasses.field(init=False)
clean: str = dataclasses.field(init=False)
deskew: bool = dataclasses.field(init=False)
rotate: bool = dataclasses.field(init=False)
rotate_threshold: float = dataclasses.field(init=False)
max_image_pixel: Optional[float] = dataclasses.field(init=False)
color_conversion_strategy: str = dataclasses.field(init=False)
user_args: Optional[dict[str, str]] = dataclasses.field(init=False)
def __post_init__(self) -> None:
super().__post_init__()
app_config = self._get_config_instance()
self.pages = app_config.pages or settings.OCR_PAGES
self.language = app_config.language or settings.OCR_LANGUAGE
self.mode = app_config.mode or settings.OCR_MODE
self.skip_archive_file = (
app_config.skip_archive_file or settings.OCR_SKIP_ARCHIVE_FILE
)
self.image_dpi = app_config.image_dpi or settings.OCR_IMAGE_DPI
self.clean = app_config.unpaper_clean or settings.OCR_CLEAN
self.deskew = app_config.deskew or settings.OCR_DESKEW
self.rotate = app_config.rotate_pages or settings.OCR_ROTATE_PAGES
self.rotate_threshold = (
app_config.rotate_pages_threshold or settings.OCR_ROTATE_PAGES_THRESHOLD
)
self.max_image_pixel = (
app_config.max_image_pixels or settings.OCR_MAX_IMAGE_PIXELS
)
self.color_conversion_strategy = (
app_config.color_conversion_strategy
or settings.OCR_COLOR_CONVERSION_STRATEGY
)
user_args = None
if app_config.user_args:
user_args = app_config.user_args
elif settings.OCR_USER_ARGS is not None: # pragma: no cover
try:
user_args = json.loads(settings.OCR_USER_ARGS)
except json.JSONDecodeError:
user_args = {}
self.user_args = user_args

View File

@@ -0,0 +1,180 @@
# Generated by Django 4.2.7 on 2023-12-19 17:51
import django.core.validators
from django.db import migrations
from django.db import models
def _create_singleton(apps, schema_editor):
"""
Creates the first and only instance of the configuration model
"""
settings_model = apps.get_model("paperless", "ApplicationConfiguration")
settings_model.objects.create()
class Migration(migrations.Migration):
initial = True
dependencies = []
operations = [
migrations.CreateModel(
name="ApplicationConfiguration",
fields=[
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"output_type",
models.CharField(
blank=True,
choices=[
("pdf", "pdf"),
("pdfa", "pdfa"),
("pdfa-1", "pdfa-1"),
("pdfa-2", "pdfa-2"),
("pdfa-3", "pdfa-3"),
],
max_length=8,
null=True,
verbose_name="Sets the output PDF type",
),
),
(
"pages",
models.PositiveIntegerField(
null=True,
validators=[
django.core.validators.MinValueValidator(1),
],
verbose_name="Do OCR from page 1 to this value",
),
),
(
"language",
models.CharField(
blank=True,
max_length=32,
null=True,
verbose_name="Do OCR using these languages",
),
),
(
"mode",
models.CharField(
blank=True,
choices=[
("skip", "skip"),
("redo", "redo"),
("force", "force"),
("skip_noarchive", "skip_noarchive"),
],
max_length=16,
null=True,
verbose_name="Sets the OCR mode",
),
),
(
"skip_archive_file",
models.CharField(
blank=True,
choices=[
("never", "never"),
("with_text", "with_text"),
("always", "always"),
],
max_length=16,
null=True,
verbose_name="Controls the generation of an archive file",
),
),
(
"image_dpi",
models.PositiveIntegerField(
null=True,
validators=[
django.core.validators.MinValueValidator(1),
],
verbose_name="Sets image DPI fallback value",
),
),
(
"unpaper_clean",
models.CharField(
blank=True,
choices=[
("clean", "clean"),
("clean-final", "clean-final"),
("none", "none"),
],
max_length=16,
null=True,
verbose_name="Controls the unpaper cleaning",
),
),
(
"deskew",
models.BooleanField(null=True, verbose_name="Enables deskew"),
),
(
"rotate_pages",
models.BooleanField(
null=True,
verbose_name="Enables page rotation",
),
),
(
"rotate_pages_threshold",
models.FloatField(
null=True,
validators=[django.core.validators.MinValueValidator(0.0)],
verbose_name="Sets the threshold for rotation of pages",
),
),
(
"max_image_pixels",
models.FloatField(
null=True,
validators=[
django.core.validators.MinValueValidator(1000000.0),
],
verbose_name="Sets the maximum image size for decompression",
),
),
(
"color_conversion_strategy",
models.CharField(
blank=True,
choices=[
("LeaveColorUnchanged", "LeaveColorUnchanged"),
("RGB", "RGB"),
("UseDeviceIndependentColor", "UseDeviceIndependentColor"),
("Gray", "Gray"),
("CMYK", "CMYK"),
],
max_length=32,
null=True,
verbose_name="Sets the Ghostscript color conversion strategy",
),
),
(
"user_args",
models.JSONField(
null=True,
verbose_name="Adds additional user arguments for OCRMyPDF",
),
),
],
options={
"verbose_name": "paperless application settings",
},
),
migrations.RunPython(_create_singleton, migrations.RunPython.noop),
]

View File

173
src/paperless/models.py Normal file
View File

@@ -0,0 +1,173 @@
from django.core.validators import MinValueValidator
from django.db import models
from django.utils.translation import gettext_lazy as _
DEFAULT_SINGLETON_INSTANCE_ID = 1
class AbstractSingletonModel(models.Model):
class Meta:
abstract = True
def save(self, *args, **kwargs):
"""
Always save as the first and only model
"""
self.pk = DEFAULT_SINGLETON_INSTANCE_ID
super().save(*args, **kwargs)
class OutputTypeChoices(models.TextChoices):
"""
Matches to --output-type
"""
PDF = ("pdf", _("pdf"))
PDF_A = ("pdfa", _("pdfa"))
PDF_A1 = ("pdfa-1", _("pdfa-1"))
PDF_A2 = ("pdfa-2", _("pdfa-2"))
PDF_A3 = ("pdfa-3", _("pdfa-3"))
class ModeChoices(models.TextChoices):
"""
Matches to --skip-text, --redo-ocr, --force-ocr
and our own custom setting
"""
SKIP = ("skip", _("skip"))
REDO = ("redo", _("redo"))
FORCE = ("force", _("force"))
SKIP_NO_ARCHIVE = ("skip_noarchive", _("skip_noarchive"))
class ArchiveFileChoices(models.TextChoices):
"""
Settings to control creation of an archive PDF file
"""
NEVER = ("never", _("never"))
WITH_TEXT = ("with_text", _("with_text"))
ALWAYS = ("always", _("always"))
class CleanChoices(models.TextChoices):
"""
Matches to --clean, --clean-final
"""
CLEAN = ("clean", _("clean"))
FINAL = ("clean-final", _("clean-final"))
NONE = ("none", _("none"))
class ColorConvertChoices(models.TextChoices):
"""
Refer to the Ghostscript documentation for valid options
"""
UNCHANGED = ("LeaveColorUnchanged", _("LeaveColorUnchanged"))
RGB = ("RGB", _("RGB"))
INDEPENDENT = ("UseDeviceIndependentColor", _("UseDeviceIndependentColor"))
GRAY = ("Gray", _("Gray"))
CMYK = ("CMYK", _("CMYK"))
class ApplicationConfiguration(AbstractSingletonModel):
"""
Settings which are common across more than 1 parser
"""
output_type = models.CharField(
verbose_name=_("Sets the output PDF type"),
null=True,
blank=True,
max_length=8,
choices=OutputTypeChoices.choices,
)
"""
Settings for the Tesseract based OCR parser
"""
pages = models.PositiveIntegerField(
verbose_name=_("Do OCR from page 1 to this value"),
null=True,
validators=[MinValueValidator(1)],
)
language = models.CharField(
verbose_name=_("Do OCR using these languages"),
null=True,
blank=True,
max_length=32,
)
mode = models.CharField(
verbose_name=_("Sets the OCR mode"),
null=True,
blank=True,
max_length=16,
choices=ModeChoices.choices,
)
skip_archive_file = models.CharField(
verbose_name=_("Controls the generation of an archive file"),
null=True,
blank=True,
max_length=16,
choices=ArchiveFileChoices.choices,
)
image_dpi = models.PositiveIntegerField(
verbose_name=_("Sets image DPI fallback value"),
null=True,
validators=[MinValueValidator(1)],
)
# Can't call it clean, that's a model method
unpaper_clean = models.CharField(
verbose_name=_("Controls the unpaper cleaning"),
null=True,
blank=True,
max_length=16,
choices=CleanChoices.choices,
)
deskew = models.BooleanField(verbose_name=_("Enables deskew"), null=True)
rotate_pages = models.BooleanField(
verbose_name=_("Enables page rotation"),
null=True,
)
rotate_pages_threshold = models.FloatField(
verbose_name=_("Sets the threshold for rotation of pages"),
null=True,
validators=[MinValueValidator(0.0)],
)
max_image_pixels = models.FloatField(
verbose_name=_("Sets the maximum image size for decompression"),
null=True,
validators=[MinValueValidator(1_000_000.0)],
)
color_conversion_strategy = models.CharField(
verbose_name=_("Sets the Ghostscript color conversion strategy"),
blank=True,
null=True,
max_length=32,
choices=ColorConvertChoices.choices,
)
user_args = models.JSONField(
verbose_name=_("Adds additional user arguments for OCRMyPDF"),
null=True,
)
class Meta:
verbose_name = _("paperless application settings")
def __str__(self) -> str: # pragma: no cover
return "ApplicationConfiguration"

View File

@@ -3,6 +3,8 @@ from django.contrib.auth.models import Permission
from django.contrib.auth.models import User
from rest_framework import serializers
from paperless.models import ApplicationConfiguration
class ObfuscatedUserPasswordField(serializers.Field):
"""
@@ -113,3 +115,9 @@ class ProfileSerializer(serializers.ModelSerializer):
"last_name",
"auth_token",
)
class ApplicationConfigurationSerializer(serializers.ModelSerializer):
class Meta:
model = ApplicationConfiguration
fields = "__all__"

View File

@@ -57,6 +57,15 @@ def __get_int(key: str, default: int) -> int:
return int(os.getenv(key, default))
def __get_optional_int(key: str) -> Optional[int]:
"""
Returns None if the environment key is not present, otherwise an integer
"""
if key in os.environ:
return __get_int(key, -1) # pragma: no cover
return None
def __get_float(key: str, default: float) -> float:
"""
Return an integer value based on the environment variable or a default
@@ -66,18 +75,24 @@ def __get_float(key: str, default: float) -> float:
def __get_path(
key: str,
default: Optional[Union[PathLike, str]] = None,
) -> Optional[Path]:
default: Union[PathLike, str],
) -> Path:
"""
Return a normalized, absolute path based on the environment variable or a default,
if provided. If not set and no default, returns None
if provided
"""
if key in os.environ:
return Path(os.environ[key]).resolve()
elif default is not None:
return Path(default).resolve()
else:
return None
return Path(default).resolve()
def __get_optional_path(key: str) -> Optional[Path]:
"""
Returns None if the environment key is not present, otherwise a fully resolved Path
"""
if key in os.environ:
return __get_path(key, "")
return None
def __get_list(
@@ -304,7 +319,7 @@ REST_FRAMEWORK = {
"DEFAULT_VERSION": "1",
# Make sure these are ordered and that the most recent version appears
# last
"ALLOWED_VERSIONS": ["1", "2", "3"],
"ALLOWED_VERSIONS": ["1", "2", "3", "4"],
}
if DEBUG:
@@ -327,7 +342,7 @@ MIDDLEWARE = [
]
# Optional to enable compression
if __get_boolean("PAPERLESS_ENABLE_COMPRESSION", "yes"): # pragma: nocover
if __get_boolean("PAPERLESS_ENABLE_COMPRESSION", "yes"): # pragma: no cover
MIDDLEWARE.insert(0, "compression_middleware.middleware.CompressionMiddleware")
ROOT_URLCONF = "paperless.urls"
@@ -495,7 +510,7 @@ CSRF_COOKIE_NAME = f"{COOKIE_PREFIX}csrftoken"
SESSION_COOKIE_NAME = f"{COOKIE_PREFIX}sessionid"
LANGUAGE_COOKIE_NAME = f"{COOKIE_PREFIX}django_language"
EMAIL_CERTIFICATE_FILE = __get_path("PAPERLESS_EMAIL_CERTIFICATE_LOCATION")
EMAIL_CERTIFICATE_FILE = __get_optional_path("PAPERLESS_EMAIL_CERTIFICATE_LOCATION")
###############################################################################
@@ -796,11 +811,10 @@ CONSUMER_BARCODE_STRING: Final[str] = os.getenv(
"PATCHT",
)
consumer_barcode_scanner_tmp: Final[str] = os.getenv(
CONSUMER_BARCODE_SCANNER: Final[str] = os.getenv(
"PAPERLESS_CONSUMER_BARCODE_SCANNER",
"PYZBAR",
)
CONSUMER_BARCODE_SCANNER = consumer_barcode_scanner_tmp.upper()
).upper()
CONSUMER_ENABLE_ASN_BARCODE: Final[bool] = __get_boolean(
"PAPERLESS_CONSUMER_ENABLE_ASN_BARCODE",
@@ -811,15 +825,12 @@ CONSUMER_ASN_BARCODE_PREFIX: Final[str] = os.getenv(
"ASN",
)
CONSUMER_BARCODE_UPSCALE: Final[float] = float(
os.getenv("PAPERLESS_CONSUMER_BARCODE_UPSCALE", 0.0),
CONSUMER_BARCODE_UPSCALE: Final[float] = __get_float(
"PAPERLESS_CONSUMER_BARCODE_UPSCALE",
0.0,
)
CONSUMER_BARCODE_DPI: Final[str] = int(
os.getenv("PAPERLESS_CONSUMER_BARCODE_DPI", 300),
)
CONSUMER_BARCODE_DPI: Final[int] = __get_int("PAPERLESS_CONSUMER_BARCODE_DPI", 300)
CONSUMER_ENABLE_COLLATE_DOUBLE_SIDED: Final[bool] = __get_boolean(
"PAPERLESS_CONSUMER_ENABLE_COLLATE_DOUBLE_SIDED",
@@ -834,7 +845,7 @@ CONSUMER_COLLATE_DOUBLE_SIDED_TIFF_SUPPORT: Final[bool] = __get_boolean(
"PAPERLESS_CONSUMER_COLLATE_DOUBLE_SIDED_TIFF_SUPPORT",
)
OCR_PAGES = int(os.getenv("PAPERLESS_OCR_PAGES", 0))
OCR_PAGES = __get_optional_int("PAPERLESS_OCR_PAGES")
# The default language that tesseract will attempt to use when parsing
# documents. It should be a 3-letter language code consistent with ISO 639.
@@ -848,28 +859,29 @@ OCR_MODE = os.getenv("PAPERLESS_OCR_MODE", "skip")
OCR_SKIP_ARCHIVE_FILE = os.getenv("PAPERLESS_OCR_SKIP_ARCHIVE_FILE", "never")
OCR_IMAGE_DPI = os.getenv("PAPERLESS_OCR_IMAGE_DPI")
OCR_IMAGE_DPI = __get_optional_int("PAPERLESS_OCR_IMAGE_DPI")
OCR_CLEAN = os.getenv("PAPERLESS_OCR_CLEAN", "clean")
OCR_DESKEW = __get_boolean("PAPERLESS_OCR_DESKEW", "true")
OCR_DESKEW: Final[bool] = __get_boolean("PAPERLESS_OCR_DESKEW", "true")
OCR_ROTATE_PAGES = __get_boolean("PAPERLESS_OCR_ROTATE_PAGES", "true")
OCR_ROTATE_PAGES: Final[bool] = __get_boolean("PAPERLESS_OCR_ROTATE_PAGES", "true")
OCR_ROTATE_PAGES_THRESHOLD = float(
os.getenv("PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD", 12.0),
OCR_ROTATE_PAGES_THRESHOLD: Final[float] = __get_float(
"PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD",
12.0,
)
OCR_MAX_IMAGE_PIXELS: Optional[int] = None
if os.environ.get("PAPERLESS_OCR_MAX_IMAGE_PIXELS") is not None:
OCR_MAX_IMAGE_PIXELS: int = int(os.environ.get("PAPERLESS_OCR_MAX_IMAGE_PIXELS"))
OCR_MAX_IMAGE_PIXELS: Final[Optional[int]] = __get_optional_int(
"PAPERLESS_OCR_MAX_IMAGE_PIXELS",
)
OCR_COLOR_CONVERSION_STRATEGY = os.getenv(
"PAPERLESS_OCR_COLOR_CONVERSION_STRATEGY",
"RGB",
)
OCR_USER_ARGS = os.getenv("PAPERLESS_OCR_USER_ARGS", "{}")
OCR_USER_ARGS = os.getenv("PAPERLESS_OCR_USER_ARGS")
# GNUPG needs a home directory for some reason
GNUPG_HOME = os.getenv("HOME", "/tmp")

View File

@@ -15,7 +15,6 @@ from documents.views import AcknowledgeTasksView
from documents.views import BulkDownloadView
from documents.views import BulkEditObjectPermissionsView
from documents.views import BulkEditView
from documents.views import ConsumptionTemplateViewSet
from documents.views import CorrespondentViewSet
from documents.views import CustomFieldViewSet
from documents.views import DocumentTypeViewSet
@@ -34,7 +33,11 @@ from documents.views import TagViewSet
from documents.views import TasksViewSet
from documents.views import UiSettingsView
from documents.views import UnifiedSearchViewSet
from documents.views import WorkflowActionViewSet
from documents.views import WorkflowTriggerViewSet
from documents.views import WorkflowViewSet
from paperless.consumers import StatusConsumer
from paperless.views import ApplicationConfigurationViewSet
from paperless.views import FaviconView
from paperless.views import GenerateAuthTokenView
from paperless.views import GroupViewSet
@@ -58,8 +61,11 @@ api_router.register(r"groups", GroupViewSet, basename="groups")
api_router.register(r"mail_accounts", MailAccountViewSet)
api_router.register(r"mail_rules", MailRuleViewSet)
api_router.register(r"share_links", ShareLinkViewSet)
api_router.register(r"consumption_templates", ConsumptionTemplateViewSet)
api_router.register(r"workflow_triggers", WorkflowTriggerViewSet)
api_router.register(r"workflow_actions", WorkflowActionViewSet)
api_router.register(r"workflows", WorkflowViewSet)
api_router.register(r"custom_fields", CustomFieldViewSet)
api_router.register(r"config", ApplicationConfigurationViewSet)
urlpatterns = [

View File

@@ -18,6 +18,8 @@ from rest_framework.viewsets import ModelViewSet
from documents.permissions import PaperlessObjectPermissions
from paperless.filters import GroupFilterSet
from paperless.filters import UserFilterSet
from paperless.models import ApplicationConfiguration
from paperless.serialisers import ApplicationConfigurationSerializer
from paperless.serialisers import GroupSerializer
from paperless.serialisers import ProfileSerializer
from paperless.serialisers import UserSerializer
@@ -54,11 +56,7 @@ class StandardPagination(PageNumberPagination):
except Exception:
pass
else:
for obj in self.page.paginator.object_list:
if hasattr(obj, "id"):
ids.append(obj.id)
elif hasattr(obj, "fields"):
ids.append(obj.fields()["id"])
ids = self.page.paginator.object_list.values_list("pk", flat=True)
return ids
def get_paginated_response_schema(self, schema):
@@ -71,7 +69,7 @@ class StandardPagination(PageNumberPagination):
class FaviconView(View):
def get(self, request, *args, **kwargs): # pragma: nocover
def get(self, request, *args, **kwargs): # pragma: no cover
favicon = os.path.join(
os.path.dirname(__file__),
"static",
@@ -160,3 +158,12 @@ class GenerateAuthTokenView(GenericAPIView):
return Response(
token.key,
)
class ApplicationConfigurationViewSet(ModelViewSet):
model = ApplicationConfiguration
queryset = ApplicationConfiguration.objects
serializer_class = ApplicationConfigurationSerializer
permission_classes = (IsAuthenticated,)

View File

@@ -92,7 +92,7 @@ class BaseMailAction:
M: MailBox,
message_uid: str,
parameter: str,
): # pragma: nocover
): # pragma: no cover
"""
Perform mail action on the given mail uid in the mailbox.
"""
@@ -171,7 +171,7 @@ class TagMailAction(BaseMailAction):
return AND(NOT(gmail_label=self.keyword), no_keyword=self.keyword)
else:
return {"no_keyword": self.keyword}
else: # pragma: nocover
else: # pragma: no cover
raise ValueError("This should never happen.")
def post_consume(self, M: MailBox, message_uid: str, parameter: str):
@@ -361,7 +361,7 @@ def get_rule_action(rule: MailRule, supports_gmail_labels: bool) -> BaseMailActi
elif rule.action == MailRule.MailAction.TAG:
return TagMailAction(rule.action_parameter, supports_gmail_labels)
else:
raise NotImplementedError("Unknown action.") # pragma: nocover
raise NotImplementedError("Unknown action.") # pragma: no cover
def make_criterias(rule: MailRule, supports_gmail_labels: bool):
@@ -397,7 +397,7 @@ def get_mailbox(server, port, security) -> MailBox:
Returns the correct MailBox instance for the given configuration.
"""
ssl_context = ssl.create_default_context()
if settings.EMAIL_CERTIFICATE_FILE is not None: # pragma: nocover
if settings.EMAIL_CERTIFICATE_FILE is not None: # pragma: no cover
ssl_context.load_verify_locations(cafile=settings.EMAIL_CERTIFICATE_FILE)
if security == MailAccount.ImapSecurity.NONE:
@@ -407,7 +407,7 @@ def get_mailbox(server, port, security) -> MailBox:
elif security == MailAccount.ImapSecurity.SSL:
mailbox = MailBox(server, port, ssl_context=ssl_context)
else:
raise NotImplementedError("Unknown IMAP security") # pragma: nocover
raise NotImplementedError("Unknown IMAP security") # pragma: no cover
return mailbox
@@ -450,7 +450,7 @@ class MailAccountHandler(LoggingMixin):
else:
raise NotImplementedError(
"Unknown title selector.",
) # pragma: nocover
) # pragma: no cover
def _get_correspondent(
self,
@@ -478,7 +478,7 @@ class MailAccountHandler(LoggingMixin):
else:
raise NotImplementedError(
"Unknown correspondent selector",
) # pragma: nocover
) # pragma: no cover
def handle_mail_account(self, account: MailAccount):
"""
@@ -569,6 +569,7 @@ class MailAccountHandler(LoggingMixin):
criteria=criterias,
mark_seen=False,
charset=rule.account.character_set,
bulk=True,
)
except Exception as err:
raise MailError(

View File

@@ -405,3 +405,9 @@ class MailDocumentParser(DocumentParser):
html_pdf = tempdir / "html.pdf"
html_pdf.write_bytes(response.content)
return html_pdf
def get_settings(self):
"""
This parser does not implement additional settings yet
"""
return None

View File

@@ -118,7 +118,7 @@ class BogusMailBox(AbstractContextManager):
if username != self.USERNAME or access_token != self.ACCESS_TOKEN:
raise MailboxLoginError("BAD", "OK")
def fetch(self, criteria, mark_seen, charset=""):
def fetch(self, criteria, mark_seen, charset="", bulk=True):
msg = self.messages
criteria = str(criteria).strip("()").split(" ")

View File

@@ -1,9 +1,9 @@
import json
import os
import re
import subprocess
import tempfile
from pathlib import Path
from typing import TYPE_CHECKING
from typing import Optional
from django.conf import settings
@@ -12,6 +12,10 @@ from PIL import Image
from documents.parsers import DocumentParser
from documents.parsers import ParseError
from documents.parsers import make_thumbnail_from_pdf
from paperless.config import OcrConfig
from paperless.models import ArchiveFileChoices
from paperless.models import CleanChoices
from paperless.models import ModeChoices
class NoTextFoundException(Exception):
@@ -30,6 +34,12 @@ class RasterisedDocumentParser(DocumentParser):
logging_name = "paperless.parsing.tesseract"
def get_settings(self) -> OcrConfig:
"""
This parser uses the OCR configuration settings to parse documents
"""
return OcrConfig()
def extract_metadata(self, document_path, mime_type):
result = []
if mime_type == "application/pdf":
@@ -66,7 +76,7 @@ class RasterisedDocumentParser(DocumentParser):
self.logging_group,
)
def is_image(self, mime_type):
def is_image(self, mime_type) -> bool:
return mime_type in [
"image/png",
"image/jpeg",
@@ -76,22 +86,24 @@ class RasterisedDocumentParser(DocumentParser):
"image/webp",
]
def has_alpha(self, image):
def has_alpha(self, image) -> bool:
with Image.open(image) as im:
return im.mode in ("RGBA", "LA")
def remove_alpha(self, image_path: str):
def remove_alpha(self, image_path: str) -> Path:
no_alpha_image = Path(self.tempdir) / "image-no-alpha"
subprocess.run(
[
settings.CONVERT_BINARY,
"-alpha",
"off",
image_path,
image_path,
no_alpha_image,
],
)
return no_alpha_image
def get_dpi(self, image):
def get_dpi(self, image) -> Optional[int]:
try:
with Image.open(image) as im:
x, y = im.info["dpi"]
@@ -100,7 +112,7 @@ class RasterisedDocumentParser(DocumentParser):
self.log.warning(f"Error while getting DPI from image {image}: {e}")
return None
def calculate_a4_dpi(self, image):
def calculate_a4_dpi(self, image) -> Optional[int]:
try:
with Image.open(image) as im:
width, height = im.size
@@ -113,13 +125,17 @@ class RasterisedDocumentParser(DocumentParser):
self.log.warning(f"Error while calculating DPI for image {image}: {e}")
return None
def extract_text(self, sidecar_file: Optional[Path], pdf_file: Path):
def extract_text(
self,
sidecar_file: Optional[Path],
pdf_file: Path,
) -> Optional[str]:
# When re-doing OCR, the sidecar contains ONLY the new text, not
# the whole text, so do not utilize it in that case
if (
sidecar_file is not None
and os.path.isfile(sidecar_file)
and settings.OCR_MODE != "redo"
and self.settings.mode != "redo"
):
text = self.read_file_handle_unicode_errors(sidecar_file)
@@ -174,6 +190,8 @@ class RasterisedDocumentParser(DocumentParser):
sidecar_file,
safe_fallback=False,
):
if TYPE_CHECKING:
assert isinstance(self.settings, OcrConfig)
ocrmypdf_args = {
"input_file": input_file,
"output_file": output_file,
@@ -181,46 +199,47 @@ class RasterisedDocumentParser(DocumentParser):
# processes via the task library.
"use_threads": True,
"jobs": settings.THREADS_PER_WORKER,
"language": settings.OCR_LANGUAGE,
"output_type": settings.OCR_OUTPUT_TYPE,
"language": self.settings.language,
"output_type": self.settings.output_type,
"progress_bar": False,
}
if "pdfa" in ocrmypdf_args["output_type"]:
ocrmypdf_args[
"color_conversion_strategy"
] = settings.OCR_COLOR_CONVERSION_STRATEGY
] = self.settings.color_conversion_strategy
if settings.OCR_MODE == "force" or safe_fallback:
if self.settings.mode == ModeChoices.FORCE or safe_fallback:
ocrmypdf_args["force_ocr"] = True
elif settings.OCR_MODE in ["skip", "skip_noarchive"]:
elif self.settings.mode in {
ModeChoices.SKIP,
ModeChoices.SKIP_NO_ARCHIVE,
}:
ocrmypdf_args["skip_text"] = True
elif settings.OCR_MODE == "redo":
elif self.settings.mode == ModeChoices.REDO:
ocrmypdf_args["redo_ocr"] = True
else:
raise ParseError(f"Invalid ocr mode: {settings.OCR_MODE}")
else: # pragma: no cover
raise ParseError(f"Invalid ocr mode: {self.settings.mode}")
if settings.OCR_CLEAN == "clean":
if self.settings.clean == CleanChoices.CLEAN:
ocrmypdf_args["clean"] = True
elif settings.OCR_CLEAN == "clean-final":
if settings.OCR_MODE == "redo":
elif self.settings.clean == CleanChoices.FINAL:
if self.settings.mode == ModeChoices.REDO:
ocrmypdf_args["clean"] = True
else:
# --clean-final is not compatible with --redo-ocr
ocrmypdf_args["clean_final"] = True
if settings.OCR_DESKEW and settings.OCR_MODE != "redo":
if self.settings.deskew and self.settings.mode != ModeChoices.REDO:
# --deskew is not compatible with --redo-ocr
ocrmypdf_args["deskew"] = True
if settings.OCR_ROTATE_PAGES:
if self.settings.rotate:
ocrmypdf_args["rotate_pages"] = True
ocrmypdf_args[
"rotate_pages_threshold"
] = settings.OCR_ROTATE_PAGES_THRESHOLD
ocrmypdf_args["rotate_pages_threshold"] = self.settings.rotate_threshold
if settings.OCR_PAGES > 0:
ocrmypdf_args["pages"] = f"1-{settings.OCR_PAGES}"
if self.settings.pages is not None:
ocrmypdf_args["pages"] = f"1-{self.settings.pages}"
else:
# sidecar is incompatible with pages
ocrmypdf_args["sidecar"] = sidecar_file
@@ -234,13 +253,14 @@ class RasterisedDocumentParser(DocumentParser):
f"Removing alpha layer from {input_file} "
"for compatibility with img2pdf",
)
self.remove_alpha(input_file)
# Replace the input file with the non-alpha
ocrmypdf_args["input_file"] = self.remove_alpha(input_file)
if dpi:
self.log.debug(f"Detected DPI for image {input_file}: {dpi}")
ocrmypdf_args["image_dpi"] = dpi
elif settings.OCR_IMAGE_DPI:
ocrmypdf_args["image_dpi"] = settings.OCR_IMAGE_DPI
elif self.settings.image_dpi is not None:
ocrmypdf_args["image_dpi"] = self.settings.image_dpi
elif a4_dpi:
ocrmypdf_args["image_dpi"] = a4_dpi
else:
@@ -254,19 +274,18 @@ class RasterisedDocumentParser(DocumentParser):
f"Image DPI of {ocrmypdf_args['image_dpi']} is low, OCR may fail",
)
if settings.OCR_USER_ARGS:
if self.settings.user_args is not None:
try:
user_args = json.loads(settings.OCR_USER_ARGS)
ocrmypdf_args = {**ocrmypdf_args, **user_args}
ocrmypdf_args = {**ocrmypdf_args, **self.settings.user_args}
except Exception as e:
self.log.warning(
f"There is an issue with PAPERLESS_OCR_USER_ARGS, so "
f"they will not be used. Error: {e}",
)
if settings.OCR_MAX_IMAGE_PIXELS is not None:
if self.settings.max_image_pixel is not None:
# Convert pixels to mega-pixels and provide to ocrmypdf
max_pixels_mpixels = settings.OCR_MAX_IMAGE_PIXELS / 1_000_000.0
max_pixels_mpixels = self.settings.max_image_pixel / 1_000_000.0
if max_pixels_mpixels > 0:
self.log.debug(
f"Calculated {max_pixels_mpixels} megapixels for OCR",
@@ -298,8 +317,12 @@ class RasterisedDocumentParser(DocumentParser):
# If the original has text, and the user doesn't want an archive,
# we're done here
skip_archive_for_text = (
settings.OCR_MODE == "skip_noarchive"
or settings.OCR_SKIP_ARCHIVE_FILE in ["with_text", "always"]
self.settings.mode == ModeChoices.SKIP_NO_ARCHIVE
or self.settings.skip_archive_file
in {
ArchiveFileChoices.WITH_TEXT,
ArchiveFileChoices.ALWAYS,
}
)
if skip_archive_for_text and original_has_text:
self.log.debug("Document has text, skipping OCRmyPDF entirely.")
@@ -329,7 +352,7 @@ class RasterisedDocumentParser(DocumentParser):
self.log.debug(f"Calling OCRmyPDF with args: {args}")
ocrmypdf.ocr(**args)
if settings.OCR_SKIP_ARCHIVE_FILE != "always":
if self.settings.skip_archive_file != ArchiveFileChoices.ALWAYS:
self.archive_path = archive_path
self.text = self.extract_text(sidecar_file, archive_path)

View File

@@ -2,7 +2,6 @@ import os
import shutil
import tempfile
import uuid
from contextlib import AbstractContextManager
from pathlib import Path
from unittest import mock
@@ -17,28 +16,6 @@ from documents.tests.utils import FileSystemAssertsMixin
from paperless_tesseract.parsers import RasterisedDocumentParser
from paperless_tesseract.parsers import post_process_text
image_to_string_calls = []
def fake_convert(input_file, output_file, **kwargs):
with open(input_file) as f:
lines = f.readlines()
for i, line in enumerate(lines):
with open(output_file % i, "w") as f2:
f2.write(line.strip())
class FakeImageFile(AbstractContextManager):
def __init__(self, fname):
self.fname = fname
def __exit__(self, exc_type, exc_val, exc_tb):
pass
def __enter__(self):
return os.path.basename(self.fname)
class TestParser(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
SAMPLE_FILES = Path(__file__).resolve().parent / "samples"
@@ -769,43 +746,52 @@ class TestParser(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
self.assertEqual(params["sidecar"], "sidecar.txt")
with override_settings(OCR_CLEAN="none"):
parser = RasterisedDocumentParser(None)
params = parser.construct_ocrmypdf_parameters("", "", "", "")
self.assertNotIn("clean", params)
self.assertNotIn("clean_final", params)
with override_settings(OCR_CLEAN="clean"):
parser = RasterisedDocumentParser(None)
params = parser.construct_ocrmypdf_parameters("", "", "", "")
self.assertTrue(params["clean"])
self.assertNotIn("clean_final", params)
with override_settings(OCR_CLEAN="clean-final", OCR_MODE="skip"):
parser = RasterisedDocumentParser(None)
params = parser.construct_ocrmypdf_parameters("", "", "", "")
self.assertTrue(params["clean_final"])
self.assertNotIn("clean", params)
with override_settings(OCR_CLEAN="clean-final", OCR_MODE="redo"):
parser = RasterisedDocumentParser(None)
params = parser.construct_ocrmypdf_parameters("", "", "", "")
self.assertTrue(params["clean"])
self.assertNotIn("clean_final", params)
with override_settings(OCR_DESKEW=True, OCR_MODE="skip"):
parser = RasterisedDocumentParser(None)
params = parser.construct_ocrmypdf_parameters("", "", "", "")
self.assertTrue(params["deskew"])
with override_settings(OCR_DESKEW=True, OCR_MODE="redo"):
parser = RasterisedDocumentParser(None)
params = parser.construct_ocrmypdf_parameters("", "", "", "")
self.assertNotIn("deskew", params)
with override_settings(OCR_DESKEW=False, OCR_MODE="skip"):
parser = RasterisedDocumentParser(None)
params = parser.construct_ocrmypdf_parameters("", "", "", "")
self.assertNotIn("deskew", params)
with override_settings(OCR_MAX_IMAGE_PIXELS=1_000_001.0):
parser = RasterisedDocumentParser(None)
params = parser.construct_ocrmypdf_parameters("", "", "", "")
self.assertIn("max_image_mpixels", params)
self.assertAlmostEqual(params["max_image_mpixels"], 1, places=4)
with override_settings(OCR_MAX_IMAGE_PIXELS=-1_000_001.0):
parser = RasterisedDocumentParser(None)
params = parser.construct_ocrmypdf_parameters("", "", "", "")
self.assertNotIn("max_image_mpixels", params)

View File

@@ -0,0 +1,232 @@
import json
from django.test import TestCase
from django.test import override_settings
from documents.tests.utils import DirectoriesMixin
from documents.tests.utils import FileSystemAssertsMixin
from paperless.models import ApplicationConfiguration
from paperless.models import CleanChoices
from paperless.models import ColorConvertChoices
from paperless.models import ModeChoices
from paperless.models import OutputTypeChoices
from paperless_tesseract.parsers import RasterisedDocumentParser
class TestParserSettingsFromDb(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
@staticmethod
def get_params():
"""
Helper to get just the OCRMyPDF parameters from the parser
"""
return RasterisedDocumentParser(None).construct_ocrmypdf_parameters(
input_file="input.pdf",
output_file="output.pdf",
sidecar_file="sidecar.txt",
mime_type="application/pdf",
safe_fallback=False,
)
def test_db_settings_ocr_pages(self):
"""
GIVEN:
- Django settings defines different value for OCR_PAGES than
configuration object
WHEN:
- OCR parameters are constructed
THEN:
- Configuration from database is utilized
"""
with override_settings(OCR_PAGES=10):
instance = ApplicationConfiguration.objects.all().first()
instance.pages = 5
instance.save()
params = self.get_params()
self.assertEqual(params["pages"], "1-5")
def test_db_settings_ocr_language(self):
"""
GIVEN:
- Django settings defines different value for OCR_LANGUAGE than
configuration object
WHEN:
- OCR parameters are constructed
THEN:
- Configuration from database is utilized
"""
with override_settings(OCR_LANGUAGE="eng+deu"):
instance = ApplicationConfiguration.objects.all().first()
instance.language = "fra+ita"
instance.save()
params = self.get_params()
self.assertEqual(params["language"], "fra+ita")
def test_db_settings_ocr_output_type(self):
"""
GIVEN:
- Django settings defines different value for OCR_OUTPUT_TYPE than
configuration object
WHEN:
- OCR parameters are constructed
THEN:
- Configuration from database is utilized
"""
with override_settings(OCR_OUTPUT_TYPE="pdfa-3"):
instance = ApplicationConfiguration.objects.all().first()
instance.output_type = OutputTypeChoices.PDF_A
instance.save()
params = self.get_params()
self.assertEqual(params["output_type"], "pdfa")
def test_db_settings_ocr_mode(self):
"""
GIVEN:
- Django settings defines different value for OCR_MODE than
configuration object
WHEN:
- OCR parameters are constructed
THEN:
- Configuration from database is utilized
"""
with override_settings(OCR_MODE="redo"):
instance = ApplicationConfiguration.objects.all().first()
instance.mode = ModeChoices.SKIP
instance.save()
params = self.get_params()
self.assertTrue(params["skip_text"])
self.assertNotIn("redo_ocr", params)
self.assertNotIn("force_ocr", params)
def test_db_settings_ocr_clean(self):
"""
GIVEN:
- Django settings defines different value for OCR_CLEAN than
configuration object
WHEN:
- OCR parameters are constructed
THEN:
- Configuration from database is utilized
"""
with override_settings(OCR_CLEAN="clean-final"):
instance = ApplicationConfiguration.objects.all().first()
instance.unpaper_clean = CleanChoices.CLEAN
instance.save()
params = self.get_params()
self.assertTrue(params["clean"])
self.assertNotIn("clean_final", params)
with override_settings(OCR_CLEAN="clean-final"):
instance = ApplicationConfiguration.objects.all().first()
instance.unpaper_clean = CleanChoices.FINAL
instance.save()
params = self.get_params()
self.assertTrue(params["clean_final"])
self.assertNotIn("clean", params)
def test_db_settings_ocr_deskew(self):
"""
GIVEN:
- Django settings defines different value for OCR_DESKEW than
configuration object
WHEN:
- OCR parameters are constructed
THEN:
- Configuration from database is utilized
"""
with override_settings(OCR_DESKEW=False):
instance = ApplicationConfiguration.objects.all().first()
instance.deskew = True
instance.save()
params = self.get_params()
self.assertTrue(params["deskew"])
def test_db_settings_ocr_rotate(self):
"""
GIVEN:
- Django settings defines different value for OCR_ROTATE_PAGES
and OCR_ROTATE_PAGES_THRESHOLD than configuration object
WHEN:
- OCR parameters are constructed
THEN:
- Configuration from database is utilized
"""
with override_settings(OCR_ROTATE_PAGES=False, OCR_ROTATE_PAGES_THRESHOLD=30.0):
instance = ApplicationConfiguration.objects.all().first()
instance.rotate_pages = True
instance.rotate_pages_threshold = 15.0
instance.save()
params = self.get_params()
self.assertTrue(params["rotate_pages"])
self.assertAlmostEqual(params["rotate_pages_threshold"], 15.0)
def test_db_settings_ocr_max_pixels(self):
"""
GIVEN:
- Django settings defines different value for OCR_MAX_IMAGE_PIXELS than
configuration object
WHEN:
- OCR parameters are constructed
THEN:
- Configuration from database is utilized
"""
with override_settings(OCR_MAX_IMAGE_PIXELS=2_000_000.0):
instance = ApplicationConfiguration.objects.all().first()
instance.max_image_pixels = 1_000_000.0
instance.save()
params = self.get_params()
self.assertAlmostEqual(params["max_image_mpixels"], 1.0)
def test_db_settings_ocr_color_convert(self):
"""
GIVEN:
- Django settings defines different value for OCR_COLOR_CONVERSION_STRATEGY than
configuration object
WHEN:
- OCR parameters are constructed
THEN:
- Configuration from database is utilized
"""
with override_settings(OCR_COLOR_CONVERSION_STRATEGY="LeaveColorUnchanged"):
instance = ApplicationConfiguration.objects.all().first()
instance.color_conversion_strategy = ColorConvertChoices.INDEPENDENT
instance.save()
params = self.get_params()
self.assertEqual(
params["color_conversion_strategy"],
"UseDeviceIndependentColor",
)
def test_ocr_user_args(self):
"""
GIVEN:
- Django settings defines different value for OCR_USER_ARGS than
configuration object
WHEN:
- OCR parameters are constructed
THEN:
- Configuration from database is utilized
"""
with override_settings(
OCR_USER_ARGS=json.dumps({"continue_on_soft_render_error": True}),
):
instance = ApplicationConfiguration.objects.all().first()
instance.user_args = {"unpaper_args": "--pre-rotate 90"}
instance.save()
params = self.get_params()
self.assertIn("unpaper_args", params)
self.assertEqual(
params["unpaper_args"],
"--pre-rotate 90",
)

View File

@@ -34,3 +34,9 @@ class TextDocumentParser(DocumentParser):
def parse(self, document_path, mime_type, file_name=None):
self.text = self.read_file_handle_unicode_errors(document_path)
def get_settings(self):
"""
This parser does not implement additional settings yet
"""
return None

View File

@@ -10,6 +10,8 @@ from tika_client import TikaClient
from documents.parsers import DocumentParser
from documents.parsers import ParseError
from documents.parsers import make_thumbnail_from_pdf
from paperless.config import OutputTypeConfig
from paperless.models import OutputTypeChoices
class TikaDocumentParser(DocumentParser):
@@ -63,7 +65,7 @@ class TikaDocumentParser(DocumentParser):
document_path.read_bytes(),
mime_type,
)
else: # pragma: nocover
else: # pragma: no cover
raise
except Exception as err:
raise ParseError(
@@ -91,11 +93,14 @@ class TikaDocumentParser(DocumentParser):
timeout=settings.CELERY_TASK_TIME_LIMIT,
) as client, client.libre_office.to_pdf() as route:
# Set the output format of the resulting PDF
if settings.OCR_OUTPUT_TYPE in {"pdfa", "pdfa-2"}:
if settings.OCR_OUTPUT_TYPE in {
OutputTypeChoices.PDF_A,
OutputTypeChoices.PDF_A2,
}:
route.pdf_format(PdfAFormat.A2b)
elif settings.OCR_OUTPUT_TYPE == "pdfa-1":
elif settings.OCR_OUTPUT_TYPE == OutputTypeChoices.PDF_A1:
route.pdf_format(PdfAFormat.A1a)
elif settings.OCR_OUTPUT_TYPE == "pdfa-3":
elif settings.OCR_OUTPUT_TYPE == OutputTypeChoices.PDF_A3:
route.pdf_format(PdfAFormat.A3b)
route.convert(document_path)
@@ -111,3 +116,9 @@ class TikaDocumentParser(DocumentParser):
raise ParseError(
f"Error while converting document to PDF: {err}",
) from err
def get_settings(self) -> OutputTypeConfig:
"""
This parser only uses the PDF output type configuration currently
"""
return OutputTypeConfig()

View File

@@ -18,6 +18,7 @@ omit =
exclude_also =
if settings.AUDIT_LOG_ENABLED:
if AUDIT_LOG_ENABLED:
if TYPE_CHECKING:
[mypy]
plugins = mypy_django_plugin.main, mypy_drf_plugin.main, numpy.typing.mypy_plugin